From 233bd62babe6660193835b6bb30ae7d169b032ba Mon Sep 17 00:00:00 2001
From: MoChou <1373639299@qq.com>
Date: Fri, 8 Nov 2024 22:04:14 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?=
=?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../component/UserSelectContent.vue | 105 ++++++++++++------
src/components/UserSelect/index.vue | 30 ++---
src/components/UserSelect/type.ts | 2 +-
3 files changed, 83 insertions(+), 54 deletions(-)
diff --git a/src/components/UserSelect/component/UserSelectContent.vue b/src/components/UserSelect/component/UserSelectContent.vue
index fb96750..fd744dd 100644
--- a/src/components/UserSelect/component/UserSelectContent.vue
+++ b/src/components/UserSelect/component/UserSelectContent.vue
@@ -9,6 +9,7 @@
:columns="tableColumns"
:loading="loading"
:scroll="{ x: '100%', y: '100%', minWidth: 1000 }"
+ style="max-height: 600px"
:pagination="pagination"
:disabled-tools="['size', 'fullscreen', 'setting', 'refresh']"
:row-selection="{ type: props.multiple ? 'checkbox' : 'radio', showCheckedAll: true }"
@@ -30,7 +31,9 @@
@change="search"
/>
-
+
+
+
重置
@@ -59,7 +62,7 @@
-
+
{{ record.nickname }}({{ record.username }})
@@ -78,9 +81,9 @@
diff --git a/src/components/UserSelect/index.vue b/src/components/UserSelect/index.vue
index 3ebf8a1..15dfc39 100644
--- a/src/components/UserSelect/index.vue
+++ b/src/components/UserSelect/index.vue
@@ -40,19 +40,19 @@ import { useWindowSize } from '@vueuse/core'
import UserSelectContent from './component/UserSelectContent.vue'
import { listUserDict } from '@/apis'
import type { UserSelectPropType } from '@/components/UserSelect/type'
+import type { LabelValueState } from '@/types/global'
const props = withDefaults(defineProps(), {
multiple: false, // 是否支持多选
- value: '',
+ value: [], // 单选时默认值为空数组
})
-
const emit = defineEmits(['update:value'])
-
const { width } = useWindowSize() // 获取窗口的宽度,用于设置弹窗宽度
const visible = ref(false) // 控制弹窗显示的状态
-const userList = ref([]) // 保存用户选项列表
+const userList = ref([]) // 保存用户选项列表
const userSelectContentRef = ref() // 引用 UserSelectContent 组件实例
-const selectedUsers = ref([]) // 保存已选择的用户
+const selectedUsers = ref([]) // 保存已选择的用户
+
// 打开用户选择弹窗
const onOpen = () => {
visible.value = true
@@ -66,7 +66,13 @@ const emitDataChange = () => {
// 处理用户选择变更事件
const handleSelectChange = (value: any) => {
- selectedUsers.value = props.multiple ? value : [...value]
+ if (props.multiple) {
+ // 多选模式下,selectedUsers 应该是一个数组
+ selectedUsers.value = value
+ } else {
+ // 单选模式下,selectedUsers 只应保存一个值
+ selectedUsers.value = value ? [value] : []
+ }
emitDataChange() // 每次选择变化时发出更新事件
}
@@ -90,15 +96,3 @@ onMounted(async () => {
selectedUsers.value = Array.isArray(props.value) ? props.value : props.value?.split(',')
})
-
-
diff --git a/src/components/UserSelect/type.ts b/src/components/UserSelect/type.ts
index 4e7b98a..5d39240 100644
--- a/src/components/UserSelect/type.ts
+++ b/src/components/UserSelect/type.ts
@@ -1,6 +1,6 @@
export interface UserSelectPropType {
multiple: boolean
- value?: string[]
+ value: string[] | string
}
export interface UserItem {