From c37a03e79300fafbcde9f4b14962b3c0d91bc0f3 Mon Sep 17 00:00:00 2001 From: Jimmy Liow <18777396951@163.com> Date: Mon, 8 May 2023 15:10:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8D=95=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=B8=83=E5=B1=80=EF=BC=9B=E5=A2=9E=E5=8A=A0=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=90=8D=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.jsx | 3 +- src/stores/Auth.js | 55 ++++++++- src/stores/Reservation.js | 31 ++--- src/views/Login.jsx | 189 ++++++++++++++----------------- src/views/Standlone.jsx | 57 ++++++++++ src/views/reservation/Newest.jsx | 10 +- 6 files changed, 220 insertions(+), 125 deletions(-) create mode 100644 src/views/Standlone.jsx diff --git a/src/main.jsx b/src/main.jsx index daccdf7..f930416 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -9,6 +9,7 @@ import RootStore from "@/stores/Root"; import { StoreContext } from '@/stores/StoreContext'; import "@/assets/global.css"; import App from "@/views/App"; +import Standlone from "@/views/Standlone"; import Login from "@/views/Login"; import SignOut from "@/views/SignOut"; import Index from "@/views/index"; @@ -48,7 +49,7 @@ const router = createBrowserRouter([ ] }, { - element: , + element: , children: [ { path: "/login", element: }, { path: "/sign-out", element: } diff --git a/src/stores/Auth.js b/src/stores/Auth.js index b3e1e0a..1ad725a 100644 --- a/src/stores/Auth.js +++ b/src/stores/Auth.js @@ -1,4 +1,7 @@ -import { makeAutoObservable } from "mobx"; +import { makeAutoObservable, runInAction } from "mobx"; +import { fetchJSON } from '@/utils/request'; +import { HT_HOST } from "@/config"; +import { prepareUrl } from '@/utils/commons'; class Auth { @@ -7,10 +10,56 @@ class Auth { this.root = root; } + valdateUserPassword(usr, pwd) { + const fetchUrl = prepareUrl(HT_HOST + '/service-Cooperate/Cooperate/Login') + .append('username', usr) + .append('password', pwd) + .build(); + + return fetchJSON(fetchUrl) + .then(json => { + if (json.errcode == 0) { + runInAction(() => { + this.login = { + userId: json.Result.WU_LMI_SN, + username: json.Result.WU_UserName, + } + }); + } else { + throw new Error(json.errmsg + ': ' + json.errcode); + } + }); + } + + fetchUserDetail(userId) { + const fetchUrl = prepareUrl(HT_HOST + '/service-Cooperate/Cooperate/GetLinkManInfo') + .append('LMI_SN', userId) + .build(); + + return fetchJSON(fetchUrl) + .then(json => { + if (json.errcode == 0) { + runInAction(() => { + this.login = { + userId: json.Result.LMI_SN, + username: json.Result.LoginName, + travelAgencyId: json.Result.LMI_VEI_SN, + travelAgencyName: json.Result.VName, + cityId: json.Result.citysn + } + }); + } else { + throw new Error(json.errmsg + ': ' + json.errcode); + } + }); + } + login = { userId: 1, - username: 'Vu Xuan Giang(ANP)', - travelAgencyId: 32531 //30008供应商id对应HT的VEI_SN + username: 'Vu Xuan Giang', + travelAgencyId: 32531, //30008供应商id对应HT的VEI_SN + travelAgencyName: 'ANP', + cityId: 0 } } diff --git a/src/stores/Reservation.js b/src/stores/Reservation.js index 3edbe85..7c02b8d 100644 --- a/src/stores/Reservation.js +++ b/src/stores/Reservation.js @@ -1,5 +1,5 @@ import { makeAutoObservable, runInAction } from "mobx"; -import { fetchJSON } from '@/utils/request'; +import { fetchJSON, postForm } from '@/utils/request'; import { HT_HOST } from "@/config"; import { prepareUrl } from '@/utils/commons'; @@ -31,7 +31,7 @@ class Reservation { this.reservationList = json.Result.map((data, index) => { return { key: data.vas_gri_sn, - referenceId: data.vas_gri_sn, + reservationId: data.vas_gri_sn, referenceNumber: data.GriName, arrivalDate: data.GetGDate, pax: data.PersonNum, @@ -96,11 +96,10 @@ class Reservation { 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, - reservationId: reservationId, - travelAgencyId: this.root.authStore.login.travelAgencyId, + tourGuide: data.GuideName } }); } else { @@ -110,17 +109,17 @@ class Reservation { }); } - setupCityGuide() { + setupCityGuide(cityId, guideId) { let formData = new FormData(); - formData.append('GRI_SN', 1); - formData.append('VEI_SN', 1); - formData.append('TGI_SN', 1); - formData.append('CII_SN', 1); - formData.append('GetDate', '2023-06-01'); - formData.append('LMI_SN', 1); + formData.append('GRI_SN', this.selectedReservation.reservationId); + formData.append('VEI_SN', this.root.authStore.login.travelAgencyId); + formData.append('TGI_SN', cityId); + formData.append('CII_SN', guideId); + formData.append('GetDate', this.selectedReservation.reservationDate); + formData.append('LMI_SN', this.root.authStore.login.userId); const postUrl = HT_HOST + '/service-cusservice/PTAddGuide'; - return req.postForm(postUrl, formData) + return postForm(postUrl, formData) .then(json => { console.info(json); }); @@ -149,9 +148,15 @@ class Reservation { }); } + editReservation(reservation) { + this.selectedReservation = reservation; + } + guideList = []; cityList = []; + selectedReservation = null; + reservationList = []; reservationDetail = { diff --git a/src/views/Login.jsx b/src/views/Login.jsx index 827a94b..794b571 100644 --- a/src/views/Login.jsx +++ b/src/views/Login.jsx @@ -1,109 +1,90 @@ -import { Button, Checkbox, Form, Input, Row, Typography, Layout } from 'antd'; -const { Header, Footer, Sider, Content } = Layout; -const { Title } = Typography; -const headerStyle = { - textAlign: 'center', - // color: '#fff', - height: 64, - paddingInline: 50, - lineHeight: '64px', - backgroundColor: '#f5f5f5', -}; -const contentStyle = { - textAlign: 'center', - minHeight: 600, - lineHeight: '120px', - // color: '#fff', - // backgroundColor: '#108ee9', -}; -const footerStyle = { - textAlign: 'center', - // color: '#fff', - // backgroundColor: '#7dbcea', -}; -const onFinish = (values) => { - console.log('Success:', values); -}; -const onFinishFailed = (errorInfo) => { - console.log('Failed:', errorInfo); -}; -const Login = () => ( - -
- Global Highlights Hub -
- - -
- - - +import { Button, Checkbox, Form, Input, Row, App } from 'antd'; +import { useStore } from '@/stores/StoreContext.js'; - - - - - Remember me - +function Login() { + const { authStore } = useStore(); + const { notification } = App.useApp(); - - - -
-
-
-
Footer
-
+ const onFinish = (values) => { + console.log('Success:', values); + authStore.valdateUserPassword(values.username, values.password); + }; + + const onFinishFailed = (errorInfo) => { + console.log('Failed:', errorInfo); + }; + + return ( + +
+ + + + + + + + + + Remember me + + + + + +
+
+ ); +} -); export default Login; \ No newline at end of file diff --git a/src/views/Standlone.jsx b/src/views/Standlone.jsx new file mode 100644 index 0000000..93333f7 --- /dev/null +++ b/src/views/Standlone.jsx @@ -0,0 +1,57 @@ +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"; + +const { Title } = Typography; +const { Header, Content, Footer } = Layout; + +function Standlone() { + const { authStore } = useStore(); + + const { + token: { colorBgContainer }, + } = theme.useToken(); + + return ( + + + +
+ + + App logo + + Global Highlights Hub + +
+ + + +
+
+
+
+ ); +} + +export default observer(Standlone); diff --git a/src/views/reservation/Newest.jsx b/src/views/reservation/Newest.jsx index ae9a073..4fcfa87 100644 --- a/src/views/reservation/Newest.jsx +++ b/src/views/reservation/Newest.jsx @@ -13,7 +13,7 @@ function Newest() { title: 'Reference number', dataIndex: 'referenceNumber', key: 'Reference number', - render: (text, record) => {text}, + render: (text, record) => {text}, }, { title: 'Arrival date', @@ -71,11 +71,12 @@ function Newest() { allowClear placeholder="Select a guide" optionFilterProp="children" - onChange={(value) => { + onChange={(guideId) => { console.log(`selected:`); - console.log(value); + console.log(guideId); console.log(`city:`); console.log(city); + reservationStore.setupCityGuide(city.cityId, guideId); }} onSearch={(value) => { console.log('search:', value); @@ -105,8 +106,9 @@ function Newest() { const showCityGuideModal = (reservation) => { setDataLoading(true); setIsModalOpen(true); + reservationStore.editReservation(reservation); reservationStore.fetchGuideList(); - reservationStore.fetchCityList(reservation.referenceId) + reservationStore.fetchCityList(reservation.reservationId) .catch(ex => { notification.error({ message: `Notification`,