From f899760a866a0b4f6ea9b4ac1d495fd7f0688fbc Mon Sep 17 00:00:00 2001 From: callmeyan Date: Mon, 10 Jun 2024 21:02:52 +0800 Subject: [PATCH] update query params --- src/components/bill/search-form.tsx | 14 +++--- src/pages/bill/query.tsx | 10 ++++- src/pages/bill/reconciliation.tsx | 68 +++++++++++++++++++---------- 3 files changed, 57 insertions(+), 35 deletions(-) diff --git a/src/components/bill/search-form.tsx b/src/components/bill/search-form.tsx index 46fa3ce..a3e1d47 100644 --- a/src/components/bill/search-form.tsx +++ b/src/components/bill/search-form.tsx @@ -1,10 +1,9 @@ import {Button, Col, Form, Row} from "@douyinfe/semi-ui"; import React, {useMemo} from "react"; -import {Card} from "@/components/card"; -import {useTranslation} from "react-i18next"; -import {BillQueryParams} from "@/service/api/bill.ts"; import dayjs from "dayjs"; -import useAuth from "@/hooks/useAuth.ts"; +import {useTranslation} from "react-i18next"; +import {Card} from "@/components/card"; +import {BillQueryParams} from "@/service/api/bill.ts"; type SearchFormProps = { onSearch?: (params: BillQueryParams) => void; @@ -23,11 +22,8 @@ type SearchFormFields = { apply_status?: string; } const SearchForm: React.FC = (props) => { - const {user} = useAuth(); const formSubmit = (value: SearchFormFields) => { - const params: BillQueryParams = { - department: user?.department == 'RO' ? 'RO' : 'FO', - } + const params: BillQueryParams = {} if (value.dateRange && value.dateRange.length == 2) { params.start_date = dayjs(value.dateRange[0]).format('YYYY-MM-DD'); @@ -47,7 +43,7 @@ const SearchForm: React.FC = (props) => { if (value.bill_status) { params.status = value.bill_status; } - if(props.showApply){ + if(!props.showApply){ params.status = 'PAID' } // 支付方式 diff --git a/src/pages/bill/query.tsx b/src/pages/bill/query.tsx index f8d3fcb..2f5f14b 100644 --- a/src/pages/bill/query.tsx +++ b/src/pages/bill/query.tsx @@ -1,20 +1,25 @@ -import {BillList} from "@/components/bill/list.tsx"; import {Button, Modal, Notification, Popconfirm, Space} from "@douyinfe/semi-ui"; import {useState} from "react"; import {useRequest} from "ahooks"; import {useTranslation} from "react-i18next"; import * as Sentry from "@sentry/react"; +import {BillList} from "@/components/bill/list.tsx"; import SearchForm from "@/components/bill/search-form.tsx"; import BillDetail from "@/components/bill/detail.tsx"; import {billList, BillQueryParams, cancelBill} from "@/service/api/bill.ts"; import {BillStatus} from "@/service/types.ts"; import {useDownloadReceiptPDF} from "@/service/generate-pdf.ts"; +import useAuth from "@/hooks/useAuth.ts"; const BillQuery = () => { + const {user} = useAuth(); const [showBill, setShowBill] = useState() const [queryParams, setBillQueryParams] = useState({}); - const {data, loading, refresh} = useRequest(() => billList(queryParams), { + const {data, loading, refresh} = useRequest(() => billList({ + ...queryParams, + department: user?.department == 'RO' ? 'RO' : 'FO', + }), { refreshDeps: [queryParams], onError: (e) => { Sentry.captureMessage('Error: Query bill error', { @@ -36,6 +41,7 @@ const BillQuery = () => { }) } const operation = (bill: BillModel) => { + return ( {bill.status == BillStatus.PENDING && <> { const {t} = useTranslation() - const [queryParams, setBillQueryParams] = useSetState({ - status:'PAID' + const {user} = useAuth(); + const [queryParams, setBillQueryParams] = useState({ + apply_status:'UNCHECKED' }); - const {data, loading,refresh} = useRequest(() => billList(queryParams), { + const {data, loading, refresh} = useRequest(() => billList({ + ...queryParams, + status: 'PAID', + department: user?.department == 'RO' ? 'RO' : 'FO', + }), { refreshDeps: [queryParams] }) - const [selectKeys,setSelectedKeys] = useState<(string|number)[]>([]) + + const [selectKeys, setSelectedKeys] = useState<(string | number)[]>([]) const confirmBill = (records: number[]) => { - if(records.length == 0) { - Notification.error({title:'Notice',content:t('bill.confirm_select_empty')}) + if (records.length == 0) { + Notification.error({title: 'Notice', content: t('bill.confirm_select_empty')}) return } - confirmBills(records).then(()=>{ - Notification.success({title:'Notice',content:t('bill.confirm_success')}) + confirmBills(records).then(() => { + Notification.success({title: 'Notice', content: t('bill.confirm_success')}) refresh() }) } @@ -30,7 +38,7 @@ const BillReconciliation = () => { confirmBill([_record.id])} + onConfirm={() => confirmBill([_record.id])} > @@ -40,27 +48,39 @@ const BillReconciliation = () => { return (
- setBillQueryParams({apply_status})}> - {t('bill.reconciliation_status_pending')}} itemKey="UNCHECKED"/> - {t('bill.reconciliation_status_submitted')}} itemKey="CHECKED"/> - - )} loading={loading} onSearch={setBillQueryParams}/> + setBillQueryParams({ + apply_status, + status: 'PAID' + })}> + {t('bill.reconciliation_status_pending')}} itemKey="UNCHECKED"/> + {t('bill.reconciliation_status_submitted')}} itemKey="CHECKED"/> + + )} + loading={loading} + onSearch={(params) => { + setBillQueryParams({...params, apply_status: queryParams.apply_status}) + }} + /> { + onRowSelection={queryParams.apply_status == 'CHECKED' ? undefined : (keys: (number | string)[]) => { setSelectedKeys(keys); }} loading={loading} - onPageChange={(page_number) => setBillQueryParams({page_number})} - tableFooter={queryParams.apply_status != 'CHECKED' && selectKeys?.length > 0 && ( + onPageChange={(page_number) => setBillQueryParams({ + ...queryParams, + page_number + })} + tableFooter={queryParams.apply_status != 'CHECKED' && selectKeys?.length > 0 && ( confirmBill(selectKeys as number[])} + onConfirm={() => confirmBill(selectKeys as number[])} > -