备份:财务改造前的版本 - 模板编辑功能和管理员入口

This commit is contained in:
a273825743
2026-05-16 02:40:22 +08:00
parent cc5d96e226
commit a4048776ba
3 changed files with 29 additions and 8 deletions
-3
View File
@@ -57,9 +57,6 @@ router.put('/:id', async (req, res) => {
if (existing.rows.length === 0) {
return res.status(404).json({ success: false, message: '模板不存在' });
}
if (existing.rows[0].is_system) {
return res.status(403).json({ success: false, message: '系统预设模板不可修改' });
}
const { name, description, phases } = req.body;
const updates = [];
const values = [];
@@ -252,6 +252,13 @@ const MainLayout: React.FC = () => {
icon: <SettingOutlined />,
label: '系统设置'
},
...(user?.role === 'admin' ? [{
type: 'divider' as const
}, {
key: '/admin',
icon: <SettingOutlined />,
label: '后台管理'
}] : []),
{
type: 'divider' as const
},
+22 -5
View File
@@ -37,6 +37,7 @@ const ProcessTemplates: React.FC = () => {
const [phaseDrawerVisible, setPhaseDrawerVisible] = useState(false);
const [editingPhaseIndex, setEditingPhaseIndex] = useState<number>(-1);
const [phaseForm] = Form.useForm();
const [editingTemplateId, setEditingTemplateId] = useState<number | null>(null);
useEffect(() => { fetchTemplates(); }, []);
@@ -53,6 +54,15 @@ const ProcessTemplates: React.FC = () => {
form.resetFields();
setPhases([]);
setCurrentStep(0);
setEditingTemplateId(null);
setCreateModalVisible(true);
};
const handleEdit = (t: Template) => {
form.setFieldsValue({ name: t.name, description: t.description });
setPhases(t.phases || []);
setCurrentStep(1);
setEditingTemplateId(t.id);
setCreateModalVisible(true);
};
@@ -83,11 +93,17 @@ const ProcessTemplates: React.FC = () => {
const description = form.getFieldValue('description');
if (!name) { message.warning('请输入模板名称'); setCurrentStep(0); return; }
if (phases.length === 0) { message.warning('请至少添加一个阶段'); setCurrentStep(1); return; }
await apiClient.post('/process-templates', { name, description, phases });
message.success('模板创建成功');
if (editingTemplateId) {
await apiClient.put(`/process-templates/${editingTemplateId}`, { name, description, phases });
message.success('模板更新成功');
} else {
await apiClient.post('/process-templates', { name, description, phases });
message.success('模板创建成功');
}
setCreateModalVisible(false);
setEditingTemplateId(null);
fetchTemplates();
} catch (e) { message.error('创建失败'); }
} catch (e) { message.error('保存失败'); }
};
const addPhase = () => {
@@ -162,6 +178,7 @@ const ProcessTemplates: React.FC = () => {
{ title: '操作', key: 'action', render: (_: unknown, r: Template) => (
<Space>
<Button size="small" icon={<EyeOutlined />} onClick={() => handleView(r)}></Button>
<Button size="small" type="primary" icon={<EditOutlined />} onClick={() => handleEdit(r)}></Button>
<Button size="small" icon={<CopyOutlined />} onClick={() => handleCopy(r)}></Button>
{!r.is_system && <Popconfirm title="确定删除?" onConfirm={() => handleDelete(r.id)}><Button size="small" danger icon={<DeleteOutlined />}></Button></Popconfirm>}
</Space>
@@ -174,14 +191,14 @@ const ProcessTemplates: React.FC = () => {
<Table columns={columns} dataSource={templates} rowKey="id" loading={loading} pagination={false} />
</Card>
<Modal title="新建工程模板" open={createModalVisible} onCancel={() => setCreateModalVisible(false)} width={800} footer={[
<Modal title={editingTemplateId ? "编辑工程模板" : "新建工程模板"} open={createModalVisible} onCancel={() => setCreateModalVisible(false)} width={800} footer={[
<Button key="cancel" onClick={() => setCreateModalVisible(false)}></Button>,
currentStep > 0 && <Button key="prev" onClick={() => setCurrentStep(currentStep - 1)}></Button>,
currentStep < 2 && <Button key="next" type="primary" onClick={() => {
if (currentStep === 0 && !form.getFieldValue('name')) { message.warning('请输入模板名称'); return; }
setCurrentStep(currentStep + 1);
}}></Button>,
currentStep === 2 && <Button key="save" type="primary" onClick={handleSaveTemplate}></Button>,
currentStep === 2 && <Button key="save" type="primary" onClick={handleSaveTemplate}>{editingTemplateId ? '保存修改' : '确认创建'}</Button>,
]}>
<Steps current={currentStep} size="small" style={{ marginBottom: 24 }}>
<Steps.Step title="基本信息" />