From cc80ef9656d4144ca6255d2a7dcbb19816888166 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期四, 10 十月 2024 16:23:18 +0800 Subject: [PATCH] ui定义克隆功能 --- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue | 14 +++ Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue | 6 + Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog.vue | 155 +++++++++++++++++++++----------------- Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js | 65 +++++++++++++-- 4 files changed, 157 insertions(+), 83 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js b/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js index f88763c..8e90762 100644 --- a/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js +++ b/Source/plt-web/plt-web-ui/src/api/UI/uiDefine.js @@ -8,6 +8,7 @@ params }); } + // 鍒楄〃鏌ヨ export function gridUIContextData(page, limit, params) { return request({ @@ -20,6 +21,7 @@ } }); } + export const saveUIContextData = (row) => { return request({ url: '/api/uiManagerController/saveUIContextData', @@ -35,6 +37,7 @@ data: row }) } + // 閫氳繃oid鍒犻櫎 export function delUIContextData(params) { return request({ @@ -43,6 +46,7 @@ params }) } + //鍏嬮殕 export const cloneUIContextData = (params) => { return request({ @@ -60,26 +64,28 @@ params: params }); } + // 瀵煎嚭 -export function expUIContextData (params) { +export function expUIContextData(params) { return request({ url: '/api/uiManagerController/expUIContextData', method: 'post', responseType: 'blob', - data:{ + data: { params } }) } //涓婁笅鏂囧悇鍖哄煙鍒楄〃鏁版嵁 -export function getTabByContextIdAndType(params){ +export function getTabByContextIdAndType(params) { return request({ url: "/api/uiManagerController/getTabByContextIdAndType", method: "get", params }); } + export const addTabData = (row) => { return request({ url: '/api/uiManagerController/addTabData', @@ -95,6 +101,7 @@ data: row }) } + // 閫氳繃oid鍒犻櫎 export function deleteTabData(params) { return request({ @@ -103,8 +110,9 @@ params }) } + //涓嬫柟琛ㄦ牸鏁版嵁 -export function getPLPageDefinations(params){ +export function getPLPageDefinations(params) { return request({ url: "/api/uiManagerController/getPLPageDefinations", method: "get", @@ -200,7 +208,7 @@ return request({ url: "/api/uiManagerController/addTabButton", method: "post", - data:params + data: params }); } @@ -209,7 +217,7 @@ return request({ url: "/api/uiManagerController/updateTabButton", method: "put", - data:params + data: params }); } @@ -218,7 +226,7 @@ return request({ url: "/api/uiManagerController/deleteTabButton", method: "delete", - data:params + data: params }); } @@ -227,7 +235,7 @@ return request({ url: "/api/uiManagerController/joinBtn", method: "put", - data:params + data: params }); } @@ -236,7 +244,7 @@ return request({ url: "/api/uiManagerController/exitBtn", method: "put", - data:params + data: params }); } @@ -245,7 +253,44 @@ return request({ url: "/api/uiManagerController/addPageDefination", method: "post", - data:params + data: params + }); +} + + +// 鍏嬮殕鏍戞煡璇㈡帴鍙� +export function getAllLevelTreeByBtm(params) { + return request({ + url: "/api/uiManagerController/getAllLevelTreeByBtm", + method: "get", + params + }); +} + +// 椤甸潰瀹氫箟鍏嬮殕 +export function clonePageDef(params) { + return request({ + url: "/api/uiManagerController/clonePageDef", + method: "post", + data: params + }); +} + +// 椤电瀹氫箟鍏嬮殕 +export function clonetabPage(params) { + return request({ + url: "/api/uiManagerController/clonetabPage", + method: "post", + data: params + }); +} + +// 鎸夐挳瀹氫箟鍏嬮殕 +export function cloneTabButton(params) { + return request({ + url: "/api/uiManagerController/cloneTabButton", + method: "post", + data: params }); } diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue index 6c8a6f5..e770a46 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue @@ -198,7 +198,8 @@ </el-container> </el-dialog> <action-dialog ref="actionDialog" @updataAction="actionSaveHandler"></action-dialog> - <clone-dialog ref="cloneDialog"></clone-dialog> + <clone-dialog ref="cloneDialog" :fromOid="fromOid" :sourceOId="sourceOId" type="pageDef" paramsType="tab"></clone-dialog> + <clone-dialog ref="cloneBtnDialog" :fromOid="formBtnOid" :sourceOId="sourceBtnOid" type="tabButton" paramsType="pageDef"></clone-dialog> </div> </template> @@ -242,6 +243,10 @@ name: "index", data() { return { + formBtnOid:'', + sourceBtnOid:'', + sourceOId:'', + fromOid:'', paramsForm: {}, eventOption: { ...basicOption, @@ -993,6 +998,7 @@ return; } this.btnDesignVisible = true; + this.formBtnOid = this.selectList[0].id; this.getTabBtnTree(); }, @@ -1180,7 +1186,8 @@ this.$message.error('椤跺眰鑺傜偣涓嶅厑璁稿鍒�'); return; } - this.$refs.cloneDialog.openDialog(this.nodeTreeRow); + this.sourceBtnOid = this.nodeTreeRow.oId; + this.$refs.cloneBtnDialog.openDialog(this.nodeTreeRow); }, // 閫夋嫨action @@ -1196,6 +1203,9 @@ // 鎵撳紑鍏嬮殕瀵硅瘽妗� rowCloneHandler(row) { + console.log(row); + this.fromOid = this.sourceData.plOId; + this.sourceOId = row.id; this.$refs.cloneDialog.openDialog(row); }, diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog.vue index bc6767a..ba6cc76 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog.vue @@ -1,16 +1,16 @@ <template> <el-dialog v-dialogDrag + :append-to-body="true" + :close-on-click-modal="false" + :destroy-on-close="true" :title="dialog.title" :visible.sync="dialog.showDialog" - width="1200px" - :append-to-body="true" class="avue-dialog" - :destroy-on-close="true" - :close-on-click-modal="false" + width="1200px" @close="cancelDialog"> <el-container style="height: 580px"> <el-aside style="width: 380px"> - <basic-container style="height: 530px"> + <basic-container v-loading="leftLoading" style="height: 530px"> <h3 style="margin: 0 0 10px 0">涓氬姟绫诲瀷</h3> <div style="height: 435px"> <avue-tree ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick"> @@ -25,9 +25,9 @@ </el-aside> <el-main> - <basic-container style="height: 530px"> - <div style="height: 520px;"> - <avue-tree ref="uiTree" :data="uiTreeData" :option="uiTreeOption"> + <basic-container v-loading="rightLoading" style="height: 530px"> + <div style="height: 490px;"> + <avue-tree ref="uiTree" :data="uiTreeData" :option="uiTreeOption" @check-change="checkChange"> <span slot-scope="{ node, data }" class="el-tree-node__label"> <span style="font-size: 15px"> <i :class="data.icon"></i> @@ -40,7 +40,7 @@ </el-main> </el-container> <div class="dialog-footer avue-dialog__footer"> - <el-button type="primary" plain size="small" @click="submitDialog" >淇� 瀛�</el-button> + <el-button plain size="small" type="primary" @click="submitDialog">淇� 瀛�</el-button> <el-button size="small" @click="cancelDialog">鍙� 娑�</el-button> </div> </el-dialog> @@ -48,12 +48,15 @@ <script> import {getUIAuthor} from "@/api/authority/ui/uiAuthor"; -import {getBizTree} from "@/api/UI/uiDefine"; +import {getBizTree, getAllLevelTreeByBtm, clonePageDef, clonetabPage, cloneTabButton} from "@/api/UI/uiDefine"; export default { -name: "cloneDialog", - data(){ + name: "cloneDialog", + props: ['fromOid', 'type', 'sourceOId','paramsType'], + data() { return { + leftLoading: false, + rightLoading: false, dialog: { showDialog: false, title: "鍏嬮殕鐩爣", @@ -71,17 +74,17 @@ }, nodeRow: {}, treeData: [], - defaultExpandKeys:[], + defaultExpandKeys: [], uiTreeOption: { - nodeKey:'oid', - checkOnClickNode:true, - defaultExpandedKeys:this.defaultExpandKeys, - multiple: true, + nodeKey: 'oid', + checkOnClickNode: true, + defaultExpandedKeys: [], + multiple: false, menu: false, addBtn: false, - filter:false, + filter: false, props: { - label: 'label', + label: 'text', value: 'oid', children: 'children' } @@ -90,84 +93,96 @@ }; }, methods: { - openDialog( data) { + openDialog(data) { this.dialog.showDialog = true; this.getTreeList() - this.uiTreeData=[]; + this.uiTreeData = []; }, cancelDialog() { this.dialog.loading = false; this.dialog.showDialog = false; }, submitDialog() { - linkSave({}).then(res => { - if (res.data.success) { - this.$message.success("鍏嬮殕鎴愬姛"); - this.cancelDialog(); - this.$emit("refresh"); + const node = this.$refs.uiTree.getCurrentNode(); + console.log(node); + if (!node.leaf) { + this.$message.error('璇烽�夋嫨鏈�涓嬪眰瀛愯妭鐐硅繘琛屽厠闅�'); + return; + } + let params = {}; + if (node) { + params = { + fromOid: this.fromOid, + toOid: node.oid, + cloneParam: { + sourceOId: this.sourceOId + } } - }); + } + console.log(params); + const saveFunction = { + 'pageDef': clonePageDef, + 'tabPage': clonetabPage, + 'tabButton': cloneTabButton + }; + saveFunction[this.type](params).then(res => { + if(res.data.code == 200){ + this.$message.success(res.data.obj); + this.cancelDialog(); + } + }) }, getTreeList() { - const loading = this.$loading({}); + this.leftLoading = true; getBizTree().then(res => { - this.treeData =res.data.obj.children; - loading.close(); - }).catch(error=>{ - loading.close(); + this.treeData = res.data.obj.children; + this.leftLoading = false; + }).catch(error => { + this.leftLoading = false; }) }, // 瑙掕壊鐐瑰嚮 - nodeClick(row,node) { + nodeClick(row, node) { this.nodeRow = row; - const loading = this.$loading({}); + this.rightLoading = true; const params = { - 'conditionMap[roleId]': this.nodeRow.oid, - 'conditionMap[type]': this.type, - 'conditionMap[context]': this.context + btmName: this.nodeRow.attributes.name, + level: this.paramsType } - this.defaultExpandKeys=['root']; - getUIAuthor(params).then(res => { - this.processChildren(res.data.data[0]); // 澶勭悊姣忎釜鑺傜偣 - this.uiTreeOption.defaultExpandedKeys=this.defaultExpandKeys; - this.uiTreeData = [{ - attributes: {}, - checked: false, - expanded: true, - data: "root", - level: 0, - icon: 'el-icon-s-home', - oid: res.data.data[0].oid, - label: 'UI涓婁笅鏂囬�夐」', - children: res.data.data[0].children - }]; - loading.close(); + this.defaultExpandKeys = ['root']; + console.log(row); + getAllLevelTreeByBtm(params).then(res => { + this.uiTreeOption.defaultExpandedKeys = [res.data.obj.oid]; + this.uiTreeData = [res.data.obj]; + console.log(res); + this.rightLoading = false; }).catch(error => { - loading.close(); + this.rightLoading = false; }) }, + //澶勭悊鏍� processChildren(item) { if (item.children && item.children.length > 0) { item.children = item.children.map(child => { - if(child.level<4){ + if (child.level < 4) { this.defaultExpandKeys.push(child.oid) } - if(child.level==1){ - child.icon='el-icon-s-promotion'; - child.label=child.data.label+'('+child.data.name+')' - }else if(child.level==2){ - child.icon='el-icon-s-order'; - child.label=child.text - }else if(child.level==3){ - child.icon='el-icon-office-building'; - child.label=child.text - }else if(child.level==4){ - child.icon='el-icon-document'; - child.label=child.text - }else if(child.level==5){ - child.icon='el-icon-s-tools'; - child.label=child.text + if (child.level == 1) { + child.icon = 'el-icon-s-promotion'; + child.label = child.data.label + '(' + child.data.name + ')' + } else if (child.level == 2) { + child.icon = 'el-icon-s-order'; + child.label = child.text + } else if (child.level == 3) { + child.icon = 'el-icon-office-building'; + child.label = child.text + } else if (child.level == 4) { + child.icon = 'el-icon-document'; + child.label = child.text + } else if (child.level == 5) { + child.icon = 'el-icon-s-tools'; + child.label = child.text } this.processChildren(child); // 閫掑綊澶勭悊姣忎釜瀛愯妭鐐� return child; // 鍙繑鍥炲瓙鑺傜偣鐨� attributes diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue index 9619374..a3f0c72 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue @@ -98,7 +98,7 @@ <el-button type="primary" @click="saveHandler">纭� 瀹�</el-button> </span> </el-dialog> - <clone-dialog ref="cloneDialog"></clone-dialog> + <clone-dialog ref="cloneDialog" :fromOid="fromOid" :sourceOId="sourceOId" type="tabPage" paramsType="ui"></clone-dialog> </div> </template> @@ -125,6 +125,8 @@ components:{bottomTable,cloneDialog}, data() { return { + fromOid:'', + sourceOId:'', uiDefineOid:'', areaType: '', tableLoading: false, @@ -377,6 +379,8 @@ }); }, rowCloneHandler(row) { + this.fromOid = this.uiDefineData.plOId; + this.sourceOId = row.plOId; this.$refs.cloneDialog.openDialog(row); }, } -- Gitblit v1.9.3