| | |
| | | <template> |
| | | <div> |
| | | <!--表格基础按钮--> |
| | | <div v-if="type === 'table'"> |
| | | <!--top展示表格上方区域 menu展示表格操作栏区域 --> |
| | | <div v-if="type === 'table' || type === 'TreeTable'"> |
| | | <!--top展示表格上方区域 menu展示表格操作栏区域 无就是默认 --> |
| | | <el-button v-for="item in basicButtonList.top" |
| | | v-if="LocationType === 'top'" |
| | | :key="item.oid" :icon="item.paramVOS.webUiButtonIcon" |
| | |
| | | {{ item.name }} |
| | | </el-button> |
| | | |
| | | <el-button type="text" @click="handleDefaultAddChildren(scope.row)" v-if="(LocationType === 'menu' && this.default === 'default')">新增子级</el-button> |
| | | <el-button v-for="item in basicButtonList.menu" |
| | | v-if="LocationType === 'menu'" |
| | | :key="item.oid" |
| | |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | |
| | | |
| | | <!-- 表格内按钮操作对话框表单 --> |
| | | <dynamic-table-form ref="dynamicForm" :formList="formList" :title="formName" :visible.sync="visible" |
| | | style="display: none"></dynamic-table-form> |
| | | </div> |
| | | <div v-else-if="type === 'form'"> |
| | | <el-button v-for="item in basicButtonList" |
| | | :key="item.oid" |
| | | :icon="item.paramVOS.webUiButtonIcon" |
| | | :type="(item.paramVOS.webUiButtonType !== 'text' ? item.paramVOS.webUiButtonType : 'primary') || 'primary'" |
| | | plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | </div> |
| | | <div v-else-if="type === 'tree'" class="tree-buttons"> |
| | | <el-button v-for="item in basicButtonList" |
| | | :key="item.oid" |
| | | :icon="item.paramVOS.webUiButtonIcon" |
| | |
| | | type: Array |
| | | }, |
| | | selectList: { |
| | | type: Array |
| | | type: Array, |
| | | default: [] |
| | | }, |
| | | default:{ |
| | | type:String, |
| | | } |
| | | }, |
| | | data() { |
| | |
| | | basicButtonList() { |
| | | const basicColumn = this.butttonList; |
| | | |
| | | if (this.type === 'form') { |
| | | if (this.type === 'form' || this.type=='tree') { |
| | | return basicColumn; |
| | | } else if (this.type === 'table') { |
| | | } else if (this.type === 'table' || this.type === 'TreeTable') { |
| | | const top = basicColumn.filter(item => item.paramVOS.webUiButtonLocation === 'top' || func.isEmpty(item.paramVOS.webUiButtonLocation)); // 过滤出来表格上面区域展示的按钮 |
| | | const menu = basicColumn.filter(item => item.paramVOS.webUiButtonLocation === 'menu'); // 过滤出来操作栏展示的按钮 |
| | | return { |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | //表格树默认新增子项 |
| | | handleDefaultAddChildren(row){ |
| | | this.visible = true; |
| | | this.formName = '新增子级' |
| | | this.$refs.dynamicForm.form = row; |
| | | }, |
| | | buttonClick(item) { |
| | | this.formName = item.name; |
| | | |
| | | function handleAdd() { |
| | | this.visible = true; |
| | | } |
| | | |
| | | function handleEdit() { |
| | | const location = item.paramVOS.webUiButtonLocation; |
| | | if (location === 'menu') { |
| | | this.visible = true; |
| | | this.$refs.dynamicForm.form = this.scope.row; |
| | | } else if (location === 'top' && this.selectList.length === 1) { |
| | | this.visible = true; |
| | | this.$refs.dynamicForm.form = this.selectList[0]; |
| | | } else { |
| | | const messageText = this.selectList.length > 1 ? '只能选择一条数据进行编辑!' : '请选择一条数据进行编辑!'; |
| | | this.$message.warning(messageText); |
| | | } |
| | | } |
| | | |
| | | function handleDelete() { |
| | | const location = item.paramVOS.webUiButtonLocation; |
| | | if (location === 'top') { |
| | | if (this.selectList.length <= 0) { |
| | | this.$message.warning('请至少选择一条数据!') |
| | | } else { |
| | | this.$message.success('删除成功!'); |
| | | } |
| | | } else if (location === 'menu') { |
| | | this.$message.success('删除成功!'); |
| | | } |
| | | } |
| | | |
| | | const methodHandlers = { |
| | | add: handleAdd.bind(this), |
| | | edit: handleEdit.bind(this), |
| | | delete: handleDelete.bind(this), |
| | | }; |
| | | |
| | | const method = item.paramVOS.webUiButtonMethods; |
| | | const handler = methodHandlers[method]; |
| | | if (handler) { |
| | | handler(); |
| | | } else { |
| | | this.$message.error('请重新配置按钮!') |
| | | // 根据 type 条件动态引入不同的JS文件,并传递 item this 参数 |
| | | if (this.type === 'table') { |
| | | import('@/views/base/buttonTable').then(module => { |
| | | const buttonClickTable = module.default; |
| | | buttonClickTable.buttonClick(item,this); |
| | | }) |
| | | } else if (this.type === 'form') { |
| | | import('@/views/base/buttonForm').then(module => { |
| | | const buttonClickForm = module.default; |
| | | buttonClickForm.buttonClick(item,this); |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |