From 001b13cc0c56895c680edc102f62dba4ca1ee76b Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期日, 08 十月 2023 22:33:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/views/integration/systemInfo.vue |  182 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 161 insertions(+), 21 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/integration/systemInfo.vue b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
index bd3103f..aea7794 100644
--- a/Source/UBCS-WEB/src/views/integration/systemInfo.vue
+++ b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
@@ -24,7 +24,8 @@
 
       </template>
     </avue-crud>
-    <el-dialog :visible.sync="dialogVisible" append-to-body class="avue-dialog avue-dialog--top" title="鍒嗙被鎺堟潈" top="-10">
+    <el-dialog :visible.sync="dialogVisible" append-to-body class="avue-dialog avue-dialog--top" title="鍒嗙被鎺堟潈"
+               top="-50px">
 
       <el-row>
         <el-col :span="10">
@@ -36,19 +37,30 @@
           </avue-tree>
         </el-col>
       </el-row>
+
       <div slot="footer" class="dialog-footer" style="height: 50px;line-height: 50px">
-        <el-button type="primary" icon="el-icon-plus" size="small">鎺� 鏉�</el-button>
-        <el-button icon="el-icon-close"  size="small" type="danger">閲� 缃�</el-button>
-    </div>
+        <el-button icon="el-icon-plus" size="small" type="primary" @click="empower">鎺� 鏉�</el-button>
+        <el-button icon="el-icon-close" size="small" type="danger">閲� 缃�</el-button>
+      </div>
     </el-dialog>
   </basic-container>
 </template>
 <script>
-import {getSysInfoList, sysInfoAdd, sysInfoEdit, sysInfoDel, sysInfoTree} from '@/api/integration/sysInfo.js'
+import {
+  getSysInfoList,
+  sysInfoAdd,
+  sysInfoEdit,
+  sysInfoDel,
+  sysInfoTree,
+  batchAddSave
+} from '@/api/integration/sysInfo.js'
 
 export default {
   data() {
     return {
+      checkAll: {},
+      ParentList: [],
+      ParentRemoveList: [],
       //閬垮厤缂撳瓨
       reload: Math.random(),
       TreeLoading: false,
@@ -125,27 +137,158 @@
       },
     }
   },
-
+  created() {
+  },
   methods: {
+    empower() {
+      batchAddSave(this.checkAll.oid, this.checkAll.id, this.ParentList).then(res => {
+        // console.log(res.data)
+        if(res.data.code === 200){
+          this.$message.success(res.data.msg)
+          this.dialogVisible=false;
+        }
+      })
+    },
     //鍒嗙被鎺堟潈澶氶�夊洖璋�
-    checkChange(row,checked) {
-      // console.log(row)
-      // if(checked){
-      //
-      // }
+    checkChange(row, checked) {
+      // this.ParentList=[]
+      // console.log('row',row)
+      if (checked) {
+        if (!row.parentId) {
+          const parentRecord = {
+            oid: row.oid,
+            classifyId: row.attributes.classifyId,
+            classifyOid: row.attributes.classifyOid,
+            classParentOid: row.parentId,
+          };
+          this.ParentList.push(parentRecord);
+          // 濡傛灉row鐨刢hildren涓嶄负绌� 缁х画寰幆children涓殑姣忎釜瀵硅薄
+          if (row.children && row.children.length > 0) {
+            for (let child of row.children) {
+              const childRecord = {
+                oid: child.oid,
+                classifyId: child.attributes.classifyId,
+                classifyOid: child.attributes.classifyOid,
+                classParentOid: child.parentId,
+              };
+              this.ParentList.push(childRecord);
+              // 濡傛灉瀛愬璞$殑children涓嶄负绌� 缁х画寰幆鑾峰彇鏁版嵁
+              if (child.children && child.children.length > 0) {
+                for (let subChild of child.children) {
+                  const subRecord = {
+                    oid: subChild.oid,
+                    classifyId: subChild.attributes.classifyId,
+                    classifyOid: subChild.attributes.classifyOid,
+                    classParentOid: subChild.parentId,
+                  };
+                  this.ParentList.push(subRecord);
+                }
+              }
+            }
+          }
+        }
+      } else {
+        // 鍙栨秷鍕鹃�夌殑鑺傜偣鏄埗鑺傜偣
+        if (!row.parentId) {
+          // 鎵惧埌鐖惰妭鐐瑰湪ParentList涓殑绱㈠紩
+          const parentIndex = this.ParentList.findIndex(item => item.oid === row.oid);
+          if (parentIndex !== -1) {
+            const parentOid = this.ParentList[parentIndex].classifyOid;
+
+            // 鏌ユ壘鎵�鏈夐渶瑕佸垹闄ょ殑瀛愯妭鐐圭殑绱㈠紩
+            const childIndexes = this.ParentList.reduce((indexes, item, index) => {
+              if (item.classParentOid === parentOid && item.classifyOid !== parentOid) {
+                indexes.push(index);
+              }
+              return indexes;
+            }, []);
+
+            // 浠庡悗寰�鍓嶅垹闄ゅ瓙鑺傜偣鐨勬暟鎹紝淇濊瘉绱㈠紩鐨勬纭��
+            for (let i = childIndexes.length - 1; i >= 0; i--) {
+              this.ParentList.splice(childIndexes[i], 1);
+            }
+
+            // 鍒犻櫎鐖惰妭鐐圭殑鏁版嵁
+            this.ParentList.splice(parentIndex, 1);
+          }
+        } else {
+          // 鍙栨秷鍕鹃�夌殑鑺傜偣鏄瓙鑺傜偣
+          const childIndex = this.ParentList.findIndex(item => item.oid === row.oid);
+          if (childIndex !== -1) {
+            // 鍒犻櫎瀛愯妭鐐圭殑鏁版嵁
+            this.ParentList.splice(childIndex, 1);
+          }
+        }
+      }
+      console.log('this.ParentList',this.ParentList);
     },
     //鍒嗙被鎺堟潈
     classifyHandler(row) {
       this.loading = true;
+      this.checkAll = row
       sysInfoTree({systemOid: row.oid, systemId: row.id}).then(res => {
-        this.TreeData = res.data;
-        this.ModifyProperties(this.TreeData, 'text', 'label');
-        // 鏍规嵁 this.TreeData 鐨勯暱搴﹁绠楀欢杩熸椂闂�
+        let List = [];
+        let value = 0;
+        let NumberList= [];
+        function traverse(obj, parent) {
+          //閲嶆柊鏋勫缓涓�娆¢�変腑褰撳墠row鐨勬暟鎹�
+          const record = {
+            label: obj.text,
+            oid: obj.oid,
+            attributes:{
+              classifyId: obj.attributes.classifyId,
+              classifyOid: obj.attributes.classifyOid,
+              selected:obj.attributes.selected
+            },
+            classParentOid: obj.parentId,
+            value: value,
+            children: []
+          };
+          //褰撳墠宸查�夋嫨鏁版嵁鍥炲~
+          if (record.attributes.selected == 'true') {
+            NumberList.push(record.value);
+          }
+          if (parent) {
+            const stingChild = parent.children.find(child => child.label === record.label);
+            if (stingChild) {
+              record.value = stingChild.value; // 浣跨敤宸插瓨鍦ㄧ殑瀛愯妭鐐圭殑value鍊�
+            } else {
+              parent.children.push(record);
+              value++;
+            }
+          } else {
+            const stingRecord = List.find(item => item.label === record.label);
+            if (stingRecord) {
+              record.value = stingRecord.value; // 浣跨敤宸插瓨鍦ㄧ殑椤跺眰鑺傜偣鐨剉alue鍊�
+            } else {
+              List.push(record);
+              value++;
+            }
+          }
+          if (obj.children && obj.children.length > 0) {
+            for (let child of obj.children) {
+              traverse(child, record);
+            }
+          }
+        }
+        for (let item of res.data) {
+          traverse(item, null);
+        }
+        // console.log('list', List);
+        this.TreeData = List;
+        // this.ModifyProperties(this.TreeData, 'text', 'label');
+        // 鏍规嵁this.TreeData鐨勯暱搴﹁绠楀欢杩熸椂闂�
         const delayTime = this.TreeData.length * 1;
         setTimeout(() => {
           this.loading = false;
-          this.reload = Math.random()
+          this.reload = Math.random();
           this.dialogVisible = true;
+
+          this.$nextTick(() => {
+            if (this.$refs.tree) {
+              this.$refs.tree.setCheckedKeys(NumberList);
+            }
+          });
         }, delayTime);
       });
     },
@@ -163,7 +306,6 @@
     },
     async getDataList() {
       this.loading = true;
-      console.log(this.search);
       const {pageSize, currentPage} = this.page;
       const conditions = {};
       if (Object.keys(this.search).length > 0) {
@@ -175,7 +317,7 @@
       }
       const response = await getSysInfoList(pageSize, currentPage, conditions);
       if (response.status === 200) {
-        console.log(response);
+        // console.log(response);
         this.loading = false;
         const data = response.data.data;
         this.data = data.records;
@@ -244,7 +386,7 @@
       }).then(async () => {
         const response = await sysInfoDel(param)
         if (response.status === 200) {
-          console.log(response)
+          // console.log(response)
           this.$message({
             type: 'success',
             message: '鍒犻櫎鎴愬姛!'
@@ -266,9 +408,7 @@
     },
     // enter鎼滅储
     handleEnter() {
-      if (this.search[this.selectValue] === '') return
-      else this.getDataList()
-
+      this.getDataList()
     },
     // 杈撳叆妗嗘竻绌�
     handleClear() {

--
Gitblit v1.9.3