From e358d69fc18870584dd2d9f531910b7838ea27d9 Mon Sep 17 00:00:00 2001 From: wangting <wangting@vci-tech.com> Date: 星期四, 02 一月 2025 09:58:53 +0800 Subject: [PATCH] 调整行点击后的回调 --- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue | 234 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 197 insertions(+), 37 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue index ac5f61b..d15ee7b 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/formDefine/index.vue @@ -12,7 +12,7 @@ </div> <avue-tree v-loading="treeLoading" :data="treeData" :option="treeOption" @node-click="nodeClick"> <span slot-scope="{ node, data }" class="el-tree-node__label"> - <span style="font-size: 15px"> + <span> <i class="el-icon-s-promotion"></i> {{ (node || {}).label }} </span> @@ -26,11 +26,12 @@ <el-main> <basic-container> <div v-if="!tableStatus" style="display: flex;justify-content: left;margin-top: 15px"> - <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">澧炲姞</el-button> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎</el-button> - <el-button icon="el-icon-document-add" plain size="small" type="primary">鍏嬮殕</el-button> - <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button> - <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭 + <el-button v-if="permissionList.addBtn" icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">澧炲姞</el-button> + <el-button v-if="permissionList.delBtn" icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎</el-button> + <el-button v-if="permissionList.cloneBtn" icon="el-icon-document-add" plain size="small" type="primary" @click="copyClickHandler">鍏嬮殕 + </el-button> + <el-button v-if="permissionList.importBtn" icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button> + <el-button v-if="permissionList.exportBtn" icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭 </el-button> </div> <avue-crud @@ -54,29 +55,56 @@ <el-input v-model="topName" placeholder="璇疯緭鍏ュ唴瀹�" size="mini" style="margin-right: 10px;"></el-input> <el-button plain size="mini" type="success" @click="nameSearchHandler">鏌ヨ</el-button> </span> - <span style="display: flex; align-items: center;"> - <p - style="display: flex; align-items: center; margin: 0 10px 0 0;flex-shrink: 0;font-size: 14px">鍏嬮殕鐩爣锛�</p> - <el-input v-model="input" placeholder="璇疯緭鍏ュ唴瀹�" size="mini" style="margin-right: 10px;"></el-input> - <el-button plain size="mini" type="success">鍏嬮殕鐩爣</el-button> - </span> </div> </template> <template slot="menu" slot-scope="scope"> - <el-button icon="el-icon-edit" size="small" type="text" @click="editBtnClick(scope.row)">缂栬緫 + <el-button v-if="permissionList.editBtn" icon="el-icon-edit" size="small" type="text" @click="editBtnClick(scope.row)">缂栬緫 </el-button> - <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">鍒犻櫎 + <el-button v-if="permissionList.delBtn" icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">鍒犻櫎 </el-button> </template> </avue-crud> </basic-container> </el-main> - <form-dialog ref="formDialog" :TreeNodeRow="this.nodeRow" :treeRadio="treeRadio"></form-dialog> + <form-dialog ref="formDialog" :TreeNodeRow="this.nodeRow" :editRow="editRow" :treeRadio="treeRadio" + @updataTable="getRightPortalVIDatas"></form-dialog> <table-dialog ref="tableDialog" :TreeNodeRow="this.nodeRow" :treeRadio="treeRadio" @updataTable="getRightPortalVIDatas"></table-dialog> <!-- 瀵煎叆 --> <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="瀵煎叆" @updata="getRightPortalVIDatas"></upload-file> + <el-dialog + v-dialogDrag + :visible.sync="cloneVisible" + append-to-body="true" + class="avue-dialog" + title="鍏嬮殕" + width="50%"> + <basic-container> + <div ref="TreeBox" style="height: calc(100vh - 294px);!important;"> + <!-- 宸︿晶鏍� --> + <div style="height: calc(100vh - 370px);"> + <div style="margin-bottom: 10px;display: flex;justify-content: center"> + <el-radio v-model="cloneTreeRadio" label="0" @input="cloneTreeRadioChange">涓氬姟绫诲瀷鏍�</el-radio> + <el-radio v-model="cloneTreeRadio" label="1" @input="cloneTreeRadioChange">閾炬帴绫诲瀷鏍�</el-radio> + </div> + <avue-tree ref="cloneTree" v-loading="cloneTreeLoading" :data="cloneTreeData" :option="treeOption" + @node-click="cloneTreeNodeClick"> + <span slot-scope="{ node, data }" class="el-tree-node__label"> + <span> + <i class="el-icon-s-promotion"></i> + {{ (node || {}).label }} + </span> + </span> + </avue-tree> + </div> + </div> + </basic-container> + <span slot="footer" class="dialog-footer"> + <el-button @click="cloneVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="cloneSaveHandler">纭� 瀹�</el-button> + </span> + </el-dialog> </el-container> </template> @@ -84,16 +112,22 @@ import basicOption from "@/util/basic-option"; import FormDialog from "@/views/modelingMenu/ui/formDefine/components/formDialog"; import TableDialog from "@/views/modelingMenu/ui/formDefine/components/tableDialog"; -import {gridPortalVIDatas, getPortalVIById, deleteByIds, exportExcel} from "@/api/UI/formDefine/api"; +import {gridPortalVIDatas, getPortalVIById, deleteByIds, exportExcel, clone} from "@/api/UI/formDefine/api"; import {getBizTypes} from "@/api/modeling/businessType/api"; import {gridLink} from "@/api/modeling/linkType/api"; import func from "@/util/func"; +import {mapGetters} from "vuex"; export default { name: "index", components: {FormDialog, TableDialog}, data() { return { + cloneTreeNode: {}, + cloneTreeRadio: '0', + cloneTreeData: [], + cloneTreeLoading: false, + cloneVisible: false, tipList: [ "瀵煎叆涓氬姟绫诲瀷鍚嶇О涓嶅彲涓虹┖", "瀵煎叆鍚嶇О涓嶅彲涓虹┖涓斿悕绉板彧鑳戒负鑻辨枃瀛楁瘝", @@ -117,7 +151,7 @@ addBtn: false, editBtn: false, delBtn: false, - calcHeight:-60, + calcHeight: -60, column: [ { label: '涓氬姟鍚嶇О', @@ -147,13 +181,25 @@ } }, dbClickList: [], - defaultData: [], // 鐢ㄤ簬鏌ヨ鎭㈠鍘熷鍊� + defaultData: [], // 鐢ㄤ簬鏌ヨ鎭㈠鍘熷鍊�, + editRow: {}, } }, created() { this.getTreeList(); }, computed: { + ...mapGetters(["permission"]), + permissionList() { + return { + addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false), + delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false), + editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false), + exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false), + importBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false), + cloneBtn: this.vaildData(this.permission[this.$route.query.id].clone, false), + }; + }, tableStatus() { return func.isEmptyObject(this.nodeRow); } @@ -166,11 +212,14 @@ return; } if (this.tableRadio === "0") { + this.editRow.id = ""; this.$refs.formDialog.visible = true; this.$refs.formDialog.getTreeList(); } else { this.$refs.tableDialog.visible = true; - this.$refs.tableDialog.getDbList(); + this.$refs.tableDialog.getDbList(); // 鍙屽嚮鎿嶄綔涓嬫媺鎺ュ彛 + this.$refs.tableDialog.getSearchSelectList(); // 閫夋嫨琛ㄥ崟涓嬫媺鎺ュ彛 + this.$refs.tableDialog.getFormSelect(); // 鏌ヨ妯℃澘涓嬫媺鎺ュ彛 } }, @@ -186,7 +235,7 @@ this.treeData = data; this.treeLoading = false; }).catch(error => { - loading.close(); + this.treeLoading = false; }); }, @@ -202,6 +251,7 @@ return item.attributes; // 杩斿洖澶勭悊鍚庣殑 attributes }); this.treeData = data; + this.treeLoading = false; }); } else { gridLink().then(res => { @@ -292,14 +342,19 @@ // 鏇存柊琛ㄥ崟 this.$refs.tableDialog.form = { ...prmItem, + itemFieldWidthList: prmItem.itemFieldWidthList.map(item => { + return { + ...item, + $cellEdit: true, + } + }), viName: res.data.obj.viName, + itemQtName: res.data.obj.prm.formQtName, editNodeId: row.id, - itemOutFieldList: (prmItem.itemOutFieldList || []).map(item => ({id: item})), + itemOutFieldList: (prmItem.itemOutFieldList || []), itemSearchFieldList: (prmItem.itemSearchFieldList || []).map(item => ({id: item})), - itemKeyFieldList: (prmItem.itemKeyFieldList || []).map(item => ({id: item})), - searchLabel: prmItem.itemSeniorQueryCols || '', - searchNumber: prmItem.itemSeniorQueryColsCounts || '1', - searchSql: prmItem.itemQuerySql || '', + itemKeyFieldList: (prmItem.itemKeyFieldList || []), + searchNumber: '1', itemFileWidthSelect: (prmItem.itemFieldWidthList && prmItem.itemFieldWidthList.length > 0) ? prmItem.itemFieldWidthList[0].key : '', itemWidth: (prmItem.itemFieldWidthList && prmItem.itemFieldWidthList.length > 0) ? prmItem.itemFieldWidthList[0].value : '250' }; @@ -308,9 +363,6 @@ const [width = '0', height = '0'] = (prmItem.itemImgWH || '0,0').split(','); this.$refs.tableDialog.itemImgWidth = width; this.$refs.tableDialog.itemImgHeight = height; - - // 鍙屽嚮鎿嶄綔鑾峰彇鏁版嵁鏂规硶 - this.$refs.tableDialog.getDbList(); // 鏄剧ず瀵硅瘽妗� this.$refs.tableDialog.visible = true; @@ -321,7 +373,7 @@ id: row.id, viType: row.viType }; - + this.editRow = row; getPortalVIById(params).then(res => { if (res.data.code === 200) { const data = res.data.obj.prm.prmItemList; @@ -336,8 +388,9 @@ this.$refs.formDialog.formList = updatedData; this.$refs.formDialog.getTreeList(); this.$refs.formDialog.topForm.viName = res.data.obj.viName; + this.$refs.formDialog.topForm.itemQtName = res.data.obj.prm.formQtName; this.$refs.formDialog.topForm.columnNumber = this.getValueBasedOnInput(res.data.obj.prm.showCols); - + this.$refs.formDialog.topForm.showColumn = res.data.obj.prm.showCols; this.$refs.formDialog.visible = true; } }) @@ -373,12 +426,13 @@ // 鍚嶇О鏌ヨ nameSearchHandler() { if (!this.topName) { - this.data = this.defaultData; + this.getRightPortalVIDatas(); return; } - const list = this.data.filter(item => item.viName.includes(this.topName.trim())); + const list = this.defaultData.filter(item => item.viName.includes(this.topName.trim())); this.data = list; + this.page.total = this.data.length; }, // 鍒犻櫎鎸夐挳 @@ -398,8 +452,8 @@ }) }, - rowDeleteHandler(row){ - deleteByIds({ids:row.id}).then(res => { + rowDeleteHandler(row) { + deleteByIds({ids: row.id}).then(res => { if (res.data.code === 200) { this.$message.success('鍒犻櫎鎴愬姛'); this.getRightPortalVIDatas(); @@ -421,7 +475,7 @@ this.lastIndex = newIndex; }, () => { - this.selectList = []; + this.selectList = [row]; } ); }, @@ -439,14 +493,120 @@ exportExcel(params).then(res => { func.downloadFileByBlobHandler(res); this.$message.success('瀵煎嚭鎴愬姛'); - }).catch(err => { - this.$message.error(err); }); }, // 瀵煎叆 upLoadClickHandler() { this.$refs.upload.visible = true; + }, + + // 鍏嬮殕 + copyClickHandler() { + if (this.selectList.length <= 0) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + + if (this.selectList.length > 1) { + this.$message.error('鍙兘閫夋嫨涓�鏉℃暟鎹�'); + return; + } + + this.cloneVisible = true; + this.cloneTreeLoading = true; + getBizTypes().then(res => { + const data = res.data.data.map(item => { + this.processChildren(item); // 澶勭悊姣忎釜鑺傜偣 + item.attributes.id = item.attributes.id; + return item.attributes; // 杩斿洖澶勭悊鍚庣殑 attributes + }); + this.cloneTreeData = data; + this.cloneTreeLoading = false; + }).catch(error => { + this.cloneTreeLoading = false; + }); + }, + + // 鍏嬮殕鏍戠偣鍑� + cloneTreeNodeClick(row) { + this.cloneTreeNode = row; + }, + + // 鍏嬮殕鏍戠被鍨嬪垏鎹� + cloneTreeRadioChange(val) { + this.cloneTreeLoading = true; + if (val === "0") { + getBizTypes().then(res => { + const data = res.data.data.map(item => { + this.processChildren(item); // 澶勭悊姣忎釜鑺傜偣 + item.attributes.id = item.attributes.id; + return item.attributes; // 杩斿洖澶勭悊鍚庣殑 attributes + }); + this.cloneTreeData = data; + this.cloneTreeLoading = false; + }); + } else { + gridLink().then(res => { + const data = res.data.data.map(item => { + item.id = item.name; + return item; + }); + this.cloneTreeData = data; + this.cloneTreeLoading = false; + }) + } + }, + + // 鏌ヨ琛ㄦ牸鏁版嵁璇︽儏 + searchDetail() { + return new Promise((resolve, reject) => { + const params = { + id: this.selectList[0].id, + viType: this.selectList[0].viType + }; + getPortalVIById(params).then(res => { + const obj = res.data.obj; + resolve(obj); + }).catch(error => { + reject(error); + }); + }); + }, + + // 鍏嬮殕淇濆瓨 + async cloneSaveHandler() { + if (func.isEmptyObject(this.cloneTreeNode)) { + this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹繘琛屽厠闅�'); + return; + } + const obj = await this.searchDetail(); + this.$prompt('璇疯緭鍏ュ厠闅嗘枃浠跺悕绉�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + }).then(({value}) => { + const params = { + clonePortalVIDTOList: [ + { + viName: value, + typeName: this.cloneTreeRadio === '0' ? this.cloneTreeNode.id : this.cloneTreeNode.name, + typeFlag: this.cloneTreeRadio, + oldPortalVIDTO: {...obj} + } + ], + } + clone(params).then(res => { + if (res.data.code === 200) { + this.$message.success('鍏嬮殕鎴愬姛'); + this.cloneVisible = false; + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '鍙栨秷杈撳叆' + }); + }); } } } -- Gitblit v1.9.3