From 32ebe84d704f32842fdc8b5b23038dccb67234ff Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期一, 18 三月 2024 18:25:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/UBCS-WEB/src/views/integration/integrationIndex.vue | 229 +++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 159 insertions(+), 70 deletions(-)
diff --git a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
index 77badef..d175b2d 100644
--- a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
+++ b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
@@ -1,36 +1,54 @@
<template>
<div>
<el-container style="height: 100%; border: 1px solid #fff">
- <el-card :style="{ marginRight: '10px' }">
- <el-aside style="background-color: #fff" width="220px">
+ <el-card style="margin-right: 10px;height: calc(100vh - 125px);overflow: auto">
+ <el-aside style="background-color: #fff;" width="210px">
<el-input v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�">
</el-input>
- <el-menu :default-openeds="['1', '3']" >
- <el-tree ref="tree" :data="treeData" :filter-node-method="filterNode" :props="defaultProps"
+ <el-menu :default-openeds="['1', '3']">
+ <el-tree ref="tree" :data="treeData" :filter-node-method="filterNode" :props="defaultProps"
accordion class="filter-tree" empty-text="鏆傛棤鏁版嵁" @node-click="handelTreeCell">
+ <template slot-scope="{ node, data }" class="el-tree-node__label">
+ <el-tooltip :content="$createElement('div', { domProps: { innerHTML: node.label } })" class="item"
+ effect="dark"
+ open-delay="500"
+ placement="right-start">
+ <span style="font-size: 14px;">
+ {{ (node || {}).label }}
+ </span>
+ </el-tooltip>
+ </template>
</el-tree>
</el-menu>
</el-aside>
</el-card>
<el-main>
- <el-card>
+ <el-card style="height: calc(100vh - 128px)">
<el-form :model="form">
- <el-form-item label="闆嗗洟鍒嗙被" label-width="70px" size="small">
+ <el-form-item label="闆嗗洟鍒嗙被" label-width="80px" size="small">
<el-select ref="selectTree" v-model="groupVal" clearable placeholder="璇烽�夋嫨"
popper-class="popperTreeSelect">
- <el-option :label="groupVal" :value="groupVal">
- <el-tree ref="groupTree" :data="groupTreeData" :props="defaultProps" empty-text="鏆傛棤鏁版嵁"
- @node-click="handleNodeClick">
+ <el-option :disabled="true" :label="groupVal" :value="groupVal">
+ <el-tree ref="groupTree"
+ :data="groupTreeData"
+ :default-checked-keys="defaultCheckedKeys"
+ :default-expanded-keys="defaultCheckedKeys"
+ :props="defaultProps"
+ empty-text="鏆傛棤鏁版嵁"
+ node-key="oid"
+ show-checkbox
+ @check="handleCheck">
</el-tree>
</el-option>
</el-select>
</el-form-item>
</el-form>
- <el-card>
+ <el-card style="height:38vh">
<avue-crud ref="crudMapping" :data="mappingData" :option="optionMapping" :table-loading="loading"
@select="setCurrentRow" @row-update="handleMapingUpdate"
- @row-click="handleMapingClick" @row-dblclick="handleMapingRowClick" @selection-change="selectionChange"
+ @row-click="handleMapingClick" @row-dblclick="handleMapingRowClick"
+ @selection-change="selectionChange"
@select-all="handleSelectAll">
<template slot="menuLeft">
<el-button :disabled="disabledPush" icon="el-icon-plus" size="small" type="primary"
@@ -47,7 +65,7 @@
</template>
</avue-crud>
</el-card>
- <el-card :style="{ marginTop: '20px'}">
+ <el-card style="margin-top: 10px;height: 38vh">
<avue-crud ref="crudRange" :data="rangeData" :option="optinoRange" :style="{ marginTop: '-20px'}"
@row-update="handleUpdate"
@row-dblclick="handleRowClick">
@@ -95,6 +113,8 @@
highlightCurrentRow: true,
}
return {
+ defaultCheckedKeys: [],
+ isNodeDisabled: true,
// 琛ㄥ崟鍊�
form: {
// 闆嗗洟鏍戞樉绀哄��
@@ -117,21 +137,21 @@
// 灞炴�ф槧灏勫彇鍊艰〃閰嶇疆
optinoRange: {
title: '灞炴�ф槧灏勫彇鍊艰寖鍥�',
- maxHeight: '300px',
+ maxHeight: '280px',
header: false,
rowKey: 'oid',
column: [
{label: '灞炴�ч泦鍥㈡灇涓惧��', prop: 'numTextValue', minWidth: 80},
{label: '闆嗗洟灞炴�ф灇涓炬樉绀哄悕绉�', prop: 'numText', minWidth: 80},
{
- label: 'MDM鏋氫妇鍊�',
+ label: 'CODE鏋氫妇鍊�',
prop: 'targetNumTextValue',
minWidth: 80,
cell: true,
blur: (value) => window.handleBlur(value, 'range')
},
{
- label: 'MDM鏋氫妇鏄剧ず鍚嶇О',
+ label: 'CODE鏋氫妇鏄剧ず鍚嶇О',
prop: 'targetNumText',
minWidth: 80,
cell: true,
@@ -142,10 +162,11 @@
},
// 灞炴�ф槧灏勮〃閰嶇疆
optionMapping: {
- maxHeight: '500px',
+ maxHeight: '280px',
header: true,
rowKey: 'oid',
selection: false,
+ refreshBtn: false,
column: [
{label: '闆嗗洟鍒嗙被', prop: 'sourceClassifyName', minWidth: 80},
{label: '鎵�灞炶鍥�', prop: 'viewName', minWidth: 80},
@@ -170,12 +191,15 @@
treeData: [],
// 闆嗗洟鍒嗙被鏍�
groupTreeData: [],
- // 鏍憄opos鏇挎崲鍊�
+ // 鏍憄rpos鏇挎崲鍊�
defaultProps: {
children: 'children',
label: 'name',
id: 'oid',
- isLeaf: ''
+ isLeaf: '',
+ // disabled:()=>{
+ // return true
+ // }
},
transferProps: {
key: 'oid',
@@ -191,6 +215,7 @@
mappingForm: {},
// 瀹氭椂鍣�
times: null,
+ TreeSelectOid: ""
}
},
@@ -262,29 +287,85 @@
const response = await listCodeAttributeByClassId({codeClassifyId: oid})
if (response.status === 200) {
const data = response.data.data
- this.transferData = data
+ this.transferData = data;
+ // console.log(data)
}
},
// 鎺ュ彛鑾峰彇闆嗗洟鍒嗙被鏍�
- async referTree(oid, checked) {
- this.groupTreeData = []
- const response = await referTree({'conditionMap[codeclsfid]': oid, parentOid:'0'})
+ async referTree(oid) {
+ this.groupTreeData = [];
+ const response = await referTree({'conditionMap[codeclsfid]': oid, parentOid: '0'});
if (response.status === 200) {
- if (checked) {
- let items = response.data.map(item => {
- let obj = {}
- if (item.checked) obj = {...item}
- else obj = null
- return obj
- })
- var r = items.filter(s => {
- return s && s.trim()
- });
- this.groupTreeData = r
- } else {
- this.groupTreeData = response.data
+ this.groupTreeData = response.data; // 灏嗚幏鍙栧埌鐨勬暟鎹祴鍊肩粰闆嗗洟鍒嗙被鏍戞暟鎹�
+
+ await this.filterCheckedNodes(this.groupTreeData, this.defaultCheckedKeys);
+ await this.$nextTick(() => {
+ this.$refs.groupTree.setCheckedKeys(this.defaultCheckedKeys);
+ });
+
+ this.handlerTreeData(this.groupTreeData);
+
+ this.defaultCheckedKeys = [];
+ }
+ },
+ // 杩囨护鍑烘潵checked涓簍rue鐨勮妭鐐�
+ filterCheckedNodes(data, checkedNodes) {
+ data.forEach(node => {
+ if (node.checked) {
+ checkedNodes.push(node.oid);
+ this.getGridAttrMapping(node.oid);
+ this.form.groupValue = node.oid;
+ this.groupVal = node.name;
+ }
+
+ if (node.children && node.children.length > 0) {
+ this.filterCheckedNodes(node.children, checkedNodes);
+ }
+ });
+ },
+ // 杩囨护澶勭悊姣忎釜鑺傜偣
+ handlerTreeNode(node) {
+ // 鏍规嵁鑺傜偣绂佺敤鐘舵�佽缃妭鐐规槸鍚︾鐢�
+ this.$set(node, 'disabled', !node.checked);
+ if (node.children && node.children.length > 0) {
+ // 閫掑綊寰幆澶勭悊鎵�鏈夊瓙鑺傜偣
+ node.children.forEach(child => this.handlerTreeNode(child));
+ }
+ },
+ // 妫�鏌ユ墍鏈夎妭鐐规槸鍚﹂兘鏄湭绂佺敤鐘舵��
+ allNodeChecked(data) {
+ for (const node of data) {
+ // 濡傛灉瀛樺湪绂佺敤鑺傜偣杩斿洖false
+ if (node.checked) {
+ return false;
+ }
+ // 濡傛灉瀛樺湪瀛愯妭鐐逛笖瀛愯妭鐐瑰瓨鍦ㄧ鐢ㄨ妭鐐癸紝鍒欒繑鍥瀎alse
+ if (node.children && !this.allNodeChecked(node.children)) {
+ return false;
}
}
+ // 娌℃湁绂佺敤鑺傜偣杩斿洖true
+ return true;
+ },
+ // 闆嗗洟鍒嗙被鏍戠鐢ㄦ暟鎹鐞嗘暣鍚堟柟娉�
+ handlerTreeData(data) {
+ if (this.allNodeChecked(data)) {
+ // 濡傛灉鎵�鏈夎妭鐐归兘鏈鐢ㄥ皢鎵�鏈夎妭鐐硅缃负false
+ data.forEach(node => {
+ this.$set(node, 'disabled', false); // Vue 3 涓彲鑳戒笉闇�瑕佽繖鏍峰仛
+ });
+ return;
+ }
+ // 鏌ユ壘绂佺敤鑺傜偣
+ let checkedNode = data.find(node => node.checked);
+ data.forEach(node => {
+ // 濡傛灉鑺傜偣涓嶆槸绂佺敤鑺傜偣璁剧疆涓簍rue
+ this.$set(node, 'disabled', node !== checkedNode);
+ if (node.children && node.children.length > 0) {
+ // 璋冪敤寰幆鑺傜偣
+ this.handlerTreeNode(node);
+ }
+ });
},
// 宸︿晶鏍戣繃婊ゆ悳绱�
filterNode(value, data) {
@@ -313,13 +394,18 @@
message: "璇烽�夋嫨涓�鏉¢泦鍥㈠垎绫�"
});
} else {
- const response = await syncClassifyModel(param)
- if (response.status === 200) {
- console.log(response)
+ try {
+ const response = await syncClassifyModel(param);
+ if (response.status === 200) {
+ this.$message.success(response.data.msg)
+ }
+ } catch (error) {
+ console.error(error);
}
}
},
handelTransferSave(event) {
+ // console.log(event)
let that = this
const transferValue = event.value
if (Object.keys(that.mappingForm).length == 0) {
@@ -329,25 +415,25 @@
});
} else {
const findRow = that.mappingData.findIndex(item => item.metaListId === that.mappingForm.metaListId)
- that.mappingData[findRow].targetAttrName = transferValue[0].name
- that.mappingData[findRow].targetAttrId = transferValue[0].oid
+ that.mappingData[findRow].targetAttrName = transferValue[0].name;
+ that.mappingData[findRow].targetAttrId = transferValue[0].oid;
+ that.mappingData[findRow].targetAttrKey = transferValue[0].id;
this.dialogPush = false;
}
},
// 宸︿晶鏍戠偣鍑�
handelTreeCell(event) {
- if (event.leaf) {
- this.treeParam.codeClassifyId = event.oid
- this.form.groupValue = ''
- this.groupVal = ''
- this.tableData = []
- this.referTree(event.oid, event.checked)
- this.getListCodeByClassId(event.oid)
- }
+ this.treeParam.codeClassifyId = event.oid
+ this.form.groupValue = ''
+ this.groupVal = ''
+ this.tableData = []
+ this.mappingData = []
+ this.referTree(event.oid)
+ this.getListCodeByClassId(event.oid)
},
- // 闆嗗洟鍒嗙被鏍戠偣鍑�
- handleNodeClick(data) {
+ // 闆嗗洟鍒嗙被鏍戦�夋嫨
+ handleCheck(data) {
this.form.groupValue = data.oid
this.groupVal = data.name
this.$refs.selectTree.blur()
@@ -425,27 +511,30 @@
}
</script>
<style lang="scss" scoped>
- .setstyle {
- min-height: 200px;
- padding: 0 !important;
- margin: 0;
- overflow: auto;
- cursor: default !important;
+.setstyle {
+ min-height: 200px;
+ padding: 0 !important;
+ margin: 0;
+ overflow: auto;
+ cursor: default !important;
+}
+
+::v-deep {
+ .el-transfer-panel__list {
+ width: 100%;
+ height: 370px;
}
- ::v-deep{
- .el-transfer-panel__list {
- width: 100%;
- height: 370px;
- }
- .el-transfer-panel__body {
- height: 370px;
- }
- .el-input {
- width: auto;
- }
- .el-transfer-panel {
- width: 270px;
- }
+ .el-transfer-panel__body {
+ height: 370px;
}
+
+ .el-input {
+ width: auto;
+ }
+
+ .el-transfer-panel {
+ width: 270px;
+ }
+}
</style>
--
Gitblit v1.9.3