|
|
@@ -1,19 +1,83 @@
|
|
|
/**
|
|
|
* 工作流 - 工作流设置组件
|
|
|
*/
|
|
|
-import React, { useState } from 'react';
|
|
|
-import { Form, Card, Switch, Input, InputNumber, Radio, Checkbox, Table, Button, Space, Divider } from 'antd';
|
|
|
+import React, { useEffect, useState } from 'react';
|
|
|
+import {
|
|
|
+ Form,
|
|
|
+ Card,
|
|
|
+ Switch,
|
|
|
+ Input,
|
|
|
+ InputNumber,
|
|
|
+ Radio,
|
|
|
+ Checkbox,
|
|
|
+ Table,
|
|
|
+ Button,
|
|
|
+ Space,
|
|
|
+ Row,
|
|
|
+ Col,
|
|
|
+ message,
|
|
|
+} from 'antd';
|
|
|
import { SPACING } from '../../constants';
|
|
|
+import { getConfig, modifyConfig } from '@/API/system/options';
|
|
|
|
|
|
const { Group: RadioGroup } = Radio;
|
|
|
|
|
|
// 字段配置数据类型
|
|
|
interface FieldConfig {
|
|
|
- key: string;
|
|
|
- field: string;
|
|
|
- visible: boolean;
|
|
|
+ Order: string;
|
|
|
+ Display: string;
|
|
|
+ FieldName: string;
|
|
|
+ Visible: boolean;
|
|
|
}
|
|
|
|
|
|
+const listFieldBase: FieldConfig[] = [
|
|
|
+ { Order: '1', Display: '动物ID', FieldName: 'patient_id', Visible: true },
|
|
|
+ { Order: '2', Display: '动物名称', FieldName: 'patient_id', Visible: true },
|
|
|
+ { Order: '3', Display: '动物类型', FieldName: 'patient_id', Visible: true },
|
|
|
+ { Order: '4', Display: '性别', FieldName: 'patient_id', Visible: true },
|
|
|
+ { Order: '5', Display: '年龄', FieldName: 'patient_id', Visible: true },
|
|
|
+ { Order: '6', Display: '检查描述', FieldName: 'patient_id', Visible: true },
|
|
|
+ { Order: '7', Display: '检查时间', FieldName: 'patient_id', Visible: true },
|
|
|
+ { Order: '8', Display: '主人', FieldName: 'patient_id', Visible: true },
|
|
|
+ { Order: '9', Display: '登记号', FieldName: 'patient_id', Visible: true },
|
|
|
+];
|
|
|
+
|
|
|
+const initValues = {
|
|
|
+ // 是否自动跳转到下个视图
|
|
|
+ 'Inspection/AutoAcceptImage': false,
|
|
|
+ // 是否开启自动选择曝光模式
|
|
|
+ 'Exam/AutoSelectExposureMode': false,
|
|
|
+ // 自动跳转到下个视图延迟时间
|
|
|
+ 'Inspection/AutoJumpToNextView': 0,
|
|
|
+ suggestAPRTable: false,
|
|
|
+ allowMergeTasks: false,
|
|
|
+ allowEditAfterAcquisition: false,
|
|
|
+ // 是否要求拒绝原因
|
|
|
+ 'Inspection/RequireRejectReason': false,
|
|
|
+ // 是否显示拒绝图片
|
|
|
+ 'SystemConfig/ShowRejectImage': false,
|
|
|
+ smallAnimalExposureMode: 'bodyThickness',
|
|
|
+ // 是否显示电池状态
|
|
|
+ 'Display/BatteryStatusEnable': false,
|
|
|
+ tubePower: false,
|
|
|
+ // 是否显示温度状态
|
|
|
+ 'Display/TemperatureStatusEnable': false,
|
|
|
+ detectorPower: false,
|
|
|
+ // 是否显示WIFI状态
|
|
|
+ 'Display/WIFIStatusEnable': false,
|
|
|
+ detectorTemp: false,
|
|
|
+ // 是否显示真实渲染图像
|
|
|
+ 'SystemConfig/IsShowRealImage': false,
|
|
|
+ // 是否显示解刨图像
|
|
|
+ 'SystemConfig/IsShowAnatomicalImage': false,
|
|
|
+ // 是否显示曝光指示器
|
|
|
+ 'Exam/ShowExposureIndicator': false,
|
|
|
+ // 导出图像模式
|
|
|
+ exportPathMode: 'default',
|
|
|
+ // 导出图像路径
|
|
|
+ 'System/ExportDirectory': '',
|
|
|
+ doseAdjustmentEnabled: false,
|
|
|
+};
|
|
|
/**
|
|
|
* 工作流组件
|
|
|
* 实现图像采集、多任务管理、APR编辑等设置功能
|
|
|
@@ -22,163 +86,191 @@ const Workflow: React.FC = () => {
|
|
|
const [form] = Form.useForm();
|
|
|
|
|
|
// 任务清单显示配置数据
|
|
|
- const [taskListConfig, setTaskListConfig] = useState<FieldConfig[]>([
|
|
|
- { key: '1', field: '动物ID', visible: true },
|
|
|
- { key: '2', field: '动物名称', visible: true },
|
|
|
- { key: '3', field: '动物类型', visible: true },
|
|
|
- { key: '4', field: '性别', visible: true },
|
|
|
- { key: '5', field: '年龄', visible: true },
|
|
|
- { key: '6', field: '检查描述', visible: true },
|
|
|
- { key: '7', field: '检查时间', visible: true },
|
|
|
- { key: '8', field: '主人', visible: true },
|
|
|
- { key: '9', field: '登记号', visible: true },
|
|
|
- ]);
|
|
|
+ const [taskListConfig, setTaskListConfig] =
|
|
|
+ useState<FieldConfig[]>(listFieldBase);
|
|
|
|
|
|
// 历史清单显示配置数据
|
|
|
- const [historyListConfig, setHistoryListConfig] = useState<FieldConfig[]>([
|
|
|
- { key: '1', field: '动物ID', visible: true },
|
|
|
- { key: '2', field: '动物名称', visible: true },
|
|
|
- { key: '3', field: '动物类型', visible: true },
|
|
|
- { key: '4', field: '性别', visible: true },
|
|
|
- { key: '5', field: '年龄', visible: true },
|
|
|
- ]);
|
|
|
+ const [historyListConfig, setHistoryListConfig] =
|
|
|
+ useState<FieldConfig[]>(listFieldBase);
|
|
|
|
|
|
// 表格列配置
|
|
|
- const getTableColumns = (onChange: (key: string, visible: boolean) => void) => [
|
|
|
+ const getTableColumns = (
|
|
|
+ onChange: (key: string, Visible: boolean) => void
|
|
|
+ ) => [
|
|
|
{
|
|
|
title: '可见',
|
|
|
- dataIndex: 'visible',
|
|
|
- key: 'visible',
|
|
|
+ dataIndex: 'Visible',
|
|
|
+ key: 'Visible',
|
|
|
width: 80,
|
|
|
- render: (visible: boolean, record: FieldConfig) => (
|
|
|
+ render: (visible: boolean, record: FieldConfig): React.ReactElement => (
|
|
|
<Checkbox
|
|
|
checked={visible}
|
|
|
- onChange={(e) => onChange(record.key, e.target.checked)}
|
|
|
+ onChange={(e) => onChange(record.FieldName, e.target.checked)}
|
|
|
/>
|
|
|
),
|
|
|
},
|
|
|
{
|
|
|
title: '列',
|
|
|
- dataIndex: 'field',
|
|
|
- key: 'field',
|
|
|
+ dataIndex: 'Display',
|
|
|
+ key: 'Display',
|
|
|
},
|
|
|
];
|
|
|
|
|
|
// 处理任务清单配置变更
|
|
|
- const handleTaskListConfigChange = (key: string, visible: boolean) => {
|
|
|
- setTaskListConfig(prev =>
|
|
|
- prev.map(config =>
|
|
|
- config.key === key ? { ...config, visible } : config
|
|
|
+ const handleTaskListConfigChange = (key: string, Visible: boolean): void => {
|
|
|
+ setTaskListConfig((prev) =>
|
|
|
+ prev.map((config) =>
|
|
|
+ config.FieldName === key ? { ...config, Visible } : config
|
|
|
)
|
|
|
);
|
|
|
};
|
|
|
|
|
|
// 处理历史清单配置变更
|
|
|
- const handleHistoryListConfigChange = (key: string, visible: boolean) => {
|
|
|
- setHistoryListConfig(prev =>
|
|
|
- prev.map(config =>
|
|
|
- config.key === key ? { ...config, visible } : config
|
|
|
+ const handleHistoryListConfigChange = (
|
|
|
+ key: string,
|
|
|
+ Visible: boolean
|
|
|
+ ): void => {
|
|
|
+ setHistoryListConfig((prev) =>
|
|
|
+ prev.map((config) =>
|
|
|
+ config.FieldName === key ? { ...config, Visible } : config
|
|
|
)
|
|
|
);
|
|
|
};
|
|
|
|
|
|
- // 处理保存
|
|
|
- const handleSave = () => {
|
|
|
- form.validateFields().then(values => {
|
|
|
- console.log('保存设置:', {
|
|
|
- ...values,
|
|
|
- taskListConfig,
|
|
|
- historyListConfig
|
|
|
+ // 获取工作流配置信息
|
|
|
+ const getWorkFlowData = async (): Promise<void> => {
|
|
|
+ const params = Object.keys(initValues).map((key) => key);
|
|
|
+ const res = await getConfig({
|
|
|
+ uri: [...params, 'Patient/WorkListFields', 'Patient/HistoryListFields'],
|
|
|
+ });
|
|
|
+ if (res?.code !== '0x000000') {
|
|
|
+ message.error(res?.description || '保存失败');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建配置映射
|
|
|
+ const configMap: Record<string, string> = {};
|
|
|
+ if (res?.data?.configs) {
|
|
|
+ res.data.configs.forEach((config) => {
|
|
|
+ configMap[config.uri] = config.config_value;
|
|
|
});
|
|
|
- // TODO: 调用API保存设置
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取特殊配置项并解析
|
|
|
+ const workListFieldsStr = configMap['Patient/WorkListFields'] || '{}';
|
|
|
+ const historyListFieldsStr = configMap['Patient/HistoryListFields'] || '{}';
|
|
|
+
|
|
|
+ setTaskListConfig(JSON.parse(workListFieldsStr));
|
|
|
+ setHistoryListConfig(JSON.parse(historyListFieldsStr));
|
|
|
+
|
|
|
+ // 过滤掉特殊配置项,只保留普通配置项用于表单
|
|
|
+ const formFieldsConfigs = {};
|
|
|
+ if (res?.data?.configs) {
|
|
|
+ res.data.configs.forEach((config) => {
|
|
|
+ if (
|
|
|
+ config.uri !== 'Patient/WorkListFields' &&
|
|
|
+ config.uri !== 'Patient/HistoryListFields'
|
|
|
+ ) {
|
|
|
+ formFieldsConfigs[config.uri] = config.config_value;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log('=====================>, formFieldsConfigs', formFieldsConfigs);
|
|
|
+ form.setFieldsValue(formFieldsConfigs);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 处理保存
|
|
|
+ const handleSaveWorkFlow = async (): Promise<void> => {
|
|
|
+ const values = await form.validateFields();
|
|
|
+ console.log('保存设置:', values);
|
|
|
+
|
|
|
+ // 获取表单的所有字段值
|
|
|
+ const formValues = form.getFieldsValue();
|
|
|
+
|
|
|
+ const res = await modifyConfig({
|
|
|
+ ...formValues,
|
|
|
+ 'Patient/WorkListFields': JSON.stringify(taskListConfig),
|
|
|
+ 'Patient/HistoryListFields': JSON.stringify(historyListConfig),
|
|
|
});
|
|
|
+ if (res?.code !== '0x000000') {
|
|
|
+ message.error(res?.description || '保存失败');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ message.success('保存成功');
|
|
|
};
|
|
|
|
|
|
// 处理取消
|
|
|
- const handleCancel = () => {
|
|
|
+ const handleCancel = (): void => {
|
|
|
form.resetFields();
|
|
|
// 重置任务清单配置到初始状态
|
|
|
- setTaskListConfig([
|
|
|
- { key: '1', field: '动物ID', visible: true },
|
|
|
- { key: '2', field: '动物名称', visible: true },
|
|
|
- { key: '3', field: '动物类型', visible: true },
|
|
|
- { key: '4', field: '性别', visible: true },
|
|
|
- { key: '5', field: '年龄', visible: true },
|
|
|
- { key: '6', field: '检查描述', visible: true },
|
|
|
- { key: '7', field: '检查时间', visible: true },
|
|
|
- { key: '8', field: '主人', visible: true },
|
|
|
- { key: '9', field: '登记号', visible: true },
|
|
|
- ]);
|
|
|
+ setTaskListConfig(listFieldBase);
|
|
|
// 重置历史清单配置到初始状态
|
|
|
- setHistoryListConfig([
|
|
|
- { key: '1', field: '动物ID', visible: true },
|
|
|
- { key: '2', field: '动物名称', visible: true },
|
|
|
- { key: '3', field: '动物类型', visible: true },
|
|
|
- { key: '4', field: '性别', visible: true },
|
|
|
- { key: '5', field: '年龄', visible: true },
|
|
|
- ]);
|
|
|
+ setHistoryListConfig(listFieldBase);
|
|
|
};
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
+ // 获取系统配置
|
|
|
+ getWorkFlowData();
|
|
|
+ }, []);
|
|
|
+
|
|
|
return (
|
|
|
<div style={{ height: '100%', display: 'flex', flexDirection: 'column' }}>
|
|
|
{/* 主内容区 - 分割视图 */}
|
|
|
- <div style={{ flex: 1, display: 'flex', gap: SPACING.LG, padding: SPACING.LG }}>
|
|
|
+ <div
|
|
|
+ style={{
|
|
|
+ flex: 1,
|
|
|
+ display: 'flex',
|
|
|
+ gap: SPACING.LG,
|
|
|
+ padding: SPACING.LG,
|
|
|
+ }}
|
|
|
+ >
|
|
|
{/* 左侧面板 - 表单设置 */}
|
|
|
- <div style={{ flex: 1, display: 'flex', flexDirection: 'column', gap: SPACING.MD, overflowY: 'auto' }}>
|
|
|
+ <div
|
|
|
+ style={{
|
|
|
+ flex: 1,
|
|
|
+ display: 'flex',
|
|
|
+ flexDirection: 'column',
|
|
|
+ gap: SPACING.MD,
|
|
|
+ overflowY: 'auto',
|
|
|
+ }}
|
|
|
+ >
|
|
|
<Form
|
|
|
form={form}
|
|
|
- layout="vertical"
|
|
|
- initialValues={{
|
|
|
- autoJumpToNextView: false,
|
|
|
- autoExposureCountdown: false,
|
|
|
- jumpDelaySeconds: 0,
|
|
|
- suggestAPRTable: false,
|
|
|
- allowMergeTasks: false,
|
|
|
- allowEditAfterAcquisition: false,
|
|
|
- requireRejectionReason: false,
|
|
|
- showRejectedImages: false,
|
|
|
- smallAnimalExposureMode: 'bodyThickness',
|
|
|
- generatorPower: false,
|
|
|
- tubePower: false,
|
|
|
- generatorTemp: false,
|
|
|
- detectorPower: false,
|
|
|
- detectorWifi: false,
|
|
|
- detectorTemp: false,
|
|
|
- showRealImage: false,
|
|
|
- showAnatomyImage: false,
|
|
|
- exposureStatusEnabled: false,
|
|
|
- exportPathMode: 'default',
|
|
|
- exportCustomPath: '',
|
|
|
- doseAdjustmentEnabled: false,
|
|
|
- }}
|
|
|
+ layout="horizontal"
|
|
|
+ initialValues={{ ...initValues }}
|
|
|
>
|
|
|
{/* 图像采集设置 */}
|
|
|
<Card title="图像采集设置" size="small">
|
|
|
<Space direction="vertical" style={{ width: '100%' }}>
|
|
|
<Form.Item
|
|
|
label="是否自动跳转到下个视图"
|
|
|
- name="autoJumpToNextView"
|
|
|
+ name="Inspection/AutoAcceptImage"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
- <Switch />
|
|
|
+ <Switch size="small" />
|
|
|
</Form.Item>
|
|
|
|
|
|
<Form.Item
|
|
|
label="是否开启倒计时自动曝光"
|
|
|
- name="autoExposureCountdown"
|
|
|
+ name="Exam/AutoSelectExposureMode"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
- <Switch />
|
|
|
+ <Switch size="small" />
|
|
|
</Form.Item>
|
|
|
|
|
|
<Form.Item
|
|
|
label="自动跳转到下个视图延迟时间(秒)"
|
|
|
- name="jumpDelaySeconds"
|
|
|
+ name="Inspection/AutoJumpToNextView"
|
|
|
rules={[
|
|
|
- { type: 'number', min: 0, max: 60, message: '延迟时间必须在0-60秒之间' }
|
|
|
+ {
|
|
|
+ min: 0,
|
|
|
+ max: 60,
|
|
|
+ message: '延迟时间必须在0-60秒之间',
|
|
|
+ },
|
|
|
]}
|
|
|
>
|
|
|
- <InputNumber min={0} max={60} style={{ width: '100%' }} />
|
|
|
+ <InputNumber stringMode min={0} max={60} />
|
|
|
</Form.Item>
|
|
|
|
|
|
<Form.Item
|
|
|
@@ -218,18 +310,18 @@ const Workflow: React.FC = () => {
|
|
|
<Space direction="vertical" style={{ width: '100%' }}>
|
|
|
<Form.Item
|
|
|
label="当拒绝图片时需输入拒绝原因"
|
|
|
- name="requireRejectionReason"
|
|
|
+ name="Inspection/RequireRejectReason"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
- <Switch />
|
|
|
+ <Switch size="small" />
|
|
|
</Form.Item>
|
|
|
|
|
|
<Form.Item
|
|
|
label="是否显示拒绝图像"
|
|
|
- name="showRejectedImages"
|
|
|
+ name="SystemConfig/ShowRejectImage"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
- <Switch />
|
|
|
+ <Switch size="small" />
|
|
|
</Form.Item>
|
|
|
</Space>
|
|
|
</Card>
|
|
|
@@ -249,55 +341,54 @@ const Workflow: React.FC = () => {
|
|
|
|
|
|
{/* 状态栏图标 */}
|
|
|
<Card title="状态栏图标" size="small">
|
|
|
- <Space direction="vertical" style={{ width: '100%' }}>
|
|
|
- <Form.Item
|
|
|
- label="发生器电量"
|
|
|
- name="generatorPower"
|
|
|
- valuePropName="checked"
|
|
|
- >
|
|
|
- <Switch />
|
|
|
- </Form.Item>
|
|
|
-
|
|
|
- <Form.Item
|
|
|
- label="球管管电量"
|
|
|
- name="tubePower"
|
|
|
- valuePropName="checked"
|
|
|
- >
|
|
|
- <Switch />
|
|
|
- </Form.Item>
|
|
|
-
|
|
|
- <Form.Item
|
|
|
- label="发生器温度"
|
|
|
- name="generatorTemp"
|
|
|
- valuePropName="checked"
|
|
|
- >
|
|
|
- <Switch />
|
|
|
- </Form.Item>
|
|
|
-
|
|
|
- <Form.Item
|
|
|
- label="探测器电量"
|
|
|
- name="detectorPower"
|
|
|
- valuePropName="checked"
|
|
|
- >
|
|
|
- <Switch />
|
|
|
- </Form.Item>
|
|
|
-
|
|
|
- <Form.Item
|
|
|
- label="探测器Wi-Fi"
|
|
|
- name="detectorWifi"
|
|
|
- valuePropName="checked"
|
|
|
- >
|
|
|
- <Switch />
|
|
|
- </Form.Item>
|
|
|
-
|
|
|
- <Form.Item
|
|
|
- label="探测器温度"
|
|
|
- name="detectorTemp"
|
|
|
- valuePropName="checked"
|
|
|
- >
|
|
|
- <Switch />
|
|
|
- </Form.Item>
|
|
|
- </Space>
|
|
|
+ <Row gutter={24}>
|
|
|
+ <Col span={12}>
|
|
|
+ <Form.Item
|
|
|
+ label="发生器电量"
|
|
|
+ name="Display/BatteryStatusEnable"
|
|
|
+ valuePropName="checked"
|
|
|
+ >
|
|
|
+ <Switch size="small" />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label="球管管电量"
|
|
|
+ name="tubePower"
|
|
|
+ valuePropName="checked"
|
|
|
+ >
|
|
|
+ <Switch size="small" />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label="发生器温度"
|
|
|
+ name="Display/TemperatureStatusEnable"
|
|
|
+ valuePropName="checked"
|
|
|
+ >
|
|
|
+ <Switch size="small" />
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ <Col span={12}>
|
|
|
+ <Form.Item
|
|
|
+ label="探测器电量"
|
|
|
+ name="detectorPower"
|
|
|
+ valuePropName="checked"
|
|
|
+ >
|
|
|
+ <Switch size="small" />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label="探测器Wi-Fi"
|
|
|
+ name="Display/WIFIStatusEnable"
|
|
|
+ valuePropName="checked"
|
|
|
+ >
|
|
|
+ <Switch size="small" />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label="探测器温度"
|
|
|
+ name="detectorTemp"
|
|
|
+ valuePropName="checked"
|
|
|
+ >
|
|
|
+ <Switch size="small" />
|
|
|
+ </Form.Item>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
</Card>
|
|
|
|
|
|
{/* 辅助定位 */}
|
|
|
@@ -305,18 +396,18 @@ const Workflow: React.FC = () => {
|
|
|
<Space direction="vertical" style={{ width: '100%' }}>
|
|
|
<Form.Item
|
|
|
label="是否显示真实效果图"
|
|
|
- name="showRealImage"
|
|
|
+ name="SystemConfig/IsShowRealImage"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
- <Switch />
|
|
|
+ <Switch size="small" />
|
|
|
</Form.Item>
|
|
|
|
|
|
<Form.Item
|
|
|
label="是否显示解剖图"
|
|
|
- name="showAnatomyImage"
|
|
|
+ name="SystemConfig/IsShowAnatomicalImage"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
- <Switch />
|
|
|
+ <Switch size="small" />
|
|
|
</Form.Item>
|
|
|
</Space>
|
|
|
</Card>
|
|
|
@@ -325,30 +416,24 @@ const Workflow: React.FC = () => {
|
|
|
<Card title="曝光状态显示" size="small">
|
|
|
<Form.Item
|
|
|
label="是否开启曝光状态显示"
|
|
|
- name="exposureStatusEnabled"
|
|
|
+ name="Exam/ShowExposureIndicator"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
- <Switch />
|
|
|
+ <Switch size="small" />
|
|
|
</Form.Item>
|
|
|
</Card>
|
|
|
|
|
|
{/* 导出图像路径 */}
|
|
|
- <Card title="导出图像路径" size="small">
|
|
|
+ <Card title="导出图像路径" size="small" hidden>
|
|
|
<Space direction="vertical" style={{ width: '100%' }}>
|
|
|
- <Form.Item
|
|
|
- label="路径选择"
|
|
|
- name="exportPathMode"
|
|
|
- >
|
|
|
+ <Form.Item label="路径选择" name="exportPathMode">
|
|
|
<RadioGroup>
|
|
|
<Radio value="default">默认路径</Radio>
|
|
|
<Radio value="lastUsed">上一次导出路径</Radio>
|
|
|
</RadioGroup>
|
|
|
</Form.Item>
|
|
|
|
|
|
- <Form.Item
|
|
|
- label="上一次导出路径"
|
|
|
- name="exportCustomPath"
|
|
|
- >
|
|
|
+ <Form.Item label="上一次导出路径" name="System/ExportDirectory">
|
|
|
<Input placeholder="请输入导出路径" />
|
|
|
</Form.Item>
|
|
|
</Space>
|
|
|
@@ -361,16 +446,23 @@ const Workflow: React.FC = () => {
|
|
|
name="doseAdjustmentEnabled"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
- <Switch />
|
|
|
+ <Switch size="small" />
|
|
|
</Form.Item>
|
|
|
</Card>
|
|
|
</Form>
|
|
|
</div>
|
|
|
|
|
|
{/* 右侧面板 - 表格配置 */}
|
|
|
- <div style={{ flex: 1, display: 'flex', flexDirection: 'column', gap: SPACING.MD }}>
|
|
|
+ <div
|
|
|
+ style={{
|
|
|
+ flex: 1,
|
|
|
+ display: 'flex',
|
|
|
+ flexDirection: 'column',
|
|
|
+ gap: SPACING.MD,
|
|
|
+ }}
|
|
|
+ >
|
|
|
{/* 任务清单显示配置 */}
|
|
|
- <Card title="任务清单显示配置" size="small" style={{ flex: 1 }}>
|
|
|
+ <Card title="任务清单显示配置" size="small">
|
|
|
<Table
|
|
|
columns={getTableColumns(handleTaskListConfigChange)}
|
|
|
dataSource={taskListConfig}
|
|
|
@@ -381,28 +473,32 @@ const Workflow: React.FC = () => {
|
|
|
</Card>
|
|
|
|
|
|
{/* 历史清单显示配置 */}
|
|
|
- <Card title="历史清单显示配置" size="small" style={{ flex: 1 }}>
|
|
|
+ <Card title="历史清单显示配置" size="small">
|
|
|
<Table
|
|
|
columns={getTableColumns(handleHistoryListConfigChange)}
|
|
|
dataSource={historyListConfig}
|
|
|
pagination={false}
|
|
|
size="small"
|
|
|
- scroll={{ y: 200 }}
|
|
|
+ scroll={{ y: 400 }}
|
|
|
/>
|
|
|
</Card>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
{/* 底部操作区 */}
|
|
|
- <div style={{
|
|
|
- padding: SPACING.LG,
|
|
|
- borderTop: '1px solid #f0f0f0',
|
|
|
- display: 'flex',
|
|
|
- justifyContent: 'flex-end',
|
|
|
- gap: SPACING.MD
|
|
|
- }}>
|
|
|
+ <div
|
|
|
+ style={{
|
|
|
+ padding: SPACING.LG,
|
|
|
+ borderTop: '1px solid #f0f0f0',
|
|
|
+ display: 'flex',
|
|
|
+ justifyContent: 'flex-end',
|
|
|
+ gap: SPACING.MD,
|
|
|
+ }}
|
|
|
+ >
|
|
|
<Button onClick={handleCancel}>取消</Button>
|
|
|
- <Button type="primary" onClick={handleSave}>保存</Button>
|
|
|
+ <Button type="primary" onClick={handleSaveWorkFlow}>
|
|
|
+ 保存
|
|
|
+ </Button>
|
|
|
</div>
|
|
|
</div>
|
|
|
);
|