From 15f175aee1e69a38869fa4c8123a75d963c3b015 Mon Sep 17 00:00:00 2001 From: Timothy Yin Date: Mon, 28 Apr 2025 10:20:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B1=95=E7=A4=BA=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E4=BA=BA=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ModalDigitalHumanSelect.vue | 158 ++++++++++++++++++------- pages/generation/avatar-models.vue | 44 ++++++- typings/types.d.ts | 3 +- 3 files changed, 155 insertions(+), 50 deletions(-) diff --git a/components/ModalDigitalHumanSelect.vue b/components/ModalDigitalHumanSelect.vue index 74b6e0b..067be55 100644 --- a/components/ModalDigitalHumanSelect.vue +++ b/components/ModalDigitalHumanSelect.vue @@ -22,7 +22,8 @@ const props = defineProps({ const emit = defineEmits({ close: () => true, - select: (digitalHumans: DigitalHumanItem | DigitalHumanItem[]) => digitalHumans, + select: (digitalHumans: DigitalHumanItem | DigitalHumanItem[]) => + digitalHumans, }) const loginState = useLoginState() @@ -31,13 +32,24 @@ const toast = useToast() const page = ref(1) +const sourceTypeList = [ + { label: 'TX', value: 1, color: 'blue' }, + { label: 'XSH', value: 2, color: 'green' }, + { label: 'XB', value: 3, color: 'indigo' }, +] +// const sourceType = ref(sourceTypeList[0]) + const selectedDigitalHumans = ref([]) const handleSelectClick = (item: DigitalHumanItem) => { // 如果点击的项目已经在已选列表中,则移除;否则添加 if (selectedDigitalHumans.value.includes(item)) { - selectedDigitalHumans.value = selectedDigitalHumans.value.filter(d => d !== item) + selectedDigitalHumans.value = selectedDigitalHumans.value.filter( + (d) => d !== item + ) } else { - selectedDigitalHumans.value = props.multiple ? [...selectedDigitalHumans.value, item] : [item] + selectedDigitalHumans.value = props.multiple + ? [...selectedDigitalHumans.value, item] + : [item] } } @@ -60,60 +72,67 @@ const handleSubmit = () => { }) return } - emit('select', props.multiple ? selectedDigitalHumans.value : selectedDigitalHumans.value[0]) + emit( + 'select', + props.multiple + ? selectedDigitalHumans.value + : selectedDigitalHumans.value[0] + ) handleClose() setTimeout(() => { page.value = 1 }, 300) } -const tabItems = [{ - key: 'user', - label: '我的数字人', - icon: 'i-tabler-user', -}] +const tabItems = [ + { + key: 'user', + label: '我的数字人', + icon: 'i-tabler-user', + }, +] const tabIndex = ref(0) watch(tabIndex, () => { page.value = 1 }) -const { - data: userDigitalList, -} = useAsyncData( +const { data: userDigitalList } = useAsyncData( 'user-digital-human', - () => useFetchWrapped>>( - 'App.User_UserDigital.GetList', - { + () => + useFetchWrapped< + req.gen.DigitalHumanList & AuthedRequest, + BaseResponse> + >('App.User_UserDigital.GetList', { token: loginState.token!, user_id: loginState.user.id, to_user_id: loginState.user.id, page: page.value, perpage: 15, - }, - ), + // source_type: sourceType.value.value, + }), { watch: [page], - }, + } ) -const { - data: systemDigitalList, -} = useAsyncData( +const { data: systemDigitalList } = useAsyncData( 'system-digital-human', - () => useFetchWrapped>>( - 'App.Digital_Human.GetList', - { + () => + useFetchWrapped< + req.gen.DigitalHumanList & AuthedRequest, + BaseResponse> + >('App.Digital_Human.GetList', { token: loginState.token!, user_id: loginState.user.id, to_user_id: loginState.user.id, page: page.value, perpage: 15, - }, - ), + // source_type: sourceType.value.value, + }), { watch: [page], - }, + } ) onMounted(() => { @@ -124,7 +143,7 @@ onMounted(() => { icon: 'i-tabler-user-star', }) nextTick(() => { - tabIndex.value = tabItems.findIndex(i => i.key === props.defaultTab) + tabIndex.value = tabItems.findIndex((i) => i.key === props.defaultTab) console.log('tabIndex', tabIndex.value) }) } @@ -137,10 +156,17 @@ onMounted(() => { :ui="{ width: 'w-full sm:max-w-3xl' }" @close="handleClose" > - + +