Merge branch 'main' of github.com:hainatravel/GHHub
commit
8f0828aba8
@ -0,0 +1,109 @@
|
||||
import { makeAutoObservable,runInAction } from "mobx";
|
||||
import { fetchJSON } from "@/utils/request";
|
||||
import { prepareUrl } from '@/utils/commons';
|
||||
import { HT_HOST } from "@/config";
|
||||
|
||||
class Invoice {
|
||||
constructor(root) {
|
||||
makeAutoObservable(this, { rootStore: false });
|
||||
this.root = root;
|
||||
}
|
||||
|
||||
invoiceList = []; //账单列表
|
||||
|
||||
|
||||
|
||||
fetchInvoiceList(PageIndex,OrderType,GroupNo,DateStart,DateEnd,Orderbytype,TimeType,limitmarket,mddgroup,SecuryGroup){
|
||||
this.invoicePage.current=PageIndex;
|
||||
const totalNum = PageIndex == 1 ? 0 : this.invoicePage.total;
|
||||
//组合param
|
||||
const fetchUrl = prepareUrl(HT_HOST + '/service-cusservice/PTSearchGMBPageList')
|
||||
.append('VEI_SN', this.root.authStore.login.travelAgencyId)
|
||||
.append('OrderType',OrderType)
|
||||
.append('GroupNo',GroupNo)
|
||||
.append('DateStart',DateStart)
|
||||
.append('DateEnd',DateEnd)
|
||||
.append('Orderbytype',Orderbytype)
|
||||
.append('TimeType',TimeType)
|
||||
.append('limitmarket',limitmarket)
|
||||
.append('mddgroup',mddgroup)
|
||||
.append('SecuryGroup',SecuryGroup)
|
||||
.append('TotalNum', totalNum)
|
||||
.append('PageSize', this.invoicePage.size)
|
||||
.append('PageIndex', this.invoicePage.current)
|
||||
.build();
|
||||
|
||||
return fetchJSON(fetchUrl)
|
||||
.then(json => {
|
||||
runInAction(()=>{
|
||||
if (json.errcode==0){
|
||||
this.invoiceList = json.result.map((data,index)=>{
|
||||
return{
|
||||
key:GSMSN,
|
||||
gmd_gri_sn : data.gmd_gri_sn,
|
||||
gmd_vei_sn : data.gmd_vei_sn,
|
||||
GetDate : data.GetDate,
|
||||
GMD_FillWorkers_SN : data.GMD_FillWorkers_SN,
|
||||
GMD_FWks_LastEditTime : data.GMD_FWks_LastEditTime,
|
||||
GMD_VerifyUser_SN : data.GMD_VerifyUser_SN,
|
||||
GMD_Dealed : data.GMD_Dealed,
|
||||
GMD_VRequestVerify : data.GMD_VRequestVerify,
|
||||
LeftGDate : data.LeftGDate,
|
||||
GMD_FillWorkers_Name : data.GMD_FillWorkers_Name,
|
||||
GroupName : data.GroupName,
|
||||
AllMoney : data.AllMoney,
|
||||
PersonNum : data.PersonNum,
|
||||
VName : data.VName
|
||||
}
|
||||
|
||||
});
|
||||
this.invoicePage.total = json.result[0].TotalCount;
|
||||
}else{
|
||||
throw new Error(json.errmsg + ': ' + json.errcode);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
invoicePage = {
|
||||
current:1,
|
||||
size:10,
|
||||
total:0
|
||||
}
|
||||
|
||||
/* 测试数据 */
|
||||
//账单列表范例数据
|
||||
testData=
|
||||
[
|
||||
{
|
||||
"GSMSN":449865,
|
||||
"gmd_gri_sn":334233,
|
||||
"gmd_vei_sn":628,
|
||||
"GetDate":"2023-04-2 00:33:33",
|
||||
"GMD_FillWorkers_SN":8617,
|
||||
"GMD_FWks_LastEditTime":"2023-04-26 12:33:33",
|
||||
"GMD_VerifyUser_SN":8928,
|
||||
"GMD_Dealed":1,
|
||||
"GMD_VRequestVerify":1,
|
||||
"TotalCount":22,
|
||||
"LeftGDate":"2023-03-30 00:00:00",
|
||||
"GMD_FillWorkers_Name":"",
|
||||
"GroupName":" 中华游230501-CA230402033",
|
||||
"AllMoney":3539,
|
||||
"PersonNum":"1大1小",
|
||||
"VName":""
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
|
||||
export default Invoice;
|
||||
|
||||
|
||||
|
||||
|
@ -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 = () => (
|
||||
<Layout>
|
||||
<Header style={headerStyle}>
|
||||
<Title>Global Highlights Hub</Title>
|
||||
</Header>
|
||||
<Content style={contentStyle}>
|
||||
<Row justify="center" align="middle" style={{minHeight: 600}}>
|
||||
<Form
|
||||
name="basic"
|
||||
labelCol={{
|
||||
span: 8,
|
||||
}}
|
||||
wrapperCol={{
|
||||
span: 16,
|
||||
}}
|
||||
style={{
|
||||
maxWidth: 600,
|
||||
}}
|
||||
initialValues={{
|
||||
remember: true,
|
||||
}}
|
||||
onFinish={onFinish}
|
||||
onFinishFailed={onFinishFailed}
|
||||
autoComplete="off"
|
||||
>
|
||||
<Form.Item
|
||||
label="Username"
|
||||
name="username"
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: 'Please input your username!',
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
import { Button, Checkbox, Form, Input, Row, App } from 'antd';
|
||||
import { useStore } from '@/stores/StoreContext.js';
|
||||
|
||||
<Form.Item
|
||||
label="Password"
|
||||
name="password"
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: 'Please input your password!',
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input.Password />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="remember"
|
||||
valuePropName="checked"
|
||||
wrapperCol={{
|
||||
offset: 8,
|
||||
span: 16,
|
||||
}}
|
||||
>
|
||||
<Checkbox>Remember me</Checkbox>
|
||||
</Form.Item>
|
||||
function Login() {
|
||||
const { authStore } = useStore();
|
||||
const { notification } = App.useApp();
|
||||
|
||||
<Form.Item
|
||||
wrapperCol={{
|
||||
offset: 8,
|
||||
span: 16,
|
||||
}}
|
||||
>
|
||||
<Button type="primary" htmlType="submit">
|
||||
Submit
|
||||
</Button>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</Row>
|
||||
</Content>
|
||||
<Footer style={footerStyle}>Footer</Footer>
|
||||
</Layout>
|
||||
const onFinish = (values) => {
|
||||
console.log('Success:', values);
|
||||
authStore.valdateUserPassword(values.username, values.password);
|
||||
};
|
||||
|
||||
const onFinishFailed = (errorInfo) => {
|
||||
console.log('Failed:', errorInfo);
|
||||
};
|
||||
|
||||
return (
|
||||
<Row justify="center" align="middle" style={{ minHeight: 500 }}>
|
||||
<Form
|
||||
name="basic"
|
||||
labelCol={{
|
||||
span: 8,
|
||||
}}
|
||||
wrapperCol={{
|
||||
span: 16,
|
||||
}}
|
||||
style={{
|
||||
maxWidth: 600,
|
||||
}}
|
||||
initialValues={{
|
||||
remember: true,
|
||||
}}
|
||||
onFinish={onFinish}
|
||||
onFinishFailed={onFinishFailed}
|
||||
autoComplete="off"
|
||||
>
|
||||
<Form.Item
|
||||
label="Username"
|
||||
name="username"
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: 'Please input your username!',
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label="Password"
|
||||
name="password"
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: 'Please input your password!',
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input.Password />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
name="remember"
|
||||
valuePropName="checked"
|
||||
wrapperCol={{
|
||||
offset: 8,
|
||||
span: 16,
|
||||
}}
|
||||
>
|
||||
<Checkbox>Remember me</Checkbox>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
wrapperCol={{
|
||||
offset: 8,
|
||||
span: 16,
|
||||
}}
|
||||
>
|
||||
<Button type="primary" htmlType="submit">
|
||||
Submit
|
||||
</Button>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</Row>
|
||||
);
|
||||
}
|
||||
|
||||
);
|
||||
export default Login;
|
@ -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 (
|
||||
<ConfigProvider
|
||||
theme={{
|
||||
token: {
|
||||
colorPrimary: "#00b96b",
|
||||
},
|
||||
algorithm: theme.defaultAlgorithm,
|
||||
}}>
|
||||
<AntApp>
|
||||
<Layout
|
||||
style={{
|
||||
minHeight: "100vh",
|
||||
}}>
|
||||
<Header className="header" style={{ position: "sticky", top: 0, zIndex: 1, width: "100%" }}>
|
||||
<Row gutter={{ md: 24 }} justify="center">
|
||||
<Col span={4}>
|
||||
<img src={AppLogo} className="logo" alt="App logo" />
|
||||
</Col>
|
||||
<Col span={20}><Title style={{ color: "white", marginTop: "3.5px" }}>Global Highlights Hub</Title></Col>
|
||||
</Row>
|
||||
</Header>
|
||||
<Content
|
||||
style={{
|
||||
padding: 24,
|
||||
margin: 0,
|
||||
minHeight: 280,
|
||||
background: colorBgContainer,
|
||||
}}>
|
||||
<Outlet />
|
||||
</Content>
|
||||
<Footer></Footer>
|
||||
</Layout>
|
||||
</AntApp>
|
||||
</ConfigProvider>
|
||||
);
|
||||
}
|
||||
|
||||
export default observer(Standlone);
|
@ -0,0 +1,23 @@
|
||||
import { useParams, useNavigate } from "react-router-dom";
|
||||
import { useEffect, useState } from "react";
|
||||
import { observer } from "mobx-react";
|
||||
|
||||
function Detail() {
|
||||
const navigate = useNavigate();
|
||||
const {GMDSN,GSN} = useParams();
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
setDataLoading(true);
|
||||
|
||||
|
||||
},[GMDSN,GSN]);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
export default observer(Detail);
|
||||
|
@ -0,0 +1,20 @@
|
||||
import { NavLink } from "react-router-dom";
|
||||
import { useEffect, useState } from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { toJS } from "mobx";
|
||||
import { Row, Col, Space, Button, Table, Input, DatePicker } from "antd";
|
||||
import { useStore } from "@/stores/StoreContext.js";
|
||||
import * as config from "@/config";
|
||||
|
||||
function Index() {
|
||||
|
||||
return (
|
||||
|
||||
<Space><h1>"账单列表!"</h1></Space>
|
||||
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
||||
export default observer(Index);
|
Loading…
Reference in New Issue