From 8745e841668d47b2e1c0b21c010834f15a82cac9 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 18 四月 2024 00:10:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/api/vciAttrbute.js                     |   16 +++
 Source/UBCS-WEB/src/views/integration/vciAttribute.vue     |  121 ++++++++++++-----------
 Source/UBCS-WEB/src/views/integration/integrationIndex.vue |  147 ++++++++++++++++++++++++++---
 3 files changed, 210 insertions(+), 74 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/vciAttrbute.js b/Source/UBCS-WEB/src/api/vciAttrbute.js
index 422c466..256dc71 100644
--- a/Source/UBCS-WEB/src/api/vciAttrbute.js
+++ b/Source/UBCS-WEB/src/api/vciAttrbute.js
@@ -26,3 +26,19 @@
     data
   })
 }
+//鑷姩濉厖
+export const getByGroupAttrMapping = (data) => {
+  return request({
+    url: '/api/ubcs-applyjtcodeservice/groupAttrPoolMapping/getByGroupAttrKeyList',
+    method: 'post',
+    data
+  })
+}
+// 鍙栧�艰寖鍥磋嚜鍔ㄥ~鍏�
+export const getEnumAttrByClsOidAndAttrId = (data) => {
+  return request({
+    url: '/api/ubcs-applyjtcodeservice/groupAttrPoolMapping/getEnumAttrByClsOIdAndAttrId',
+    method: 'post',
+    data
+  })
+}
diff --git a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
index 9e77493..5cb52d3 100644
--- a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
+++ b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
@@ -50,6 +50,11 @@
                        @row-click="handleMapingClick" @row-dblclick="handleMapingRowClick"
                        @selection-change="selectionChange"
                        @select-all="handleSelectAll">
+              <template slot="radio"
+                        slot-scope="{row}">
+
+                <el-radio v-model="selectRow" :label="row.$index">-</el-radio>
+              </template>
               <template slot="menuLeft">
                 <!--                <el-button :disabled="disabledPush" icon="el-icon-plus" size="small" type="primary"-->
                 <!--                           @click="dialogPush = true">鏂� 澧�-->
@@ -74,7 +79,7 @@
                        @row-dblclick="handleRowClick">
               <template slot="menuLeft">
                 <el-button icon="el-icon-coordinate" size="small" type="primary"
-                           @click="handlerAuto">鑷姩濉厖
+                           @click="handlerBottomAuto">鑷姩濉厖
                 </el-button>
               </template>
             </avue-crud>
@@ -98,7 +103,7 @@
   listCodeAttributeByClassId,
   syncClassifyModel
 } from '@/api/integration/integration.js'
-import {getPage} from "@/api/omd/OmdAttribute";
+import {getByGroupAttrMapping, getEnumAttrByClsOidAndAttrId} from "@/api/vciAttrbute";
 
 export default {
   components: {
@@ -122,6 +127,7 @@
       highlightCurrentRow: true,
     }
     return {
+      selectRow: "",
       targetNameList: [], // 鍏冩暟鎹繑鍥炲悕绉�
       defaultCheckedKeys: [],
       isNodeDisabled: true,
@@ -179,7 +185,6 @@
         refreshBtn: false,
         delBtn: false,
         addBtn: false,
-        index: true,
         columnBtn: false,
         searchShow: true,
         emptyBtn: false,
@@ -191,6 +196,7 @@
         highlightCurrentRow: true,
         $cellEdit: true,
         column: [
+          {label: '', prop: 'radio', width: 60, hide: false},
           {label: '闆嗗洟鍒嗙被', prop: 'sourceClassifyName', minWidth: 80},
           {label: '鎵�灞炶鍥�', prop: 'viewName', minWidth: 80},
           {label: '闆嗗洟灞炴��', prop: 'sourceAttrName', minWidth: 80},
@@ -245,7 +251,8 @@
       mappingForm: {},
       // 瀹氭椂鍣�
       times: null,
-      TreeSelectOid: ""
+      TreeOid: "",
+      tableSelectId: ''
 
     }
   },
@@ -277,6 +284,102 @@
     }
   },
   methods: {
+    handlerAuto() {
+      if (!this.TreeOid || this.TreeOid === "") {
+        return;
+      }
+      // 杩囨护鍑洪泦鍥㈠睘鎬х殑key鍊�
+      const groupArray = this.mappingData ? this.mappingData.map(obj => obj.sourceAttrKey) : [];
+      // 鑾峰彇鍒伴渶瑕佽嚜鍔ㄥ~鍏呯殑鍊�
+      getByGroupAttrMapping({classifyId: this.TreeOid, groupAttrKeyList: groupArray})
+        .then(res => {
+          //  鍗曠嫭鎶婅繑鍥炲�肩殑groupAttrKey鏀句竴涓暟缁勶紝鐒跺悗杩囨护鍑鸿繑鍥炲�肩殑groupAttrKey鏄惁绛変簬琛ㄦ牸鏁版嵁涓殑sourceAttrKey
+          // const groupReturnData = res.data && res.data.data ? res.data.data.map(item => item.groupAttrKey) : [];
+          const groupReturnData = res.data.data;
+          // 杩囨护鍖归厤
+          // console.log(groupReturnData)
+          this.mappingData.forEach(mappingItem => {
+            groupReturnData.forEach(groupItem => {
+              if (mappingItem.sourceAttrKey === groupItem.groupAttrKey) {
+                const result = this.transferData.find(obj => obj.id.toLowerCase() === groupItem.codeMetaAttrKey.toLowerCase());
+                if (result) {
+                  mappingItem.targetAttrId = groupItem.codeMetaAttrOid.toLowerCase();
+                  mappingItem.targetAttrName = groupItem.codeMetaAttrName.toLowerCase();
+                  mappingItem.targetAttrKey = groupItem.codeMetaAttrKey.toLowerCase();
+                } else {
+                  mappingItem.targetAttrId = '';
+                  mappingItem.targetAttrName = '';
+                  mappingItem.targetAttrKey = '';
+                }
+              }
+            })
+          })
+          this.$message.success('濉厖鎴愬姛锛�');
+        })
+        .catch(error => {
+          console.log(error)
+          this.$message.error('濉厖澶辫触锛岃绋嶅悗鍐嶈瘯锛�');
+        });
+    },
+    handlerBottomAuto() {
+      if (this.rangeData.length <= 0) {
+        this.$message.warning('璇烽�夋嫨涓�鏉℃灇涓剧被鍨嬪睘鎬�!')
+        return
+      }
+      getEnumAttrByClsOidAndAttrId({classifyId: this.TreeOid, codeMetaAttrKey: this.tableSelectId}).then(res => {
+        const data = res.data.data;
+        this.rangeData.forEach(rangeItem => {
+          data.forEach(dataItem => {
+            const similarity = this.calculateSimilarity(rangeItem.numText, dataItem.itemName);
+            if (similarity > 70) {
+              rangeItem.targetNumTextValue = rangeItem.numTextValue;
+              rangeItem.targetNumText = dataItem.itemName;
+            }
+          })
+        })
+
+      })
+    },
+    calculateSimilarity(str1, str2) {
+      // 璁$畻缂栬緫璺濈
+      function editDistance(s1, s2) {
+        s1 = s1.toLowerCase();
+        s2 = s2.toLowerCase();
+
+        const costs = [];
+        for (let i = 0; i <= s1.length; i++) {
+          let lastValue = i;
+          for (let j = 0; j <= s2.length; j++) {
+            if (i === 0)
+              costs[j] = j;
+            else {
+              if (j > 0) {
+                let newValue = costs[j - 1];
+                if (s1.charAt(i - 1) !== s2.charAt(j - 1))
+                  newValue = Math.min(Math.min(newValue, lastValue),
+                    costs[j]) + 1;
+                costs[j - 1] = lastValue;
+                lastValue = newValue;
+              }
+            }
+          }
+          if (i > 0)
+            costs[s2.length] = lastValue;
+        }
+        return costs[s2.length];
+      }
+
+      // 璁$畻鐩镐技搴︾櫨鍒嗘瘮
+      function similarityPercent(s1, s2) {
+        let maxLength = Math.max(s1.length, s2.length);
+        let distance = editDistance(s1, s2);
+        return ((maxLength - distance) / maxLength) * 100;
+      }
+
+      // 璋冪敤鐩镐技搴﹁绠楀嚱鏁板苟杩斿洖鐧惧垎姣斿舰寮忕殑鐩镐技搴�
+      const similarity = similarityPercent(str1, str2);
+      return similarity;
+    },
     getTargetName(data) {
       this.targetColumn.dicData = data.filter(item => item.name && item.name.trim() !== "") // 杩囨护鎺塶ame涓虹┖鐨勫睘鎬�
         .map(item => {
@@ -284,7 +387,7 @@
             targetAttrId: item.oid,
             targetAttrKey: item.id,
             targetAttrName: item.name,
-            disabled: false
+            // disabled: false
           }
         });
     },
@@ -312,12 +415,12 @@
         this.loading = false
         this.mappingData = response.data.data
 
-        for (const item of this.mappingData) {
-          if (item.targetAttrName && item.targetAttrId && item.targetAttrKey) {
-            const targetObject = this.targetColumn.dicData.find(obj => obj.targetAttrName === item.targetAttrName);
-            targetObject.disabled = true;
-          }
-        }
+        // for (const item of this.mappingData) {
+        //   if (item.targetAttrName && item.targetAttrId && item.targetAttrKey) {
+        //     const targetObject = this.targetColumn.dicData.find(obj => obj.targetAttrName === item.targetAttrName);
+        //     targetObject.disabled = true;
+        //   }
+        // }
       }
     },
     // 鎺ュ彛鑾峰彇灞炴�ф槧灏勫彇鍊艰寖鍥�
@@ -429,11 +532,12 @@
       }
       for (const item of this.mappingData) {
         item.$cellEdit = false;
-        if (item.targetAttrName) {
+        if (item.targetAttrName && !item.targetAttrId && !item.targetAttrKey) {
           const {targetAttrId, targetAttrKey, targetAttrName} = await getTargetCorresponding(item);
           Object.assign(item, {targetAttrId, targetAttrKey, targetAttrName});
         }
       }
+      this.mappingData[this.selectRow].dockingPreAttrRangeVoList = (this.rangeData)
       const response = await batchAddSave({dockingPreAttrMappingVOList: this.mappingData})
       if (response.status === 200) {
         this.$message({
@@ -484,6 +588,7 @@
     },
     // 宸︿晶鏍戠偣鍑�
     handelTreeCell(event) {
+      this.TreeOid = event.oid;
       this.treeParam.codeClassifyId = event.oid
       this.form.groupValue = ''
       this.groupVal = ''
@@ -517,6 +622,9 @@
     },
     // 闆嗗洟鏄犲皠灞炴�ц閫夋嫨锛堝崟鍑伙級
     handleMapingClick(row) {
+      // console.log(row)
+      this.tableSelectId = row.targetAttrKey || "";
+      this.selectRow = row.$index;
       clearTimeout(this.times)
       this.mappingForm = row
       this.times = setTimeout(() => {
@@ -556,10 +664,15 @@
         // 鑾峰彇鐩爣灞炴�т俊鎭�
         const {targetAttrId, targetAttrKey, targetAttrName} = await getTargetCorresponding(row);
 
-        // 鏇存柊琛屾暟鎹�
-        Object.assign(row, {targetAttrId, targetAttrKey, targetAttrName});
 
-        const response = await batchAddSave({dockingPreAttrMappingVOList: this.mappingData});
+        // 鏇存柊琛屾暟鎹�
+        Object.assign(row, {
+          targetAttrId: targetAttrId.toLowerCase(),
+          targetAttrKey: targetAttrKey.toLowerCase(),
+          targetAttrName: targetAttrName.toLowerCase()
+        });
+
+        const response = await batchAddSave({dockingPreAttrMappingVOList: [row]});
 
         if (response.status === 200) {
           this.$message({
@@ -585,12 +698,14 @@
       }
     },
     setCurrentRow(selection, row) {
+      console.log(selection, row)
       this.mappingForm = row
       this.disabledPush = false
     },
     handleSelectAll(selection) {
       this.$refs.crudMapping.toggleSelection()
-    }
+    },
+
   }
 }
 </script>
diff --git a/Source/UBCS-WEB/src/views/integration/vciAttribute.vue b/Source/UBCS-WEB/src/views/integration/vciAttribute.vue
index c07974a..24e1a38 100644
--- a/Source/UBCS-WEB/src/views/integration/vciAttribute.vue
+++ b/Source/UBCS-WEB/src/views/integration/vciAttribute.vue
@@ -4,7 +4,7 @@
                @size-change="sizeChange" @row-dblclick="handleRowClick" @row-update="handleUpdate"
                @selection-change="selectChange">
       <template slot="menuLeft">
-        <!--        <el-button plain size="small" type="success" @click="savaHandler">淇濆瓨</el-button>-->
+        <el-button plain size="small" type="success" @click="savaHandler">淇濆瓨</el-button>
         <el-button plain size="small" type="primary" @click="syncHandler">鍚屾</el-button>
       </template>
     </avue-crud>
@@ -25,7 +25,7 @@
         calcHeight: 20,
         headerAlign: "center",
         border: true,
-        // selection: true,
+        selection: true,
         tip: false,
         index: true,
         refreshBtn: false,
@@ -80,12 +80,7 @@
     }
   },
   created() {
-    const params = {
-      'conditionMap[groupAttrKey_like]': 'RY_',
-      page: this.page.currentPage,
-      limit: this.page.pageSize
-    }
-    this.onLoad(params)
+    this.onLoad()
     this.codeColumnOnload()
   },
   computed: {
@@ -107,7 +102,11 @@
     selectChange(list) {
       this.selectList = list;
     },
-    async onLoad(params) {
+    async onLoad() {
+      const params = {
+        page: this.page.currentPage,
+        limit: this.page.pageSize
+      }
       getGroupAttrPoolALlList(params).then(res => {
         const data = res.data.data;
         this.data = data.records;
@@ -140,18 +139,24 @@
 
       // row.codeMetaAttrName鍥犱负涓嬫媺妗唙alue鍊煎師鍥犵粦瀹氫负codeMetaAttrOid
       let updataList = []
+      // console.log(this.ChangeName)
+      // console.log(row.codeMetaAttrName)
+      // if (this.ChangeName && this.ChangeName === row.codeMetaAttrName) {
+      //   updataList = this.codeMetaColumn.dicData.find(item => item.codeMetaAttrOid === row.codeMetaAttrOid)
+      // } else {
+      //   console.log('2')
+      //     updataList = this.codeMetaColumn.dicData.find(item => item.codeMetaAttrOid === row.codeMetaAttrName)
+      // }
+      updataList = this.codeMetaColumn.dicData.find(item => item.codeMetaAttrOid === row.codeMetaAttrName)
 
-      if (this.ChangeName && this.ChangeName === row.codeMetaAttrName) {
-        updataList = this.codeMetaColumn.dicData.find(item => item.codeMetaAttrOid === row.codeMetaAttrOid)
-      } else {
-        if (row.codeMetaAttrName !== "" && row.codeMetaAttrName) {
-          updataList = this.codeMetaColumn.dicData.find(item => item.codeMetaAttrOid === row.codeMetaAttrName)
-        }
-      }
       // 鍥犱负row閲岄潰鐨勫�兼槸涓嶆纭殑 閲嶆柊璧嬪�间竴閬�
       if (updataList) {
         const {codeMetaAttrOid, codeMetaAttrKey, codeMetaAttrName} = updataList;
-        Object.assign(row, {codeMetaAttrOid, codeMetaAttrKey, codeMetaAttrName});
+        Object.assign(row, {
+          codeMetaAttrOid: codeMetaAttrOid,
+          codeMetaAttrKey: codeMetaAttrKey.toLowerCase(),
+          codeMetaAttrName: codeMetaAttrName
+        });
       }
 
       const objet = {
@@ -162,6 +167,7 @@
         codeMetaAttrKey: row.codeMetaAttrKey,
         codeMetaAttrName: row.codeMetaAttrName
       }
+
       const response = await editGroupAttr([objet])
       if (response.data.success) {
         this.$message.success('淇濆瓨鎴愬姛锛�')
@@ -174,30 +180,41 @@
       } else {
         const hasTrueValue = this.selectList.some(item => !item.$cellEdit);
         if (hasTrueValue) {
-          this.$message.warning('璇峰紑鍚紪杈戝悗淇濆瓨锛�')
-        } else {
-          let saveList = []
-          for (const item of this.selectList) {
-            console.log(item)
-            const updataList = this.codeMetaColumn.dicData.find(p => p.codeMetaAttrOid === item.codeMetaAttrName);
-            const {codeMetaAttrOid, codeMetaAttrKey, codeMetaAttrName} = updataList;
-            Object.assign(item, {codeMetaAttrOid, codeMetaAttrKey, codeMetaAttrName});
-            console.log(updataList)
-            item.$cellEdit = false;
-            saveList.push({
-              oid: item.oid,
-              groupAttrKey: item.groupAttrKey,
-              groupAttrName: item.groupAttrName,
-              codeMetaAttrOid: item.codeMetaAttrOid,
-              codeMetaAttrKey: item.codeMetaAttrKey,
-              codeMetaAttrName: item.codeMetaAttrName
-            })
-          }
-          const response = await editGroupAttr(saveList)
-          if (response.data.success) {
-            this.$message.success('淇濆瓨鎴愬姛锛�')
-          }
+          this.$message.warning('璇峰紑鍚紪杈戝悗杩涜淇濆瓨锛�')
+          return
         }
+        const codeMetaInput = this.selectList.some(item => item.codeMetaAttrName === "");
+        if (codeMetaInput) {
+          this.$message.warning('璇锋鏌ュ凡鍕鹃�夋暟鎹腑鏄惁瀛樺湪鏈�夋嫨鐨勯」锛�');
+          return
+        }
+        let saveList = []
+        for (const item of this.selectList) {
+          const updataList = this.codeMetaColumn.dicData.find(column => column.codeMetaAttrOid === item.codeMetaAttrName);
+          if (updataList) {
+            const {codeMetaAttrOid, codeMetaAttrKey, codeMetaAttrName} = updataList;
+            Object.assign(item, {
+              codeMetaAttrOid: codeMetaAttrOid,
+              codeMetaAttrKey: codeMetaAttrKey.toLowerCase(),
+              codeMetaAttrName: codeMetaAttrName
+            });
+          }
+          item.$cellEdit = false;
+          saveList.push({
+            oid: item.oid,
+            groupAttrKey: item.groupAttrKey,
+            groupAttrName: item.groupAttrName,
+            codeMetaAttrOid: item.codeMetaAttrOid,
+            codeMetaAttrKey: item.codeMetaAttrKey,
+            codeMetaAttrName: item.codeMetaAttrName
+          })
+        }
+        const response = await editGroupAttr(saveList)
+        if (response.data.success) {
+          this.$message.success('淇濆瓨鎴愬姛锛�')
+          await this.onLoad()
+        }
+
       }
     },
     async syncHandler() {
@@ -214,32 +231,20 @@
         const response = await syncGroupAttrMapping(syncList)
         if (response.data.success) {
           this.$message.success(response.data.msg);
-          const params = {
-            'conditionMap[groupAttrKey_like]': 'RY_',
-            page: this.page.currentPage,
-            limit: this.page.pageSize
-          }
-          await this.onLoad(params)
+
+          await this.onLoad()
         }
       }
     },
     currentChange(currentPage) {
       this.page.currentPage = currentPage;
-      const params = {
-        'conditionMap[groupAttrKey_like]': 'RY_',
-        page: this.page.currentPage,
-        limit: this.page.pageSize
-      }
-      this.onLoad(params)
+
+      this.onLoad()
     },
     sizeChange(pageSize) {
       this.page.pageSize = pageSize;
-      const params = {
-        'conditionMap[groupAttrKey_like]': 'RY_',
-        page: this.page.currentPage,
-        limit: this.page.pageSize
-      }
-      this.onLoad(params)
+
+      this.onLoad()
     },
   }
 }

--
Gitblit v1.9.3