You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
371 lines
10 KiB
JavaScript
371 lines
10 KiB
JavaScript
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 Invoice {
|
|
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().subtract(2, "M").startOf("M");
|
|
search_date_end = dayjs().endOf("M");
|
|
|
|
onDateRangeChange = dates => {
|
|
console.log(dates);
|
|
this.search_date_start = dates==null? null: dates[0];
|
|
this.search_date_end = dates==null? null: dates[1];
|
|
};
|
|
|
|
fetchInvoiceList(VEI_SN, GroupNo, DateStart, DateEnd,OrderType) {
|
|
this.loading = true;
|
|
const fetchUrl = prepareUrl(HT_HOST + "/service-cusservice/PTSearchGMBPageList")
|
|
.append("VEI_SN", VEI_SN)
|
|
.append("OrderType", 0)
|
|
.append("GroupNo", GroupNo.trim())
|
|
.append("DateStart", DateStart)
|
|
.append("DateEnd", DateEnd)
|
|
.append("Orderbytype", 1)
|
|
.append("TimeType", 0)
|
|
.append("limitmarket", "")
|
|
.append("mddgroup", "")
|
|
.append("SecuryGroup", "")
|
|
.append("TotalNum", 0)
|
|
.append("PageSize", 2000)
|
|
.append("PageIndex", 1)
|
|
.append("PayState",OrderType)
|
|
.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 Invoice;
|