|
|
|
import React, { Children, useContext, useState } from 'react';
|
|
|
|
import { observer } from 'mobx-react';
|
|
|
|
import { stores_Context } from '../config';
|
|
|
|
import moment from 'moment';
|
|
|
|
import { Row, Col, Table, Select, Space, Typography, Progress, Spin, Divider, Button, Switch } from 'antd';
|
|
|
|
import SearchForm from './../components/search/SearchForm';
|
|
|
|
import { VSTag, TableExportBtn } from './../components/Data';
|
|
|
|
|
|
|
|
const {Text} = Typography;
|
|
|
|
|
|
|
|
export default observer((props) => {
|
|
|
|
const { sale_store, date_picker_store: searchFormStore } = useContext(stores_Context);
|
|
|
|
const { customerServicesStore, HotelCruiseStore, date_picker_store } = useContext(stores_Context);
|
|
|
|
const { loading, dataSource } = HotelCruiseStore.cruise;
|
|
|
|
|
|
|
|
const { formValues, siderBroken } = searchFormStore;
|
|
|
|
|
|
|
|
const tableProps = {
|
|
|
|
size: 'small',
|
|
|
|
bordered: true, pagination: false,
|
|
|
|
columns: [
|
|
|
|
{ title: '产品', dataIndex: 'ProductName', key: 'ProductName' },
|
|
|
|
{
|
|
|
|
title: '房间数',
|
|
|
|
dataIndex: 'TotalNum',
|
|
|
|
key: 'TotalNum',
|
|
|
|
render: (v, r) => (
|
|
|
|
<>
|
|
|
|
<Space direction={'vertical'}>
|
|
|
|
<Text strong>
|
|
|
|
{v}
|
|
|
|
{r.CPTotalNum && <Text type="secondary"> VS {r.CPTotalNum}</Text>}
|
|
|
|
</Text>
|
|
|
|
{r.CPTotalNum && <VSTag diffPercent={r.TotalNumPercent} />}
|
|
|
|
</Space>
|
|
|
|
</>
|
|
|
|
),
|
|
|
|
},
|
|
|
|
{ title: '人数', dataIndex: 'TotalPersonNum', key: 'TotalPersonNum' },
|
|
|
|
{ title: '总利润', dataIndex: 'TotalProfit', key: 'TotalProfit',
|
|
|
|
render: (v, r) => (
|
|
|
|
<>
|
|
|
|
<Space direction={'vertical'}>
|
|
|
|
<Text strong>
|
|
|
|
{v}
|
|
|
|
{r.CPTotalProfit && <Text type="secondary"> VS {r.CPTotalProfit}</Text>}
|
|
|
|
</Text>
|
|
|
|
{r.CPTotalNum && <VSTag diffPercent={r.TotalProfitPercent} />}
|
|
|
|
</Space>
|
|
|
|
</>
|
|
|
|
), },
|
|
|
|
// { title: '单订船', dataIndex: '', key: '' },
|
|
|
|
// { title: '订单含行程', dataIndex: '', key: '' },
|
|
|
|
// { title: '国籍', dataIndex: '', key: '' },
|
|
|
|
],
|
|
|
|
};
|
|
|
|
|
|
|
|
return (
|
|
|
|
<>
|
|
|
|
<Row gutter={16} className={siderBroken ? '' : 'sticky-top'}>
|
|
|
|
<Col md={24} lg={24} xxl={24}>
|
|
|
|
<SearchForm
|
|
|
|
defaultValue={{
|
|
|
|
initialValue: {
|
|
|
|
...date_picker_store.formValues,
|
|
|
|
...HotelCruiseStore.searchValues,
|
|
|
|
},
|
|
|
|
// 'countryArea',
|
|
|
|
shows: [
|
|
|
|
'DepartmentList', 'orderStatus', 'dates', 'keyword', 'cruiseDirection', 'agency',
|
|
|
|
// 'cruiseBookType', 'country', 'roomsRange', 'personRange'
|
|
|
|
],
|
|
|
|
sort: { keyword: 101, agency: 103, cruiseDirection: 102, country: 104 },
|
|
|
|
fieldProps: {
|
|
|
|
keyword: { placeholder: '产品名', col: 4 },
|
|
|
|
DepartmentList: { show_all: true, mode: 'multiple' },
|
|
|
|
orderStatus: { show_all: true },
|
|
|
|
cruiseDirection: { show_all: true },
|
|
|
|
// years: { hide_vs: false },
|
|
|
|
},
|
|
|
|
}}
|
|
|
|
onSubmit={(_err, obj, form) => {
|
|
|
|
HotelCruiseStore.setSearchValues(obj, form);
|
|
|
|
HotelCruiseStore.getCruiseData(obj);
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
</Col>
|
|
|
|
</Row>
|
|
|
|
<section>
|
|
|
|
<Table {...tableProps} {...{loading, dataSource}} rowKey={(record) => record.ProductName} />
|
|
|
|
</section>
|
|
|
|
</>
|
|
|
|
);
|
|
|
|
});
|