import { makeAutoObservable, runInAction } from "mobx"; import { fetchJSON, postForm } from '@/utils/request'; import { HT_HOST } from "@/config"; import { prepareUrl } from '@/utils/commons'; class Reservation { constructor(root) { makeAutoObservable(this, { rootStore: false }); this.root = root; } fetchReservationList(current, referenceNo, fromDate, thruDate) { this.reservationPage.current = current; // 设置为 0,后端会重新计算总数,当跳转第 X 页时可用原来的总数。 const totalNum = current == 1 ? 0 : this.reservationPage.total; const fetchUrl = prepareUrl(HT_HOST + '/service-cusservice/GetPlanSearchList') .append('VEI_SN', this.root.authStore.login.travelAgencyId) .append('GroupNo', referenceNo) .append('DateStart', fromDate) .append('DateEnd', thruDate) .append('TotalNum', totalNum) .append('PageSize', this.reservationPage.size) .append('PageIndex', this.reservationPage.current) .build(); return fetchJSON(fetchUrl) .then(json => { if (json.errcode == 0) { runInAction(() => { this.reservationList = (json?.Result ?? []).map((data, index) => { return { key: data.vas_gri_sn, reservationId: data.vas_gri_sn, referenceNumber: data.GriName, arrivalDate: data.GetGDate, pax: data.PersonNum, status: data.GState, reservationDate: data.GetGDate, guide: data.Guide } }); this.reservationPage.total = (json?.Result ?? [{RsTotal: 0}]).RsTotal; }); } else { throw new Error(json.errmsg + ': ' + json.errcode); } }); } fetchReservation(reservationId) { const fetchUrl = prepareUrl(HT_HOST + '/service-cusservice/GetPlanInfo') .append('VEI_SN', this.root.authStore.login.travelAgencyId) .append('GRI_SN', reservationId) .build(); return fetchJSON(fetchUrl) .then(json => { if (json.errcode == 0) { runInAction(() => { this.itineraryList = (json?.VendorTour ?? []).map((data, index) => { return { key: data.GRD_SN, day: data.GRD_OrderDate, placeTransport: data.GRD_Traffic, todayActivities: data.GRD_LandscapeWL, accommodation: data.GRD_Hotel, meals: data.GRD_Meal_L + data.GRD_Meal_S, } }); this.reservationDetail = { referenceNumber: json.PlanDetail[0].GRI_Name, tourGuide: json.PlanDetail[0].Guide, arrivalDate: json.PlanDetail[0].eoi_getdate }; this.customerNames = json.CusAndRequest[0].GCI_CustomerList; this.confirmationList = (json?.PlanChange ?? []).map((data, index) => { return { key: data.PCI_SN, PCI_Changetext: data.PCI_Changetext, PCI_SendDate: data.PCI_SendDate, ConfirmPerson: data.ConfirmPerson, PCI_ConfirmText: data.PCI_ConfirmText, PCI_ConfirmDate: data.PCI_ConfirmDate } }); }); } else { throw new Error(json.errmsg + ': ' + json.errcode); } }); } // get confirmationList() { // return computed(() => { // return json.PlanChange.map((data, index) => { // return { // key: data.PCI_SN, // PCI_Changetext: data.PCI_Changetext, // PCI_SendDate: data.PCI_SendDate, // ConfirmPerson: data.ConfirmPerson, // PCI_ConfirmText: data.PCI_ConfirmText, // PCI_ConfirmDate: data.PCI_ConfirmDate // } // }); // }).get(); // } fetchCityList(reservationId) { const fetchUrl = prepareUrl(HT_HOST + '/service-cusservice/PTGetCityGuide') .append('VEI_SN', this.root.authStore.login.travelAgencyId) .append('GRI_SN', reservationId) .append('LGC', 1) .build(); return fetchJSON(fetchUrl) .then(json => { runInAction(() => { if (json.errcode == 0) { this.cityList = json.Result.map((data, index) => { return { key: data.CII_SN, cityId: data.CII_SN, cityName: data.CityName, tourGuideId: data.TGI_SN, tourGuide: data.GuideName } }); } else { throw new Error(json.errmsg + ': ' + json.errcode); } }); }); } fetchGuideList() { const fetchUrl = prepareUrl(HT_HOST + '/service-cusservice/PTGetGuideList') .append('VEI_SN', 628)//this.root.authStore.login.travelAgencyId) .build(); return fetchJSON(fetchUrl) .then(json => { runInAction(() => { if (json.errcode == 0) { this.guideList = json.Result.map((data, index) => { return { guideId: data.TGI_SN, guideName: data.TGI2_Name, mobileNo: data.TGI_Mobile } }); } else { throw new Error(json.errmsg + ': ' + json.errcode); } }); }); } setupCityGuide(cityId, guideId) { let formData = new FormData(); formData.append('GRI_SN', this.selectedReservation.reservationId); formData.append('VEI_SN', this.root.authStore.login.travelAgencyId); formData.append('TGI_SN', guideId); formData.append('CII_SN', cityId); formData.append('GetDate', this.selectedReservation.reservationDate); formData.append('LMI_SN', this.root.authStore.login.userId); const postUrl = HT_HOST + '/service-cusservice/PTAddGuide'; return postForm(postUrl, formData) .then(json => { console.info(json); }); } submitConfirmation(confirmText) { let formData = new FormData(); formData.append('PCI_SN', this.selectedConfirmation.key); formData.append('OPSN', this.root.authStore.login.userId); formData.append('ConfirmText', confirmText); const postUrl = HT_HOST + '/service-cusservice/PTConfirmPlanChange'; return postForm(postUrl, formData) .then(json => { if (json.errcode == 0 && json.Result.length == 1) { runInAction(() => { this.selectedConfirmation.PCI_ConfirmText = json.Result[0].PCI_ConfirmText; this.selectedConfirmation.PCI_ConfirmDate = json.Result[0].PCI_ConfirmDate; }); return json; } }); } editReservation(reservation) { this.selectedReservation = reservation; } editConfirmation(confirmation) { this.selectedConfirmation = confirmation; } guideList = []; cityList = []; selectedReservation = null; selectedConfirmation = null; reservationList = []; reservationDetail = { referenceNumber: '', arrivalDate: '', tourGuide: '' }; reservationPage = { current: 1, size: 10, total: 0 } itineraryList = [ ]; confirmationList = [ ]; customerNames = ''; } export default Reservation;