|
|
@@ -30,17 +30,7 @@ interface FieldConfig {
|
|
|
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 listFieldBase: FieldConfig[] = [];
|
|
|
|
|
|
const initValues = {
|
|
|
// 是否自动跳转到下个视图
|
|
|
@@ -49,23 +39,30 @@ const initValues = {
|
|
|
'Exam/AutoSelectExposureMode': false,
|
|
|
// 自动跳转到下个视图延迟时间
|
|
|
'Inspection/AutoJumpToNextView': 0,
|
|
|
- suggestAPRTable: false,
|
|
|
- allowMergeTasks: false,
|
|
|
- allowEditAfterAcquisition: false,
|
|
|
+ // 提供建议的APR表
|
|
|
+ 'Inspection/SuggestAPRTable': false,
|
|
|
+ // 允许同一患者的多个任务合并开始检查
|
|
|
+ 'Inspection/AllowMergeTasks': false,
|
|
|
+ // 图像采集后在检查中允许编辑曝光信息如APR、DAP
|
|
|
+ 'Inspection/AllowEditAfterAcquisition': false,
|
|
|
// 是否要求拒绝原因
|
|
|
'Inspection/RequireRejectReason': false,
|
|
|
// 是否显示拒绝图片
|
|
|
'SystemConfig/ShowRejectImage': false,
|
|
|
- smallAnimalExposureMode: 'bodyThickness',
|
|
|
+ // 小动物默认曝光参数
|
|
|
+ 'Inspection/SmallAnimalExposureMode': 'bodyThickness',
|
|
|
// 是否显示电池状态
|
|
|
'Display/BatteryStatusEnable': false,
|
|
|
- tubePower: false,
|
|
|
+ // 是否显示球管电量
|
|
|
+ 'Display/TubePower': false,
|
|
|
// 是否显示温度状态
|
|
|
'Display/TemperatureStatusEnable': false,
|
|
|
- detectorPower: false,
|
|
|
+ // 是否显示探测器电量
|
|
|
+ 'Display/DetectorPower': false,
|
|
|
// 是否显示WIFI状态
|
|
|
'Display/WIFIStatusEnable': false,
|
|
|
- detectorTemp: false,
|
|
|
+ // 是否显示探测器温度
|
|
|
+ 'Display/DetectorTemp': false,
|
|
|
// 是否显示真实渲染图像
|
|
|
'SystemConfig/IsShowRealImage': false,
|
|
|
// 是否显示解刨图像
|
|
|
@@ -73,10 +70,11 @@ const initValues = {
|
|
|
// 是否显示曝光指示器
|
|
|
'Exam/ShowExposureIndicator': false,
|
|
|
// 导出图像模式
|
|
|
- exportPathMode: 'default',
|
|
|
+ 'System/ExportPathMode': 'default',
|
|
|
// 导出图像路径
|
|
|
'System/ExportDirectory': '',
|
|
|
- doseAdjustmentEnabled: false,
|
|
|
+ //是否启用剂量调整功能
|
|
|
+ 'System/DoseAdjustmentEnabled': false,
|
|
|
};
|
|
|
/**
|
|
|
* 工作流组件
|
|
|
@@ -150,23 +148,23 @@ const Workflow: React.FC = () => {
|
|
|
|
|
|
// 创建配置映射
|
|
|
const configMap: Record<string, string> = {};
|
|
|
- if (res?.data?.configs) {
|
|
|
- res.data.configs.forEach((config) => {
|
|
|
+ if (res?.data) {
|
|
|
+ res.data.forEach((config) => {
|
|
|
configMap[config.uri] = config.config_value;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 获取特殊配置项并解析
|
|
|
- const workListFieldsStr = configMap['Patient/WorkListFields'] || '{}';
|
|
|
- const historyListFieldsStr = configMap['Patient/HistoryListFields'] || '{}';
|
|
|
+ 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 (res?.data) {
|
|
|
+ res.data.forEach((config) => {
|
|
|
if (
|
|
|
config.uri !== 'Patient/WorkListFields' &&
|
|
|
config.uri !== 'Patient/HistoryListFields'
|
|
|
@@ -176,20 +174,14 @@ const Workflow: React.FC = () => {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- 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,
|
|
|
+ ...values,
|
|
|
'Patient/WorkListFields': JSON.stringify(taskListConfig),
|
|
|
'Patient/HistoryListFields': JSON.stringify(historyListConfig),
|
|
|
});
|
|
|
@@ -214,6 +206,10 @@ const Workflow: React.FC = () => {
|
|
|
getWorkFlowData();
|
|
|
}, []);
|
|
|
|
|
|
+ const onChange = (value) => {
|
|
|
+ console.log('changed', value, typeof value);
|
|
|
+ };
|
|
|
+
|
|
|
return (
|
|
|
<div style={{ height: '100%', display: 'flex', flexDirection: 'column' }}>
|
|
|
{/* 主内容区 - 分割视图 */}
|
|
|
@@ -264,18 +260,19 @@ const Workflow: React.FC = () => {
|
|
|
name="Inspection/AutoJumpToNextView"
|
|
|
rules={[
|
|
|
{
|
|
|
+ type: 'number',
|
|
|
min: 0,
|
|
|
max: 60,
|
|
|
message: '延迟时间必须在0-60秒之间',
|
|
|
},
|
|
|
]}
|
|
|
>
|
|
|
- <InputNumber stringMode min={0} max={60} />
|
|
|
+ <InputNumber min={0} max={60} onChange={onChange} />
|
|
|
</Form.Item>
|
|
|
|
|
|
<Form.Item
|
|
|
label="提供建议的曝光APR表"
|
|
|
- name="suggestAPRTable"
|
|
|
+ name="Inspection/SuggestAPRTable"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
<Checkbox />
|
|
|
@@ -287,7 +284,7 @@ const Workflow: React.FC = () => {
|
|
|
<Card title="多个任务设置" size="small">
|
|
|
<Form.Item
|
|
|
label="允许同一患者的多个任务合并开始检查"
|
|
|
- name="allowMergeTasks"
|
|
|
+ name="Inspection/AllowMergeTasks"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
<Checkbox />
|
|
|
@@ -298,7 +295,7 @@ const Workflow: React.FC = () => {
|
|
|
<Card title="编辑APR设置" size="small">
|
|
|
<Form.Item
|
|
|
label="图像采集后在检查中允许编辑曝光信息如APR、DAP"
|
|
|
- name="allowEditAfterAcquisition"
|
|
|
+ name="Inspection/AllowEditAfterAcquisition"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
<Checkbox />
|
|
|
@@ -330,7 +327,7 @@ const Workflow: React.FC = () => {
|
|
|
<Card title="小动物默认曝光参数" size="small">
|
|
|
<Form.Item
|
|
|
label="曝光参数计算方式"
|
|
|
- name="smallAnimalExposureMode"
|
|
|
+ name="Inspection/SmallAnimalExposureMode"
|
|
|
>
|
|
|
<RadioGroup>
|
|
|
<Radio value="bodyThickness">根据体厚计算</Radio>
|
|
|
@@ -352,7 +349,7 @@ const Workflow: React.FC = () => {
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label="球管管电量"
|
|
|
- name="tubePower"
|
|
|
+ name="Display/TubePower"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
<Switch size="small" />
|
|
|
@@ -368,7 +365,7 @@ const Workflow: React.FC = () => {
|
|
|
<Col span={12}>
|
|
|
<Form.Item
|
|
|
label="探测器电量"
|
|
|
- name="detectorPower"
|
|
|
+ name="Display/DetectorPower"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
<Switch size="small" />
|
|
|
@@ -382,7 +379,7 @@ const Workflow: React.FC = () => {
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
|
label="探测器温度"
|
|
|
- name="detectorTemp"
|
|
|
+ name="Display/DetectorTemp"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
<Switch size="small" />
|
|
|
@@ -424,9 +421,9 @@ const Workflow: React.FC = () => {
|
|
|
</Card>
|
|
|
|
|
|
{/* 导出图像路径 */}
|
|
|
- <Card title="导出图像路径" size="small" hidden>
|
|
|
+ <Card title="导出图像路径" size="small">
|
|
|
<Space direction="vertical" style={{ width: '100%' }}>
|
|
|
- <Form.Item label="路径选择" name="exportPathMode">
|
|
|
+ <Form.Item label="路径选择" name="System/ExportPathMode">
|
|
|
<RadioGroup>
|
|
|
<Radio value="default">默认路径</Radio>
|
|
|
<Radio value="lastUsed">上一次导出路径</Radio>
|
|
|
@@ -443,7 +440,7 @@ const Workflow: React.FC = () => {
|
|
|
<Card title="剂量调整设置" size="small">
|
|
|
<Form.Item
|
|
|
label="是否启用剂量调整功能"
|
|
|
- name="doseAdjustmentEnabled"
|
|
|
+ name="System/DoseAdjustmentEnabled"
|
|
|
valuePropName="checked"
|
|
|
>
|
|
|
<Switch size="small" />
|
|
|
@@ -468,7 +465,6 @@ const Workflow: React.FC = () => {
|
|
|
dataSource={taskListConfig}
|
|
|
pagination={false}
|
|
|
size="small"
|
|
|
- scroll={{ y: 300 }}
|
|
|
/>
|
|
|
</Card>
|
|
|
|
|
|
@@ -479,7 +475,6 @@ const Workflow: React.FC = () => {
|
|
|
dataSource={historyListConfig}
|
|
|
pagination={false}
|
|
|
size="small"
|
|
|
- scroll={{ y: 400 }}
|
|
|
/>
|
|
|
</Card>
|
|
|
</div>
|