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