This commit is contained in:
YunaiV 2025-06-15 17:39:34 +08:00
commit 35197474f6
4 changed files with 17530 additions and 7 deletions

17486
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,11 @@
<script lang="ts" setup> <script lang="ts" setup>
import { propTypes } from '@/utils/propTypes' import { propTypes } from '@/utils/propTypes'
import { isNumber } from '@/utils/is' import { isNumber } from '@/utils/is'
defineOptions({ name: 'Dialog' }) defineOptions({ name: 'Dialog' })
const slots = useSlots() const slots = useSlots()
const emits = defineEmits(['update:modelValue'])
const props = defineProps({ const props = defineProps({
modelValue: propTypes.bool.def(false), modelValue: propTypes.bool.def(false),
@ -55,6 +57,17 @@ const dialogStyle = computed(() => {
height: unref(dialogHeight) height: unref(dialogHeight)
} }
}) })
const closing = ref(false)
function closeHandler() {
emits('update:modelValue', false)
closing.value = true
}
function closedHandler() {
closing.value = false
}
</script> </script>
<template> <template>
@ -68,7 +81,8 @@ const dialogStyle = computed(() => {
draggable draggable
class="com-dialog" class="com-dialog"
:show-close="false" :show-close="false"
@close="$emit('update:modelValue', false)" @close="closeHandler"
@closed="closedHandler"
> >
<template #header="{ close }"> <template #header="{ close }">
<div class="relative h-54px flex items-center justify-between pl-15px pr-15px"> <div class="relative h-54px flex items-center justify-between pl-15px pr-15px">
@ -102,7 +116,9 @@ const dialogStyle = computed(() => {
</ElScrollbar> </ElScrollbar>
<slot v-else></slot> <slot v-else></slot>
<template v-if="slots.footer" #footer> <template v-if="slots.footer" #footer>
<div :style="{ 'pointer-events': closing ? 'none' : 'auto' }">
<slot name="footer"></slot> <slot name="footer"></slot>
</div>
</template> </template>
</ElDialog> </ElDialog>
</template> </template>

View File

@ -46,8 +46,24 @@ const filterNode = (name: string, data: Tree) => {
} }
/** 处理部门被点击 */ /** 处理部门被点击 */
const handleNodeClick = async (row: { [key: string]: any }) => { let currentNode: any = {}
const handleNodeClick = async (row: { [key: string]: any }, treeNode: any) => {
//
if (currentNode && currentNode.name === row.name) {
treeNode.checked = !treeNode.checked
} else {
treeNode.checked = true
}
if (treeNode.checked) {
//
currentNode = row
emits('node-click', row) emits('node-click', row)
} else {
//
treeRef.value!.setCurrentKey(undefined)
emits('node-click', undefined)
currentNode = null
}
} }
const emits = defineEmits(['node-click']) const emits = defineEmits(['node-click'])

View File

@ -255,10 +255,15 @@ const resetQuery = () => {
} }
/** 处理部门被点击 */ /** 处理部门被点击 */
const handleDeptNodeClick = async (row) => { const handleDeptNodeClick = async (row: any) => {
if (row === undefined) {
queryParams.deptId = undefined
await getList()
} else {
queryParams.deptId = row.id queryParams.deptId = row.id
await getList() await getList()
} }
}
/** 添加/修改操作 */ /** 添加/修改操作 */
const formRef = ref() const formRef = ref()