import React, { useState, useEffect } from 'react'; import { Form, Select, Modal, Input, TreeSelect, Button } from 'antd'; import moment from 'moment'; import provinces from './provinces'; import { queryApproval } from '@/services/approval'; import FirmModal from './ManufacturerModal'; import TableRender from './TableRender'; const { Option } = Select; const { TreeNode } = TreeSelect; // 新建 function AddModal(props) { const { total, dispatch, visible, onClose, onOk, data, currentUser, depUserTree, flowList = [], industryList = [], typeList = [], disabled, loading, supplierList = [], onAddFirm, } = props; const [form] = Form.useForm(); const [codes, setCodes] = useState({ type: '', industry: '', location: '', name: '', version: '', }); const [type, setType] = useState({}); const [addFirmVisible, setAddFirmVisible] = useState(false); const handleOk = () => { form.validateFields().then(fieldsValue => { let values = { ...fieldsValue, id: data.id }; values.project_name = fieldsValue.project_name; values.flow_id = Number(fieldsValue.flow_id); values.type_id = Number(fieldsValue.type_id); // 获得flow下第一个node的id values.node_id = flowList.find(item => item.id == values.flow_id).Nodes[0].id; //项目分类为不为研发时 if (fieldsValue.type_id != 7) { values.industry_id = Number(fieldsValue.industry_id); let [location, location_code] = fieldsValue.location.split('##'); values.location = location; values.location_code = location_code; values.project_full_code = `${codes.type}${codes.industry}${codes.location}${codes.name}${codes.version}`; } if (fieldsValue.author) { values.author = Number(fieldsValue.author.split('||')[0]); values.author_dep_id = Number(fieldsValue.author.split('||')[1]); } else { values.author = null; } const supplierName = supplierList.find(item => item.id == fieldsValue.supplier_id)?.name; if (supplierName) values.supplier_name = supplierName; onOk(values); }); }; const renderTreeNodes = data => { return data.map(item => { let title = item.name; let code = item.code || ''; if (code.length == 4) { code = code.substr(1); } if (code) { title += `(${code})`; } let key = `${item.name}##${code}`; return ( {item.children && renderTreeNodes(item.children || [])} ); }); }; const changeType = id => { const item = typeList.find(item => item.id == id); setCodes({ ...codes, type: item.code, }); setType(item); form.setFieldsValue({ flow_id: id == 7 ? '4' : '1' }); }; const changeIndustry = id => { const item = industryList.find(item => item.id == id); setCodes({ ...codes, industry: item.code, }); }; const changeVersion = index => { setCodes({ ...codes, version: index, }); }; const changeLocation = value => { const [location, code] = value.split('##'); setCodes({ ...codes, location: code, }); }; const onBlurName = e => { let value = e.target.value.toUpperCase(); while (value.length < 3) { value = value + 'V'; } form.setFieldsValue({ name: value, }); setCodes({ ...codes, name: value, }); }; const renderDetail = () => { return ( <>
{renderTreeNodes(provinces)} { if (value && value.match(/[^A-Za-z]/g)) return Promise.reject(new Error('项目简称只能是英文字符')); else return Promise.resolve(); }, }, ]} > {codes.type || '***'}-{codes.industry || '***'}-{codes.location || '***'}- {codes.name || '***'}-{codes.version || '*'} ); }; useEffect(() => { if (data.id) { const type = typeList.find(item => item.id == data.type_id); const industry = industryList.find(item => item.id == data.industry_id); setCodes({ type: type?.code, industry: industry?.code, location: data.location_code, name: data.name, version: data.version, }); setType(type); } else { setCodes({ type: '', industry: '', location: '', name: '', version: '', }); setType({}); } }, [data, visible]); useEffect(() => { form.resetFields(); }, [visible]); return (
{currentUser.IsSuper && ( { return option.props.title === input; }} treeData={depUserTree} /> )} {type?.id != 7 && renderDetail()}
); } export default AddModal;