'use client' import {ReactNode, use, useEffect, useState} from 'react' import {merge} from '@/lib/utils' import {Tabs, TabsContent, TabsList, TabsTrigger} from '@/components/ui/tabs' import LongForm from '@/components/composites/purchase/long/form' import ShortForm from '@/components/composites/purchase/short/form' import {usePathname, useRouter, useSearchParams} from 'next/navigation' import SelfDesc from '@/components/features/self-desc' import {listProduct, listProductHome, ProductItem} from '@/actions/product' import {useProfileStore} from '@/components/stores/profile' export type TabType = 'short' | 'long' | 'fixed' | 'custom' export default function Purchase() { const router = useRouter() const path = usePathname() const params = useSearchParams() const [productList, setProductList] = useState([]) const tab = (params.get('type') as TabType) || productList[0]?.code || 'short' const updateTab = (tab: string) => { const newParams = new URLSearchParams(params) newParams.set('type', tab) router.push(`${path}?${newParams.toString()}`) } const profile = use(useProfileStore(store => store.profile)) useEffect(() => { const fetchProducts = async () => { const res = profile ? await listProduct({}) : await listProductHome({}) if (res.success) { setProductList(res.data) } } fetchProducts() }, [profile]) const componentMap: Record> = { short: ShortForm, long: LongForm, } return (
{productList.map(item => ( {item.name} ))} {/* 固定的定制套餐tab */} 定制套餐 {productList.map((item) => { const Component = componentMap[item.code] const skuList = item.skus || [] return ( {Component ? :
页面待开发中
}
) })} router.push('/custom')}/>
) } function Tab(props: { value: string children: ReactNode }) { return ( {props.children} ) }