From 9a61e46d96536f3299e57f7259ae1c9972256ec6 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 30 九月 2025 09:42:09 +0800
Subject: [PATCH] 1. 隐藏未完成的账户匹配页面 2. 根据第三方新的接口文档修改接口url地址
---
src/components/SideList.vue | 288 +++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 227 insertions(+), 61 deletions(-)
diff --git a/src/components/SideList.vue b/src/components/SideList.vue
index 104fde9..a3a795c 100644
--- a/src/components/SideList.vue
+++ b/src/components/SideList.vue
@@ -1,50 +1,153 @@
<template>
- <el-tree
- class="el-tree"
- v-loading="isLoading"
- :data="dataList"
- :props="defaultProps"
- @node-click="handleNodeClick"
- default-expand-all
- highlight-current
- check-on-click-node
- empty-text="鏆傛棤璁板綍"
- >
- <template #default="{ node, data }">
- <slot :node="node" :data="data">
- <div
- :class="
- data.selected
- ? 'selected-tree-node custom-tree-node'
- : 'custom-tree-node'
- "
- >
- <el-icon v-if="data.type == 0" color="var(--el-color-info)">
- <SuccessFilled/>
- </el-icon>
- <el-icon v-else-if="data.type == 1" color="var(--el-color-danger)">
- <QuestionFilled />
- </el-icon>
- <el-icon v-else-if="data.type == 2" color="var(--el-color-warning)">
- <QuestionFilled />
- </el-icon>
- <el-icon v-else-if="data.type == 3" color="var(--el-color-danger)">
- <WarnTriangleFilled />
- </el-icon>
- <el-icon v-else-if="data.type == 4" color="var(--el-color-danger)">
- <WarningFilled/>
- </el-icon>
- <el-icon v-else-if="data.type == 5" color="var(--el-color-warning)">
- <WarningFilled/>
- </el-icon>
- <el-icon v-else-if="data.type == 6" color="var(--el-color-success)">
- <SuccessFilled/>
- </el-icon>
- <div>{{ node.label }}</div>
- </div>
- </slot>
- </template>
- </el-tree>
+ <div style="padding-right: 10px;">
+ <div v-if="legend" class="state-label">
+ <el-input
+ v-model="filterText"
+ icon="Search"
+ style="width: 180px"
+ placeholder="鍏抽敭瀛楃瓫閫�"
+ clearable
+ />
+ <el-tooltip placement="bottom-start" effect="dark">
+ <template #content>
+ <el-space>
+ <el-space
+ v-for="(item, index) in stateLabels"
+ :key="index"
+ :size="1"
+ >
+ <el-icon :color="item.color">
+ <component :is="item.icon"></component>
+ </el-icon>
+ {{ item.name }}
+ <!-- <el-text size="small">{{ item.name }}</el-text> -->
+ </el-space>
+ </el-space>
+ <br />
+ <el-space>
+ <el-space :size="1">
+ <el-icon :size="16" color="var(--el-color-success)">
+ <Avatar />
+ </el-icon>
+ 姝e湪鎵ц宸℃煡
+ </el-space>
+ <el-space :size="1">
+ <el-icon :size="16" color="var(--el-color-info)">
+ <Avatar />
+ </el-icon>
+ 鏈墽琛�
+ </el-space>
+ </el-space>
+ </template>
+ <el-space>
+ <el-icon class="cursor-p" :size="16" color="var(--el-color-primary)"
+ ><QuestionFilled
+ /></el-icon>
+ <el-text size="small" class="cursor-p">瀹℃牳鐘舵�佸浘渚�</el-text>
+ </el-space>
+ </el-tooltip>
+ </div>
+ <el-tree
+ ref="treeRef"
+ class="el-tree"
+ v-loading="isLoading"
+ :data="dataList"
+ :props="defaultProps"
+ @node-click="handleNodeClick"
+ :filter-node-method="filterNode"
+ default-expand-all
+ highlight-current
+ check-on-click-node
+ empty-text="鏆傛棤璁板綍"
+ >
+ <template #default="{ node, data }">
+ <slot :node="node" :data="data">
+ <div
+ :class="
+ data.selected
+ ? 'selected-tree-node custom-tree-node'
+ : 'custom-tree-node'
+ "
+ >
+ <el-icon
+ v-if="data.status == '姝e湪鎵ц'"
+ :size="16"
+ color="var(--el-color-success)"
+ style="margin-left: -16px"
+ >
+ <Avatar />
+ </el-icon>
+ <el-icon
+ v-if="data.status == '鏈墽琛�'"
+ :size="16"
+ color="var(--el-color-info)"
+ style="margin-left: -16px"
+ >
+ <Avatar />
+ </el-icon>
+ <!-- <el-icon :color="stateLabels[data.type].color">
+ <component :is="stateLabels[data.type].icon"></component>
+ </el-icon> -->
+ <el-icon
+ v-if="data.type == 0"
+ :size="16"
+ color="var(--el-color-info)"
+ >
+ <SuccessFilled />
+ </el-icon>
+ <el-icon
+ v-else-if="data.type == 1"
+ :size="16"
+ color="var(--el-color-danger)"
+ >
+ <QuestionFilled />
+ </el-icon>
+ <el-icon
+ v-else-if="data.type == 2"
+ :size="16"
+ color="var(--el-color-warning)"
+ >
+ <QuestionFilled />
+ </el-icon>
+ <el-icon
+ v-else-if="data.type == 3"
+ :size="16"
+ color="var(--el-color-danger)"
+ >
+ <WarnTriangleFilled />
+ </el-icon>
+ <el-icon
+ v-else-if="data.type == 4"
+ :size="16"
+ color="var(--el-color-danger)"
+ >
+ <WarningFilled />
+ </el-icon>
+ <el-icon
+ v-else-if="data.type == 5"
+ :size="16"
+ color="var(--el-color-warning)"
+ >
+ <WarningFilled />
+ </el-icon>
+ <el-icon
+ v-else-if="data.type == 6"
+ :size="16"
+ color="var(--el-color-success)"
+ >
+ <SuccessFilled />
+ </el-icon>
+ <!-- <el-text>{{ node.label }}</el-text> -->
+ {{ node.label }}
+ <span v-if="data.count">
+ {{ '_(' + data.count + ')' }}
+ <!-- <el-text size="small">鐐规</el-text>) -->
+ </span>
+ </div>
+ </slot>
+ </template>
+ </el-tree>
+ </div>
</template>
<script>
@@ -61,16 +164,59 @@
}
]
},
- loading: Boolean
+ loading: Boolean,
+ // 鏄惁灞曠ず鍥句緥
+ legend: {
+ type: Boolean,
+ default: false
+ }
},
emits: ['itemClick'],
data() {
return {
+ filterText: '',
defaultProps: {
children: 'children',
label: 'title'
},
- isLoading: this.loading
+ isLoading: this.loading,
+ stateLabels: [
+ {
+ color: 'var(--el-color-info)',
+ name: '鏃犻棶棰�',
+ icon: 'SuccessFilled'
+ },
+ {
+ color: 'var(--el-color-danger)',
+ name: '闂鏈鏍�',
+ icon: 'QuestionFilled'
+ },
+ {
+ color: 'var(--el-color-warning)',
+ name: '闂閮ㄥ垎瀹℃牳',
+ icon: 'QuestionFilled'
+ },
+ {
+ color: 'var(--el-color-danger)',
+ name: '鏈暣鏀�',
+ icon: 'WarnTriangleFilled'
+ },
+ {
+ color: 'var(--el-color-danger)',
+ name: '鏁存敼鏈鏍�',
+ icon: 'WarningFilled'
+ },
+ {
+ color: 'var(--el-color-warning)',
+ name: '鏁存敼閮ㄥ垎瀹℃牳',
+ icon: 'WarningFilled'
+ },
+ {
+ color: 'var(--el-color-success)',
+ name: '瀹℃牳瀹屾垚',
+ icon: 'SuccessFilled'
+ }
+ ]
};
},
computed: {
@@ -89,6 +235,7 @@
for (const [key, value] of itemMap) {
const i = {
title: key,
+ count: value.length,
children: []
};
value.forEach((v) => {
@@ -109,6 +256,9 @@
}
},
watch: {
+ filterText(val) {
+ this.$refs.treeRef.filter(val);
+ },
loading(nValue) {
this.isLoading = nValue;
},
@@ -116,17 +266,17 @@
dataList(nValue) {
if (this.isLoading) {
if (nValue.length > 0) {
- this.dataList.forEach((d) => {
- d.children.forEach((c) => {
- c.selected = false;
- });
- });
+ // this.dataList.forEach((d) => {
+ // d.children.forEach((c) => {
+ // c.selected = false;
+ // });
+ // });
if (nValue[0].children.length > 0) {
const c = nValue[0].children[0];
- c.selected = true;
+ // c.selected = true;
this.$emit('itemClick', c);
} else {
- nValue[0].selected = true;
+ // nValue[0].selected = true;
}
}
this.isLoading = false;
@@ -135,16 +285,21 @@
},
methods: {
handleNodeClick(data) {
- this.dataList.forEach((d) => {
- d.children.forEach((c) => {
- c.selected = false;
- });
- });
- data.selected = true;
+ // this.dataList.forEach((d) => {
+ // d.children.forEach((c) => {
+ // c.selected = false;
+ // });
+ // });
+ // data.selected = true;
//鐖惰妭鐐圭殑鐐瑰嚮浜嬩欢涓嶅仛浼犻��
if (data.children == undefined) {
this.$emit('itemClick', data);
}
+ },
+
+ filterNode(value, data) {
+ if (!value) return true;
+ return data.title.includes(value);
}
}
};
@@ -163,4 +318,15 @@
.selected-tree-node {
color: var(--el-color-primary);
}
+
+.state-label {
+ position: sticky;
+ z-index: 1;
+ top: 0;
+ background-color: white;
+ // box-shadow: var(--el-box-shadow-light);
+ border-bottom: var(--el-border);
+ display: flex;
+ padding-bottom: 4px;
+}
</style>
--
Gitblit v1.9.3