|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react'; |
|
|
import { Layout, ImagePreview } from '@douyinfe/semi-ui'; |
|
|
import PricingSidebar from './PricingSidebar'; |
|
|
import PricingContent from './content/PricingContent'; |
|
|
import ModelDetailSideSheet from '../modal/ModelDetailSideSheet'; |
|
|
import { useModelPricingData } from '../../../../hooks/model-pricing/useModelPricingData'; |
|
|
import { useIsMobile } from '../../../../hooks/common/useIsMobile'; |
|
|
|
|
|
const PricingPage = () => { |
|
|
const pricingData = useModelPricingData(); |
|
|
const { Sider, Content } = Layout; |
|
|
const isMobile = useIsMobile(); |
|
|
const [showRatio, setShowRatio] = React.useState(false); |
|
|
const [viewMode, setViewMode] = React.useState('card'); |
|
|
const allProps = { |
|
|
...pricingData, |
|
|
showRatio, |
|
|
setShowRatio, |
|
|
viewMode, |
|
|
setViewMode, |
|
|
}; |
|
|
|
|
|
return ( |
|
|
<div className='bg-white'> |
|
|
<Layout className='pricing-layout'> |
|
|
{!isMobile && ( |
|
|
<Sider className='pricing-scroll-hide pricing-sidebar'> |
|
|
<PricingSidebar {...allProps} /> |
|
|
</Sider> |
|
|
)} |
|
|
|
|
|
<Content className='pricing-scroll-hide pricing-content'> |
|
|
<PricingContent |
|
|
{...allProps} |
|
|
isMobile={isMobile} |
|
|
sidebarProps={allProps} |
|
|
/> |
|
|
</Content> |
|
|
</Layout> |
|
|
|
|
|
<ImagePreview |
|
|
src={pricingData.modalImageUrl} |
|
|
visible={pricingData.isModalOpenurl} |
|
|
onVisibleChange={(visible) => pricingData.setIsModalOpenurl(visible)} |
|
|
/> |
|
|
|
|
|
<ModelDetailSideSheet |
|
|
visible={pricingData.showModelDetail} |
|
|
onClose={pricingData.closeModelDetail} |
|
|
modelData={pricingData.selectedModel} |
|
|
groupRatio={pricingData.groupRatio} |
|
|
usableGroup={pricingData.usableGroup} |
|
|
currency={pricingData.currency} |
|
|
tokenUnit={pricingData.tokenUnit} |
|
|
displayPrice={pricingData.displayPrice} |
|
|
showRatio={allProps.showRatio} |
|
|
vendorsMap={pricingData.vendorsMap} |
|
|
endpointMap={pricingData.endpointMap} |
|
|
autoGroups={pricingData.autoGroups} |
|
|
t={pricingData.t} |
|
|
/> |
|
|
</div> |
|
|
); |
|
|
}; |
|
|
|
|
|
export default PricingPage; |
|
|
|