From 7140e12b0d2c55fb86eecf28fdcb0e3d3aafbc41 Mon Sep 17 00:00:00 2001 From: txb Date: Fri, 25 Nov 2022 15:05:04 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E5=AE=9A=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.js | 7 ++ src/app.jsx | 7 ++ src/pages/card/reservation/index.css | 39 +++++++ src/pages/card/reservation/index.jsx | 140 ++++++++++++++++++++++++++ src/pages/card/reservation/service.js | 19 ++++ 5 files changed, 212 insertions(+) create mode 100644 src/pages/card/reservation/index.css create mode 100644 src/pages/card/reservation/index.jsx create mode 100644 src/pages/card/reservation/service.js diff --git a/config/routes.js b/config/routes.js index 7329e3e..f5eea54 100644 --- a/config/routes.js +++ b/config/routes.js @@ -185,6 +185,13 @@ export default [ component: './card/checkgoods', access: 'k10', }, + { + name: '预定报表', + icon: 'smile', + path: '/card/reservation', + component: './card/reservation', + access: 'k10', + }, ] }, { diff --git a/src/app.jsx b/src/app.jsx index f8c6a76..ec7736d 100644 --- a/src/app.jsx +++ b/src/app.jsx @@ -304,6 +304,13 @@ export async function getInitialState() { component: './card/checkgoods', access: 'k10', }, + { + name: '预定报表', + icon: 'smile', + path: '/card/reservation', + component: './card/reservation', + access: 'k10', + }, ] }, { diff --git a/src/pages/card/reservation/index.css b/src/pages/card/reservation/index.css new file mode 100644 index 0000000..ebd5007 --- /dev/null +++ b/src/pages/card/reservation/index.css @@ -0,0 +1,39 @@ +.welcome-head { + display: flex; + align-items: center; + justify-content: space-between; +} + +.welcome-head-org { + flex-shrink: 0; + margin-left: 10px; + width: 300px !important; + cursor: pointer; + +} + + +.my-loading { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 999; +} + +.device-list { + width: 200px; + margin-left: 30px; +} + +.my-range-picker { + flex-shrink: 0; + width: 300px; +} + +.tabs-title { + font-size: 20px; + margin-bottom: 20px; + font-weight: 600; +} \ No newline at end of file diff --git a/src/pages/card/reservation/index.jsx b/src/pages/card/reservation/index.jsx new file mode 100644 index 0000000..b611d5a --- /dev/null +++ b/src/pages/card/reservation/index.jsx @@ -0,0 +1,140 @@ +import React, { useEffect, useState } from 'react'; +import { Card, Select, message, Spin, TreeSelect } from 'antd'; +import { DatePicker, Button, Tabs, Table, Tag, Space } from 'antd'; +import moment from 'moment'; +import API from "./service"; +import styles from './index.css'; +import { PageContainer } from '@ant-design/pro-layout'; +const { RangePicker } = DatePicker; + +const { TabPane } = Tabs; + +const ReservationGoodsColums = [ + { + title: '商品', + dataIndex: 'name', + }, + { + title: '用餐时段', + dataIndex: 'mealType', + render: (_, record) => { + if (record.mealType === '1') { + return '早餐' + } + if (record.mealType === '2') { + return '午餐' + } + if (record.mealType === '3') { + return '晚餐' + } + } + }, + { + title: '预定数量', + dataIndex: 'qty', + sortDirections: ['ascend', 'descend'], + sorter: (a, b) => a.value - b.value + } +] + +const ReservationUserColums = [ + { + title: '预定商品人员名称', + dataIndex: 'name', + } +] + + +export default () => { + const [ReservationGoods, setReservationGoods] = useState([]); + const [ReservationUser, setReservationUser] = useState([]); + const [isLoading, setIsLoading] = useState(false); + + const [timeRange, setTimeRange] = useState([ + moment(moment(new Date(Date.now() + 24 * 60 * 60 * 1000)).format('YYYY-MM-DD 00:00:00')), + moment(moment(new Date(Date.now() + 24 * 60 * 60 * 1000)).format('YYYY-MM-DD 23:59:59')), + ]); //日期选择器 + + //初始化数据 + const initData = () => { + let jsonData = { + "beginTime": timeRange[0]._i, + "endTime": timeRange[1]._i + } + onGetReservationGoodsData(jsonData); + onGetReservationUserData(jsonData); + } + + //获取材料数据 + const onGetReservationGoodsData = async (jsonData) => { + let response; + setIsLoading(true); + response = await API.GetReservationGoods(jsonData); + setIsLoading(false); + + if (response.succeeded) { + let sortArr = response.data.data.sort((a, b) => b.value - a.value); + setReservationGoods(sortArr); + } else { + console.log('Message:', response.msg || '获取预定商品失败'); + } + } + + //获取配方数据 + const onGetReservationUserData = async (jsonData) => { + let response; + setIsLoading(true); + response = await API.GetReservationUser(jsonData); + setIsLoading(false); + if (response.succeeded) { + let sortArr = response.data.data.sort((a, b) => b.value - a.value); + setReservationUser(sortArr); + } else { + console.log('Message:', response.msg || '获取预定人员失败'); + // message.error(response.msg || '获取配方信息失败'); + } + } + + const MyLoading = () => { + return ( + + ) + } + return ( + +
+ {isLoading ? : null} + +
+
+ { + let tempDate = [ + moment(moment(new Date(dateStrings[0])).format('YYYY-MM-DD 00:00:00')), + moment(moment(new Date(dateStrings[1])).format('YYYY-MM-DD 23:59:59')), + ] + setTimeRange(tempDate); + }} /> +
+ +
+
+ + + +
+ 预定菜品统计 +
+ + + +
+ 预定人员列表 +
+
+ + + + + + ); +}; diff --git a/src/pages/card/reservation/service.js b/src/pages/card/reservation/service.js new file mode 100644 index 0000000..4fd6c9c --- /dev/null +++ b/src/pages/card/reservation/service.js @@ -0,0 +1,19 @@ +import { request } from 'umi'; + +export default { + //获取所有门店 + GetReservationUser(data) { + return request('/kitchen/api/Reservation/GetReservationUser', { + method: 'POST', + data + }); + }, + + //获取会员分页 + GetReservationGoods(data) { + return request('/kitchen/api/Reservation/GetReservationGoods', { + method: 'POST', + data + }); + } +}