From 74df2ed741817545b4c4f85e55fd0c4d3efd8c62 Mon Sep 17 00:00:00 2001 From: yelan Date: Thu, 27 Aug 2026 16:49:10 +0800 Subject: [PATCH] feat(settings): implement system settings --- .../settings/components/EmbedSettingsCard.vue | 100 +++++++++ .../components/SignatureSettingsCard.vue | 192 ++++++++++++++++++ .../settings/components/SmsSettingsCard.vue | 145 +++++++++++++ .../settings/components/TabletDevicesCard.vue | 139 +++++++++++++ .../src/views/management/settings/index.vue | 138 ++++++++++++- .../src/views/management/settings/mock.ts | 33 +++ .../src/views/management/settings/types.ts | 26 ++- 7 files changed, 764 insertions(+), 9 deletions(-) create mode 100644 clinical-web/src/views/management/settings/components/EmbedSettingsCard.vue create mode 100644 clinical-web/src/views/management/settings/components/SignatureSettingsCard.vue create mode 100644 clinical-web/src/views/management/settings/components/SmsSettingsCard.vue create mode 100644 clinical-web/src/views/management/settings/components/TabletDevicesCard.vue create mode 100644 clinical-web/src/views/management/settings/mock.ts diff --git a/clinical-web/src/views/management/settings/components/EmbedSettingsCard.vue b/clinical-web/src/views/management/settings/components/EmbedSettingsCard.vue new file mode 100644 index 0000000..14ef3c1 --- /dev/null +++ b/clinical-web/src/views/management/settings/components/EmbedSettingsCard.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/clinical-web/src/views/management/settings/components/SignatureSettingsCard.vue b/clinical-web/src/views/management/settings/components/SignatureSettingsCard.vue new file mode 100644 index 0000000..8ae3416 --- /dev/null +++ b/clinical-web/src/views/management/settings/components/SignatureSettingsCard.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/clinical-web/src/views/management/settings/components/SmsSettingsCard.vue b/clinical-web/src/views/management/settings/components/SmsSettingsCard.vue new file mode 100644 index 0000000..424ab38 --- /dev/null +++ b/clinical-web/src/views/management/settings/components/SmsSettingsCard.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/clinical-web/src/views/management/settings/components/TabletDevicesCard.vue b/clinical-web/src/views/management/settings/components/TabletDevicesCard.vue new file mode 100644 index 0000000..ee506b6 --- /dev/null +++ b/clinical-web/src/views/management/settings/components/TabletDevicesCard.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/clinical-web/src/views/management/settings/index.vue b/clinical-web/src/views/management/settings/index.vue index 77f5ede..cf0fbaa 100644 --- a/clinical-web/src/views/management/settings/index.vue +++ b/clinical-web/src/views/management/settings/index.vue @@ -1,12 +1,136 @@ + + diff --git a/clinical-web/src/views/management/settings/mock.ts b/clinical-web/src/views/management/settings/mock.ts new file mode 100644 index 0000000..87f8c74 --- /dev/null +++ b/clinical-web/src/views/management/settings/mock.ts @@ -0,0 +1,33 @@ +import type { SignatureSettings, SmsChannel, SmsChannelOption, TabletDevice } from './types' + +export const mockSignatureSettings: SignatureSettings = { + linkExpireHours: 48, + timeoutReminder: true, + dualRetention: true, + caCertificate: false, +} + +export const smsChannelOptions: SmsChannelOption[] = [ + { value: 'hospital-primary', label: '医院短信网关(主)' }, + { value: 'third-party-backup', label: '第三方短信通道(备)' }, +] + +export const defaultSmsChannel: SmsChannel = 'hospital-primary' + +export const mockTabletDevices: TabletDevice[] = [ + { + id: 'tablet-01', + name: '汉王 GP-1108U(护士站01)', + status: 'connected', + }, + { + id: 'tablet-02', + name: '汉王 GP-1108U(护士站02)', + status: 'connected', + }, + { + id: 'tablet-03', + name: 'Wacom STU-430(放射登记台)', + status: 'disconnected', + }, +] diff --git a/clinical-web/src/views/management/settings/types.ts b/clinical-web/src/views/management/settings/types.ts index 47963cf..76005ca 100644 --- a/clinical-web/src/views/management/settings/types.ts +++ b/clinical-web/src/views/management/settings/types.ts @@ -1,10 +1,32 @@ -export type SettingValue = string | number | boolean +export type SettingToggleKey = 'timeoutReminder' | 'dualRetention' | 'caCertificate' + +export type DeviceStatus = 'connected' | 'disconnected' + +export type SmsChannel = 'hospital-primary' | 'third-party-backup' + +export interface SignatureSettings { + linkExpireHours: number + timeoutReminder: boolean + dualRetention: boolean + caCertificate: boolean +} + +export interface TabletDevice { + id: string + name: string + status: DeviceStatus +} + +export interface SmsChannelOption { + value: SmsChannel + label: string +} export interface SettingFormItem { key: string label: string description: string - value: SettingValue + value: string | number | boolean valueType: 'string' | 'number' | 'boolean' }