From b5f6dd4572166d7f50638536547e335ec59007c6 Mon Sep 17 00:00:00 2001 From: Alan Ye Date: Sat, 22 Feb 2025 16:09:33 +0800 Subject: [PATCH 1/5] feat(ActivityRecord): replace Multiselect with Checkbox with word and mamber counter --- .../custom/CAS/Record/NewActivityRecord.vue | 76 ++++++++++++------- 1 file changed, 48 insertions(+), 28 deletions(-) diff --git a/app/components/custom/CAS/Record/NewActivityRecord.vue b/app/components/custom/CAS/Record/NewActivityRecord.vue index bc87ad26..543b1a19 100644 --- a/app/components/custom/CAS/Record/NewActivityRecord.vue +++ b/app/components/custom/CAS/Record/NewActivityRecord.vue @@ -3,7 +3,7 @@ import type { AllClubs } from '@@/types/api/user/all_clubs' import { Button } from '@/components/ui/button' import { Calendar } from '@/components/ui/calendar' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' -import { Multiselect } from '@/components/ui/multiselect' +import { Checkbox } from '@/components/ui/checkbox' import { NumberField, NumberFieldContent, @@ -39,12 +39,12 @@ const formSchema = toTypedSchema(z.object({ club: z.string(), date: z .string() - .refine(v => v, { message: 'A date of birth is required.' }), - text: z.string().min(10).max(300), + .refine(v => v, { message: '日期为必填项' }), + text: z.string().min(10, "字数不得少于 10 字符").max(300, "字数不得大于 300 字符"), members: z.array(z.string().uuid()), - cTime: z.number().min(0).max(5), - aTime: z.number().min(0).max(5), - sTime: z.number().min(0).max(5), + cTime: z.number().min(0).max(5, "时长不得大于 5 小时"), + aTime: z.number().min(0).max(5, "时长不得大于 5 小时"), + sTime: z.number().min(0).max(5, "时长不得大于 5 小时"), })) const { data, suspense } = useQuery({ @@ -68,6 +68,17 @@ const { handleSubmit, resetForm, setFieldValue, values } = useForm({ }, }) +const selectedMembers = ref([]) + +const handleCheckboxChange = (memberId: string, checked: boolean) => { + if (checked) { + selectedMembers.value.push(memberId) + } else { + selectedMembers.value = selectedMembers.value.filter(id => id !== memberId) + } + setFieldValue('members', selectedMembers.value) +} + const calendarPlaceholder = ref() const calendarValue = computed({ get: () => values.date ? parseDate(values.date) : undefined, @@ -148,7 +159,7 @@ const onSubmit = handleSubmit(async (values) => { !calendarValue && 'text-muted-foreground', )" > - {{ calendarValue ? df.format(toDate(calendarValue)) : "Pick a date" }} + {{ calendarValue ? df.format(toDate(calendarValue)) : "请选择日期..." }} @@ -212,13 +223,16 @@ const onSubmit = handleSubmit(async (values) => { - + - 活动概要 +
+ 活动概要 + {{ value?.length || 0 }}/300 +