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