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 = () => {