import Authorization from '@/components/Authorization' import DatePicker from '@/components/DatePicker' import MoneyInput from '@/components/MoneyInput' import { contractPaidStore, contractReturnStore, tenderStore } from '@/store/mobx' import { iModalCommonProps } from '@/types/contract' import { apiContractSection } from '@/utils/common/api' import { contractTreeBaseId } from '@/utils/common/constStatus' import consts from '@/utils/consts' import { dayjsFormat, handleAutoCode } from '@/utils/util' import { Button, Form, Input, Modal, Select, Tree, TreeSelect } from 'antd' import locale from 'antd/es/date-picker/locale/zh_CN' import dayjs from 'dayjs' import React, { ChangeEvent, useEffect, useState } from 'react' import { apiGetReturnWay } from '../Tabs/Receivable/api' import styles from './index.module.scss' interface ContractSection { id: string; treeType: number; parentId: string; name: string; depth: number; serial: number; attribution: string; code: string; projectId: string; bidsectionId: string; contractId: string; contractName: string; contractCode: string; contractPrice: string; contractReturned: string; contractsPaid: string; contractStatus: number; contractLocking: number; createTime: string; children?: any; templateNumber: number; operation: string; elderBrother: boolean; isEnd: boolean; key: string; title: string; } const ContractModal: React.FC = ({ modalObj: { type, visible, confirmLoading, contractType }, onConfirm, onCancel, reload, row }) => { const { Option } = Select const [ contractSection, setContractSection ] = useState([]) const [ form ] = Form.useForm() const [ options, setOptions ] = useState([]) const modalObj = { create: { title: '新建合同', cancelText: '取消', okText: '确认添加' }, update: { title: '编辑合同', cancelText: '取消', okText: '确认' }, close: { title: '关闭合同', cancelText: '取消', okText: '确认关闭' }, del: { title: '删除合同', cancelText: '取消', okText: '确认删除' }, unlock: { title: '解锁合同', cancelText: '取消', okText: '确认解锁' }, return: { title: contractType === 'income' ? '添加回款' : '添加支出', cancelText: '关闭', okText: '确认' } } const initTreeSection = async () => { const { code = -1, sectionTree: data = {} } = await apiContractSection(tenderStore.bid, contractType === 'income' ? consts.CONTRACT_TREE.RETURN : consts.CONTRACT_TREE.PAID) if (code === consts.RET_CODE.SUCCESS) { setContractSection(data.children) } } useEffect(() => { if (visible) { form.setFieldsValue({ treeId: row.id, bidsectionId: tenderStore.bid }) if (type === 'create') { initTreeSection() form.setFieldsValue({ treeId: row.contractId === contractTreeBaseId ? row.id : row.parentId }) } if (type === 'update') { const { content = '', name = '', price = '', partyA = '', partyB = '', partyASigner = '', partyBSigner = '', signerTime = '', remarks = '' } = contractReturnStore.contract form.setFieldsValue({ content, name, price, partyA, partyB, partyASigner, partyBSigner, signerTime: signerTime ? dayjs(signerTime) : '', remarks }) } else if (type === 'return') { apiGetReturnWay().then(({ code = -1, data = [] }) => { if (code === consts.RET_CODE.SUCCESS) { const options = data.map((item: string) => ( )) setOptions(options) } }) form.setFieldsValue({ contractsId: contractType === 'income' ? contractReturnStore.contract.id : contractPaidStore.contract.id }) } else { form.setFieldsValue({ id: contractType === 'income' ? contractReturnStore.contract.id : contractPaidStore.contract.id }) } } }, [ visible ]) const autoCode = async () => { const ruleArr = await handleAutoCode(tenderStore.tender.bidsectionId, contractType === 'income' ? 'contractReturnRule' : 'contractPaidRule') form.setFieldsValue({ code: ruleArr.join('-') }) } // 处理添加回款的金额不应该超出最大值 const handleMaxPrice = () => { const maxPrice = parseFloat(contractType === 'income' ? contractReturnStore.contract.price : contractPaidStore.contract.price) - parseFloat(contractType === 'income' ? contractReturnStore.contract.returned : contractPaidStore.contract.paid) return maxPrice } return ( { form.resetFields() onCancel() }} footer={
{type === 'update' ? ( ) : null}
}>
{/* */} {type === 'create' ? ( <> autoCode()}> 自动编号 } /> {/* */} {/* 元} /> */} form.setFieldsValue({ price: val })}/> ) : ( '' )} {type === 'update' ? ( <> form.setFieldsValue({ price: val })}/> ) : null } {type === 'close' ? ( <> 关闭后,合同将锁定,无法进行编辑、上传文件等操作。 ) : ( '' )} {type === 'unlock' ? ( <> 解锁后,合同将锁定,无法进行编辑、上传文件等操作。 ) : ( '' )} {type === 'del' ? ( <>

删除后,数据无法恢复,请谨慎操作。

请在下方文本框输入文本「确认删除本合同」,以此确认删除操作。

({ validator(rule, value) { if (!value || value !== '确认删除本合同') { return Promise.reject('请按照提示信息进行删除操作!') } return Promise.resolve() } }) ]}> ) : ( '' )} {type === 'return' ? ( <> {/* */} form.setFieldsValue({ price: val })}/> ) : ( '' )}
) } export default ContractModal