From f9b749d2ae804869b09d035de44ba1ce71214dc1 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期五, 22 三月 2024 10:01:58 +0800 Subject: [PATCH] top区域和menu区域事件 --- Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue | 288 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 258 insertions(+), 30 deletions(-) diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue index 6d57f5d..fdd3e1a 100644 --- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue +++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue @@ -1,25 +1,41 @@ <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'"> + <!--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,scope)"> - {{ item.name }} - </el-button> -<!-- <dynamic-form :title="formName" :visible.sync="visible"></dynamic-form>--> + <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> </template> @@ -36,36 +52,248 @@ LocationType: { type: String, }, - scope:{ - type:Object, + scope: { + type: Object, }, - butttonList:{ - type:Array + butttonList: { + type: Array + }, + selectList: { + type: Array } }, data() { return { visible: false, formName: '', + // 琛ㄥ崟鏁版嵁 + formList: [ + { + comboxKey: null, + customClass: null, + data: null, + dateFormate: null, + defaultValue: "", + displayExtension: "", + extendAttrMap: null, + extendAttrString: null, + field: "name", + hidden: false, + keyAttr: true, + prefix: null, + readOnly: false, + referConfig: null, + required: true, + selectLibFlag: null, + showField: null, + suffix: '$', + text: "鍚嶇О", + tooltips: '鍚嶇О', + type: "text", + unique: false, + verify: "" + }, + { + comboxKey: null, + customClass: null, + data: null, + dateFormate: null, + defaultValue: "", + displayExtension: "", + extendAttrMap: null, + extendAttrString: null, + field: "code", + hidden: false, + keyAttr: false, + prefix: null, + readOnly: false, + referConfig: null, + required: false, + selectLibFlag: null, + showField: null, + suffix: null, + disabled: true, + text: "缂栫爜", + tooltips: null, + type: "text", + unique: false, + verify: "" + }, + { + comboxKey: "EnumReviewType", + customClass: null, + data: null, + dateFormate: null, + defaultValue: "department", + displayExtension: "", + extendAttrMap: null, + extendAttrString: null, + field: "reviewtype", + hidden: false, + keyAttr: false, + prefix: null, + readOnly: false, + referConfig: null, + required: false, + selectLibFlag: null, + showField: null, + suffix: null, + text: "绫诲瀷", + tooltips: null, + type: "combox", + unique: false, + verify: "", + dicData: [{ + label: '娴嬭瘯1', + value: 'department' + }, { + label: '娴嬭瘯2', + value: 'departments' + }] + }, + { + comboxKey: null, + customClass: null, + data: null, + dateFormate: null, + defaultValue: "", + displayExtension: "", + extendAttrMap: null, + extendAttrString: null, + field: "creator", + hidden: true, + keyAttr: false, + prefix: null, + readOnly: true, + referConfig: null, + required: false, + selectLibFlag: null, + showField: null, + suffix: null, + text: "鍒涘缓浜�", + tooltips: null, + type: "text", + unique: false, + verify: "" + }, + { + comboxKey: null, + customClass: null, + data: null, + dateFormate: "yyyy-MM-dd HH:mm:ss", + defaultValue: "", + displayExtension: "", + extendAttrMap: null, + extendAttrString: null, + field: "createtime", + hidden: true, + keyAttr: false, + prefix: null, + readOnly: false, + referConfig: null, + required: false, + selectLibFlag: null, + showField: null, + suffix: null, + text: "鍒涘缓鏃堕棿", + tooltips: null, + type: "datetime", + unique: false, + verify: "" + }, + { + comboxKey: null, + customClass: null, + data: null, + dateFormate: null, + defaultValue: "", + displayExtension: "", + extendAttrMap: null, + extendAttrString: null, + field: "content", + hidden: false, + keyAttr: false, + prefix: null, + readOnly: false, + referConfig: null, + required: false, + selectLibFlag: null, + showField: null, + suffix: null, + text: "澶囨敞", + tooltips: null, + type: "textarea", + unique: false, + verify: "" + }, + ], } }, 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 (this.type === 'form') { + return basicColumn; + } else if (this.type === 'table') { + const top = basicColumn.filter(item => item.paramVOS.webUiButtonLocation === 'top' || func.isEmpty(item.paramVOS.webUiButtonLocation)); // 杩囨护鍑烘潵琛ㄦ牸涓婇潰鍖哄煙灞曠ず鐨勬寜閽� + const menu = basicColumn.filter(item => item.paramVOS.webUiButtonLocation === 'menu'); // 杩囨护鍑烘潵鎿嶄綔鏍忓睍绀虹殑鎸夐挳 + return { top: top, menu: menu - } + }; } } }, methods: { buttonClick(item) { - this.$emit('buttonClick',this.scope,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('璇烽噸鏂伴厤缃寜閽紒') + } } } } -- Gitblit v1.9.3