From d1ee551a4e24af6d8f3c7bc25b1b3b91402ecc8e Mon Sep 17 00:00:00 2001 From: Lei OT Date: Tue, 18 Feb 2025 15:19:55 +0800 Subject: [PATCH] =?UTF-8?q?todo:=20=E4=B8=89=E5=B3=A1,=20=E9=85=92?= =?UTF-8?q?=E5=BA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.jsx | 8 ++- src/components/search/HotelStarSelect.jsx | 40 ++++++++++++ src/components/search/SearchForm.jsx | 78 ++++++++++++++++++++++- src/libs/ht.js | 16 +++++ src/stores/CustomerServices.js | 1 + src/views/Cruise.jsx | 59 +++++++++++++++++ src/views/Hotel.jsx | 55 ++++++++++++++++ 7 files changed, 255 insertions(+), 2 deletions(-) create mode 100644 src/components/search/HotelStarSelect.jsx create mode 100644 src/views/Cruise.jsx create mode 100644 src/views/Hotel.jsx diff --git a/src/App.jsx b/src/App.jsx index 4db3f01..1c4bec5 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -55,6 +55,8 @@ import CooperationIcon from './components/icons/CooperationIcon'; import OPDashboard from './views/OPDashboard'; import OPActivity from './views/OPActivity'; import OPRisk from './views/OPRisk'; +import Cruise from './views/Cruise'; +import Hotel from './views/Hotel'; const App = () => { const { Content, Footer, Sider, } = Layout; @@ -158,6 +160,8 @@ const App = () => { key: 62, label: 目的地接团, }, + { key: 'cruise', label: 三峡游船 }, + { key: 'hotel', label: 酒店 }, ], }, { @@ -259,7 +263,9 @@ const App = () => { } /> } /> } /> - + } /> + } /> + }> } /> } /> diff --git a/src/components/search/HotelStarSelect.jsx b/src/components/search/HotelStarSelect.jsx new file mode 100644 index 0000000..8796dd0 --- /dev/null +++ b/src/components/search/HotelStarSelect.jsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { Select } from 'antd'; +import { observer } from 'mobx-react'; +import { HotelStars as options } from '../../libs/ht'; + +const HotelStars = (props) => { + const { mode, value, onChange, show_all, ...extProps } = props; + const _show_all = ['tags', 'multiple'].includes(mode) ? false : show_all; + return ( +
+ +
+ ); +}; +/** + * 酒店星级 + */ +export default observer(HotelStars); diff --git a/src/components/search/SearchForm.jsx b/src/components/search/SearchForm.jsx index cb93e7f..59b58b5 100644 --- a/src/components/search/SearchForm.jsx +++ b/src/components/search/SearchForm.jsx @@ -3,7 +3,7 @@ import { toJS } from 'mobx'; import { observer } from 'mobx-react'; import { DATE_FORMAT, SMALL_DATETIME_FORMAT, stores_Context } from './../../config'; import { SearchOutlined } from '@ant-design/icons'; -import { Form, Row, Col, Select, Button, Space, DatePicker } from 'antd'; +import { Form, Row, Col, Select, Button, Space, DatePicker, Input } from 'antd'; import moment from 'moment'; // import locale from 'antd/es/date-picker/locale/zh_CN'; import BusinessSelect from './BusinessSelect'; @@ -17,6 +17,7 @@ import SearchInput from './Input'; import { objectMapper, at, empty, isEmpty } from './../../utils/commons'; import './search.css'; +import HotelStarSelect from './HotelStarSelect'; const EditableContext = createContext(); const Option = Select.Option; @@ -263,6 +264,14 @@ function getFields(props) { }; let baseChildren = []; baseChildren = [ + item( + "keyword", // 关键词搜索 {...fieldComProps.keyword} + 99, + + + , + fieldProps?.keyword?.col || 6 + ), item( 'agency', 99, @@ -456,6 +465,73 @@ function getFields(props) { ), + item( + 'cruiseType', + 99, + + + , + 3 + ), + item( + 'bookType', + 99, + + + , + 3 + ), + item( + 'recommandRate', + 99, + + + , + 3 + ), + item( + 'hotelStar', + 99, + + + + ), ]; baseChildren = baseChildren .map((x) => { diff --git a/src/libs/ht.js b/src/libs/ht.js index 5f878c5..a1fa130 100644 --- a/src/libs/ht.js +++ b/src/libs/ht.js @@ -178,6 +178,22 @@ export const KPISubjects = [ // { key: 'sum_person_num', value: 'sum_person_num', label: '人数' }, ]; +export const HotelStars = [ + { key: '5', value: '5', label: '5星' }, + { key: '4', value: '4', label: '4星' }, + { key: '3', value: '3', label: '3星' }, + { key: '2', value: '2', label: '2星' }, + { key: 'intl', value: 'intl', label: '国际社' }, + { key: 'internal', value: 'internal', label: '国内社' }, + { key: 'other', value: 'other', label: '其它' }, + { key: 'f5', value: 'f5', label: '准5星' }, + { key: 'f4', value: 'f4', label: '准4星' }, + { key: 'inn', value: 'inn', label: '客栈' }, + { key: 'apartment', value: 'apartment', label: '公寓' }, + { key: 'siheyuan', value: 'siheyuan', label: '四合院酒店' }, + { key: 'luxury5', value: 'luxury5', label: '豪华五星' }, +]; + /** * 计算指标值的分段区间 * @param {number} value diff --git a/src/stores/CustomerServices.js b/src/stores/CustomerServices.js index 141a7f4..e7ed2d4 100644 --- a/src/stores/CustomerServices.js +++ b/src/stores/CustomerServices.js @@ -459,6 +459,7 @@ class CustomerServices { searchValues = { DateType: { key: 'startDate', label: '走团日期'}, + countryArea: { key: 'china', label: '国内' }, }; setSearchValues(obj, values) { diff --git a/src/views/Cruise.jsx b/src/views/Cruise.jsx new file mode 100644 index 0000000..ab189fd --- /dev/null +++ b/src/views/Cruise.jsx @@ -0,0 +1,59 @@ +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'; + +export default observer((props) => { + const { sale_store, date_picker_store: searchFormStore } = useContext(stores_Context); + const { customerServicesStore, date_picker_store } = useContext(stores_Context); + + const { formValues, siderBroken } = searchFormStore; + + const tableProps = { + size: 'small', + columns: [ + { title: '产品', dataIndex: 'op', key: 'op' }, + { title: '房间数', dataIndex: 'action', key: 'action' }, + { title: '人数', dataIndex: 'action', key: 'action' }, + { title: '总利润', dataIndex: 'action', key: 'action' }, + { title: '单订船', dataIndex: 'action', key: 'action' }, + { title: '订单含行程', dataIndex: 'action', key: 'action' }, + { title: '国籍', dataIndex: 'action', key: 'action' }, + ], + }; + + return ( + <> + + + { + customerServicesStore.setSearchValues(obj, form); + // customerServicesStore.fetchDestinationGroupCount(); + }} + /> + + +
+ + + + ); +}); diff --git a/src/views/Hotel.jsx b/src/views/Hotel.jsx new file mode 100644 index 0000000..8ad1902 --- /dev/null +++ b/src/views/Hotel.jsx @@ -0,0 +1,55 @@ +import React, { useContext } from 'react'; +import { observer } from 'mobx-react'; +import { stores_Context } from '../config'; +import { Row, Col, Table } from 'antd'; +import SearchForm from './../components/search/SearchForm'; + +export default observer((props) => { + const { sale_store, date_picker_store: searchFormStore } = useContext(stores_Context); + const { customerServicesStore, date_picker_store } = useContext(stores_Context); + + const { formValues, siderBroken } = searchFormStore; + + const tableProps = { + size: 'small', + columns: [ + { title: '目的地', dataIndex: 'op', key: 'op' }, + { title: '总间夜', dataIndex: 'action', key: 'action' }, + { title: '主推', dataIndex: 'action', key: 'action' }, + { title: '使用比例', dataIndex: 'action', key: 'action' }, + ], + }; + + return ( + <> + + + { + customerServicesStore.setSearchValues(obj, form); + // customerServicesStore.fetchDestinationGroupCount(); + }} + /> + + +
+
+ + + ); +});