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();
-
-
-
-
-
-
-
-
+ 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 (
+
+
+
+
+
+
+
+
+ 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`,