| | |
| | | <template> |
| | | <!--表格基础按钮--> |
| | | <div v-if="type === 'table'"> |
| | | <!--top展示表格上方区域 menu展示表格操作栏区域 --> |
| | | <el-button v-for="item in basicButtonList.top" |
| | | v-if="LocationType === 'top'" |
| | | :key="item.oid" :icon="item.icon" |
| | | :type="item.paramVOS.buttonType || 'primary'" plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | <div> |
| | | <!--表格基础按钮--> |
| | | <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" |
| | | :type="item.paramVOS.webUiButtonType || 'primary'" plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | |
| | | <el-button v-for="item in basicButtonList.menu" |
| | | v-if="LocationType === 'menu'" |
| | | :key="item.oid" :icon="item.paramVOS.icon" |
| | | :type="item.paramVOS.buttonType || 'primary'" plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | <dynamic-form :title="formName" :visible.sync="visible"></dynamic-form> |
| | | <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" |
| | | :icon="item.paramVOS.webUiButtonIcon ? item.paramVOS.webUiButtonIcon : (item.paramVOS.webUiButtonMethods === 'edit' ? 'el-icon-edit' : (item.paramVOS.webUiButtonMethods === 'delete' ? 'el-icon-delete' : ''))" |
| | | :type="item.paramVOS.webUiButtonType || 'text'" plain |
| | | size="small" |
| | | @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="(item.paramVOS.webUiButtonType !== 'text' ? item.paramVOS.webUiButtonType : 'primary') || 'primary'" |
| | | plain |
| | | size="small" |
| | | @click="buttonClick(item)"> |
| | | {{ item.name }} |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import func from "@/util/func"; |
| | | import {validatenull} from "@/util/validate"; |
| | | import {doAction} from '@/actions/base/BaseAction'; |
| | | import Vue from "vue"; |
| | | |
| | | export default { |
| | | name: "dynamic-button", |
| | | props: { |
| | | componentVO: { |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | type: { |
| | | type: String |
| | | }, |
| | | LocationType: { |
| | | type: String, |
| | | }, |
| | | scope: { |
| | | type: Object, |
| | | }, |
| | | butttonList: { |
| | | type: Array |
| | | }, |
| | | default:{ |
| | | type:String, |
| | | }, |
| | | sourceData: { |
| | | //按钮所属区域的上一区域选中数据 |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | dataStore: { |
| | | //按钮所属区域选中数据 |
| | | type: Array, |
| | | default: [] |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | formName: '', |
| | | butttonList: [ |
| | | { |
| | | actionVO: { |
| | | actionCls: "", |
| | | actionUsedType: "business", |
| | | bsUrl: "null", |
| | | createTime: "2013-11-01 15:17:45.000", |
| | | creator: "eddieliu", |
| | | csClass: "plm.uif.actions.client.AddAction", |
| | | description: "创建业务对象", |
| | | id: "add", |
| | | lastModifier: "developer", |
| | | lastModifyTime: "2013-11-01 15:17:45.000", |
| | | licensors: null, |
| | | name: "创建", |
| | | oid: "65274704-5557-231C-E3EA-0B32B9BD5A0B" |
| | | }, |
| | | areaType: "tab", |
| | | authorization: true, |
| | | children: null, |
| | | createTime: "2022-07-18 17:29:10.000", |
| | | creator: "developer", |
| | | csUrl: "plm.uif.actions.client.AddAction", |
| | | description: "", |
| | | displayMode: "textandimage", |
| | | hidden: false, |
| | | iconPath: "", |
| | | id: "add", |
| | | lastModifier: "developer", |
| | | lastModifyTime: "2022-07-18 17:29:10.000", |
| | | name: "新增", |
| | | oid: "DD34108A-5978-334C-7A2A-45F2EE158B1D", |
| | | orderNum: 1, |
| | | paramVOS: { |
| | | form: "DepartmentProcessReviewForm", |
| | | context: "EditDepartmentProcessReview", |
| | | type: "processreview", |
| | | initvalue: "reviewtype=department", |
| | | location: 'top', |
| | | buttonType: 'primary', |
| | | buttonMethods: 'form' |
| | | }, |
| | | pkComponent: "D99AD59E-563F-AB7A-F307-794B929114CD", |
| | | pkParentOid: "", |
| | | url: "null" |
| | | }, |
| | | { |
| | | actionVO: { |
| | | actionCls: "", |
| | | actionUsedType: "business", |
| | | bsUrl: "BaseEditAction#doAction", |
| | | createTime: "2013-11-09 10:32:41.000", |
| | | creator: "eddieliu", |
| | | csClass: "plm.uif.actions.client.EditAction", |
| | | description: "修改业务对象", |
| | | id: "edit", |
| | | lastModifier: "developer", |
| | | lastModifyTime: "2013-11-09 10:32:41.000", |
| | | licensors: null, |
| | | name: "修改", |
| | | oid: "F8534EFE-130B-0CB3-D477-2AC7B19B7DC4" |
| | | }, |
| | | areaType: "tab", |
| | | authorization: true, |
| | | children: null, |
| | | createTime: "2022-07-18 17:29:10.000", |
| | | creator: "developer", |
| | | csUrl: "plm.uif.actions.client.EditAction", |
| | | description: "", |
| | | displayMode: "textandimage", |
| | | hidden: false, |
| | | iconPath: "", |
| | | id: "edit", |
| | | lastModifier: "developer", |
| | | lastModifyTime: "2022-07-18 17:29:10.000", |
| | | name: "修改", |
| | | oid: "F50F37CE-26FF-8BC1-F87A-FFD9CFA8CE57", |
| | | orderNum: 2, |
| | | paramVOS: { |
| | | form: "DepartmentProcessReviewForm", |
| | | checkNotOperation: "${lcstatus}=Auditing&${lcstatus}=Waiting", |
| | | location: 'menu', |
| | | buttonType: 'text', |
| | | icon: "el-icon-edit", |
| | | buttonMethods: 'form' |
| | | }, |
| | | pkComponent: "D99AD59E-563F-AB7A-F307-794B929114CD", |
| | | pkParentOid: "", |
| | | url: "BaseEditAction#doAction" |
| | | }, |
| | | { |
| | | actionVO: { |
| | | actionCls: "", |
| | | actionUsedType: "business", |
| | | bsUrl: "BaseDeleteAction", |
| | | createTime: "2013-11-09 10:33:08.000", |
| | | creator: "1", |
| | | csClass: "plm.uif.actions.client.DeleteAction", |
| | | description: "删除业务对象", |
| | | id: "del", |
| | | lastModifier: "developer", |
| | | lastModifyTime: "2013-11-09 10:33:08.000", |
| | | licensors: null, |
| | | name: "删除", |
| | | oid: "2655E9F0-014B-DFEC-6F92-A6D1C51FDA19" |
| | | }, |
| | | areaType: "tab", |
| | | authorization: true, |
| | | children: null, |
| | | createTime: "2022-07-18 17:29:10.000", |
| | | creator: "developer", |
| | | csUrl: "plm.uif.actions.client.DeleteAction", |
| | | description: "", |
| | | displayMode: "textandimage", |
| | | hidden: false, |
| | | iconPath: "", |
| | | id: "del", |
| | | lastModifier: "developer", |
| | | lastModifyTime: "2022-07-18 17:29:10.000", |
| | | name: "删除", |
| | | oid: "A8914C35-721B-A1E3-1EEE-3A9196DF5EC9", |
| | | orderNum: 3, |
| | | paramVOS: { |
| | | owner: "true", |
| | | checkNotOperation: "${lcstatus}=Auditing&${lcstatus}=Waiting", |
| | | state: "Editing", |
| | | location: 'menu', |
| | | buttonType: 'text', |
| | | icon: "el-icon-delete", |
| | | buttonMethods: 'delete' |
| | | }, |
| | | pkComponent: "D99AD59E-563F-AB7A-F307-794B929114CD", |
| | | pkParentOid: "", |
| | | url: "BaseDeleteAction" |
| | | }, |
| | | { |
| | | actionVO: { |
| | | actionCls: "", |
| | | actionUsedType: "business", |
| | | bsUrl: "BaseStartWorkflowAction#doAction", |
| | | createTime: "2014-03-17 10:14:40.000", |
| | | creator: "developer", |
| | | csClass: "plm.uif.actions.client.LaunchWorkFlowAction", |
| | | description: "启动流程", |
| | | id: "launchworkflow", |
| | | lastModifier: "developer", |
| | | lastModifyTime: "2014-03-17 10:14:40.000", |
| | | licensors: null, |
| | | name: "启动流程", |
| | | oid: "56FE9470-AA2B-403B-F029-0A120FC94536" |
| | | }, |
| | | areaType: "tab", |
| | | authorization: true, |
| | | children: null, |
| | | createTime: "2022-07-18 17:29:10.000", |
| | | creator: "developer", |
| | | csUrl: "plm.uif.actions.client.LaunchWorkFlowAction", |
| | | description: "", |
| | | displayMode: "textandimage", |
| | | hidden: false, |
| | | iconPath: "", |
| | | id: "launchworkflow", |
| | | lastModifier: "developer", |
| | | lastModifyTime: "2022-07-18 17:29:10.000", |
| | | name: "审签", |
| | | oid: "9963FA86-F146-FBD3-2AC2-51A7AAAAB825", |
| | | orderNum: 4, |
| | | paramVOS: { |
| | | owner: "true", |
| | | autoSubmitFirst: "false", |
| | | flowtemplates: "工艺评审审签流程", |
| | | state: "Editing", |
| | | type: "processreview", |
| | | location: 'top', |
| | | buttonMethods: 'form' |
| | | }, |
| | | pkComponent: "D99AD59E-563F-AB7A-F307-794B929114CD", |
| | | pkParentOid: "", |
| | | url: "BaseStartWorkflowAction#doAction" |
| | | }, |
| | | ] |
| | | // 表单数据 |
| | | formList: [], |
| | | } |
| | | }, |
| | | computed: { |
| | | basicButtonList() { |
| | | // const basicColumn = this.butttonList.filter(item => item.id !== 'launchworkflow'); // 首先过滤出来基础表单事件的按钮 |
| | | const basicColumn = this.butttonList; |
| | | if (this.type === 'table') { |
| | | const top = basicColumn.filter(item => item.paramVOS.location === 'top' || func.isEmpty(item.paramVOS.location)); // 过滤出来表格上面区域展示的按钮 |
| | | const menu = basicColumn.filter(item => item.paramVOS.location === 'menu'); // 过滤出来操作栏展示的按钮 |
| | | if (!basicColumn || !Array.isArray(basicColumn)) { |
| | | return []; // 如果 basicColumn 未定义或者不是数组,返回空数组 |
| | | } |
| | | |
| | | if (this.type === 'form' || this.type === 'tree') { |
| | | return basicColumn; |
| | | } else if (this.type === 'table' || this.type === 'TreeTable') { |
| | | const top = basicColumn.filter(item => { |
| | | return item.paramVOS && (item.paramVOS.webUiButtonLocation === 'top' || func.isEmpty(item.paramVOS.webUiButtonLocation)); |
| | | }); |
| | | const menu = basicColumn.filter(item => { |
| | | return item.paramVOS && item.paramVOS.webUiButtonLocation === 'menu'; |
| | | }); |
| | | return { |
| | | top: top, |
| | | menu: menu |
| | | } |
| | | menu: menu, |
| | | }; |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | buttonClick(item) { |
| | | this.$emit('buttonClick', item.id) |
| | | //表格树默认新增子项 |
| | | handleDefaultAddChildren(row) { |
| | | this.visible = true; |
| | | this.formName = '新增子级' |
| | | this.$refs.dynamicForm.form = row; |
| | | }, |
| | | buttonClick(buttonitem) { |
| | | const paramVOS=buttonitem.paramVOS; |
| | | const DefineVO = this.componentVO.treeDefineVO || this.componentVO.tableDefineVO || this.componentVO.treeTableDefineVO || this.componentVO.formDefineVO; |
| | | if (!paramVOS['title']) { |
| | | paramVOS['title'] = buttonitem.name + (DefineVO.title || DefineVO.componentTitle || ''); |
| | | } |
| | | |
| | | this.formName = item.name; |
| | | if (item.paramVOS.buttonMethods === 'form') { |
| | | this.visible = true; |
| | | if (!paramVOS['type']) { |
| | | paramVOS['type'] = DefineVO.btmType; |
| | | } |
| | | paramVOS['initvalue']=paramVOS['initvalue'] || paramVOS['initValue']; |
| | | let isShow = true; |
| | | if (paramVOS['initvalue'] && typeof(paramVOS.initvalue)=='string') { |
| | | let values = paramVOS['initvalue'].split(';'); |
| | | let initValues = {} |
| | | values.forEach((item,i) => { |
| | | item = item.replace(':', '='); |
| | | if (item.indexOf('${') > -1) { |
| | | if (item.split('=')[1].indexOf('.') > -1) { |
| | | if (this.sourceData.length < 1 || !this.sourceData.oid) { |
| | | isShow = false; |
| | | this.$message.error("请先选择一条来源数据"); |
| | | return false; |
| | | } |
| | | let name = item.split('=')[1].split('.')[1].replace('${', '').replace('}', ''); |
| | | initValues[item.split('=')[0]] = this.sourceData[name] |
| | | } else { |
| | | if (this.dataStore.length < 1) { |
| | | isShow = false; |
| | | this.$message.error("请先选择一条数据"); |
| | | return false; |
| | | } |
| | | let name = item.split('=')[1].replace('${', '').replace('}', ''); |
| | | initValues[item.split('=')[0]] = this.dataStore[0][name]; |
| | | |
| | | } |
| | | } |
| | | }) |
| | | paramVOS['initvalue'] = initValues |
| | | } |
| | | if(paramVOS['BSContent'] || paramVOS['BSContext']){ |
| | | paramVOS['context']=paramVOS['BSContext'] || paramVOS['BSContent'] |
| | | paramVOS['content']=paramVOS['BSContext'] || paramVOS['BSContent']; |
| | | } |
| | | |
| | | const that=this; |
| | | if(isShow) { |
| | | doAction(buttonitem, { |
| | | paramVOS: paramVOS, |
| | | dataStore: this.dataStore || [], |
| | | sourceData: this.sourceData || {} |
| | | },function (){ |
| | | if (that.$parent.handleRefresh) { |
| | | that.$parent.handleRefresh() |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | | |