From 107edc1584cd8e89a0f85b8fdc120194d1858934 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期四, 25 四月 2024 15:32:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue | 168 +++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 129 insertions(+), 39 deletions(-)
diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue
index 1c26a42..caaaf14 100644
--- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue
+++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-button.vue
@@ -1,8 +1,8 @@
<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"
@@ -12,15 +12,18 @@
{{ 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"
: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,scope)">
+ @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>
@@ -29,7 +32,18 @@
<el-button v-for="item in basicButtonList"
:key="item.oid"
:icon="item.paramVOS.webUiButtonIcon"
- :type="(item.paramVOS.webUiButtonType !== 'text' ? item.paramVOS.buttonType : 'primary') || 'primary'"
+ :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)">
@@ -42,10 +56,16 @@
<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
},
@@ -57,7 +77,20 @@
},
butttonList: {
type: Array
- }
+ },
+ default:{
+ type:String,
+ },
+ sourceData: {
+ //鎸夐挳鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁
+ type: Object,
+ default: {}
+ },
+ dataStore: {
+ //鎸夐挳鎵�灞炲尯鍩熼�変腑鏁版嵁
+ type: Array,
+ default: []
+ },
},
data() {
return {
@@ -228,60 +261,117 @@
},
computed: {
basicButtonList() {
- // const basicColumn = this.butttonList.filter(item => item.id !== 'launchworkflow'); // 棣栧厛杩囨护鍑烘潵鍩虹琛ㄥ崟浜嬩欢鐨勬寜閽�
const basicColumn = this.butttonList;
+ if (!basicColumn || !Array.isArray(basicColumn)) {
+ return []; // 濡傛灉 basicColumn 鏈畾涔夋垨鑰呬笉鏄暟缁勶紝杩斿洖绌烘暟缁�
+ }
- if (this.type === 'form') {
-
+ if (this.type === 'form' || this.type === 'tree') {
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'); // 杩囨护鍑烘潵鎿嶄綔鏍忓睍绀虹殑鎸夐挳
-
+ } 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: {
+ //琛ㄦ牸鏍戦粯璁ゆ柊澧炲瓙椤�
+ handleDefaultAddChildren(row) {
+ this.visible = true;
+ this.formName = '鏂板瀛愮骇'
+ this.$refs.dynamicForm.form = row;
+ },
buttonClick(item) {
- this.formName = item.name;
-
- function handleAdd() {
- this.visible = true;
+ const paramVOS=item.paramVOS;
+ const DefineVO = this.componentVO.treeDefineVO || this.componentVO.tableDefineVO || this.componentVO.treeTableDefineVO || this.componentVO.formDefineVO;
+ if (!paramVOS['title']) {
+ paramVOS['title'] = item.name + (DefineVO.title || DefineVO.componentTitle || '');
}
- function handleEdit() {
- this.visible = true;
- this.$refs.dynamicForm.form = this.scope.row;
+ if (!paramVOS['type']) {
+ paramVOS['type'] = DefineVO.btmType;
+ }
+ for(let item in paramVOS) {
+ if (item.includes('.${') && item.includes('}')) {
+ //鏇挎崲鎴愭簮鏁版嵁涓殑鍊�
+ if (Object.keys(this.sourceData).length === 0) {
+ this.$message.error("璇峰厛閫夋嫨涓�鏉℃潵婧愭暟鎹�");
+ return false;
+ }
+ item=item.replace(/:/g,'=');
+ let values = item.split(';');
+ let initValues = []
+ } else if (item.includes('${') && item.includes('}')) {
+ //鏇挎崲鎴愰�変腑鏁版嵁鐨勫��
+ if (this.dataStore.length < 1) {
+ this.$message.error("璇峰厛閫夋嫨涓�鏉℃暟鎹�");
+ return false;
+ }
+ item=item.replace(/:/g,'=');
+ }
+ }
+ paramVOS['initvalue']=paramVOS['initvalue'] || paramVOS['initValue'];
+ let isShow = true;
+ if (paramVOS['initvalue']) {
+ let values = paramVOS['initvalue'].split(';');
+ let initValues = {}
+ values.forEach((i, item) => {
+ 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'];
}
- function handleDelete() {
- 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('璇烽噸鏂伴厤缃寜閽紒')
+ const that=this;
+ if(isShow){
+ doAction(item, {
+ paramVOS: paramVOS,
+ dataStore: this.dataStore || [],
+ sourceData: this.sourceData || {},
+ callback: function () {
+ if (that.$parent.handleRefresh) {
+ that.$parent.handleRefresh()
+ }
+ }
+ });
}
}
- }
+ },
}
</script>
<style scoped>
</style>
+
--
Gitblit v1.9.3