From bdfd84bd35c0edb8bfd6edbec165c98de562cf16 Mon Sep 17 00:00:00 2001
From: wangyifeng <812766448@qq.com>
Date: Tue, 18 Feb 2025 19:51:23 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86=E9=80=89?=
=?UTF-8?q?=E6=8B=A9=E4=BA=BA=E5=91=98=E7=9A=84=E8=A7=84=E5=88=99=E4=B8=8E?=
=?UTF-8?q?=E4=BA=A4=E4=BA=92?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/chooseByDeps/index.vue | 74 ++++++++++++++++++++++++++++----
1 file changed, 65 insertions(+), 9 deletions(-)
diff --git a/src/pages/chooseByDeps/index.vue b/src/pages/chooseByDeps/index.vue
index 2df9eff..0966435 100644
--- a/src/pages/chooseByDeps/index.vue
+++ b/src/pages/chooseByDeps/index.vue
@@ -58,7 +58,10 @@
- {{ item.name }}({{ item.staffNum }})
+
+ {{ item.name }}({{ getDepTotalMembers(item) }})
+
@@ -350,11 +359,21 @@
:plain="true"
:btnText="$t('chatSettings.btn.removeAdmin')"
@clickBtn="deleteNode(item)"
- :disabled="userDepIds.includes(item.ID)"
+ :disabled="
+ state.chooseMode === 2
+ ? false
+ : userDepIds.includes(item.ID)
+ "
>
-
+
{
if (currentCrumbs?.value?.sons?.length === 0) {
return 'noChecked'
}
- const allChecked = currentCrumbs.value.sons.every(
+ const allChecked = currentCrumbs?.value?.sons?.every(
(son) => son.checkStatus === 'checked',
)
- const someChecked = currentCrumbs.value.sons.some(
+ const someChecked = currentCrumbs?.value?.sons?.some(
(son) => son.checkStatus === 'checked' || son.checkStatus === 'halfChecked',
)
if (allChecked) {
@@ -618,8 +637,14 @@ const updateNodeStatus = (node) => {
}
// 更新当前节点及其所有子节点的状态
-const updateCheckStatus = (node, status) => {
+const updateCheckStatus = (node, status, doShow) => {
node.checkStatus = status
+ if (state.chooseMode === 2 && doShow) {
+ node.showInPopup = true
+ if (state.searchVal) {
+ return
+ }
+ }
if (node.sons && Array.isArray(node.sons) && node.sons.length > 0) {
node.sons.forEach((son) => updateCheckStatus(son, status))
}
@@ -627,7 +652,7 @@ const updateCheckStatus = (node, status) => {
const checkItemChange = (item, val) => {
// 更新当前节点及其子节点的状态
- updateCheckStatus(item, val)
+ updateCheckStatus(item, val, true)
// 更新父节点的状态
updateParentStatus(item)
@@ -637,6 +662,13 @@ const deleteNode = (item) => {
const treeNode = findNodeById(depTreeMyList.value[0], item.ID)
if (!treeNode) return
treeNode.checkStatus = 'noChecked'
+ if (
+ state.chooseMode === 2 &&
+ treeNode?.sons?.length > 0 &&
+ Array.isArray(treeNode?.sons)
+ ) {
+ updateCheckStatus(item, false)
+ }
updateNodeStatus(treeNode)
updateParentStatus(treeNode)
}
@@ -664,11 +696,35 @@ const allCheck = (status) => {
} else {
statusT = 'checked'
}
- currentCrumbs.value.sons.forEach((item) => {
+ currentCrumbs?.value?.sons?.forEach((item) => {
const itemT = findNodeById(depTreeMyList.value[0], item.ID)
if (!itemT) return
checkItemChange(itemT, statusT)
})
+ if (state.chooseMode === 2) {
+ console.log(currentMembers.value)
+ console.log(membersCheckedKeys.value)
+ const map = new Map()
+ if (status === 'noChecked' || status === 'halfChecked') {
+ ;[currentMembers.value, membersCheckedKeys.value]
+ .flat()
+ .forEach((item) => {
+ map.set(item.ID, item)
+ })
+ const mergedArray = Array.from(map.values())
+ console.log(mergedArray)
+ membersCheckedKeys.value = mergedArray
+ } else if (status === 'checked') {
+ const filteredArray = computed(() => {
+ const unSelectArr = new Set(currentMembers.value.map((item) => item.ID))
+ return membersCheckedKeys.value.filter(
+ (item) => !unSelectArr.has(item.ID),
+ )
+ })
+ console.log(filteredArray)
+ membersCheckedKeys.value = filteredArray.value
+ }
+ }
}
const openDrawer = () => {