iView组件中Table单元格支持可编辑、加入各种图表

大家好呀,我是 summo。最近我找到了几年前我还是全栈开发工程师时留下的学习 Demo 和文章。重读这些代码和文字,仿佛唤醒了我对过去的记忆。当时的自己可能没有想到会一直坚持写文章到现在,但回顾这段经历,感触良多。每一步的努力和坚持都让我成为了今天的自己,也希望这些文章能继续帮助更多人。
后端项目地址:gitee.com/wlovet/tabl...

前端项目地址:gitee.com/wlovet/tabl...

一、Render函数之Table加入IVIEW组件与表格修改

render函数可以在表格中除了可以加入html组件还有iview组件,使用方法是在定义列的时候使用元素构造对象h渲染新元素

javascript 复制代码
render:(h,params)=>{
  return h('div',{
  props:{
  },
   style:{
   }
  },params.row)
}

支持修改则在表格列中加入

js 复制代码
{
  title: '操作',
  key: 'action',
  width: 200,
  render: (h, params) => {
    return h('div', [
      h('Button', {
        props: {
          type: params.row.$isEdit ? 'warning' : 'info',
          size: 'small',
          icon: ''
        },
        style: {
          marginRight: '5px',
        },
        on: {
          click: () => {
            if (params.row.$isEdit) {
              this.handleSave(params.row);
            } else {
              this.handleEdit(params.row);
            }
          }
        }
      },params.row.$isEdit? '保存':'修改'),
      h('Poptip', {
        props: {
          confirm: true,
          title: '是否要删除此字段?',
          transfer: true
        },
        on: {
          'on-ok': () => {
           //删除逻辑
          }
        },
      }, [
        h('Button', {
          props: {
            type: 'error',
            size: 'small'
          },
          style: {
            marginRight: '5px'
          },
        }, '删除')
      ]),
    ])
  }
}

在methods属性中加入两个方法handleEdit、handleSave

js 复制代码
//点击了修改按钮
handleEdit(row) {
  this.$set(row, "$isEdit", true);
},
//点击了保存按钮
handleSave(row) {
  this.$set(row, "$isEdit", false);
}

二、Render函数之Table单元格加入EChart图表

在单元格加入Echarts,首先下载echars包,再引入依赖

js 复制代码
 //使用npm或cnpm下载echarts
 cnpm install echarts -D
js 复制代码
//在src/main.js文件中引入
import echarts from 'echarts'
Vue.prototype.$echarts = echarts1 //使用npm或cnpm下载echarts
cnpm install echarts -D
//在src/main.js文件中引入
import echarts from 'echarts'
Vue.prototype.$echarts = echarts

其次,在定义表格的列时

js 复制代码
{
  title: '比例图',
  align: 'center',
  render: (h, params) => {
    return h('div', [
      h('canvas', {
        style: {
          height: '300px',
          margin: '0',
          padding: '0'
        },
        on: {},
        attrs: {
          //给单元格设置ID和类型
          id: params.row.pictureType
        }
      })
    ])
  }
}

再次,在updated函数中使用echarts进行绘制。此处不在mounted方法里使用,因为绘制echarts表格是第二次渲染节点

js 复制代码
updated() {
 let self = this
 self.pictureData.forEach((value, index) => {
   self.paintChart(index, value)
 })
}

最后在methods中加入方法paintChart

js 复制代码
//绘制图表
paintChart(i, params) {
if (params.pictureType === '柱形图') {
  let chart = this.$echarts.init(document.getElementById(params.pictureType));
    let option = {
      color: ['#3398DB'],
      tooltip: {
        trigger: 'axis',
        axisPointer: {            // 坐标轴指示器,坐标轴触发有效
          type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
        }
      },
      grid: {
        top: '4%',
        left: '1%',
        right: '1%',
        bottom: '1%',
        containLabel: true
      },
      xAxis: [
        {
          type: 'category',
          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
          axisTick: {
            alignWithLabel: true
          }
        }
      ],
      yAxis: [
        {
          type: 'value'
        }
      ],
      series: [
        {
          name: '直接访问',
          type: 'bar',
          barWidth: '60%',
          data: [10, 52, 200, 334, 390, 330, 220]
        }
      ]
    };
    chart.setOption(option)
  }
}
}
相关推荐
书中枫叶4 分钟前
生活缴费充值系统
前端·javascript·经验分享·mongodb·node.js
weixin_461769406 分钟前
npm 修改镜像源依赖下载缓慢运行报错日志解决
前端·npm·node.js
Soari7 分钟前
Hermes-webui:面向 Hermes Agent 的自托管 Web 控制台
前端·webui·agent ai·自托管ai
代码小库1 小时前
免费在线简历工具「面试帮」——18 款模板 + PDF 导出
面试·职场和发展·pdf
2501_912784081 小时前
跨境电商独立站的多语言架构设计:基于 Laravel + Vue.js 的实践
vue.js·php·laravel·跨境电商·taocarts
xyl8662 小时前
高频面试题:实现int sqrt函数
面试
JAVA9658 小时前
JAVA面试-并发篇 03-使用synchronized doublecheck实现单例有什么坑
java·单例模式·面试
JustHappy9 小时前
古法编程秘籍(二):什么是代码模块化?别背概念,把房间收拾明白就够了
前端·后端
小江的记录本9 小时前
【JVM虚拟机】堆内存分代模型:年轻代(Eden+Survivor)、老年代、元空间Metaspace(附《思维导图》+《面试高频考点清单》)
java·前端·jvm·后端·python·spring·面试
weixin_4713830310 小时前
图片预解码缓存
前端·浏览器缓存·图片预解码