feat(web): 主题设置联动 — 扩展 ThemeConfig 品牌字段 + 设置页面表单
- ThemeConfig 接口增加 brand_name/brand_slogan/brand_features/brand_copyright - 新增 BrandConfig 接口和 getPublicBrand 公开品牌信息获取 - app store 增加 themeConfig 缓存和 loadThemeConfig 方法 - ThemeSettings 页面增加品牌设置表单(品牌名称/标语/特性/版权)
This commit is contained in:
@@ -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}>
|
||||
保存
|
||||
|
||||
Reference in New Issue
Block a user