feat(web): 主题设置联动 — 扩展 ThemeConfig 品牌字段 + 设置页面表单
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled

- ThemeConfig 接口增加 brand_name/brand_slogan/brand_features/brand_copyright
- 新增 BrandConfig 接口和 getPublicBrand 公开品牌信息获取
- app store 增加 themeConfig 缓存和 loadThemeConfig 方法
- ThemeSettings 页面增加品牌设置表单(品牌名称/标语/特性/版权)
This commit is contained in:
iven
2026-05-01 17:37:10 +08:00
parent 6eb2bf9c80
commit 669ca44360
3 changed files with 71 additions and 4 deletions

View File

@@ -1,12 +1,10 @@
import { useEffect, useState, useCallback } from 'react';
import { Form, Input, Select, Button, ColorPicker, message, Typography } from 'antd';
import { Form, Input, Select, Button, ColorPicker, message, Typography, Divider } from 'antd';
import {
getTheme,
updateTheme,
} from '../../api/themes';
// --- Component ---
export default function ThemeSettings() {
const [form] = Form.useForm();
const [, setLoading] = useState(false);
@@ -20,13 +18,20 @@ export default function ThemeSettings() {
primary_color: theme.primary_color || '#1677ff',
logo_url: theme.logo_url || '',
sidebar_style: theme.sidebar_style || 'light',
brand_name: theme.brand_name || '',
brand_slogan: theme.brand_slogan || '',
brand_features: theme.brand_features || '',
brand_copyright: theme.brand_copyright || '',
});
} catch {
// Theme may not exist yet; use defaults
form.setFieldsValue({
primary_color: '#1677ff',
logo_url: '',
sidebar_style: 'light',
brand_name: '',
brand_slogan: '',
brand_features: '',
brand_copyright: '',
});
}
setLoading(false);
@@ -40,6 +45,10 @@ export default function ThemeSettings() {
primary_color: string;
logo_url: string;
sidebar_style: 'light' | 'dark';
brand_name: string;
brand_slogan: string;
brand_features: string;
brand_copyright: string;
}) => {
setSaving(true);
try {
@@ -50,6 +59,10 @@ export default function ThemeSettings() {
: (values.primary_color as { toHexString?: () => string }).toHexString?.() ?? String(values.primary_color),
logo_url: values.logo_url,
sidebar_style: values.sidebar_style,
brand_name: values.brand_name || undefined,
brand_slogan: values.brand_slogan || undefined,
brand_features: values.brand_features || undefined,
brand_copyright: values.brand_copyright || undefined,
});
message.success('主题设置已保存');
} catch (err: unknown) {
@@ -87,6 +100,22 @@ export default function ThemeSettings() {
]}
/>
</Form.Item>
<Divider></Divider>
<Form.Item name="brand_name" label="品牌名称">
<Input placeholder="HMS 健康管理平台" />
</Form.Item>
<Form.Item name="brand_slogan" label="品牌标语">
<Input placeholder="新一代健康管理平台" />
</Form.Item>
<Form.Item name="brand_features" label="品牌特性">
<Input placeholder="患者管理 · 健康监测 · 随访管理 · AI 智能分析" />
</Form.Item>
<Form.Item name="brand_copyright" label="版权信息">
<Input placeholder="HMS 健康管理平台 · ©汕头市智界科技有限公司" />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit" loading={saving}>