From 18715a9d20518abb1374408007759ab2988d1150 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期二, 08 十月 2024 11:58:35 +0800
Subject: [PATCH] 页签克隆

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue |   25 +++++
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue            |   16 ++-
 Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog.vue       |  183 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 215 insertions(+), 9 deletions(-)

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 37e2e11..961577c 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
@@ -26,6 +26,7 @@
         </el-button>
         <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">鍒犻櫎
         </el-button>
+        <el-button icon="el-icon-document-copy" size="small" type="text" @click="rowCloneHandler(scope.row)">鍏嬮殕</el-button>
       </template>
 
       <!-- eventKey浠ュ強eventValue鏄剧ず鍖哄煙 -->
@@ -79,7 +80,7 @@
             </el-button>
             <el-button plain size="mini" type="primary">璋冩暣涓轰笅绾ф寜閽�</el-button>
             <el-button plain size="mini" type="primary">璋冩暣涓轰笂绾ф寜閽�</el-button>
-            <el-button plain size="mini" type="primary">澶嶅埗鍒板叾浠栫粍浠�</el-button>
+            <el-button plain size="mini" type="primary"  @click="cloneClickBtnHandler">澶嶅埗鍒板叾浠栫粍浠�</el-button>
           </div>
         </el-header>
         <el-container>
@@ -195,6 +196,7 @@
       </el-container>
     </el-dialog>
     <action-dialog ref="actionDialog" @updataAction="actionSaveHandler"></action-dialog>
+    <clone-dialog ref="cloneDialog"></clone-dialog>
   </div>
 </template>
 
@@ -213,6 +215,7 @@
   addPageDefination
 } from "@/api/UI/uiDefine";
 import actionDialog from '@/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/components/action';
+import cloneDialog from "@/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog";
 
 export default {
   props: {
@@ -227,7 +230,8 @@
     }
   },
   components: {
-    actionDialog
+    actionDialog,
+    cloneDialog
   },
   name: "index",
   data() {
@@ -1105,6 +1109,7 @@
           this.treeData = [{
             label: this.selectList[0].name,
             oId: 'parentNode',
+            disabled: true,
             children: data
           }];
           this.treeLoading = false;
@@ -1259,6 +1264,17 @@
       });
     },
 
+    cloneClickBtnHandler(){
+      if (func.isEmptyObject(this.nodeTreeRow)) {
+        this.$message.error('璇烽�夋嫨鑺傜偣杩涜澶嶅埗');
+        return;
+      }
+      if (this.nodeTreeRow.oId === "parentNode") {
+        this.$message.error('椤跺眰鑺傜偣涓嶅厑璁稿鍒�');
+        return;
+      }
+      this.$refs.cloneDialog.openDialog(this.nodeTreeRow);
+    },
     // 閫夋嫨action
     actionFoucus() {
       this.$refs.actionDialog.btnActionVisible = true;
@@ -1268,7 +1284,10 @@
     actionSaveHandler(val) {
       this.$set(this.basicForm, 'actionName', val.plName);
       this.$set(this.basicForm, 'actionOId', val.plOId);
-    }
+    },
+    rowCloneHandler(row) {
+      this.$refs.cloneDialog.openDialog(row);
+    },
   }
 }
 </script>
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
new file mode 100644
index 0000000..bc6767a
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog.vue
@@ -0,0 +1,183 @@
+<template>
+  <el-dialog v-dialogDrag
+             :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"
+             @close="cancelDialog">
+    <el-container style="height: 580px">
+      <el-aside style="width: 380px">
+        <basic-container 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">
+              <span slot-scope="{ node, data }" class="el-tree-node__label">
+               <span style="font-size: 15px">
+                    {{ (node || {}).label }}
+                </span>
+              </span>
+            </avue-tree>
+          </div>
+        </basic-container>
+      </el-aside>
+
+      <el-main>
+        <basic-container style="height: 530px">
+          <div style="height: 520px;">
+            <avue-tree ref="uiTree" :data="uiTreeData" :option="uiTreeOption">
+              <span slot-scope="{ node, data }" class="el-tree-node__label">
+                <span style="font-size: 15px">
+                  <i :class="data.icon"></i>
+                    {{ (node || {}).label }}
+                </span>
+              </span>
+            </avue-tree>
+          </div>
+        </basic-container>
+      </el-main>
+    </el-container>
+    <div class="dialog-footer avue-dialog__footer">
+      <el-button type="primary" plain size="small" @click="submitDialog" >淇� 瀛�</el-button>
+      <el-button size="small" @click="cancelDialog">鍙� 娑�</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import {getUIAuthor} from "@/api/authority/ui/uiAuthor";
+import {getBizTree} from "@/api/UI/uiDefine";
+
+export default {
+name: "cloneDialog",
+  data(){
+    return {
+      dialog: {
+        showDialog: false,
+        title: "鍏嬮殕鐩爣",
+        loading: false,
+        type: "clone",
+      },
+      treeOption: {
+        menu: false,
+        addBtn: false,
+        props: {
+          label: 'text',
+          value: 'oid',
+          children: 'children'
+        }
+      },
+      nodeRow: {},
+      treeData: [],
+      defaultExpandKeys:[],
+      uiTreeOption: {
+        nodeKey:'oid',
+        checkOnClickNode:true,
+        defaultExpandedKeys:this.defaultExpandKeys,
+        multiple: true,
+        menu: false,
+        addBtn: false,
+        filter:false,
+        props: {
+          label: 'label',
+          value: 'oid',
+          children: 'children'
+        }
+      },
+      uiTreeData: [],
+    };
+  },
+  methods: {
+    openDialog( data) {
+      this.dialog.showDialog = true;
+      this.getTreeList()
+      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");
+        }
+      });
+    },
+    getTreeList() {
+      const loading = this.$loading({});
+      getBizTree().then(res => {
+        this.treeData =res.data.obj.children;
+        loading.close();
+      }).catch(error=>{
+        loading.close();
+      })
+    },
+    // 瑙掕壊鐐瑰嚮
+    nodeClick(row,node) {
+      this.nodeRow = row;
+      const loading = this.$loading({});
+      const params = {
+        'conditionMap[roleId]': this.nodeRow.oid,
+        'conditionMap[type]': this.type,
+        'conditionMap[context]': this.context
+      }
+      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();
+      }).catch(error => {
+        loading.close();
+      })
+    },
+    //澶勭悊鏍�
+    processChildren(item) {
+      if (item.children && item.children.length > 0) {
+        item.children = item.children.map(child => {
+          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
+          }
+          this.processChildren(child); // 閫掑綊澶勭悊姣忎釜瀛愯妭鐐�
+          return child; // 鍙繑鍥炲瓙鑺傜偣鐨� attributes
+        });
+      }
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>
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 6c677e5..9619374 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
@@ -18,10 +18,9 @@
         <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">鍒犻櫎</el-button>-->
       </template>
       <template slot="menu" slot-scope="scope">
-        <el-button icon="el-icon-edit" size="small" type="text" @click="rowEditBtnClick(scope.row)">缂栬緫
-        </el-button>
-        <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">鍒犻櫎
-        </el-button>
+        <el-button icon="el-icon-edit" size="small" type="text" @click="rowEditBtnClick(scope.row)">缂栬緫</el-button>
+        <el-button icon="el-icon-delete" size="small" type="text" @click="rowDeleteHandler(scope.row)">鍒犻櫎</el-button>
+        <el-button icon="el-icon-document-copy" size="small" type="text" @click="rowCloneHandler(scope.row)">鍏嬮殕</el-button>
       </template>
       <template slot="plIsOpen" slot-scope="{row}">
         <el-tag v-if="row.plIsOpen === 1" type="success">鍚敤</el-tag>
@@ -99,6 +98,7 @@
             <el-button type="primary" @click="saveHandler">纭� 瀹�</el-button>
           </span>
     </el-dialog>
+    <clone-dialog ref="cloneDialog"></clone-dialog>
   </div>
 </template>
 
@@ -112,6 +112,7 @@
 } from "@/api/UI/uiDefine";
 import func from "@/util/func";
 import bottomTable from "./bottomTable/index";
+import cloneDialog from "@/views/modelingMenu/ui/uiDefine/rightRegion/cloneDialog";
 
 export default {
 name: "plShow",
@@ -121,7 +122,7 @@
       default: {}
     },
   },
-  components:{bottomTable},
+  components:{bottomTable,cloneDialog},
   data() {
     return {
       uiDefineOid:'',
@@ -135,7 +136,7 @@
         editBtn: false,
         delBtn: false,
         index:false,
-        menuWidth:160,
+        menuWidth:220,
         align:'left',
         column: [{
           label: '搴忓彿',
@@ -375,6 +376,9 @@
         }
       });
     },
+    rowCloneHandler(row) {
+      this.$refs.cloneDialog.openDialog(row);
+    },
   }
 }
 </script>

--
Gitblit v1.9.3