备份:大改造前的完整版本 - 修复合同细节/付款节点/文件上传/施工管理/项目保存等BUG

This commit is contained in:
root
2026-05-15 12:02:24 +08:00
parent 1cad1e438d
commit fad28741bd
6157 changed files with 5147 additions and 877912 deletions
@@ -1,7 +1,8 @@
import React, { useState, useEffect } from 'react';
import React, { useState, useEffect, useCallback } from 'react';
import { Modal, Form, Input, DatePicker, InputNumber, Select, Space, message } from 'antd';
import dayjs from 'dayjs';
import axios from 'axios';
import apiClient from '../../utils/request';
import useFormDraft from '../../hooks/useFormDraft';
interface ContractCreateModalProps {
visible: boolean;
@@ -20,6 +21,16 @@ const ContractCreateModal: React.FC<ContractCreateModalProps> = ({
}) => {
const [form] = Form.useForm();
const [contractAmount, setContractAmount] = useState(0);
// 表单草稿保护
const { save: saveDraft, restore: restoreDraft, clear: clearDraft, hasDraft } = useFormDraft({
form,
storageKey: 'contract_create',
})
const handleFormChange = useCallback(() => {
saveDraft()
}, [saveDraft])
// 生成默认的合同编号(包含时间戳确保唯一性)
const today = dayjs();
@@ -66,19 +77,18 @@ const ContractCreateModal: React.FC<ContractCreateModalProps> = ({
unit_price_items: []
};
console.log('提交的合同信息:', submitData);
try {
const res = await axios.put(`/api/budget-projects/${projectId}/sign`, submitData, {
const res = await apiClient.put(`/budget-projects/${projectId}/sign`, submitData, {
headers: {
'x-user-role': 'admin' // 签约操作需要管理员权限
}
});
console.log('API响应:', res);
if (res.data.success) {
message.success('签约成功,项目已自动创建');
clearDraft()
onSuccess();
onCancel();
} else {
@@ -97,15 +107,32 @@ const ContractCreateModal: React.FC<ContractCreateModalProps> = ({
title="快速签约"
open={visible}
onOk={() => form.submit()}
onCancel={onCancel}
onCancel={() => {
if (form.isFieldsTouched()) {
Modal.confirm({
title: '确认关闭',
content: '表单数据尚未保存,关闭后可通过草稿恢复。确定关闭吗?',
okText: '关闭',
cancelText: '继续编辑',
onOk: () => {
saveDraft()
onCancel()
},
})
} else {
onCancel()
}
}}
width={600}
okText="确认签约"
cancelText="取消"
maskClosable={false}
>
<Form
form={form}
layout="vertical"
onFinish={handleSubmit}
onValuesChange={handleFormChange}
>
{/* 基本信息 */}
<Form.Item