From 0e818b766656ea54f516c1bb3b5987c985de80a9 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 18 十月 2024 16:56:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue |  379 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 283 insertions(+), 96 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
index 6d4bb28..761693e 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
@@ -2,39 +2,11 @@
   <el-container v-loading="createViewLoading">
     <el-aside>
       <basic-container>
-        <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
-          <div class="headerCon">
-            <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓
-            </el-button>
-            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼
-            </el-button>
-            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎
-            </el-button>
-            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭
-            </el-button>
-            <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆
-            </el-button>
-            <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small"
-                       type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘
-            </el-button>
-            <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small"
-                       type="primary" @click="indexClickHandler">鍒涘缓绱㈠紩
-            </el-button>
-            <el-button icon="el-icon-menu" plain size="small" style="width: 82px;text-align: center;padding-left: 1px"
-                       type="primary" @click="checkClickHandler">涓�鑷存�ф鏌�
-            </el-button>
-            <el-button class="miniBtn" icon="el-icon-delete" plain size="small"
-                       type="danger" @click="checkClickHandler">鍒犻櫎鏁版嵁
-            </el-button>
-            <el-button class="smallBtn" plain size="small"
-                       type="danger" @click="checkClickHandler">鍒犻櫎鍏ㄩ儴绫诲瀷
-            </el-button>
-            <el-button class="smallBtn" plain size="small" type="primary" @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿
-            </el-button>
-          </div>
+        <div ref="TreeBox" style="height: calc(100vh - 154px);!important;">
+
           <!-- 宸︿晶鏍� -->
-          <div style="height:  calc(100vh - 330px);">
-            <avue-tree ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick">
+          <div style="height:  calc(100vh - 190px);">
+            <avue-tree ref="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">
               <i class="el-icon-s-promotion"></i>
@@ -48,7 +20,20 @@
     </el-aside>
     <el-main>
       <basic-container>
-        <div style="display: flex;justify-content: center; height: 230px">
+        <div>
+          <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓</el-button>
+          <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼</el-button>
+          <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎</el-button>
+          <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭</el-button>
+          <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button>
+          <el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘</el-button>
+          <el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="indexClickHandler">鍒涘缓绱㈠紩</el-button>
+          <el-button icon="el-icon-menu" plain size="small" type="primary" @click="checkClickHandler">涓�鑷存�ф鏌�</el-button>
+          <el-button icon="el-icon-delete" plain size="small" type="danger" @click="checkClickHandler">鍒犻櫎鏁版嵁</el-button>
+          <el-button plain size="small" type="danger" @click="checkClickHandler">鍒犻櫎鍏ㄩ儴绫诲瀷</el-button>
+          <el-button plain size="small" type="primary" @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿</el-button>
+        </div>
+        <div style="display: flex;justify-content: center; height: 230px;margin-top: 10px;">
           <div class="descBox" style="max-height: 100px">
             <el-descriptions :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�">
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
@@ -451,7 +436,7 @@
         </span>
     </el-dialog>
 
-    <!-- 涓�鑷存�ф鏌� -->
+    <!-- 鏌ョ湅绱㈠紩 -->
     <el-dialog
       v-dialogDrag
       :visible.sync="indexVisible"
@@ -459,8 +444,61 @@
       class="avue-dialog"
       title="绱㈠紩淇℃伅"
       width="60%"
+      @close="indexDialogClose"
     >
-
+      <div v-loading="indexLoading" style="display: flex;height: 500px;width: 100%">
+        <basic-container>
+          <div style="height: 390px">
+            <el-button plain size="mini" style="margin-bottom: 5px" type="danger"
+                       @click="deleteIndexLeftTreeClickHandler">鍒犻櫎绱㈠紩
+            </el-button>
+            <avue-tree
+              :data="indexLeftData"
+              :option="indexLeftOption"
+              @node-click="indexLeftNodeClick"></avue-tree>
+          </div>
+        </basic-container>
+        <div style="padding: 20px;width: 75%">
+          <div>
+            <el-form ref="form" :model="indexForm" label-width="90px" size="mini">
+              <el-form-item label="绱㈠紩鍚嶇О锛�">
+                <el-input v-model="indexForm.name" :readOnly="indexFormRead"></el-input>
+              </el-form-item>
+              <el-form-item label="鎻忚堪锛�">
+                <el-input v-model="indexForm.desc"></el-input>
+              </el-form-item>
+            </el-form>
+            <div style="display: flex;justify-content: center">
+              <el-button plain size="mini" type="success" @click="rightIndexAddClick">澧炲姞</el-button>
+              <el-button plain size="mini" type="danger">鍒犻櫎</el-button>
+            </div>
+          </div>
+          <avue-crud
+            :data="indexData"
+            :option="indexOption"></avue-crud>
+        </div>
+      </div>
+      <el-dialog
+        v-dialogDrag
+        :visible.sync="indexAttrVisible"
+        append-to-body="true"
+        class="avue-dialog"
+        title="灞炴�т俊鎭�"
+        width="60%"
+      >
+        <avue-crud
+          :data="indexAttrData"
+          :option="indexAttrOption"
+          @row-click="indexAttrRowClick"></avue-crud>
+        <span slot="footer" class="dialog-footer">
+         <el-button @click="indexAttrVisible = false">鍙� 娑�</el-button>
+         <el-button type="primary" @click="indexAttrClickAddHandler">纭� 瀹�</el-button>
+        </span>
+      </el-dialog>
+      <span slot="footer" class="dialog-footer">
+         <el-button @click="indexDialogClose">鍙� 娑�</el-button>
+         <el-button type="primary" @click="indexClickAddHandler">淇� 瀛�</el-button>
+        </span>
     </el-dialog>
 
   </el-container>
@@ -478,7 +516,10 @@
   getUsedBtmLinkList,
   checkBtmConsistency,
   executeRepair,
-  getIndexByCondition
+  getIndexByCondition,
+  delIndex,
+  getAllAttributesByBtmId,
+  addIndex
 } from "@/api/modeling/businessType/api"
 import {gridAttribute} from "@/api/modeling/attributePool/api";
 import func from "@/util/func";
@@ -489,7 +530,79 @@
   name: "index",
   data() {
     return {
-      indexVisible:false,
+      indexLoading: false,
+      indexFormRead: false,
+      indexAttrRow: {},
+      indexAttrOption: {
+        ...basicOption,
+        height: 380,
+        highlightCurrentRow: true,
+        addBtn: false,
+        refreshBtn: false,
+        editBtn: false,
+        delBtn: false,
+        selection: false,
+        menu: false,
+        column: [
+          {
+            label: '灞炴�т俊鎭�',
+            prop: 'id',
+            sortable: true,
+          },
+        ]
+      },
+      indexAttrData: [],
+      indexData: [],
+      indexAttrVisible: false,
+      indexLeftNodeRow: {},
+      indexForm: {
+        name: '',
+        desc: ''
+      },
+      indexLeftData: [],
+      indexLeftOption: {
+        height: 'auto',
+        menu: false,
+        addBtn: false,
+        props: {
+          label: 'name',
+          value: 'id',
+          children: 'children',
+        },
+      },
+      indexOption: {
+        ...basicOption,
+        height: 280,
+        addBtn: false,
+        refreshBtn: false,
+        editBtn: false,
+        delBtn: false,
+        selection: false,
+        menu: false,
+        column: [
+          {
+            label: '涓氬姟绫诲瀷鍚嶇О',
+            prop: 'typeName',
+            sortable: true,
+          },
+          {
+            label: '绱㈠紩鍚嶇О',
+            prop: 'indexName',
+            sortable: true,
+          },
+          {
+            label: '灞炴�у悕绉�',
+            prop: 'attrNames',
+            sortable: true,
+          },
+          {
+            label: '鎻忚堪',
+            prop: 'desc',
+            sortable: true,
+          },
+        ]
+      },
+      indexVisible: false,
       conDefaultCheckData: [], // 淇濈暀涓婁釜鎺ュ彛杩斿洖鐨勬暟鎹�
       conCheckLoading: false,
       conCheckOption: {
@@ -780,7 +893,8 @@
         props: {
           label: 'TreeName',
           value: 'id',
-          children: 'children'
+          children: 'children',
+          name: 'name'
         }
       },
       treeData: [
@@ -799,6 +913,7 @@
         name: 'el-icon-tickets',
         desc: 'el-icon-chat-line-square'
       },
+      treeLoading: false
     }
   },
   created() {
@@ -809,6 +924,7 @@
   methods: {
     //鏍戣〃鏌ヨ
     getTreeList() {
+      this.treeLoading = true;
       getBizTypes().then(res => {
         const data = res.data.data.map(item => {
           this.processChildren(item); // 澶勭悊姣忎釜鑺傜偣
@@ -816,8 +932,8 @@
           return item.attributes; // 杩斿洖澶勭悊鍚庣殑 attributes
         });
         this.treeData[0].children = data;
-        console.log(this.treeData);
         this.inheritTreeData = data;
+        this.treeLoading = false;
       });
     },
 
@@ -1171,7 +1287,7 @@
 
     // 鏂板缂栬緫淇濆瓨
     addDialogSavaHandler() {
-      if (!this.form.inputRevisionFlag && (!this.form.revisionRuleId || this.form.revisionRuleId === "")) {
+      if (this.form.revLevel !== '0' &&!this.form.inputRevisionFlag && (!this.form.revisionRuleId || this.form.revisionRuleId === "")) {
         this.$message.error('璇锋鏌ョ増鏈彿瑙勫垯涓嶈兘涓虹┖');
         return;
       }
@@ -1305,9 +1421,9 @@
         if (res.data.code === 200) {
           this.checkViewVisible = true;
           const data = res.data.data.map(item => {
-            return{
-              name:this.nodeRow.id,
-              source:item
+            return {
+              name: this.nodeRow.id,
+              source: item
             }
           });
           this.checkViewData = data;
@@ -1340,12 +1456,14 @@
     },
 
     // 涓�鑷存�ф鏌ユ寜閽偣鍑�
-    checkClickHandler(){
-      checkBtmConsistency().then(res =>{
-        if(res && res.data && res.data.data){
+    checkClickHandler() {
+      this.createViewLoading = true;
+      checkBtmConsistency().then(res => {
+        this.createViewLoading = false;
+        if (res && res.data && res.data.data) {
           this.conCheckVisible = true;
           this.conCheckLoading = true;
-          if(res.data.code === 200){
+          if (res.data.code === 200) {
             const data = res.data.data[0];
             this.conDefaultCheckData = data; // 淇濈暀涓�浠藉師濮嬫暟鎹�
             this.conCheckLoading = false;
@@ -1374,7 +1492,7 @@
             })
             this.conCheckData = outputData;
           }
-        }else {
+        } else {
           this.$message.success(res.data.msg);
         }
       })
@@ -1395,17 +1513,130 @@
     },
 
     // 鍒涘缓绱㈠紩鎸夐挳鐐瑰嚮
-    indexClickHandler(){
-      if(func.isEmptyObject(this.nodeRow)){
+    indexClickHandler() {
+      if (func.isEmptyObject(this.nodeRow)) {
         this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
         return;
       }
+      this.getLeftIndex();
+      this.indexVisible = true;
+    },
+
+    // 宸︿晶鏍戞洿鏂�
+    getLeftIndex() {
       const params = {
-        "conditionMap[typename]":this.nodeRow.id
+        "conditionMap[typename]": this.nodeRow.id
       }
       getIndexByCondition(params).then(res => {
-        console.log(res);
+        if (res.data.code === 200) {
+          const data = res.data.data.map(item => {
+            return {
+              indexName: item.indexName,
+              name: `${item.indexName} ${item.attrNames}`,
+              id: item.oid
+            }
+          })
+          this.indexLeftData = data;
+        }
       })
+    },
+
+    // 绱㈠紩宸︿晶鏍戠偣鍑�
+    indexLeftNodeClick(row) {
+      this.indexLeftNodeRow = row;
+    },
+
+    // 鍒犻櫎宸︿晶鏍戠储寮�
+    deleteIndexLeftTreeClickHandler() {
+      if (func.isEmptyObject(this.indexLeftNodeRow)) {
+        this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹繘琛屽垹闄�');
+        return;
+      }
+      const params = {
+        btmName: this.nodeRow.id,
+        indexName: this.indexLeftNodeRow.indexName
+      };
+      delIndex(params).then(res => {
+        if (res.data.code === 200) {
+          this.$message.success('鍒犻櫎绱㈠紩鎴愬姛');
+          this.getLeftIndex();
+        }
+      })
+    },
+
+    //鍙充晶琛ㄦ牸娣诲姞灞炴��
+    indexAttrClickAddHandler() {
+      if (func.isEmptyObject(this.indexAttrRow)) {
+        this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
+        return;
+      }
+      this.indexData.push(
+        {
+          typeName: this.nodeRow.id,
+          attrNames: this.indexAttrRow.id,
+          indexName: this.indexForm.name,
+          desc: this.indexForm.desc
+        }
+      )
+      this.indexFormRead = true;
+      this.indexAttrVisible = false;
+    },
+
+    // 鍙充晶灞炴�ц〃鏍艰鐐瑰嚮
+    indexAttrRowClick(row) {
+      this.indexAttrRow = row;
+    },
+
+    // 鍙充晶琛ㄦ牸澧炲姞
+    rightIndexAddClick() {
+      if (!this.indexForm.name) {
+        this.$message.error('璇疯緭鍏ョ储寮曞悕绉�');
+        return;
+      }
+
+      // 妫�鏌ユ槸鍚︿负鑻辨枃瀛楃
+      const englishRegex = /^[A-Za-z]+$/;
+      if (!englishRegex.test(this.indexForm.name)) {
+        this.$message.error('绱㈠紩鍚嶇О鍙兘鍖呭惈鑻辨枃瀛楃');
+        return;
+      }
+      this.indexLoading = true;
+      getAllAttributesByBtmId({btmId: this.nodeRow.id}).then(res => {
+        if (res.data.code === 200) {
+          const data = res.data.data.map(item => {
+            return {
+              id: item.id
+            }
+          })
+          this.indexAttrData = data;
+        }
+        this.indexLoading = false;
+        this.indexAttrVisible = true;
+      })
+    },
+
+    // 鍒涘缓淇濆瓨绱㈠紩
+    indexClickAddHandler() {
+      const params = {
+        typeName: this.nodeRow.id,
+        attrNames: this.indexData.map(item => item.attrNames).join(','),
+        indexName: this.indexForm.name,
+      }
+      addIndex([params]).then(res => {
+        console.log(res)
+        this.$message.success('鍒涘缓鎴愬姛');
+        this.indexDialogClose();
+      }).catch(err => {
+        this.indexDialogClose();
+      })
+    },
+
+    // 绱㈠紩瀵硅瘽妗嗗彇娑�
+    indexDialogClose() {
+      this.indexFormRead = false;
+      this.indexForm = {};
+      this.indexData = [];
+      this.indexVisible = false;
     }
   }
 }
@@ -1425,50 +1656,6 @@
   .el-form-item .el-select {
     width: 100%;
   }
-
-  .headerCon {
-    .el-button {
-      width: 82px;
-    }
-  }
-}
-
-.headerCon {
-  display: flex;
-  flex-wrap: wrap;
-  margin-bottom: 5px;
-
-  .el-button + .el-button {
-    margin-left: 5px;
-  }
-
-  .el-button {
-    margin-top: 5px;
-  }
-}
-
-.headerCon > .el-button:nth-child(4) {
-  margin-left: 0;
-}
-
-.headerCon > .el-button:nth-child(7) {
-  margin-left: 0;
-}
-
-.headerCon > .el-button:nth-child(10) {
-  margin-left: 0;
-}
-
-.miniBtn {
-  width: 82px;
-  text-align: center;
-  padding-left: 7px;
-}
-
-.smallBtn {
-  width: 82px;
-  text-align: center;
-  padding-left: 4.5px;
 }
 
 .descBox {

--
Gitblit v1.9.3