From 3eced4f79a9cf7b211e86b26b8c8ca20ae3f4576 Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期一, 29 一月 2024 09:44:59 +0800
Subject: [PATCH] 获取集团分类根节点前端传null传入后端直接改为空字符串bug修复
---
Source/UBCS-WEB/src/views/integration/integrationIndex.vue | 194 +++++++++++++++++++++++++++++++++--------------
1 files changed, 135 insertions(+), 59 deletions(-)
diff --git a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
index 6b902af..d175b2d 100644
--- a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
+++ b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
@@ -5,8 +5,8 @@
<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"
@@ -22,25 +22,33 @@
</el-menu>
</el-aside>
</el-card>
- <el-main >
+ <el-main>
<el-card style="height: calc(100vh - 128px)">
<el-form :model="form">
<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 style="height:38vh">
+ <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"
@@ -105,6 +113,8 @@
highlightCurrentRow: true,
}
return {
+ defaultCheckedKeys: [],
+ isNodeDisabled: true,
// 琛ㄥ崟鍊�
form: {
// 闆嗗洟鏍戞樉绀哄��
@@ -156,6 +166,7 @@
header: true,
rowKey: 'oid',
selection: false,
+ refreshBtn: false,
column: [
{label: '闆嗗洟鍒嗙被', prop: 'sourceClassifyName', minWidth: 80},
{label: '鎵�灞炶鍥�', prop: 'viewName', minWidth: 80},
@@ -180,12 +191,15 @@
treeData: [],
// 闆嗗洟鍒嗙被鏍�
groupTreeData: [],
- // 鏍憄opos鏇挎崲鍊�
+ // 鏍憄rpos鏇挎崲鍊�
defaultProps: {
children: 'children',
label: 'name',
id: 'oid',
- isLeaf: ''
+ isLeaf: '',
+ // disabled:()=>{
+ // return true
+ // }
},
transferProps: {
key: 'oid',
@@ -201,6 +215,7 @@
mappingForm: {},
// 瀹氭椂鍣�
times: null,
+ TreeSelectOid: ""
}
},
@@ -277,25 +292,80 @@
}
},
// 鎺ュ彛鑾峰彇闆嗗洟鍒嗙被鏍�
- 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) {
@@ -324,9 +394,13 @@
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);
}
}
},
@@ -350,17 +424,16 @@
},
// 宸︿晶鏍戠偣鍑�
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()
@@ -438,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