// import i18n from '@/i18n' export default { name: 'TableOperations', props: { injectData: { type: Object, default: () => ({}) } }, data() { return { btnTypes: { add: 'primary', delete: 'danger', detail: 'info' // add more... }, colors: { delete: '#FF5454', preview: '#f09843', design: '#99089f', // 'view-trend': 'red' // add more... }, text: { // TODO: i18n // edit: i18n.t('edit'), // detail: i18n.t('detail'), // delete: i18n.t('delete'), // viewAttr: i18n.t('viewattr'), // preview: i18n.t('preview'), // design: i18n.t('design'), edit: '编辑', detail: '详情', delete: '删除', viewAttr: '查看属性', preview: '预览', view: '查看', design: '设计', 'view-trend': '查看趋势', 'add-sub': '添加子类' // add more... } } }, methods: { // 发射事件 emit(opt) { let emitFull = false let eventType = 'default' let customField if (typeof opt === 'object') { eventType = opt.name customField = opt.emitField || 'id' emitFull = opt.emitFull || false } else { eventType = opt } this.$emit('emit-data', { type: eventType, data: emitFull ? this.injectData : customField ? this.injectData[customField] : this.injectData.id }) } }, render: function (h) { let btns = [] for (const opt of this.injectData.head?.options) { const optIsObj = typeof opt === 'object' if (optIsObj) { // 注意:为空字符串或null/undefined都会不验证权限 if (!opt.permission || (opt.permission && this.$hasPermission(opt.permission))) { btns.push( h('el-button', { props: { type: 'text' }, style: { color: this.colors[opt.name] || '#0b58ff' }, on: { click: this.emit.bind(null, opt) } }, this.text[opt.name] ) ) } } else { // 此时 opt 是一个 string,且默认有操作权限 btns.push( h('el-button', { props: { type: 'text' }, style: { color: this.colors[opt] || '#0b58ff' }, on: { click: this.emit.bind(null, opt) } }, this.text[opt] ) ) } } return h('span', null, btns) } }