From 1370593dd05e7af45e54ece750da67c847e60eb2 Mon Sep 17 00:00:00 2001 From: aixianling Date: Wed, 8 Nov 2023 11:56:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=B9=B3=E6=98=8C=E7=9A=84?= =?UTF-8?q?=E5=85=9A=E7=BB=84=E7=BB=87=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/lib/js/utils.js | 84 +++++++++++++------------- ui/packages/common/AiParty/AiParty.vue | 45 ++++++-------- 2 files changed, 58 insertions(+), 71 deletions(-) diff --git a/ui/lib/js/utils.js b/ui/lib/js/utils.js index e384b9ef..fe929360 100644 --- a/ui/lib/js/utils.js +++ b/ui/lib/js/utils.js @@ -15,12 +15,12 @@ import $reg from "./regular" */ const addChild = (parent, pending, config) => { let conf = { - key: 'id', - parent: 'parentId', - children: 'children', - ...config - }, - doBeforeCount = pending.length + key: 'id', + parent: 'parentId', + children: 'children', + ...config + }, + doBeforeCount = pending.length for (let i = pending.length - 1; i >= 0; i--) { let e = pending[i] if (e[conf.parent] == parent[conf.key]) { @@ -34,35 +34,6 @@ const addChild = (parent, pending, config) => { parent[conf.children].map(c => addChild(c, pending, conf)) } } -/** - * 数组转tree - * @param list 待转化的数组 - * @param config 配置 - */ -const $arr2tree = (list, config = {}) => { - const {key = 'id', parent = 'parentId', children = 'children'} = config, result = [], itemMap = {}, - ids = list?.map(e => `#${e[key]}#`)?.toString() - for (const e of list) { - const id = e[key], pid = e[parent] - itemMap[id] = {...e, [children]: [itemMap[id]?.[children]].flat().filter(Boolean)} - const treeItem = itemMap[id] - if (!!pid && ids.indexOf(`#${pid}#`) > -1) { - if (!itemMap[pid]) { - itemMap[pid] = { - children: [] - } - } - itemMap[pid].children.push(treeItem) - } else result.push(treeItem) - } - const removeNullChildren = node => { - if (node[children] && node[children].length > 0) { - node[children].map(c => removeNullChildren(c)) - } else delete node[children] - } - result.forEach(removeNullChildren) - return result -} /** * 封装提示框 @@ -87,7 +58,7 @@ const $decimalCalc = (...arr) => { return ('' + e).length - index }) let maxDecimal = Math.max(...decimalLengthes), - precision = Math.pow(10, maxDecimal) + precision = Math.pow(10, maxDecimal) // 计算 let intArr = arr.map(e => (Number(e) || 0) * precision) // 返回计算值 @@ -115,10 +86,10 @@ const $colorUtils = { if (color.length == 4) { // 检测诸如#FFF简写格式 color = - '#' + - color.charAt(1).repeat(2) + - color.charAt(2).repeat(2) + - color.charAt(3).repeat(2) + '#' + + color.charAt(1).repeat(2) + + color.charAt(2).repeat(2) + + color.charAt(3).repeat(2) } hex = parseInt(color.slice(1), 16) } @@ -199,8 +170,8 @@ export default { }, $dateFormat: (time, format) => { return $moment(time) - .format(format || 'YYYY-MM-DD') - .replace('Invalid Date', '') + .format(format || 'YYYY-MM-DD') + .replace('Invalid Date', '') }, $copy, $download: (url, name) => { @@ -216,7 +187,34 @@ export default { }, $debounce, $checkJson, - $arr2tree, + $arr2tree: (list, config = {}) => { + let result = [] + const {key = 'id', parent = 'parentId', children = 'children'} = config, itemMap = {}, + ids = list?.map(e => `#${e[key]}#`)?.toString() + for (const e of list) { + const id = e[key], pid = e[parent] + itemMap[id] = {...e, [children]: [itemMap[id]?.[children]].flat().filter(Boolean)} + const treeItem = itemMap[id] + if (!!pid && ids.indexOf(`#${pid}#`) > -1) { + if (!itemMap[pid]) { + itemMap[pid] = { + children: [] + } + } + itemMap[pid].children.push(treeItem) + } else result.push(treeItem) + } + const removeNullChildren = node => { + if (node[children] && node[children].length > 0) { + node[children].map(c => removeNullChildren(c)) + } else delete node[children] + } + if (!!config.root) { + result = itemMap[config.root] + } + result.forEach(removeNullChildren) + return result + }, $load, $reg, Area, diff --git a/ui/packages/common/AiParty/AiParty.vue b/ui/packages/common/AiParty/AiParty.vue index 148fad3b..38adea99 100644 --- a/ui/packages/common/AiParty/AiParty.vue +++ b/ui/packages/common/AiParty/AiParty.vue @@ -113,7 +113,6 @@ export default { selected: [], selectedTemp: [], selectParty: [], - valueType: "", defaultChecked: [], defaultExpanded: [], childCount: 0 @@ -164,18 +163,12 @@ export default { if (this.type === '2') { this.treeData = res.data } else { - res.data = res.data.map(a => { - return {...a, name: a.name} - }); - if (this.valueType) { - this.selected = res.data.filter(e => (this.valueType == "string" && e.id == this.value) || this.value?.includes(e.id)) - if (this.selected) { - this.$emit('name', this.selected.map(e => e.name)) - this.$emit('origin', this.selected) - } + this.selected = res.data.filter(e => [this.value].flat().includes(e.id)) + if (this.selected) { + this.$emit('name', this.selected.map(e => e.name)) + this.$emit('origin', this.selected) } - this.treeData = res.data.filter(e => !e.parentId || e.id === this.topOrgId); - this.treeData.map(t => this.addChild(t, res.data)); + this.treeData = this.$arr2tree(res.data, {root: this.topOrgId}) } } else { this.treeData = [res.data] @@ -187,14 +180,13 @@ export default { if (!this.selectedTemp.length && !this.isEmpty) { return this.$message.error(this.type === '0' ? '党组织不能为空' : '小区不能为空') } - this.selected = this.selectedTemp; this.selectParty.length && (this.selected = JSON.parse(JSON.stringify(this.selectParty))) if (this.type === '1' && this.selected[0].isVan === '0') { return this.$message.error('请选择小区') } this.dialog = false - this.$emit('change', this.valueType == "string" ? this.selected.map(e => e.id)[0] : this.selected.map(e => e.id)) + this.$emit('change', typeof this.value == "string" ? this.selected.map(e => e.id)[0] : this.selected.map(e => e.id)) this.$emit('name', this.selected.map(e => e.name)) this.$emit('origin', this.selected) }, @@ -205,11 +197,8 @@ export default { } } }, - mounted() { - this.$nextTick(() => { - this.valueType = typeof this.value - this.searchSysAll(); - }) + created() { + this.searchSysAll(); } } @@ -220,46 +209,46 @@ export default { overflow-y: hidden; } -:deep(.el-dialog__header ){ +:deep(.el-dialog__header ) { line-height: 1; // padding: 13px 16px; // border-bottom: 1px solid #eee; } -:deep( .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content ){ +:deep( .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content ) { background: #eaf5ff !important; color: #257fff !important; } -:deep(.el-dialog__body ){ +:deep(.el-dialog__body ) { padding: 16px 16px 0; } -:deep( .ai-dialog__content--wrapper ){ +:deep( .ai-dialog__content--wrapper ) { padding-right: 0 !important; } -:deep(.left_cont ){ +:deep(.left_cont ) { height: calc(100% - 40px); padding-top: 8px; box-sizing: border-box; overflow: auto; } -:deep(.el-tree ){ +:deep(.el-tree ) { background: #fcfcfc; } -:deep( .el-dialog__body ){ +:deep( .el-dialog__body ) { background: #fcfcfc; } -:deep(.el-tree-node:focus > .el-tree-node__content ){ +:deep(.el-tree-node:focus > .el-tree-node__content ) { background: #eaf5ff !important; color: #257fff !important; } -:deep(.el-tree-node__content:hover ){ +:deep(.el-tree-node__content:hover ) { background: #eaf5ff !important; color: #257fff !important; }