import { useParams, useNavigate } from "react-router-dom"; import { useEffect, useState ,useRef } from "react"; import { observer } from "mobx-react"; import { toJS, runInAction } from "mobx"; import { Row, Col, Space, Button, Typography, Card, Form, Upload, Input, Divider, DatePicker, Select, App, Modal } from "antd"; import { useStore } from "@/stores/StoreContext.js"; import { PlusOutlined } from "@ant-design/icons"; import { isNotEmpty } from "@/utils/commons"; import * as config from "@/config"; import dayjs from "dayjs"; const { Title } = Typography; const { TextArea } = Input; function Detail() { const navigate = useNavigate(); const { GMDSN, GSN } = useParams(); const { invoiceStore, authStore } = useStore(); const { invoicekImages, invoiceGroupInfo, invoiceProductList, invoiceCurrencyList, invoiceZDDetail } = invoiceStore; const [form] = Form.useForm(); const [dataLoading, setDataLoading] = useState(false); const { formCurrency, onCurrencyChange } = useState(); const { notification } = App.useApp(); const [isModalOpen, setIsModalOpen] = useState(false); const [confirmLoading, setConfirmLoading] = useState(false); const [invoicePicList,setInvoicePicList] = useState([]); useEffect(() => { console.info("Detail.useEffect: " + GMDSN + "/" + GSN); defaultShow(); }, [GMDSN, GSN]); function defaultShow(){ setDataLoading(true); invoiceStore.fetchInvoiceDetail(GMDSN, GSN) .then((json) => { let ZDDetail = json.ZDDetail; let arrLen = ZDDetail.length; const formData = ZDDetail.map((data,index)=>{ if (data.GMD_Dealed == false && arrLen == (index+1)){ //只有最后一条账单未审核通过才显示 runInAction(() => { invoiceStore.invoiceFormData = {'info_money':data.GMD_Cost,'info_Currency':data.GMD_Currency,'info_date':isNotEmpty(data.GMD_PayDate)?dayjs(data.GMD_PayDate):'','info_gmdsn':data.GMD_SN}; }); return {'info_money':data.GMD_Cost,'info_Currency':data.GMD_Currency,'info_date':isNotEmpty(data.GMD_PayDate)?dayjs(data.GMD_PayDate):'','info_gmdsn':data.GMD_SN}; } }); if (form){ form.setFieldsValue(formData[arrLen-1]); //{'info_money':'111','info_Currency':'THB','info_date':''} } //图片列表 let arrPicList = ZDDetail.map((data,index)=>{ const GMD_Pic = data.GMD_Pic; let picList = []; if (isNotEmpty(GMD_Pic)){ let js_Pic = JSON.parse(GMD_Pic) picList = js_Pic.map((picData,pic_Index)=>{ return { uid: -pic_Index, //用负数,防止添加删除的时候错误 name: '', status: "done", url: picData.url, } }); } if (data.GMD_Dealed == false && arrLen == (index+1)){ runInAction(() => { invoiceStore.invoicekImages = picList; }); } return picList; }) setInvoicePicList(arrPicList); }) .catch(ex => { notification.error({ message: `Notification`, description: ex.message, placement: 'top', duration: 4, }); }) .finally(() => { setDataLoading(false); }); } const fileList = toJS(invoicekImages); //图片列表 let arrimg = []; if (isNotEmpty(fileList)) { arrimg = fileList.map((data, index) => { return { url: data.url } }); } const onFinish = values => { const fieldVaule = { ...values, 'info_date': isNotEmpty(values['info_date']) ? values['info_date'].format('YYYY-MM-DD') : null, 'info_images': JSON.stringify(arrimg), } console.log("Success:", fieldVaule); //入库 if (fieldVaule) { invoiceStore.postEditInvoiceDetail(fieldVaule.info_gmdsn, fieldVaule.info_Currency, fieldVaule.info_money, fieldVaule.info_date, fieldVaule.info_images, "").then((data) => { console.log(data); runInAction(() => { let param = { 'info_money': fieldVaule.info_money, 'info_Currency': fieldVaule.info_Currency, 'info_date': fieldVaule.info_date }; invoiceStore.invoiceFormData = param; }) if (data.errcode == 0 ){ notification.success({ message: `Notification`, description: "Success Submit!", placement: "top", duration: 4, }); } }); } }; const onAddFinish = values => { const fieldVaule = { ...values, 'info_date': isNotEmpty(values['info_date']) ? values['info_date'].format('YYYY-MM-DD') : null, 'info_images': JSON.stringify(arrimg), } console.log("Success:", fieldVaule); //入库 if (fieldVaule) { invoiceStore.postAddInvoice(GSN, fieldVaule.info_Currency, fieldVaule.info_money, fieldVaule.info_date, fieldVaule.info_images, "").then((data) => { console.log("return:",data); runInAction(() => { let param = { 'info_money': fieldVaule.info_money, 'info_Currency': fieldVaule.info_Currency, 'info_date': fieldVaule.info_date }; invoiceStore.invoiceFormData = param; }) if (data.errcode == 0 ){ // notification.success({ // message: `Notification`, // description: "Success Submit!", // placement: "top", // duration: 4, // }); setIsModalOpen(false); } }); } }; const handleChange = info => { console.log(info); let newFileList = [...info.fileList]; newFileList = newFileList.map(file => { if (file.response && file.response.result) { file.url = file.response.result.file_url; } return file; }); runInAction(() => { invoiceStore.invoicekImages = newFileList; }); }; const handRemove = info => { console.log(info); invoiceStore.removeFeedbackImages(info.url); return true; }; //币种 function bindCurrency() { let arr = []; arr = invoiceCurrencyList.map((data, index) => { return { value: data.CRI_Code, label: data.CRI_Name }; }); return arr; } function addInvoice(){ invoiceStore.postAddInvoice(GSN, "", 0, "", "[]", "").then((data) => { runInAction(() => { invoiceStore.invoiceFormData = {'info_money':0,'info_Currency':'','info_date':'','info_gmdsn':GMDSN}; }); }).finally(()=>{ defaultShow(); }) } function addButton(check) { if (check) { return ( ) } } //循环生成多次报账信息 function bindSubmitForm() { let submitForm = invoiceZDDetail.map((data, index) => { if (data.GMD_Dealed) { //已审核的直接显示信息即可,无需表单 return ( 第 {index + 1} 次报账
Click to Upload
提交信息 金额币种: {addButton(index + 1 == invoiceZDDetail.length)}
) } else { // 一个团只能有一个未审核的账单记录 return (
上传照片
Click to Upload
提交信息
) } }) return submitForm; } //#region Modal const showConfirmModal = (confirm) => { setIsModalOpen(true); }; const fromRef = useRef() const handleOk = () => { setConfirmLoading(true); try{ fromRef.current?.submit(); //onAddFinish; //setIsModalOpen(false); } finally{ setConfirmLoading(false); navigate("/invoice/detail/"+GMDSN+"/"+GSN) } }; const handleCancel = () => { setIsModalOpen(false); }; //#endregion return ( <> {/* Add New Invoice
上传照片
Click to Upload
提交信息
*/} Reference Number: {invoiceGroupInfo.VGroupInfo} 基础信息

CHINA HIGHLIGHTS

{invoiceGroupInfo.WLFirstName} {invoiceGroupInfo.WLLastName}    Email: {invoiceGroupInfo.WLEmail}

{invoiceGroupInfo.County}

报账信息 {bindSubmitForm()}
); } export default observer(Detail);