From 83d08dd0995ef823e0666969301b86b3e08706bc Mon Sep 17 00:00:00 2001 From: Jimmy Liow Date: Thu, 6 Jun 2024 16:44:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=20useStorage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/价格管理平台.bmpr | Bin 248832 -> 254976 bytes src/hooks/useStorage.js | 50 ++++++ src/stores/Auth.js | 23 ++- src/stores/Reservation.js | 286 +++++++++++++------------------ src/utils/request.js | 2 +- src/views/reservation/Detail.jsx | 24 +-- src/views/reservation/Newest.jsx | 36 ++-- 7 files changed, 217 insertions(+), 204 deletions(-) create mode 100644 src/hooks/useStorage.js diff --git a/doc/价格管理平台.bmpr b/doc/价格管理平台.bmpr index ffeabc23d29427cdcf4a17954cd34be4d9a49193..3d600bf3c0587b0b73e806a7259dfb676fbf17c7 100644 GIT binary patch delta 66714 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 LY=7uuJ>U1gI!xgQ diff --git a/src/hooks/useStorage.js b/src/hooks/useStorage.js new file mode 100644 index 0000000..16da146 --- /dev/null +++ b/src/hooks/useStorage.js @@ -0,0 +1,50 @@ +export function useStorage() { + + const setSession = (key, value) => { + if (window.sessionStorage) { + const sessionStorage = window.sessionStorage + return sessionStorage.setItem(key, value) + } else { + console.error('browser not support sessionStorage.') + } + } + + const camelCasedWords = (string) => { + if (typeof string !== 'string' || string.length === 0) { + return string; + } + return string.split('_').map((word, index) => { + if (index === 0) { + return '' + } else if (index === 1) { + return word.toLowerCase() + } else { + return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase() + } + }).join('') + } + + const storageObject = {} + + if (window.sessionStorage) { + + const sessionStorage = window.sessionStorage + + for (let i = 0; i < sessionStorage.length; i++) { + const key = sessionStorage.key(i) + const value = sessionStorage.getItem(key) + const propName = camelCasedWords(key) + storageObject[propName] = value + } + + return { + ...storageObject, + setStorage: (key, value) => { + setSession(key, value) + } + } + } else { + console.error('browser not support sessionStorage.') + return {} + } +} diff --git a/src/stores/Auth.js b/src/stores/Auth.js index 2655979..525bb4a 100644 --- a/src/stores/Auth.js +++ b/src/stores/Auth.js @@ -1,13 +1,15 @@ import { makeAutoObservable, runInAction } from "mobx"; +import { create } from 'zustand' import { appendRequestParams, fetchJSON, postForm } from '@/utils/request'; import { HT_HOST } from "@/config"; import { isNotEmpty, prepareUrl } from '@/utils/commons'; import { loadPageSpy } from '@/pageSpy'; -import { create } from 'zustand' +import { useStorage } from '@/hooks/useStorage' + -const KEY_LOGIN_TOKEN = 'KEY_LOGIN_TOKEN'; -const KEY_TRAVEL_AGENCY_ID = 'KEY_TRAVEL_AGENCY_ID'; -const KEY_USER_ID = 'KEY_USER_ID'; +const KEY_LOGIN_TOKEN = 'KEY_LOGIN_TOKEN' +const KEY_TRAVEL_AGENCY_ID = 'KEY_TRAVEL_AGENCY_ID' +const KEY_USER_ID = 'KEY_USER_ID' const useAuthStore = create((set, get) => ({ @@ -45,11 +47,12 @@ const useAuthStore = create((set, get) => ({ }, validateUserPassword: async (usr, pwd) => { + const { setStorage } = useStorage() + const formData = new FormData() formData.append('username', usr) formData.append('Password', pwd) - async function fetchLoginToken() { const postUrl = HT_HOST + '/service-CooperateSOA/Login' const json = await postForm(postUrl, formData) @@ -59,8 +62,9 @@ const useAuthStore = create((set, get) => ({ return 0; } } - const token = await fetchLoginToken() - appendRequestParams('token', token) + const loginToken = await fetchLoginToken() + setStorage(KEY_LOGIN_TOKEN, loginToken) + appendRequestParams('token', loginToken) const fetchUrl = prepareUrl(HT_HOST + '/service-CooperateSOA/GetLinkManInfo').build() @@ -69,7 +73,7 @@ const useAuthStore = create((set, get) => ({ if (json.errcode == 0) { set(() => ({ loginUser: { - token: token, + token: loginToken, timeout: false, userId: json.Result.LMI_SN, username: json.Result.LoginName, @@ -81,6 +85,9 @@ const useAuthStore = create((set, get) => ({ }, loginStatus: 302 })) + + setStorage(KEY_USER_ID, json.Result.LMI_SN) + setStorage(KEY_TRAVEL_AGENCY_ID, json.Result.LMI_VEI_SN) // loadPageSpy(`${json.Result.VName}-${json.Result.LoginName}`) // this.startTokenInterval() } else { diff --git a/src/stores/Reservation.js b/src/stores/Reservation.js index 96c3da9..dd50987 100644 --- a/src/stores/Reservation.js +++ b/src/stores/Reservation.js @@ -1,8 +1,39 @@ -import { makeAutoObservable, runInAction } from "mobx"; -import { fetchJSON, postForm } from '@/utils/request'; -import { HT_HOST } from "@/config"; -import { prepareUrl } from '@/utils/commons'; +import { makeAutoObservable, runInAction } from "mobx" import { create } from 'zustand' +import { fetchJSON, postForm } from '@/utils/request' +import { HT_HOST } from "@/config" +import { prepareUrl } from '@/utils/commons' +import { useStorage } from '@/hooks/useStorage' + +export const fetchCityList = async (travelAgencyId, reservationId) => { + const { errcode, Result } = await fetchJSON( + `${HT_HOST}/service-cusservice/PTGetCityGuide`, + { VEI_SN: travelAgencyId, GRI_SN: reservationId, LGC: 1 }) + return errcode !== 0 ? {} : Result; +} + +export const fetchPlanDetail = async (travelAgencyId, reservationId) => { + const json = await fetchJSON( + `${HT_HOST}/service-cusservice/GetPlanInfo`, + { VEI_SN: travelAgencyId, GRI_SN: reservationId }) + + if (json.errcode == 0) { + return { + planDetail: json.PlanDetail[0], + planChangeList: json.PlanChange??[] + } + } else { + return {} + } +} + +export const fetchAttachList = async (reservationId) => { + + const { errcode, result } = await fetchJSON( + `${HT_HOST}/service-fileServer/PlanChangeFileList`, + { GRI_SN: reservationId }) + return errcode !== 0 ? {} : result; +} const useReservationStore = create((set, get) => ({ @@ -28,7 +59,41 @@ const useReservationStore = create((set, get) => ({ confirmationList: [ ], - fetchReservationList: (travelAgencyId, formVal, current=1) => { + getCityListByReservationId: async (reservationId) => { + const { travelAgencyId } = useStorage() + set(() => ({ + cityList: [] + })) + + const cityListJson = await fetchCityList(travelAgencyId, reservationId) + const mapCityList = cityListJson.map((data) => { + return { + key: data.CII_SN, + cityId: data.CII_SN, + cityName: data.CityName, + tourGuideId: data.TGI_SN, + tourGuide: data.GuideName + } + }) + set(() => ({ + cityList: mapCityList + })) + }, + + selectReservation: (reservation) => { + set(() => ({ + selectedReservation: reservation + })) + }, + + selectConfirmation: (confirmation) => { + set(() => ({ + selectedConfirmation: confirmation + })) + }, + + fetchReservationList: (formVal, current=1) => { + const { travelAgencyId } = useStorage() const { reservationPage } = get() // 设置为 0,后端会重新计算总数,当跳转第 X 页时可用原来的总数。 const totalNum = current == 1 ? 0 : reservationPage.total; @@ -37,7 +102,7 @@ const useReservationStore = create((set, get) => ({ .append('GroupNo', formVal.referenceNo) .append('DateStart', formVal.startdate) .append('DateEnd', formVal.enddate) - .append('NotConfirm', '')//status) + .append('NotConfirm', '')//status)// Todo: 待解决 .append('TotalNum', totalNum) .append('PageSize', reservationPage.size) .append('PageIndex', current) @@ -73,7 +138,8 @@ const useReservationStore = create((set, get) => ({ }); }, - fetchAllGuideList: (travelAgencyId) => { + fetchAllGuideList: () => { + const { userId, travelAgencyId } = useStorage() const fetchUrl = prepareUrl(HT_HOST + '/service-cusservice/PTGetGuideList') .append('VEI_SN', travelAgencyId) .build(); @@ -94,149 +160,66 @@ const useReservationStore = create((set, get) => ({ } }); }, -})) - -export default useReservationStore -export class Reservation { + getReservationDetail: async (travelAgencyId, reservationId) => { + const { planDetail, planChangeList } = await fetchPlanDetail(travelAgencyId, reservationId) + const attachListJson = await fetchAttachList(reservationId) - constructor(root) { - makeAutoObservable(this, { rootStore: false }); - this.root = root; - } - - fetchReservationList(current, status=null) { - const fromDate = this.arrivalDateRange.length == 0 ? null : this.arrivalDateRange[0].format('YYYY-MM-DD'); - const thruDate = this.arrivalDateRange.length == 0 ? null : this.arrivalDateRange[1].format('YYYY-MM-DD'); - 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', this.referenceNo) - .append('DateStart', fromDate) - .append('DateEnd', thruDate) - .append('NotConfirm', status) - .append('TotalNum', totalNum) - .append('PageSize', this.reservationPage.size) - .append('PageIndex', this.reservationPage.current) - .append("token", this.root.authStore.login.token) - .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.SendDate, - guide: data.Guide - } - }); - this.reservationPage.total = (json?.Result??[{RsTotal: 0}])[0].RsTotal; - }); - } else { - throw new Error(json.errmsg + ': ' + json.errcode); - } + const mapConfirmationList = planChangeList.map((data) => { + const filterAttchList = attachListJson.filter(attch => { + return attch.PCI_SN === data.PCI_SN; }); - } + 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, + VAS_SN: data.PCI_VAS_SN, + attachmentList: filterAttchList + } + }) + + set(() => ({ + reservationDetail: { + referenceNumber: planDetail.GRI_Name, + tourGuide: planDetail.Guide, + arrivalDate: planDetail.eoi_getdate, + reservationId: reservationId + }, + confirmationList: mapConfirmationList + })) + }, - fetchReservation(reservationId) { - const fetchDetailUrl = prepareUrl(HT_HOST + '/service-cusservice/GetPlanInfo') - .append('VEI_SN', this.root.authStore.login.travelAgencyId) - .append('GRI_SN', reservationId) - .append("token", this.root.authStore.login.token) - .build(); - // https://p9axztuwd7x8a7.mycht.cn/service-fileServer/PlanChangeFileList - const fetchAttachmentUrl = prepareUrl(HT_HOST + '/service-fileServer/PlanChangeFileList') - .append('GRI_SN', reservationId) - .append("token", this.root.authStore.login.token) - .build(); + submitConfirmation: (userId, travelAgencyId, confirmText) => { + const { selectedConfirmation, getReservationDetail, reservationDetail } = get() + const formData = new FormData() + formData.append('PCI_SN', selectedConfirmation.key) + formData.append('OPSN', userId) + formData.append('ConfirmText', confirmText) + formData.append('VAS_SN', selectedConfirmation.VAS_SN) - const attachmentPromise = fetchJSON(fetchAttachmentUrl) - .then(json => { - if (json.errcode == 0) { - return json; - } else { - throw new Error(json.errmsg + ': ' + json.errcode); - } - }); + const postUrl = HT_HOST + '/service-cusservice/PTConfirmPlanChange' - const detailPromise = fetchJSON(fetchDetailUrl) + return postForm(postUrl, formData) .then(json => { - if (json.errcode == 0) { - return json; - } else { - throw new Error(json.errmsg + ': ' + json.errcode); + if (json.errcode == 0 && json.Result.length == 1) { + // this.fetchReservation(this.reservationDetail.reservationId); + getReservationDetail(travelAgencyId, reservationDetail.reservationId) + return json } }); - - return Promise.all([attachmentPromise, detailPromise]) - .then(results => { - const attachList = results[0].result; - const planDetail = results[1].PlanDetail[0]; - const planChange = results[1]?.PlanChange??[]; - runInAction(() => { - this.reservationDetail = { - referenceNumber: planDetail.GRI_Name, - tourGuide: planDetail.Guide, - arrivalDate: planDetail.eoi_getdate, - reservationId: reservationId - }; - this.confirmationList = planChange.map((data, index) => { - const filterAttchList = attachList.filter(attch => { - return attch.PCI_SN === data.PCI_SN; - }); - 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, - VAS_SN: data.PCI_VAS_SN, - attachmentList: filterAttchList - } - }); - }); - }); } +})) - 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) - .append("token", this.root.authStore.login.token) - .build(); +export default useReservationStore - runInAction(() => { - this.cityList = []; - }); - 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); - } - }); - }); +export class Reservation { + + constructor(root) { + makeAutoObservable(this, { rootStore: false }); + this.root = root; } updateReservationGuide() { @@ -284,33 +267,6 @@ export class Reservation { }); } - 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); - formData.append('VAS_SN', this.selectedConfirmation.VAS_SN); - formData.append("token", this.root.authStore.login.token); - - const postUrl = HT_HOST + '/service-cusservice/PTConfirmPlanChange'; - - return postForm(postUrl, formData) - .then(json => { - if (json.errcode == 0 && json.Result.length == 1) { - this.fetchReservation(this.reservationDetail.reservationId); - return json; - } - }); - } - - editReservation(reservation) { - this.selectedReservation = reservation; - } - - editConfirmation(confirmation) { - this.selectedConfirmation = confirmation; - } - updatePropertyValue(name, value) { runInAction(() => { this[name] = value; diff --git a/src/utils/request.js b/src/utils/request.js index c83a272..68d80a6 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -45,7 +45,7 @@ function checkStatus(response) { } } -function checkBizCode(responseJson){ +function checkBizCode(responseJson) { if (responseJson.errcode === 0) { return responseJson; } else { diff --git a/src/views/reservation/Detail.jsx b/src/views/reservation/Detail.jsx index 8ce7b1b..52fe4f9 100644 --- a/src/views/reservation/Detail.jsx +++ b/src/views/reservation/Detail.jsx @@ -6,8 +6,9 @@ import { Row, Col, Space, Button, Table, Input, Typography, Modal, Tag, App } fr import { FileOutlined } from '@ant-design/icons'; -import { useStore } from '@/stores/StoreContext.js'; +import useAuthStore from '@/stores/Auth' import { useTranslation } from 'react-i18next'; +import useReservationStore from '@/stores/Reservation' const { Title, Paragraph } = Typography; const { TextArea } = Input; @@ -77,16 +78,19 @@ function Detail() { const [dataLoading, setDataLoading] = useState(false); const { notification } = App.useApp(); const { reservationId } = useParams(); - const { authStore, reservationStore } = useStore(); - const { reservationDetail, confirmationList } = reservationStore; - const { login } = authStore; + + const loginUser = useAuthStore((state) => state.loginUser) + const [getReservationDetail, reservationDetail, confirmationList, selectConfirmation, submitConfirmation] = + useReservationStore((state) => + [state.getReservationDetail, state.reservationDetail, state.confirmationList, state.selectConfirmation, state.submitConfirmation]) + const officeWebViewerUrl = 'https://view.officeapps.live.com/op/embed.aspx?wdPrint=1&wdHideGridlines=0&wdHideComments=1&wdEmbedCode=0&src='; // 测试文档:https://www.chinahighlights.com/public/reservationW220420009.doc const reservationUrl = - `https://p9axztuwd7x8a7.mycht.cn/service-fileServer/DownloadPlanDoc?GRI_SN=${reservationId}&VEI_SN=${login.travelAgencyId}&token=${login.token}&FileType=1`; + `https://p9axztuwd7x8a7.mycht.cn/service-fileServer/DownloadPlanDoc?GRI_SN=${reservationId}&VEI_SN=${loginUser.travelAgencyId}&token=${loginUser.token}&FileType=1`; const nameCardUrl = - `https://p9axztuwd7x8a7.mycht.cn/service-fileServer/DownloadPlanDoc?GRI_SN=${reservationId}&VEI_SN=${login.travelAgencyId}&token=${login.token}&FileType=2`; + `https://p9axztuwd7x8a7.mycht.cn/service-fileServer/DownloadPlanDoc?GRI_SN=${reservationId}&VEI_SN=${loginUser.travelAgencyId}&token=${loginUser.token}&FileType=2`; const reservationPreviewUrl = officeWebViewerUrl + encodeURIComponent(reservationUrl); const nameCardPreviewUrl = officeWebViewerUrl + encodeURIComponent(nameCardUrl); @@ -95,12 +99,12 @@ function Detail() { setIsModalOpen(true); const formattedText = confirm.PCI_ConfirmText;//.replace(/\;/g, "\n——————————————————————\n"); setConfirmText(formattedText); - reservationStore.editConfirmation(confirm); + selectConfirmation(confirm); }; const handleOk = () => { setConfirmLoading(true); - reservationStore.submitConfirmation(confirmText + '\n——————————————————————\n' +newConfirmText) + submitConfirmation(loginUser.userId, loginUser.travelAgencyId, confirmText + '\n——————————————————————\n' +newConfirmText) .finally(() => { setNewConfirmText(''); setIsModalOpen(false); @@ -113,7 +117,7 @@ function Detail() { useEffect(() => { setDataLoading(true); - reservationStore.fetchReservation(reservationId) + getReservationDetail(loginUser.travelAgencyId, reservationId) .catch(ex => { notification.error({ message: `Notification`, @@ -187,4 +191,4 @@ function Detail() { ); } -export default observer(Detail); +export default Detail; diff --git a/src/views/reservation/Newest.jsx b/src/views/reservation/Newest.jsx index fedf909..6857b17 100644 --- a/src/views/reservation/Newest.jsx +++ b/src/views/reservation/Newest.jsx @@ -4,7 +4,6 @@ import { Row, Col, Space, Button, Table, Typography, Modal, App, Select } from ' import dayjs from 'dayjs' import { isEmpty } from '@/utils/commons' import { useTranslation } from 'react-i18next' -import useAuthStore from '@/stores/Auth' import useFormStore from '@/stores/Form' import useReservationStore from '@/stores/Reservation' import SearchForm from '@/components/SearchForm' @@ -97,7 +96,7 @@ function Newest() { filterOption={(input, option) => (option?.label ?? '').toLowerCase().includes(input.toLowerCase()) } - options={toJS(guideSelectOptions)} + options={guideSelectOptions} /> ) } @@ -107,20 +106,20 @@ function Newest() { const [dataLoading, setDataLoading] = useState(false) const [guideSelectOptions, setGuideSelectOptions] = useState([]) - const formValues = useFormStore((state) => state.formValues); - const loginUser = useAuthStore((state) => state.loginUser) - const [fetchAllGuideList, fetchReservationList, reservationList, reservationPage, cityList] = + const formValues = useFormStore((state) => state.formValues) + + const [fetchAllGuideList, fetchReservationList, reservationList, reservationPage, cityList, selectReservation, getCityListByReservationId] = useReservationStore((state) => - [state.fetchAllGuideList, state.fetchReservationList, state.reservationList, state.reservationPage, state.cityList]) + [state.fetchAllGuideList, state.fetchReservationList, state.reservationList, state.reservationPage, state.cityList, state.selectReservation, state.getCityListByReservationId]) - const { notification } = App.useApp(); + const { notification } = App.useApp() useEffect (() => { if (location.search !== '?back') { // 第一页,未确认计划 onSearchClick(1, 1) } - fetchAllGuideList(loginUser.travelAgencyId) + fetchAllGuideList() .then((guideList) => { const selectOptions = guideList.map((data, index) => { return { @@ -130,19 +129,16 @@ function Newest() { }) setGuideSelectOptions(selectOptions) }) - return () => { - // unmount... - }; }, []) const showCityGuideModal = (reservation) => { setDataLoading(true) setIsModalOpen(true) - reservationStore.editReservation(reservation); - reservationStore.fetchCityList(reservation.reservationId) + selectReservation(reservation); + getCityListByReservationId(reservation.reservationId) .catch(ex => { notification.error({ - message: `Notification`, + message: 'Notification', description: ex.message, placement: 'top', duration: 4, @@ -151,14 +147,14 @@ function Newest() { .finally(() => { setDataLoading(false); }) - }; + } const handleOk = () => { reservationStore.updateReservationGuide() .finally(() => { setIsModalOpen(false); setDataLoading(false); }) - }; + } const handleCancel = () => { setIsModalOpen(false); setDataLoading(false); @@ -167,7 +163,7 @@ function Newest() { // 默认重新搜索第一页,所有状态的计划 const onSearchClick = (current=1, status=null) => { setDataLoading(true) - fetchReservationList(loginUser.travelAgencyId, formValues, current) + fetchReservationList(formValues, current) .catch(ex => { notification.error({ message: `Notification`, @@ -228,14 +224,14 @@ function Newest() { }} onSubmit={(err, formVal, filedsVal) => { setDataLoading(true) - fetchReservationList(loginUser.travelAgencyId, formVal) + fetchReservationList(travelAgencyId, formVal) .catch(ex => { notification.error({ message: 'Notification', description: ex.message, placement: 'top', duration: 4, - }); + }) }) .finally(() => { setDataLoading(false) @@ -256,7 +252,7 @@ function Newest() { total: reservationPage.total, simple: true }} - onChange={(pagination, filters, sorter, extra) => {onSearchClick(pagination.current)}} + onChange={(pagination) => {onSearchClick(pagination.current)}} columns={reservationListColumns} dataSource={reservationList} />