评查点新增修改逻辑完善
This commit is contained in:
+176
-10
@@ -1,10 +1,12 @@
|
||||
import { type MetaFunction } from "@remix-run/node";
|
||||
import { useState } from "react";
|
||||
import { BasicInfo } from "~/components/rules/new/BasicInfo";
|
||||
import { ExtractionSettings } from "~/components/rules/new/ExtractionSettings";
|
||||
import { ReviewSettings } from "~/components/rules/new/ReviewSettings";
|
||||
import { ReviewSettings, RuleContext } from "~/components/rules/new/ReviewSettings";
|
||||
import { ActionButtons } from "~/components/rules/new/ActionButtons";
|
||||
import { PageHeader } from "~/components/rules/new/PageHeader";
|
||||
import rulesStyles from "~/styles/rules.css?url";
|
||||
import { useNavigate } from "@remix-run/react";
|
||||
|
||||
export const meta: MetaFunction = () => {
|
||||
return [
|
||||
@@ -25,14 +27,168 @@ export const handle = {
|
||||
};
|
||||
|
||||
export default function RuleNew() {
|
||||
const handleSave = () => {
|
||||
// 实现保存逻辑
|
||||
console.log('保存评查点');
|
||||
const navigate = useNavigate();
|
||||
const [extractionFields, setExtractionFields] = useState<string[]>([]);
|
||||
const [formData, setFormData] = useState({
|
||||
// 基本信息字段
|
||||
name: '',
|
||||
code: '',
|
||||
risk: 'medium',
|
||||
is_enabled: true,
|
||||
description: '',
|
||||
references_laws: {
|
||||
name: '',
|
||||
articles: [],
|
||||
content: ''
|
||||
},
|
||||
evaluation_point_groups_id: null,
|
||||
|
||||
// 抽取设置
|
||||
extraction_config: {
|
||||
llm_ocr: {
|
||||
fields: [],
|
||||
prompt_setting: {
|
||||
type: 'system',
|
||||
template: ''
|
||||
}
|
||||
},
|
||||
llm_vl: {
|
||||
fields: [],
|
||||
prompt_setting: {
|
||||
type: 'system',
|
||||
template: ''
|
||||
}
|
||||
},
|
||||
ocr_regex: {
|
||||
fields: []
|
||||
}
|
||||
},
|
||||
|
||||
// 评查设置
|
||||
evaluation_config: {
|
||||
logicType: 'and',
|
||||
customLogic: '',
|
||||
rules: []
|
||||
},
|
||||
|
||||
// 评查结果消息
|
||||
pass_message: '文档检查通过,符合规范要求。',
|
||||
fail_message: '文档存在以下问题,请修改后重新提交。',
|
||||
suggestion_message: '',
|
||||
suggestion_message_type: 'warning',
|
||||
|
||||
// 评查后动作
|
||||
post_action: 'none',
|
||||
action_config: ''
|
||||
});
|
||||
|
||||
// 更新抽取字段列表,用于在评查规则中选择
|
||||
const updateExtractionFields = (fields: string[]) => {
|
||||
setExtractionFields(fields);
|
||||
};
|
||||
|
||||
// 处理BasicInfo组件数据变更
|
||||
const handleBasicInfoChange = (data: Record<string, unknown>) => {
|
||||
setFormData(prevData => ({
|
||||
...prevData,
|
||||
...data
|
||||
}));
|
||||
};
|
||||
|
||||
// 处理ExtractionSettings组件数据变更
|
||||
const handleExtractionSettingsChange = (data: Record<string, unknown>) => {
|
||||
setFormData(prevData => ({
|
||||
...prevData,
|
||||
...data
|
||||
}));
|
||||
};
|
||||
|
||||
// 处理ReviewSettings组件数据变更
|
||||
const handleReviewSettingsChange = (data: Record<string, unknown>) => {
|
||||
setFormData(prevData => ({
|
||||
...prevData,
|
||||
...data
|
||||
}));
|
||||
};
|
||||
|
||||
// 保存评查点
|
||||
const handleSave = async () => {
|
||||
try {
|
||||
// 构建完整的评查点数据
|
||||
const evaluationPointData = {
|
||||
code: formData.code,
|
||||
name: formData.name,
|
||||
evaluation_point_groups_id: formData.evaluation_point_groups_id,
|
||||
risk: formData.risk,
|
||||
description: formData.description,
|
||||
is_enabled: formData.is_enabled,
|
||||
references_laws: formData.references_laws,
|
||||
extraction_config: formData.extraction_config,
|
||||
evaluation_config: formData.evaluation_config,
|
||||
pass_message: formData.pass_message,
|
||||
fail_message: formData.fail_message,
|
||||
suggestion_message: formData.suggestion_message,
|
||||
suggestion_message_type: formData.suggestion_message_type,
|
||||
post_action: formData.post_action,
|
||||
action_config: formData.action_config
|
||||
};
|
||||
|
||||
// 发送数据到API
|
||||
const response = await fetch('/api/evaluation-points', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(evaluationPointData)
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`API响应错误: ${response.status}`);
|
||||
}
|
||||
|
||||
const result = await response.json();
|
||||
console.log('保存成功:', result);
|
||||
|
||||
// 保存成功后跳转到评查点列表页面
|
||||
navigate('/rules');
|
||||
} catch (error) {
|
||||
console.error('保存失败:', error);
|
||||
alert(`保存失败: ${error instanceof Error ? error.message : '未知错误'}`);
|
||||
}
|
||||
};
|
||||
|
||||
const handleSaveDraft = () => {
|
||||
// 实现保存草稿逻辑
|
||||
console.log('保存为草稿');
|
||||
// 保存为草稿
|
||||
const handleSaveDraft = async () => {
|
||||
try {
|
||||
// 构建带草稿标记的评查点数据
|
||||
const draftData = {
|
||||
...formData,
|
||||
is_enabled: false, // 草稿默认不启用
|
||||
is_draft: true // 标记为草稿
|
||||
};
|
||||
|
||||
// 发送数据到API
|
||||
const response = await fetch('/api/evaluation-points/draft', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(draftData)
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`API响应错误: ${response.status}`);
|
||||
}
|
||||
|
||||
const result = await response.json();
|
||||
console.log('保存草稿成功:', result);
|
||||
|
||||
// 保存成功后跳转到评查点列表页面
|
||||
navigate('/rules');
|
||||
} catch (error) {
|
||||
console.error('保存草稿失败:', error);
|
||||
alert(`保存草稿失败: ${error instanceof Error ? error.message : '未知错误'}`);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -42,11 +198,21 @@ export default function RuleNew() {
|
||||
onSave={handleSave}
|
||||
/>
|
||||
|
||||
<BasicInfo />
|
||||
<div className="mb-8">
|
||||
<BasicInfo onChange={handleBasicInfoChange} />
|
||||
</div>
|
||||
|
||||
<ExtractionSettings />
|
||||
<div className="mb-8">
|
||||
<RuleContext.Provider value={{ extractionFields, updateFields: updateExtractionFields }}>
|
||||
<ExtractionSettings onChange={handleExtractionSettingsChange} />
|
||||
</RuleContext.Provider>
|
||||
</div>
|
||||
|
||||
<ReviewSettings />
|
||||
<div className="mb-8">
|
||||
<RuleContext.Provider value={{ extractionFields, updateFields: updateExtractionFields }}>
|
||||
<ReviewSettings onChange={handleReviewSettingsChange} />
|
||||
</RuleContext.Provider>
|
||||
</div>
|
||||
|
||||
<ActionButtons
|
||||
onSave={handleSave}
|
||||
|
||||
Reference in New Issue
Block a user