import { Form, Modal, Row, Col, Input, DatePicker, Icon, Button, Divider, Steps, Select, TreeSelect, InputNumber, Upload, Space, Radio, } from 'antd'; import ModuleTitle from '../../../components/ModuleTitle/moduleTitle'; import { useEffect, useMemo, useState } from 'react'; import { queryCompany, queryDepList, querySupplierList, } from '@/services/contract'; import { useModel, useRequest } from '@umijs/max'; import { CloudUploadOutlined } from '@ant-design/icons'; import styles from '../index.less'; import dayjs from 'dayjs'; import InputSelect from '../../../components/InputSelect'; export const Type = { add: 0, //新增 detail: 1, //详情 cancel: 2, //作废 check: 3, //审核 }; export const StatusText = [ '', '待审核', '审核拒绝', '已存档', '作废待审核', '作废拒绝', '已作废', ]; export const Status = { None: 0, Checking: 1, CheckReject: 2, CheckSuccess: 3, CalChecking: 4, CalCheckReject: 5, CalCheckSuccess: 6, }; const ContractModal = (props) => { const [form] = Form.useForm(); const { initialState: { user }, } = useModel('@@initialState'); const { userList, run: userListRun } = useModel('userList'); const { depList, run: depListRun } = useModel('depList'); const FORMAT = 'YYYY-MM-DD'; const { detail: data, type, visible, projectList = [], handleOk, handleCancel, parent_id, } = props; const title = type == Type.add ? '新增' : type == Type.detail ? '详情' : '作废'; //所属公司为总部时才能选择部门,为子公司时,部门不能操作 所属部门为子公司的需要填经办人 const company = Form.useWatch('company_id', form); const [depDisable, setDepDisable] = useState(false); const [dealDisable, setDealDisable] = useState(false); //项目名称选择后,自动填入对应的项目编号 const project_name = Form.useWatch('project_name', form); //是否补充协议,是的话需要填合同编号 const is_supplement = Form.useWatch('is_supplement', form); const [isPass, setIsPass] = useState(1); const [fileList, setFileList] = useState([]); const [fileExtendList, setFileExtendList] = useState([]); const { data: companyData, run: runCompany } = useRequest(queryCompany); console.log(user); useEffect(() => { userListRun(); depListRun(); runCompany(); }, []); useEffect(() => { form.resetFields(); }, [data]); //供应商列表 const { data: supplierList = [], loading } = useRequest(querySupplierList, { defaultParams: [ { project_id: 1, is_super: user?.IsSuper, created_by: user?.CName, page_size: 99999, }, ], formatResult: (res) => { return res?.data?.list ? res?.data.list.map((item) => { return { ...item, Name: item.name }; }) : []; }, }); const isSuper = useMemo(() => { if (user?.Permission['menu-001-audit']) return true; return false; }, [user]); useEffect(() => { const item = companyData?.find((item) => item.ID == company); if (item?.Flag == 1) { //公司为本部 setDepDisable(false); form.setFieldsValue({ dep_id: '', archives_dep: '', created_dep: '', deal_by: user?.CName, }); // setDealDisable(false); } else { setDepDisable(true); form.setFieldsValue({ dep_id: '综合管理部', archives_dep: '综合管理部', created_dep: '综合管理部', deal_by: '', }); // setDealDisable(true); // form.setFieldsValue({ deal_by: user?.CName }); } }, [company]); useEffect(() => { const project_code = projectList?.find( (item) => item.project_name == project_name, )?.project_full_code; if (project_code) { form.setFieldsValue({ project_code }); } else { form.setFieldsValue({ project_code: '' }); } }, [project_name]); // useEffect(() => { // console.log('==================', is_supplement); // }, [is_supplement]); const supplyList = useMemo(() => { return companyData ? [...companyData, ...supplierList] : supplierList; }, [companyData, supplierList]); const disableds = useMemo(() => { if (!visible) { setFileList([]); setFileExtendList([]); setIsPass(1); setDepDisable(false); setDealDisable(false); } if (type == Type.add) { return { contract: false, check: true }; } else if (type == Type.detail) { return { contract: true, check: true }; } else if (type == Type.cancel) { return { contract: true, check: true }; } return { contract: true, check: false }; }, [type, visible]); const UploadProps = { action: `/api/contract/v1/attach`, headers: { 'JWT-TOKEN': localStorage.getItem('JWT-TOKEN'), }, onChange({ file, fileList }) { if (file.status !== 'uploading') { console.log(file, fileList); const list = fileList.map((item) => item.response?.data?.attach); form.setFieldsValue({ attach: list }); setFileList(fileList.map((item) => item.response?.data?.attach)); } }, }; const UploadPropsExtend = { action: `/api/contract/v1/attach`, headers: { 'JWT-TOKEN': localStorage.getItem('JWT-TOKEN'), }, onChange({ file, fileList }) { if (file.status !== 'uploading') { console.log(file, fileList); setFileExtendList(fileList.map((item) => item.response?.data?.attach)); } }, }; const handleSubmit = () => { form.validateFields().then((values) => { if (type == Type.add) { values.effect_on = dayjs(values.effect_on).format(FORMAT); values.created_on = values.created_on || dayjs().format(FORMAT); if (parent_id) values.parent_id = parent_id; if (values.amount || values.amount == 0) values.amount = values.amount + ''; if (values.attach) values.attach = JSON.stringify(values.attach); if (fileExtendList.length > 0) values.attach_extend = JSON.stringify(fileList); // if (values.party_c && values.party_c.length > 0) values.party_c = values.party_c?.join(','); const companyItem = companyData?.find( (item) => item.ID == values.company_id, ); //所属公司为本部 if (companyItem.Flag == 1) { const item = getDepItemById(values.dep_id); if (item) { values.dep_name = item.Name; values.dep_code = item.Code; } values.company_name = companyItem.Name; } else { //为分子公司 values.company_name = companyItem.Name; values.company_code = companyItem.Code; values.dep_name = '综合管理部'; values.dep_code = '综合管理部'; values.dep_id = 0; } values.created_by = user?.ID; handleOk(values); } else if (type == Type.cancel) { let result = { id: data?.id, cancel_desc: values.cancel_desc, }; handleOk(result); } else if (data?.status == Status.Checking) { let result = { id: data?.id, check_by: user?.CName, check_result: values.check_result, is_pass: values.is_pass, check_desc: values?.check_desc, }; handleOk(result); } else if (data?.status == Status.CalChecking) { let result = { id: data?.id, cancel_check_by: user?.CName, cancel_check_result: values.cancel_check_result, is_pass: values.is_pass, // check_desc: values?.check_desc, }; handleOk(result); } }); }; const getDepItemById = (id) => { const fun = (list) => { for (let i = 0; i < list.length; i++) { let item = list[i]; if (item.ID == id) { return item; } else if (item.children?.length > 0) { let res = fun(item.children); if (res) return res; } } }; return fun(depList); }; const projectNameList = useMemo(() => { let arr = projectList?.map((item) => { return { value: item.project_name, label: item.project_name, }; }) || []; return [ { label: '日常项目', value: '日常项目', }, ...arr, ]; }, [projectList]); return (
item.Code == 'GT')?.children} /> {/* {type == Type.add ? ( ) : ( )} {/* { return { key: item.id, value: item.project_name, }; })} /> */} {type == Type.add ? ( ) : (
    {data?.attach && JSON.parse(data?.attach)?.map((item, idx) => (
  • {item.name}
  • ))}
)}
{!isPass && ( )} )} {(type == Type.cancel || data?.status >= Status.CalChecking) && ( <> )} {type == Type.cancel && ( 确认作废该合同,作废提交后无法撤回 )} {data?.status >= Status.CalChecking && ( <>
发起人:{data?.created_name}
发起时间:{data?.created_on}
), }, { title: '审核', description: ( <>
审核人:{data?.cancel_check_by}
审核时间:{data?.cancel_check_on}
), }, { title: StatusText[data?.status], }, ]} />
)} {isSuper && data.status == Status.CalChecking && ( <> {!isPass && ( )} )}
); }; export default ContractModal;