diff --git a/.changeset/afraid-apricots-wash.md b/.changeset/afraid-apricots-wash.md new file mode 100644 index 00000000..9c54406b --- /dev/null +++ b/.changeset/afraid-apricots-wash.md @@ -0,0 +1,5 @@ +--- +"enspire": minor +--- + +Add Word Counter and Member Counter diff --git a/.changeset/chatty-yaks-begin.md b/.changeset/chatty-yaks-begin.md new file mode 100644 index 00000000..c23f5a64 --- /dev/null +++ b/.changeset/chatty-yaks-begin.md @@ -0,0 +1,5 @@ +--- +"enspire": patch +--- + +Sort by date descending order & add page size in DataTable diff --git a/.changeset/clean-pets-fail.md b/.changeset/clean-pets-fail.md new file mode 100644 index 00000000..65c96bb3 --- /dev/null +++ b/.changeset/clean-pets-fail.md @@ -0,0 +1,5 @@ +--- +"enspire": patch +--- + +Add refresh watcher to CustomCASRecordViewMyActivityRecords component diff --git a/.changeset/strong-beans-explode.md b/.changeset/strong-beans-explode.md new file mode 100644 index 00000000..442a93ca --- /dev/null +++ b/.changeset/strong-beans-explode.md @@ -0,0 +1,5 @@ +--- +"enspire": minor +--- + +Replace Multiselect with Checkbox on NewActivityRecord 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 +