From bff51977650dacdb2b52ee57004c32b0185eff49 Mon Sep 17 00:00:00 2001 From: Jimmy Liow Date: Fri, 14 Jun 2024 16:31:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90=E5=9B=A2=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E5=85=A8=E9=83=A8=E8=BF=81=E7=A7=BB=20zustand?= =?UTF-8?q?=EF=BC=9B=20=E5=A2=9E=E5=8A=A0=E5=88=86=E9=A1=B5=E4=B8=AD?= =?UTF-8?q?=E8=8B=B1=E6=96=87=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/locales/en/common.json | 1 + public/locales/zh/common.json | 1 + src/stores/Reservation.js | 110 +++++++--------- src/stores/Root.js | 2 - src/views/App.jsx | 4 +- src/views/Standlone.jsx | 37 +++--- src/views/account/Management.jsx | 212 +++++++++++++++---------------- src/views/reservation/Newest.jsx | 8 +- 8 files changed, 173 insertions(+), 202 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 255dbc4..872ae81 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -18,6 +18,7 @@ "Download": "Download", "Upload": "Upload", "preview": "Preview", + "Total": "Total", "Login": "Login", "Username": "Username", diff --git a/public/locales/zh/common.json b/public/locales/zh/common.json index 7511da4..699a2e2 100644 --- a/public/locales/zh/common.json +++ b/public/locales/zh/common.json @@ -18,6 +18,7 @@ "Download": "下载", "Upload": "上传", "preview": "预览", + "Total": "总数", "Login": "登录", "Username": "账号", diff --git a/src/stores/Reservation.js b/src/stores/Reservation.js index 686d191..8990ae7 100644 --- a/src/stores/Reservation.js +++ b/src/stores/Reservation.js @@ -1,4 +1,3 @@ -import { makeAutoObservable, runInAction } from "mobx" import { create } from 'zustand' import { fetchJSON, postForm } from '@/utils/request' import { HT_HOST } from "@/config" @@ -211,88 +210,65 @@ const useReservationStore = create((set, get) => ({ return json } }); - } -})) + }, + + setupCityGuide: (cityId, guideId) => { + const { selectedReservation } = get() + const { userId, travelAgencyId } = usingStorage() + const formData = new FormData() + formData.append('GRI_SN', selectedReservation.reservationId) + formData.append('VEI_SN', travelAgencyId) + formData.append('TGI_SN', guideId) + formData.append('CII_SN', cityId) + formData.append('GetDate', selectedReservation.reservationDate) + formData.append('LMI_SN', userId) + const postUrl = HT_HOST + '/service-cusservice/PTAddGuide' -export default useReservationStore + return postForm(postUrl, formData) + .then(json => { + if (json.errcode != 0) { + throw new Error(json.errmsg + ': ' + json.errcode) + } + }); + }, -export class Reservation { - constructor(root) { - makeAutoObservable(this, { rootStore: false }); - this.root = root; - } - updateReservationGuide() { + updateReservationGuide: () => { + const { selectedReservation } = get() + const { travelAgencyId } = usingStorage() const fetchUrl = prepareUrl(HT_HOST + '/service-cusservice/PTGetCityGuide') - .append('VEI_SN', this.root.authStore.login.travelAgencyId) - .append('GRI_SN', this.selectedReservation.reservationId) + .append('VEI_SN', travelAgencyId) + .append('GRI_SN', selectedReservation.reservationId) .append('LGC', 1) - .append("token", this.root.authStore.login.token) .build(); return fetchJSON(fetchUrl) .then(json => { if (json.errcode == 0) { const reservationGuide = (json?.Result??[]).filter((data) => { - return data.TGI_SN != 0; + return data.TGI_SN != 0 }).map((data) => { - return data.GuideName; - }).join(','); + return data.GuideName + }).join(',') + runInAction(() => { - this.selectedReservation.guide = reservationGuide; - }); - return reservationGuide; - } else { - throw new Error(json.errmsg + ': ' + json.errcode); - } - }); - } + selectedReservation.guide = reservationGuide + }) - 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); - formData.append("token", this.root.authStore.login.token); - const postUrl = HT_HOST + '/service-cusservice/PTAddGuide'; + set((state) => ({ + selectedReservation: { + ...state.selectedReservation, + guide: reservationGuide, + }, + })) - return postForm(postUrl, formData) - .then(json => { - if (json.errcode != 0) { - throw new Error(json.errmsg + ': ' + json.errcode); + return reservationGuide + } else { + throw new Error(json.errmsg + ': ' + json.errcode) } - }); - } - - updatePropertyValue(name, value) { - runInAction(() => { - this[name] = value; - }); - } - - cityList = []; - - selectedReservation = null; - selectedConfirmation = null; - arrivalDateRange = []; - referenceNo = ''; - - reservationList = []; - - reservationDetail = { - referenceNumber: '', arrivalDate: '', tourGuide: '' - }; - - reservationPage = { - current: 1, - size: 10, - total: 0 + }) } +})) - confirmationList = [ - ]; -} \ No newline at end of file +export default useReservationStore \ No newline at end of file diff --git a/src/stores/Root.js b/src/stores/Root.js index 57645f4..d8369f5 100644 --- a/src/stores/Root.js +++ b/src/stores/Root.js @@ -1,11 +1,9 @@ import { makeAutoObservable } from "mobx"; -import { Reservation } from "./Reservation"; import { Auth } from "./Auth"; import {Invoice} from "./Invoice"; class Root { constructor() { - this.reservationStore = new Reservation(this); this.authStore = new Auth(this); this.invoiceStore = new Invoice(this); makeAutoObservable(this); diff --git a/src/views/App.jsx b/src/views/App.jsx index ef02742..e14c58b 100644 --- a/src/views/App.jsx +++ b/src/views/App.jsx @@ -147,9 +147,9 @@ function App() { items: [...[ { label: {t('ChangePassword')}, key: '0' }, { label: {t('Profile')}, key: '1' }, - { label: {t('account:management.tile')}, key: '1' }, + { label: {t('account:management.tile')}, key: '3' }, { type: 'divider' }, - { label: {t('Logout')}, key: '3' }, + { label: {t('Logout')}, key: '4' }, ], { type: 'divider' }, { label: <>v{BUILD_VERSION}, key: 'BUILD_VERSION' }, diff --git a/src/views/Standlone.jsx b/src/views/Standlone.jsx index e13fd85..24acad3 100644 --- a/src/views/Standlone.jsx +++ b/src/views/Standlone.jsx @@ -1,42 +1,37 @@ -import { Outlet, Link, useHref, useLocation } from "react-router-dom"; -import { useEffect } from "react"; -import { observer } from "mobx-react"; -import { Layout, Menu, ConfigProvider, theme, Typography, Space, Row, Col, Alert, App as AntApp } from "antd"; -import { DownOutlined } from "@ant-design/icons"; -import "antd/dist/reset.css"; -import AppLogo from "@/assets/logo-gh.png"; -import { useStore } from "@/stores/StoreContext.js"; -import Language from "../i18n/LanguageSwitcher"; +import { Outlet } from 'react-router-dom' +import { Layout, ConfigProvider, theme, Typography, Row, Col, App as AntApp } from 'antd' +import 'antd/dist/reset.css' +import AppLogo from '@/assets/logo-gh.png' +import Language from '../i18n/LanguageSwitcher' -const { Title } = Typography; -const { Header, Content, Footer } = Layout; +const { Title } = Typography +const { Header, Content, Footer } = Layout function Standlone() { - const { authStore } = useStore(); const { token: { colorBgContainer }, - } = theme.useToken(); + } = theme.useToken() return ( -
- +
+ - App logo + App logo - Global Highlights Hub + Global Highlights Hub @@ -55,7 +50,7 @@ function Standlone() { - ); + ) } -export default observer(Standlone); +export default Standlone diff --git a/src/views/account/Management.jsx b/src/views/account/Management.jsx index 77703ce..4f028ea 100644 --- a/src/views/account/Management.jsx +++ b/src/views/account/Management.jsx @@ -120,7 +120,7 @@ function Management() { ) } - const onPermissionChange = (newValue) => { + const onPermissionChange = (newValue) => { console.log('onChange ', newValue); setPermissionValue(newValue); } @@ -205,7 +205,7 @@ function Management() { } // 默认重新搜索第一页,所有状态的计划 - const onSearchClick = (current=1, status=null) => { + const onSearchClick = (current = 1, status = null) => { } const showDisableConfirm = () => { @@ -243,65 +243,65 @@ function Management() { open={isAccountModalOpen} onOk={handleAccountOk} onCancel={handleAccountCancel} >
- {t('account:management.newAccount')} - - - - - - - - - - - - -
+ {t('account:management.newAccount')} + + + + + + + + + + + + + {/* Role Edit */}
- {t('account:management.newRole')} - - - - - - -
+ {t('account:management.newRole')} + + + + + + +
{t('account:management.tile')} @@ -401,9 +401,9 @@ function Management() { showQuickJumper: true, showLessItems: true, showSizeChanger: true, - showTotal: (total) => { return `总数:${total}` } + showTotal: (total) => { return t('Total') + `:${total}` } }} - onChange={(pagination) => {onSearchClick(pagination.current)}} + onChange={(pagination) => { onSearchClick(pagination.current) }} columns={accountListColumns} dataSource={accountList} /> diff --git a/src/views/reservation/Newest.jsx b/src/views/reservation/Newest.jsx index 99d8b70..d9f3420 100644 --- a/src/views/reservation/Newest.jsx +++ b/src/views/reservation/Newest.jsx @@ -82,7 +82,7 @@ function Newest() { optionFilterProp='children' defaultValue={(guideSelectOptions.length == 0 || city.tourGuideId == 0) ? null : city.tourGuideId} onChange={(guideId) => { - reservationStore.setupCityGuide(city.cityId, guideId); + setupCityGuide(city.cityId, guideId); }} onSearch={(value) => { // console.log('search:', value); @@ -102,9 +102,9 @@ function Newest() { const formValuesToSub = useFormStore((state) => state.formValuesToSub) - const [fetchAllGuideList, fetchReservationList, reservationList, reservationPage, cityList, selectReservation, getCityListByReservationId] = + const [fetchAllGuideList, fetchReservationList, reservationList, reservationPage, cityList, selectReservation, getCityListByReservationId, setupCityGuide, updateReservationGuide] = useReservationStore((state) => - [state.fetchAllGuideList, state.fetchReservationList, state.reservationList, state.reservationPage, state.cityList, state.selectReservation, state.getCityListByReservationId]) + [state.fetchAllGuideList, state.fetchReservationList, state.reservationList, state.reservationPage, state.cityList, state.selectReservation, state.getCityListByReservationId, state.setupCityGuide, state.updateReservationGuide]) const { notification } = App.useApp() @@ -143,7 +143,7 @@ function Newest() { }) } const handleOk = () => { - reservationStore.updateReservationGuide() + updateReservationGuide() .finally(() => { setIsModalOpen(false); setDataLoading(false);