fix: 【团队成员】修复全选的问题 (#1558)
This commit is contained in:
parent
b2ac658c4f
commit
f30d3d736b
@ -33,15 +33,15 @@
|
|||||||
<el-checkbox
|
<el-checkbox
|
||||||
:disabled="props.manage"
|
:disabled="props.manage"
|
||||||
v-model="allChecked[TeamEnum.MANAGE]"
|
v-model="allChecked[TeamEnum.MANAGE]"
|
||||||
|
:indeterminate="allIndeterminate[TeamEnum.MANAGE]"
|
||||||
label="管理"
|
label="管理"
|
||||||
@change="handleCheckAllChange($event, TeamEnum.MANAGE)"
|
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-checkbox
|
<el-checkbox
|
||||||
:disabled="props.manage"
|
:disabled="props.manage"
|
||||||
v-model="row.operate[TeamEnum.MANAGE]"
|
v-model="row.operate[TeamEnum.MANAGE]"
|
||||||
@change="checkedOperateChange(TeamEnum.MANAGE, row)"
|
@change="(e: boolean) => checkedOperateChange(TeamEnum.MANAGE, row, e)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -50,15 +50,15 @@
|
|||||||
<el-checkbox
|
<el-checkbox
|
||||||
:disabled="props.manage"
|
:disabled="props.manage"
|
||||||
v-model="allChecked[TeamEnum.USE]"
|
v-model="allChecked[TeamEnum.USE]"
|
||||||
|
:indeterminate="allIndeterminate[TeamEnum.USE]"
|
||||||
label="查看"
|
label="查看"
|
||||||
@change="handleCheckAllChange($event, TeamEnum.USE)"
|
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-checkbox
|
<el-checkbox
|
||||||
:disabled="props.manage"
|
:disabled="props.manage"
|
||||||
v-model="row.operate[TeamEnum.USE]"
|
v-model="row.operate[TeamEnum.USE]"
|
||||||
@change="checkedOperateChange(TeamEnum.USE, row)"
|
@change="(e: boolean) => checkedOperateChange(TeamEnum.USE, row, e)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -85,58 +85,67 @@ const isApplication = computed(() => props.type === TeamEnum.APPLICATION)
|
|||||||
|
|
||||||
const emit = defineEmits(['update:data'])
|
const emit = defineEmits(['update:data'])
|
||||||
const allChecked: any = ref({
|
const allChecked: any = ref({
|
||||||
[TeamEnum.MANAGE]: false,
|
[TeamEnum.MANAGE]: computed({
|
||||||
[TeamEnum.USE]: false
|
get: () => {
|
||||||
|
return filterData.value.some((item: any) => item.operate[TeamEnum.MANAGE])
|
||||||
|
},
|
||||||
|
set: (val: boolean) => {
|
||||||
|
if (val) {
|
||||||
|
filterData.value.map((item: any) => {
|
||||||
|
item.operate[TeamEnum.MANAGE] = true
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
filterData.value.map((item: any) => {
|
||||||
|
item.operate[TeamEnum.MANAGE] = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
[TeamEnum.USE]: computed({
|
||||||
|
get: () => {
|
||||||
|
return filterData.value.some((item: any) => item.operate[TeamEnum.USE])
|
||||||
|
},
|
||||||
|
set: (val: boolean) => {
|
||||||
|
if (val) {
|
||||||
|
filterData.value.map((item: any) => {
|
||||||
|
item.operate[TeamEnum.USE] = true
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
filterData.value.map((item: any) => {
|
||||||
|
item.operate[TeamEnum.USE] = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
const filterText = ref('')
|
const filterText = ref('')
|
||||||
|
|
||||||
const filterData = computed(() => props.data.filter((v: any) => v.name.includes(filterText.value)))
|
const filterData = computed(() => props.data.filter((v: any) => v.name.includes(filterText.value)))
|
||||||
|
|
||||||
watch(
|
const allIndeterminate: any = ref({
|
||||||
() => props.data,
|
[TeamEnum.MANAGE]: computed(() => {
|
||||||
(val) => {
|
const all_not_checked = filterData.value.every((item: any) => !item.operate[TeamEnum.MANAGE])
|
||||||
Object.keys(allChecked.value).map((item) => {
|
if (all_not_checked) {
|
||||||
allChecked.value[item] = compare(item)
|
return false
|
||||||
})
|
}
|
||||||
emit('update:data', val)
|
return !filterData.value.every((item: any) => item.operate[TeamEnum.MANAGE])
|
||||||
},
|
}),
|
||||||
{
|
[TeamEnum.USE]: computed(() => {
|
||||||
deep: true
|
const all_not_checked = filterData.value.every((item: any) => !item.operate[TeamEnum.USE])
|
||||||
}
|
if (all_not_checked) {
|
||||||
)
|
return false
|
||||||
|
}
|
||||||
function handleCheckAllChange(val: string | number | boolean, Name: string | number) {
|
return !filterData.value.every((item: any) => item.operate[TeamEnum.USE])
|
||||||
if (val) {
|
|
||||||
props.data.map((item: any) => {
|
|
||||||
item.operate[Name] = true
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
props.data.map((item: any) => {
|
|
||||||
item.operate[Name] = false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function checkedOperateChange(Name: string | number, row: any) {
|
|
||||||
if (Name === TeamEnum.MANAGE && row.operate[TeamEnum.MANAGE]) {
|
|
||||||
props.data.map((item: any) => {
|
|
||||||
if (item.id === row.id) {
|
|
||||||
item.operate[TeamEnum.USE] = true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
allChecked.value[Name] = compare(Name)
|
|
||||||
}
|
|
||||||
|
|
||||||
function compare(attrs: string | number) {
|
|
||||||
const filterData = props.data.filter((item: any) => item?.operate[attrs])
|
|
||||||
return props.data.length > 0 && filterData.length === props.data.length
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
Object.keys(allChecked.value).map((item) => {
|
|
||||||
allChecked.value[item] = compare(item)
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
function checkedOperateChange(Name: string | number, row: any, e: boolean) {
|
||||||
|
props.data.map((item: any) => {
|
||||||
|
if (item.id === row.id) {
|
||||||
|
item.operate[Name] = e
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scope></style>
|
<style lang="scss" scope></style>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user