import { makeAutoObservable, runInAction } from "mobx"; import { fetchJSON, postForm } from "@/utils/request"; import { prepareUrl, isNotEmpty } from "@/utils/commons"; import { HT_HOST } from "@/config"; import { json } from "react-router-dom"; import * as config from "@/config"; import dayjs from "dayjs"; class Report { constructor(root) { makeAutoObservable(this, { rootStore: false }); this.root = root; } invoiceList = []; //账单列表 invoicekImages = []; //图片列表 invoiceGroupInfo = {}; //账单详细 invoiceProductList = []; //账单细项 invoiceZDDetail = []; //报账信息 invoiceCurrencyList = []; //币种 invoicePicList = []; //多账单图片列表数组 invoiceFormData = { info_money: 0, info_Currency: "", info_date: "" }; //存储form数据 invoicePaid = [] ; //支付账单列表 invoicePaidDetail = []; //每期账单详细 loading = false; search_date_start = dayjs().month(0); search_date_end = dayjs().month(11); onDateRangeChange = dates => { console.log(dates); this.search_date_start = dates==null? null: dates[0]; this.search_date_end = dates==null? null: dates[1]; }; getHWVendorScores(VEI_SN, StartDate, EndDate) { this.loading = true; const fetchUrl = prepareUrl(HT_HOST + "/service-cusservice/PTGetHWProductScores") .append("VEI_SN", VEI_SN) .append("StartDate", StartDate) .append("EndDate", EndDate) .append("token",this.root.authStore.login.token) .build(); return fetchJSON(fetchUrl).then(json => { runInAction(() => { this.loading = false; if (json.errcode == 0) { if (isNotEmpty(json.Result)) { this.invoiceList = json.Result.map((data, index) => { return { key: data.GMDSN, gmd_gri_sn: data.GMD_GRI_SN, gmd_vei_sn: data.GMD_VEI_SN, GetGDate: data.GetGDate, GMD_FillWorkers_SN: data.GMD_FillWorkers_SN, GMD_FWks_LastEditTime: data.GMD_FWks_LastEditTime, GMD_VerifyUser_SN: data.GMD_VerifyUser_SN, GMD_Dealed: data.GMD_Dealed, GMD_VRequestVerify: data.GMD_VRequestVerify, LeftGDate: data.LeftGDate, GMD_FillWorkers_Name: data.GMD_FillWorkers_Name, GroupName: data.GroupName, AllMoney: data.AllMoney, PersonNum: data.PersonNum, GMD_Currency: data.GMD_Currency, VName: data.VName, FKState: data.FKState, }; }); } else { this.invoiceList = []; } } else { throw new Error(json.errmsg + ": " + json.errcode); } }); }); } fetchInvoiceDetail(GMDSN, GSN) { const fetchUrl = prepareUrl(HT_HOST + "/service-cusservice/PTGetZDDetail") .append("VEI_SN", this.root.authStore.login.travelAgencyId) .append("GRI_SN", GSN) .append("GMD_SN", GMDSN) .append("LGC", 1) .append("Bill", 1) .append("token",this.root.authStore.login.token) .build(); return fetchJSON(fetchUrl).then(json => { runInAction(() => { if (json.errcode == 0) { this.invoiceGroupInfo = json.GroupInfo[0]; this.invoiceProductList = json.ProductList; this.invoiceCurrencyList = json.CurrencyList; this.invoiceZDDetail = json.ZDDetail; } else { throw new Error(json.errmsg + ": " + json.errcode); } }); return json; }); } //获取供应商提交的图片 getInvoicekImages(VEI_SN, GRI_SN) { let url = `/service-fileServer/ListFile`; url += `?GRI_SN=${GRI_SN}&VEI_SN=${VEI_SN}&FilePathName=invoice`; url += `&token=${this.root.authStore.login.token}`; fetch(config.HT_HOST + url) .then(response => response.json()) .then(json => { console.log(json); runInAction(() => { this.invoicekImages = json.result.map((data, index) => { return { uid: -index, //用负数,防止添加删除的时候错误 name: data.file_name, status: "done", url: data.file_url, }; }); }); }) .catch(error => { console.log("fetch data failed", error); }); } //从数据库获取图片列表 getInvoicekImages_fromData(jsonData) { let arrLen = jsonData.length; let arrPicList = jsonData.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) { this.invoicekImages = picList; } return picList; }); runInAction(() => { this.invoicePicList = arrPicList; }); } //获取数据库的表单默认数据回填。 getFormData(jsonData) { let arrLen = jsonData.length; return jsonData.map((data, index) => { if (data.GMD_Dealed == false && arrLen == index + 1) { //只有最后一条账单未审核通过才显示 runInAction(() => { this.invoiceFormData = { info_money: data.GMD_Cost, info_Currency: data.GMD_Currency, info_date: isNotEmpty(data.GMD_PayDate) ? dayjs(data.GMD_PayDate) : "" }; }); } }); } removeFeedbackImages(fileurl) { let url = `/service-fileServer/FileDelete`; url += `?fileurl=${fileurl}`; url += `&token=${this.root.authStore.login.token}`; return fetch(config.HT_HOST + url) .then(response => response.json()) .then(json => { console.log(json); return json.Result; }) .catch(error => { console.log("fetch data failed", error); }); } postEditInvoiceDetail(GMD_SN, Currency, Cost, PayDate, Pic, Memo) { let postUrl = HT_HOST + "/service-cusservice/EditSupplierFK"; let formData = new FormData(); formData.append("LMI_SN", this.root.authStore.login.userId); formData.append("GMD_SN", GMD_SN); formData.append("Currency", Currency); formData.append("Cost", Cost); formData.append("PayDate", isNotEmpty(PayDate) ? PayDate : ""); formData.append("Pic", Pic); formData.append("Memo", Memo); formData.append("token",this.root.authStore.login.token); return postForm(postUrl, formData).then(json => { console.info(json); return json; }); } postAddInvoice(GRI_SN, Currency, Cost, PayDate, Pic, Memo) { let postUrl = HT_HOST + "/service-cusservice/AddSupplierFK"; let formData = new FormData(); formData.append("LMI_SN", this.root.authStore.login.userId); formData.append("VEI_SN", this.root.authStore.login.travelAgencyId); formData.append("GRI_SN", GRI_SN); formData.append("Currency", Currency); formData.append("Cost", Cost); formData.append("PayDate", isNotEmpty(PayDate) ? PayDate : ""); formData.append("Pic", Pic); formData.append("Memo", Memo); formData.append("token",this.root.authStore.login.token); return postForm(postUrl, formData).then(json => { console.info(json); return json; }); } //账单状态 invoiceStatus(FKState) { switch (FKState - 1) { case 1: return "Submitted"; break; case 2: return "Travel Advisor"; break; case 3: return "Finance Dept"; break; case 4: return "Paid"; break; default: return ""; break; } } fetchInvoicePaid(VEI_SN, GroupNo, DateStart, DateEnd) { this.loading = true; const fetchUrl = prepareUrl(HT_HOST + "/service-Cooperate/Cooperate/GetInvoicePaid") .append("VEI_SN", VEI_SN) .append("GroupNo", GroupNo) .append("DateStart", DateStart) .append("DateEnd", DateEnd) .append("token",this.root.authStore.login.token) .build(); return fetchJSON(fetchUrl).then(json => { runInAction(() => { this.loading = false; if (json.errcode == 0) { if (isNotEmpty(json.Result)) { this.invoicePaid = json.Result.map((data, index) => { return { key: data.fl_id, fl_finaceNo: data.fl_finaceNo, fl_vei_sn: data.fl_vei_sn, fl_year: data.fl_year, fl_month: data.fl_month, fl_memo: data.fl_memo, fl_adddate: data.fl_adddate, fl_addUserSn: data.fl_addUserSn, fl_updateUserSn: data.fl_updateUserSn, fl_updatetime: data.fl_updatetime, fl_state: data.fl_state, fl_paid: data.fl_paid, fl_pic: data.fl_pic, fcount: data.fcount, pSum: data.pSum, }; }); } else { this.invoicePaid = []; } } else { throw new Error(json.errmsg + ": " + json.errcode); } }); }); } fetchInvoicePaidDetail(VEI_SN,FLID){ this.loading = true; const fetchUrl = prepareUrl(HT_HOST + "/service-Cooperate/Cooperate/GetInvoicePaidDetail") .append("VEI_SN", VEI_SN) .append("fl_id", FLID) .append("token",this.root.authStore.login.token) .build(); return fetchJSON(fetchUrl).then(json => { runInAction(() => { this.loading = false; if (json.errcode == 0) { if (isNotEmpty(json.Result)) { this.invoicePaidDetail = json.Result.map((data, index) => { return { key: data.fl2_id, fl2_fl_id: data.fl2_fl_id, fl2_GroupName: data.fl2_GroupName, fl2_gri_sn: data.fl2_gri_sn, fl2_gmd_sn: data.fl2_gmd_sn, fl2_wl: data.fl2_wl, fl2_ArriveDate: data.fl2_ArriveDate, fl2_price: data.fl2_price, fl2_state: data.fl2_state, fl2_updatetime: data.fl2_updatetime, fl2_updateUserSn: data.fl2_updateUserSn, fl2_memo: data.fl2_memo, fl2_memo2: data.fl2_memo2, fl2_paid: data.fl2_paid, fl2_pic: data.fl2_pic, }; }); } else { this.invoicePaidDetail = []; } } else { throw new Error(json.errmsg + ": " + json.errcode); } }); }); } /* 测试数据 */ //账单列表范例数据 testData = [ { GSMSN: 449865, gmd_gri_sn: 334233, gmd_vei_sn: 628, GetDate: "2023-04-2 00:33:33", GMD_FillWorkers_SN: 8617, GMD_FWks_LastEditTime: "2023-04-26 12:33:33", GMD_VerifyUser_SN: 8928, GMD_Dealed: 1, GMD_VRequestVerify: 1, TotalCount: 22, LeftGDate: "2023-03-30 00:00:00", GMD_FillWorkers_Name: "", GroupName: " 中华游230501-CA230402033", AllMoney: 3539, FKState: 1, GMD_Currency: "", PersonNum: "1大1小", VName: "", }, ]; } export default Report;