1.1.9 • Published 4 years ago

vue-elementui-exceltable v1.1.9

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

vue-elementui-exceltable 可编辑的表格组件

在 vue-willtable 表格的基础上做了些许修改

vue-willtable 项目地址https://github.com/KevinMint55/vue-willtable)

原项目作者

WillWu

修改

  • 增加级联选择器
  • 修改 date,month,select,cascader 使用时,均需要两个单元格,前一个单元格展示选中的文本,后一个单元格不展示存放选中的 value 值
  • 示例 :{ title: '日期', key: 'dateLabel', type: 'date', width: 100, show: true, requiredIcon: true //表头添加*,表示必填 }, { title: '日期', key: 'date', width: 0, show: false },
  • 单元格编辑完后,在单元格未失去焦点时,调用 this.$refs.vueElementuiExceltable.$refs.willtables.clickoutside(),此时的表格数据中会有刚刚编辑完的单元格数据

安装

npm install vue-elementui-exceltable --save

挂载

挂载在全局

import Vue from 'vue'
import VueElementuiExceltable from 'vue-elementui-exceltable'

// require styles
import 'vue-elementui-exceltable/dist/vue-elementui-exceltable.min.css'

Vue.component('VueElementuiExceltable', VueElementuiExceltable)

挂载在组件

import VueElementuiExceltable from 'vue-elementui-exceltable'

// require styles
import 'vue-elementui-exceltable/dist/vue-elementui-exceltable.min.css'

export default {
  components: {
    VueElementuiExceltable
  }
}

使用例子

<template>
  <vue-elementui-exceltable
    ref="willtables"
    :columns="columns"
    v-model="data"
    :showIcon="showIcon"
    @selection-change="selectionChange"
    :maxHeight="maxHeight"
    :disabled="disabled"
    :cellStyle="cellStyle"
    :cellClassName="cellClassName"
    :rowHeight="rowHeight"
  >
  </vue-elementui-exceltable>
</template>
<script>
export default {
  props: {
    columns: {
      type: Object,
      required: true
    },
    data: {
      type: Array,
      required: true
    },
    maxHeight: {
      type: Number,
      default: 800,
      required: false
    },
    showIcon: {
      type: Boolean,
      default: () => {
        return true
      },
      required: false
    },
    disabled: {
      type: Boolean,
      default: false,
      required: false
    },
    cellStyle: {
      type: Function,
      default: () => {},
      required: false
    },
    cellClassName: {
      type: Function,
      default: () => {},
      required: false
    },
    rowHeight: {
      type: Number,
      default: 28,
      required: false
    }
  },
  data () {
    return {}
  },
  methods: {
    getData () {
      const data = [
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        },
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        },
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        },
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        },
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        },
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        },
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        },
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        },
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        },
        {
          titleEn: '',
          titleCn: '',
          publisherEn: '',
          publisherCn: '',
          authorEn: '',
          authorCn: '',
          isbn: '',
          copyStatus: '',
          pubDate: '',
          pageNum: '',
          format: '',
          edition: '',
          series: '',
          classify: '',
          lang: '',
          country: ''
        }
      ]
      this.$refs.willtables.setData(data)
      window.willtables = this.$refs.willtables
    },
    selectionChange (selection) {
      this.selectedIds = selection.map(item => item.id)
    }
  },
  mounted () {
    this.getData()
    setTimeout(() => {
      willtables.handleResize()
    }, 200)
  },
  updated () {
    this.$refs.willtables.data.length === 10 ? () => {} : this.getData()
    // debugger
  }
}
</script>
<style lang="scss"></style>

数据

this.\$refs.willtable 调用 setData 方法来更新整表数据,并会重置历史数据记录.

this.\$refs.willtable 调用 getData 方法来获取整表数据.

v-model进行值的绑定

属性

参数说明类型可选值默认值
columns表格列的配置描述Array——[]
maxHeight表格最大高度string / number————
rowHeight每行高度string / number————
disabled是否禁止编辑Boolean——true
showIcon是否显示表头类型图标Boolean——false
requiredIcon是否为必填项Boolean——false
cellStyle单元格的 style 的回调方法Function({row, column, rowIndex, columnIndex})————
cellClassName单元格的 className 的回调方法Function({row, column, rowIndex, columnIndex})————

事件

事件名称说明回调参数
selection-change当选择项发生变化时会触发该事件selection

方法

方法名说明参数
getData用来获取数据,返回当前表格数据——
setData用来设置数据,并重置历史记录data
getChangeData获取变化的数据行——
getErrorRows获取校验错误的数据和索引——
addItem底部添加一行数据item
removeItems批量删除,参数 key 为每行的唯一标识属性如 id,values 为该标识属性的数组key, values

列属性

参数说明类型可选值默认值
key对应列内容的字段名String————
title列头显示文字String————
width列宽度String / Number————
type列类型Stringselection/number/date/select/month——
format千分号格式(用于 number 类型)Boolean——true
optionsselect 下拉选项Array{ value: '值', label: '显示文字' }——
fixed是否固定在左侧Boolean——false
action是否启用筛选和排序Boolean——false
disabled是否禁止编辑Boolean——false
noVerify是否禁用校验Boolean——false
validate自定义校验Function(value)————

快捷键

快捷键说明
方向键移动编辑框
Ctrl + C粘贴
Ctrl + V复制
Ctrl + A单元格全选
Ctrl + Z撤销
Ctrl + Y重做
Enter单元格编辑/完成单元格编辑
Delete、Backspace删除
1.1.9

4 years ago

1.1.8

4 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.1

4 years ago

1.1.2

4 years ago

1.1.0

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago