|
|
|
|
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;
|