Merge #69 into develop_web from feature/20251219_zy

fix(web): pricing UI

* feature/20251219_zy: (1 commits)
  fix(web): pricing UI

Signed-off-by: zhaoying <zhaoying@redbearai.com>
Merged-by: zhaoying <zhaoying@redbearai.com>

CR-link: https://codeup.aliyun.com/redbearai/python/redbear-mem-open/change/69
This commit is contained in:
赵莹
2025-12-26 13:59:07 +08:00
6 changed files with 16 additions and 8 deletions

View File

@@ -1525,7 +1525,7 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re
schema: 'Schema', schema: 'Schema',
schemaPlaceholder: 'Enter your OpenAPI schema here', schemaPlaceholder: 'Enter your OpenAPI schema here',
authentication: 'Authentication Method', authentication: 'Authentication Method',
tag: 'Tag', tags: 'Tag',
created_at: 'Created At', created_at: 'Created At',
headerName: 'Header Name', headerName: 'Header Name',
null: 'None', null: 'None',

View File

@@ -1626,7 +1626,7 @@ export const zh = {
schema: 'Schema', schema: 'Schema',
schemaPlaceholder: '在此处输入您的 OpenAPI schema', schemaPlaceholder: '在此处输入您的 OpenAPI schema',
authentication: '鉴权方式', authentication: '鉴权方式',
tag: '标签', tags: '标签',
created_at: '创建时间', created_at: '创建时间',
headerName: 'Header 名称', headerName: 'Header 名称',
null: '无', null: '无',

View File

@@ -364,7 +364,7 @@ const OrderPayment: React.FC = () => {
label={t('pricing.transferDate')} label={t('pricing.transferDate')}
required required
> >
<DatePicker className="rb:w-full" /> <DatePicker className="rb:w-full" placeholder={t('common.pleaseSelect')} />
</Form.Item> </Form.Item>
<Form.Item <Form.Item
name="remarks" name="remarks"

View File

@@ -203,7 +203,7 @@ const PricingView: React.FC = () => {
<div className="rb:mb-5"> <div className="rb:mb-5">
{typeof item.priceObj.price !== 'undefined' ? ( {typeof item.priceObj.price !== 'undefined' ? (
<div className="rb:flex rb:items-baseline rb:h-16"> <div className="rb:flex rb:items-baseline rb:h-16">
<span className="rb:text-[16px] rb:text-[#5B6167] rb:font-regular rb:mr-1 rb:mb-1">¥</span> <span className="rb:text-[16px] rb:text-[#5B6167] rb:font-regular rb:mr-1 rb:mb-1">$</span>
<span className="rb:text-[40px] rb:font-extrabold"> <span className="rb:text-[40px] rb:font-extrabold">
{item.priceObj.price.toLocaleString()} {item.priceObj.price.toLocaleString()}
</span> </span>
@@ -227,6 +227,12 @@ const PricingView: React.FC = () => {
> >
{item.btnType === 'started' ? t('pricing.startedBtn') : item.btnType === 'choosePlan' ? t('pricing.choosePlanBtn') : t('pricing.contactBtn')} {item.btnType === 'started' ? t('pricing.startedBtn') : item.btnType === 'choosePlan' ? t('pricing.choosePlanBtn') : t('pricing.contactBtn')}
</Button> </Button>
{Object.keys(item.priceDescObj).map(key => (
<div key={key} className="rb:mt-4 rb:border-t rb:border-[#DFE4ED]">
<div className="rb:font-[Gilroy] rb:font-extrabold rb:text-[12px] rb:h-auto rb:leading-4 rb:mt-4">{t(`pricing.${key}`)}</div>
<div className="rb:font-[PingFangSC] rb:font-normal rb:text-[12px] rb:text-[#5B6167] rb:leading-4 rb:mt-1.5">{t(item.priceDescObj[key as keyof typeof item.priceDescObj])}</div>
</div>
))}
{/* Features */} {/* Features */}
<div className="rb:space-y-3 rb:border-t rb:border-t-[#DFE4ED] rb:mt-6 rb:pt-6"> <div className="rb:space-y-3 rb:border-t rb:border-t-[#DFE4ED] rb:mt-6 rb:pt-6">
@@ -239,7 +245,7 @@ const PricingView: React.FC = () => {
<div className="rb:flex rb:mb-2"> <div className="rb:flex rb:mb-2">
<img src={checkIcon} className="rb:w-4 rb:h-4 rb:mr-1 rb:mt-0.5" /> <img src={checkIcon} className="rb:w-4 rb:h-4 rb:mr-1 rb:mt-0.5" />
<div className="rb:font-regular rb:text-[12px] rb:text-[#5B6167] rb:leading-5"> <div className="rb:font-regular rb:text-[12px] rb:text-[#5B6167] rb:leading-5">
{t('pricing.intelligentSearchFrequency')}<span className="rb:text-[#FFFFFF]">{ item.intelligentSearchFrequency } {t('pricing.timesMonth')}</span> {t('pricing.intelligentSearchFrequency')}<span>{ item.intelligentSearchFrequency } {t('pricing.timesMonth')}</span>
</div> </div>
</div> </div>
{['supportServices', 'flexibleDeployment', 'reliableGuarantee'].map(type => { {['supportServices', 'flexibleDeployment', 'reliableGuarantee'].map(type => {

View File

@@ -98,7 +98,7 @@ const Custom: React.FC<{ getStatusTag: (status: string) => ReactNode }> = ({ get
extra={getStatusTag(item.status)} extra={getStatusTag(item.status)}
> >
<div> <div>
{['auth_type', 'tag', 'created_at'].map(key => ( {['auth_type', 'tags', 'created_at'].map(key => (
<div <div
key={key} key={key}
className="rb:flex rb:gap-4 rb:justify-start rb:text-[#5B6167] rb:text-[14px] rb:leading-5 rb:mb-3" className="rb:flex rb:gap-4 rb:justify-start rb:text-[#5B6167] rb:text-[14px] rb:leading-5 rb:mb-3"
@@ -108,7 +108,9 @@ const Custom: React.FC<{ getStatusTag: (status: string) => ReactNode }> = ({ get
{key === 'created_at' && item[key] {key === 'created_at' && item[key]
? dayjs(item[key]).format('YYYY-MM-DD HH:mm:ss') ? dayjs(item[key]).format('YYYY-MM-DD HH:mm:ss')
: key === 'auth_type' : key === 'auth_type'
? t(`tool.${(item.config_data as any)?.[key]}`) ? t(`tool.${(item.config_data as any)?.[key]}`)
: key === 'tags'
? (item[key] as string[]).join('、')
: (item.config_data as any)?.[key] || '-' : (item.config_data as any)?.[key] || '-'
} }
</div> </div>

View File

@@ -268,7 +268,7 @@ const CustomToolModal = forwardRef<CustomToolModalRef, CustomToolModalProps>(({
</> </>
<FormItem <FormItem
name="tags" name="tags"
label={t('tool.tag')} label={t('tool.tags')}
extra={t('tool.tagDesc')} extra={t('tool.tagDesc')}
> >
<Select <Select