修改选择部门和人员的规则

This commit is contained in:
wangyifeng 2025-03-04 11:43:08 +08:00
parent d7e8df5386
commit 82ba6ddbd7
2 changed files with 68 additions and 31 deletions

View File

@ -571,43 +571,53 @@ const buildDepsMap = (departments) => {
}
const allCheckStatus = computed(() => {
if (currentCrumbs?.value?.sons?.length === 0) {
if (
currentCrumbs?.value?.sons?.length === 0 &&
currentMembers.value.length === 0
) {
return 'noChecked'
}
if (state.chooseMode === 2) {
//
const allDepsChecked = currentCrumbs?.value?.sons?.every(
const allDepsChecked =
currentCrumbs?.value?.sons?.length > 0
? currentCrumbs?.value?.sons?.every(
(son) => son.checkStatus === 'checked',
)
const someDepsChecked = currentCrumbs?.value?.sons?.some(
(son) =>
son.checkStatus === 'checked' || son.checkStatus === 'halfChecked',
)
: true //
//
const currentMemberIds = new Set(
currentMembers.value.map((member) => member.ID),
)
const allMembersChecked =
currentMembers.value.length > 0 &&
currentMembers.value.every((member) =>
membersCheckedKeys.value.some((checked) => checked.ID === member.ID),
)
const someMembersChecked = currentMembers.value.some((member) =>
membersCheckedKeys.value.some((checked) => checked.ID === member.ID),
)
//
if (allDepsChecked && allMembersChecked) {
// 1.
// 2.
// 3.
if (
(currentCrumbs?.value?.sons?.length > 0 && allDepsChecked) ||
(currentMembers.value.length > 0 && allMembersChecked)
) {
return 'checked'
} else if (someDepsChecked || someMembersChecked) {
} else if (
currentCrumbs?.value?.sons?.some(
(son) =>
son.checkStatus === 'checked' || son.checkStatus === 'halfChecked',
) ||
currentMembers.value.some((member) =>
membersCheckedKeys.value.some((checked) => checked.ID === member.ID),
)
) {
return 'halfChecked'
}
return 'noChecked'
}
//
//
const allChecked = currentCrumbs?.value?.sons?.every(
(son) => son.checkStatus === 'checked',
)
@ -700,6 +710,10 @@ const updateNodeStatus = (node) => {
//
const updateCheckStatus = (node, status, doShow) => {
node.checkStatus = status
// noChecked
if (status === 'noChecked') {
node.currentChecked = false
}
if (state.chooseMode === 2 && doShow) {
node.showInPopup = true
@ -910,16 +924,31 @@ const checkCurrentItem = (item) => {
const treeNode = findNodeById(depTreeMyList.value[0], item.ID)
if (!treeNode) return
//
const allSonsChecked =
treeNode.sons &&
Array.isArray(treeNode.sons) &&
treeNode.sons.every((son) => son.checkStatus === 'checked')
//
treeNode.currentChecked = !treeNode.currentChecked
//
if (treeNode.currentChecked) {
//
if (allSonsChecked) {
treeNode.checkStatus = 'checked'
} else {
treeNode.checkStatus = 'halfChecked'
}
} else {
//
if (allSonsChecked) {
treeNode.checkStatus = 'halfChecked'
} else {
// ,
treeNode.checkStatus = 'noChecked'
}
}
//
updateParentStatus(treeNode)
@ -945,20 +974,25 @@ const calculateTotalStaffNum = (node) => {
}
const getCurrentMembers = async (depItem) => {
if (state.chooseMode === 1) {
if (state.chooseMode === 1 || !depItem?.ID) {
currentMembers.value = []
return
}
let params = {
departmentId: depItem.ID,
status: 'notactive',
}
// 使
let params = { status: 'notactive' }
if (searchVal.value) {
delete params.departmentId
params = Object.assign({}, params, {
params = {
fatherDepartmentId: depItem.ID,
nickName: searchVal.value,
})
nickName: searchVal.value.trim(),
}
} else {
params.departmentId = depItem.ID
}
//
if (!params.departmentId && !params.fatherDepartmentId) {
console.error('无效的部门ID参数')
return
}
const res = await getDepMembers(params)
if (res.status === 0) {
@ -988,8 +1022,11 @@ const checkMember = (item, val) => {
watch(
() => currentCrumbs.value,
(newValue, oldValue) => {
if (newValue?.ID && (state.chooseMode === 2 || state.chooseMode === 3)) {
getCurrentMembers(newValue)
}
},
{ immediate: true },
)
const deleteMember = (item) => {

View File

@ -5,7 +5,7 @@ import { userInfoApi } from "@/api/user";
import {ref} from 'vue'
export const useAuth = createGlobalState(() => {
// const token = useStorage('token', '', uniStorage)
const token = ref('79b5c732d96d2b27a48a99dfd4a5566c43aaa5796242e854ebe3ffc198d6876b9628e7b764d9af65ab5dbb2d517ced88170491b74b048c0ba827c0d3741462cb89dc59ed46653a449af837a8262941caaef1334d640773710f8cd96473bacfb190cba595a5d6a9c87d70f0999a3ebb41147213b31b4bdccffca66a56acf3baab5af0154f0dce360079f37709f78e13711036899344bddb0fb4cf0f2890287cb62c3fcbe33368caa5e213624577be8b8420ab75b1f50775ee16142a4321c5d56995f37354a66a969da98d95ba6e65d142ed097e04b411c1ebad2f62866d0ec7e1838420530a9941dbbcd00490199f8b892d39c9c0de979228015326a8fde48c55b8d48be643cb00da04330faa68977c689c6d523213435a2d92e3fab2976a1f5a6d4bfcb6c7aba3b4924873003b6492a2d0b81da4722162c68aeeec942eb2a85d')
const token = ref('79b5c732d96d2b27a48a99dfd4a5566c43aaa5796242e854ebe3ffc198d6876b9628e7b764d9af65ab5dbb2d517ced88170491b74b048c0ba827c0d3741462cb89dc59ed46653a449af837a8262941caaef1334d640773710f8cd96473bacfb190cba595a5d6a9c87d70f0999a3ebb41147213b31b4bdccffca66a56acf3baab5af0154f0dce360079f37709f78e13711036899344bddb0fb4cf0f2890287cb62c3fcbe33368caa5e213624577be8b8420ab75b1f50775ee16142a4321c5d56995f37354a66a969da98d95ba6e65d142ed097e04b411c1ebad2f62866d0ec7e1838420530a9941dbbcd00490199f8b8989ec7fe774a82b3f1c4a71a1a6338dec73760f6e72184147caceb1e8a1884e7251c809c440eb394f5df08a384a639a4710527561343785f238745ba9057ec3d4d5fdf5130d4666761c69db08d31abb01')
const refreshToken = useStorage('refreshToken', '', uniStorage)
const userInfo = useStorage('userInfo', {}, uniStorage)
const leaderList = useStorage('leaderList', [], uniStorage)