import { RESPONSE_CODE } from '@/constants/enum'; import { postAdminClientAddOrModifyClientComunicationInfo, postAdminClientQueryClientPage, postOrderErpOrderStagesUpload, postServiceConstClientWay, } from '@/services'; import { enumToSelect } from '@/utils'; import { ModalForm, ProFormDateTimePicker, ProFormSelect, ProFormText, ProFormTextArea, ProFormUploadDragger, } from '@ant-design/pro-components'; import { Button, Form, message } from 'antd'; import { RcFile } from 'antd/es/upload'; export default ({ data, type, reloadTable }) => { const [form] = Form.useForm(); const onfinish = async (values) => { const resSearchId = await postAdminClientQueryClientPage({ data: { groupFilter: 'all', }, }); const matchingItem = resSearchId.data.data.find( (item) => item.id === values.name, ); let matchedId; if (matchingItem) { matchedId = matchingItem.id; // 匹配成功,取出 id values.name = matchingItem.name; } else { matchedId = null; // 如果没有匹配项,可以设置为 null 或其他值 } const res = await postAdminClientAddOrModifyClientComunicationInfo({ data: { ...values, clientId: matchedId, }, }); if (res.result === RESPONSE_CODE.SUCCESS) { message.success('新增成功'); reloadTable(); return true; } // 不返回不会关闭弹框 }; const editOnfinish = async (values) => { // setEditClientId(data.clientId); values.clientId = data.clientId; console.log(values, '5656editClientId'); // const resSearchId = await postAdminClientQueryClientPage({ // data: { // groupFilter: 'all', // }, // }); // const matchingItem = resSearchId.data.data.find( // (item) => item.id === values.name, // ); const res = await postAdminClientAddOrModifyClientComunicationInfo({ data: { ...values, }, }); if (res.result === RESPONSE_CODE.SUCCESS) { message.success('新增成功'); reloadTable(); return true; } // 不返回不会关闭弹框 }; const optType = { add: { readOnly: false, title: '新增跟进记录', button: ( <Button size={'middle'} type="primary"> 新增 </Button> ), onFinish: onfinish, }, modify: { readOnly: false, title: '修改跟进记录', button: ( <Button size={'middle'} type="primary"> 编辑 </Button> ), onFinish: editOnfinish, }, detail: { readOnly: true, title: '查看跟进记录', button: ( <Button size={'middle'} type="primary" color="red"> 查看 </Button> ), onFinish: () => {}, }, }; return ( <ModalForm title={optType[type].title} resize={{ onResize() { console.log('resize!'); }, maxWidth: window.innerWidth * 0.8, minWidth: 400, }} form={form} trigger={optType[type].button} autoFocusFirstInput drawerProps={{ destroyOnClose: true, }} submitTimeout={2000} onFinish={optType[type].onFinish} > <ProFormSelect name="name" readonly={optType[type].readOnly} fieldProps={{ labelInValue: false, disabled: type === 'modify', }} initialValue={data ? data?.clientName + '' : null} label="客户" width="sm" request={async () => { const res = await postAdminClientQueryClientPage({ data: { groupFilter: 'all', }, }); console.log(data, '5656data?.nameedit'); // const namesArray = res.data.data.map((item) => item.name); // const formattedObject = res.data.data.reduce((acc, name) => { // acc[name] = name; // 将名称作为键和值 // return acc; // }, {}); // console.log(namesArray, '5656namesArray'); // const formattedObject = res.data.data.reduce((acc, item) => { // acc[item.name] = item.name; // 使用 name 作为键,id 作为值 // return acc; // }, {}); // return enumToSelect(formattedObject); const options = res.data.data.reduce((acc, item) => { acc.push({ label: item.name, value: item.id }); // 使用 name 作为 label,id 作为 value return acc; }, []); return options; }} rules={[ { required: true, message: '请选择客户', }, ]} ></ProFormSelect> <ProFormDateTimePicker name="datetime" label="日期" initialValue={data ? data?.datetime + '' : null} placeholder="请选择跟进时间" width="sm" rules={[ { required: true, message: '请选择日期', }, ]} /> <ProFormSelect name="way" width="sm" readonly={optType[type].readOnly} fieldProps={{ labelInValue: false, }} initialValue={data?.way ? data?.way + '' : null} label="类型" request={async () => { const res = await postServiceConstClientWay(); return enumToSelect(res.data); }} rules={[ { required: true, message: '请选择跟进类型', }, ]} ></ProFormSelect> <ProFormTextArea name="content" label="详情" placeholder="请输入详情" initialValue={data?.content} readonly={optType[type].readOnly} rules={[ { required: true, message: '请输入详情', }, ]} ></ProFormTextArea> <ProFormUploadDragger label="附件" name="attachment" action="upload.do" hidden={optType[type].readOnly} onChange={(info) => { const uploadFile = async ({ fileList: newFileList }) => { if (newFileList.length > 0) { const formData = new FormData(); formData.append('file', newFileList[0].originFileObj as RcFile); const res = await postOrderErpOrderStagesUpload({ data: formData, headers: { 'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', }, }); const url = res.data; console.log('attachments' + JSON.stringify(url)); form.setFieldValue('attachments', url); } else { form.setFieldValue('attachments', null); } }; uploadFile(info); }} max={1} /> <a hidden={!optType[type].readOnly} href={data?.attachments} download> 下载附件 </a> <ProFormText initialValue={data?.attachments} name="attachments" hidden ></ProFormText> <ProFormText initialValue={data?.id} name="id" hidden></ProFormText> </ModalForm> ); };