|
@@ -1,6 +1,6 @@
|
|
import React, { useCallback, useEffect, useMemo, useState } from 'react'
|
|
import React, { useCallback, useEffect, useMemo, useState } from 'react'
|
|
import styles from './index.module.scss'
|
|
import styles from './index.module.scss'
|
|
-import { Button } from 'antd'
|
|
|
|
|
|
+import { Button, Input, Select, DatePicker } from 'antd'
|
|
import { useDispatch, useSelector } from 'react-redux'
|
|
import { useDispatch, useSelector } from 'react-redux'
|
|
import { B1EditInfoType } from './data'
|
|
import { B1EditInfoType } from './data'
|
|
import { B_APIgetList, B_APIdel, B_APIexportExcel } from '@/store/action/Breserve'
|
|
import { B_APIgetList, B_APIdel, B_APIexportExcel } from '@/store/action/Breserve'
|
|
@@ -11,6 +11,10 @@ import MyTable from '@/components/MyTable'
|
|
import { B1tableC } from '@/utils/tableData'
|
|
import { B1tableC } from '@/utils/tableData'
|
|
import B1look from './B1look'
|
|
import B1look from './B1look'
|
|
import { MessageFu } from '@/utils/message'
|
|
import { MessageFu } from '@/utils/message'
|
|
|
|
+import { B_APIgetServe } from '@/store/action/Breserve'
|
|
|
|
+import dayjs from 'dayjs'
|
|
|
|
+import { start } from 'repl'
|
|
|
|
+
|
|
// import { exportExcelFile } from '@/utils/xlsxExport'
|
|
// import { exportExcelFile } from '@/utils/xlsxExport'
|
|
|
|
|
|
const pageDataBase = {
|
|
const pageDataBase = {
|
|
@@ -20,13 +24,38 @@ const pageDataBase = {
|
|
|
|
|
|
function B1reserve1() {
|
|
function B1reserve1() {
|
|
const dispatch = useDispatch()
|
|
const dispatch = useDispatch()
|
|
|
|
+ const { RangePicker } = DatePicker
|
|
|
|
|
|
const [pageData, setPageData] = useState(pageDataBase)
|
|
const [pageData, setPageData] = useState(pageDataBase)
|
|
|
|
+ const [name, setName] = useState('')
|
|
|
|
+ const [queryData, setQueryData] = useState<{
|
|
|
|
+ startTime?: string
|
|
|
|
+ endTime?: string
|
|
|
|
+ appointmentServiceId?: number
|
|
|
|
+ status?: number
|
|
|
|
+ }>({})
|
|
|
|
+ const [serverOptions, setServerOptions] = useState<{ label: string; value: number }[]>([])
|
|
|
|
+
|
|
|
|
+ const getListFu = useCallback(
|
|
|
|
+ (name?: string) => {
|
|
|
|
+ dispatch(B_APIgetList({ ...pageData, name: name || '', type: 1, ...queryData }))
|
|
|
|
+ },
|
|
|
|
+ [dispatch, pageData, queryData]
|
|
|
|
+ )
|
|
|
|
|
|
- const getListFu = useCallback(() => {
|
|
|
|
- // status: -1 全部 0 未发布 1 已发布
|
|
|
|
- dispatch(B_APIgetList({ ...pageData, type: 1 }))
|
|
|
|
- }, [dispatch, pageData])
|
|
|
|
|
|
+ const getServerOptions = useCallback(async () => {
|
|
|
|
+ const res = await B_APIgetServe()
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
+ setServerOptions([
|
|
|
|
+ { label: '全部', value: 0 },
|
|
|
|
+ ...res.data.map((item: any) => ({ label: item.context, value: item.id }))
|
|
|
|
+ ])
|
|
|
|
+ }
|
|
|
|
+ }, [])
|
|
|
|
+
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ getServerOptions()
|
|
|
|
+ }, [getServerOptions])
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
getListFu()
|
|
getListFu()
|
|
@@ -77,14 +106,18 @@ function B1reserve1() {
|
|
|
|
|
|
// 导出excel后端实现
|
|
// 导出excel后端实现
|
|
const exportExcelFu2 = useCallback(async () => {
|
|
const exportExcelFu2 = useCallback(async () => {
|
|
- const res: any = await B_APIexportExcel(1)
|
|
|
|
|
|
+ const res: any = await B_APIexportExcel({
|
|
|
|
+ type: 1,
|
|
|
|
+ name: name || '',
|
|
|
|
+ ...queryData
|
|
|
|
+ })
|
|
const downloadUrl = window.URL.createObjectURL(res)
|
|
const downloadUrl = window.URL.createObjectURL(res)
|
|
const link = document.createElement('a')
|
|
const link = document.createElement('a')
|
|
link.href = downloadUrl
|
|
link.href = downloadUrl
|
|
link.download = '展馆预约表.xlsx'
|
|
link.download = '展馆预约表.xlsx'
|
|
document.body.appendChild(link)
|
|
document.body.appendChild(link)
|
|
link.click()
|
|
link.click()
|
|
- }, [])
|
|
|
|
|
|
+ }, [name, queryData])
|
|
|
|
|
|
const tableLastBtn = useMemo(() => {
|
|
const tableLastBtn = useMemo(() => {
|
|
return [
|
|
return [
|
|
@@ -118,6 +151,71 @@ function B1reserve1() {
|
|
|
|
|
|
{/* 顶部筛选 */}
|
|
{/* 顶部筛选 */}
|
|
<div className='B1top'>
|
|
<div className='B1top'>
|
|
|
|
+ <div className='B1topLeft'>
|
|
|
|
+ <Input
|
|
|
|
+ style={{ width: 200 }}
|
|
|
|
+ placeholder='请输入姓名'
|
|
|
|
+ onChange={e => setName(e.target.value)}
|
|
|
|
+ value={name}
|
|
|
|
+ />
|
|
|
|
+ <Button type='primary' onClick={() => getListFu(name)}>
|
|
|
|
+ 搜索
|
|
|
|
+ </Button>
|
|
|
|
+ <Button
|
|
|
|
+ type='primary'
|
|
|
|
+ onClick={() => {
|
|
|
|
+ resetSelectFu()
|
|
|
|
+ setName('')
|
|
|
|
+ setQueryData({})
|
|
|
|
+ }}
|
|
|
|
+ >
|
|
|
|
+ 重置
|
|
|
|
+ </Button>
|
|
|
|
+ <div>
|
|
|
|
+ 预约日期:
|
|
|
|
+ <RangePicker
|
|
|
|
+ style={{ width: 400 }}
|
|
|
|
+ format='YYYY-MM-DD'
|
|
|
|
+ value={
|
|
|
|
+ queryData.startTime || queryData.endTime
|
|
|
|
+ ? [
|
|
|
|
+ queryData.startTime ? dayjs(queryData.startTime) : null,
|
|
|
|
+ queryData.endTime ? dayjs(queryData.endTime) : null
|
|
|
|
+ ]
|
|
|
|
+ : [undefined, undefined]
|
|
|
|
+ }
|
|
|
|
+ onChange={date => {
|
|
|
|
+ setQueryData({
|
|
|
|
+ ...queryData,
|
|
|
|
+ startTime: date ? date[0]?.format('YYYY-MM-DD') : '',
|
|
|
|
+ endTime: date ? date[1]?.format('YYYY-MM-DD') : ''
|
|
|
|
+ })
|
|
|
|
+ }}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ <div className='rowItem'>
|
|
|
|
+ 讲解服务:
|
|
|
|
+ <Select
|
|
|
|
+ style={{ width: 120 }}
|
|
|
|
+ defaultValue={0}
|
|
|
|
+ options={serverOptions}
|
|
|
|
+ onChange={value => setQueryData({ ...queryData, appointmentServiceId: value })}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ <div className='rowItem'>
|
|
|
|
+ 状态:
|
|
|
|
+ <Select
|
|
|
|
+ style={{ width: 120 }}
|
|
|
|
+ defaultValue={0}
|
|
|
|
+ options={[
|
|
|
|
+ { label: '全部', value: 0 },
|
|
|
|
+ { label: '已取消', value: -1 },
|
|
|
|
+ { label: '已预约', value: 2 }
|
|
|
|
+ ]}
|
|
|
|
+ onChange={value => setQueryData({ ...queryData, status: value })}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
<Button type='primary' onClick={exportExcelFu2}>
|
|
<Button type='primary' onClick={exportExcelFu2}>
|
|
导出
|
|
导出
|
|
</Button>
|
|
</Button>
|