1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <template>
- <span>
- <a-popover title="自定义列" trigger="click" placement="leftBottom">
- <template slot="content">
- <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" >
- <a-row style="width:500px">
- <template v-for="(item,index) in defColumns">
- <template >
- <a-col :span="8" :key="index">
- <a-checkbox :value="item.dataIndex">{{ item.title }}</a-checkbox>
- </a-col>
- </template>
- </template>
- </a-row>
- </a-checkbox-group>
- </template>
- <a><a-icon type="setting" />设置</a>
- </a-popover>
- </span>
- </template>
- <script>
- import Vue from 'vue'
- export default {
- name: 'ColSetting',
- props: {
- defColumns: {// 默认列
- type: Array,
- default: []
- },
- value: { // 必须要使用value
- type: Array,
- default: []
- }
- },
- data() {
- return {
- settingColumns: []// 列设置
- }
- },
- mounted() {
- this.initColumns()
- },
- methods: {
- // 列设置更改事件
- onColSettingsChange(checkedValues) {
- var key = this.$route.name + this.$route.params.code + ':colsettings'
- Vue.ls.set(key, checkedValues, 300 * 24 * 60 * 60 * 1000)
- this.$emit('input', checkedValues)
- },
- initColumns() {
- var key = this.$route.name + this.$route.params.code + ':colsettings'
- const colSettings = Vue.ls.get(key)
- if (!colSettings || colSettings.length === 0) {
- this.settingColumns = []
- this.defColumns.forEach(column => {
- if (this.settingColumns.indexOf(column['dataIndex']) < 0) {
- this.settingColumns.push(column['dataIndex'])
- }
- })
- } else {
- this.settingColumns = colSettings
- }
- this.$emit('input', colSettings)
- }
- }
- }
- </script>
|