fixed: export need sso

This commit is contained in:
LittleBoy 2024-07-29 15:13:12 +08:00
parent 6741e61e13
commit 69c067bd9d
4 changed files with 51 additions and 57 deletions

View File

@ -1,8 +1,8 @@
import {BillDetailItems} from "@/components/bill"; import {BillDetailItems} from "@/components/bill";
import {Button, Col, Form, Modal, Notification, Row, Space, Toast} from "@douyinfe/semi-ui"; import {Button, Col, Form, Modal, Row, Space, Toast} from "@douyinfe/semi-ui";
import React from "react"; import React from "react";
import {useTranslation} from "react-i18next"; import {useTranslation} from "react-i18next";
import {finishBill, modifyBillStatus} from "@/service/api/bill.ts"; import {finishBill} from "@/service/api/bill.ts";
import {BizError} from "@/service/types.ts"; import {BizError} from "@/service/types.ts";
import {useSetState} from "ahooks"; import {useSetState} from "ahooks";
@ -18,48 +18,29 @@ export const BillPaidModal: React.FC<BillPaidModalProps> = (props) => {
const [state, setState] = useSetState<{ const [state, setState] = useSetState<{
loading?: boolean loading?: boolean
}>({}) }>({})
const onConfirmPaid = () => { const onSubmit = (values: BillUpdateParams) => {
if (!props.bill) return; if (!props.bill) return;
setState({ setState({
loading: true loading: true
}) })
modifyBillStatus(props.bill.id, 'PAID').then(() => { finishBill({bill: props.bill, param: values})
setState({loading: false}) .then(() => {
Notification.success({title: 'Notice', content: t('base.operate_success')}) setState({loading: false})
props.onConfirm() props.onConfirm()
}).catch((e: BizError) => { })
setState({loading: false}) .catch((e: BizError) => {
Toast.error({ setState({loading: false})
content: `${t('base.operate_fail')}:${e.message}`, Toast.error({
duration: 3 content: `${t('base.operate_fail')}:${e.message}`,
duration: 3
})
}) })
})
}
const onSubmit = (values: BillUpdateParams) => {
if (!props.bill) return;
finishBill({bill: props.bill, param: values}).then(props.onConfirm)
// setState({
// loading: true
// })
// modifyBillStatus(props.bill.id, 'PAID', values).then(() => {
// setState({loading: false})
// Notification.success({title: 'Notice', content: t('base.operate_success')})
// props.onConfirm()
// }).catch((e: BizError) => {
// setState({loading: false})
// Toast.error({
// content: `${t('base.operate_fail')}:${e.message}`,
// duration: 3
// })
// })
} }
return <Modal return <Modal
title={t('bill.set_bill_paid') + ` - ${props.bill?.id}`} title={t('bill.set_bill_paid') + ` - ${props.bill?.id}`}
visible={props.open} visible={props.open}
closeOnEsc={true} closeOnEsc={true}
onCancel={props.onCancel} onCancel={props.onCancel}
confirmLoading={state.loading}
onOk={onConfirmPaid}
footer={null} footer={null}
width={600} width={600}
okText={t('base.confirm_paid')} okText={t('base.confirm_paid')}
@ -88,22 +69,6 @@ export const BillPaidModal: React.FC<BillPaidModalProps> = (props) => {
</Form.Select> </Form.Select>
</Col> </Col>
<Col span={12}> <Col span={12}>
{/*<Form.AutoComplete*/}
{/* rules={[*/}
{/* {required: true, message: 'required error'},*/}
{/* ]}*/}
{/* placeholder={t('base.please_select')} style={{width: '100%'}}*/}
{/* data={[*/}
{/* {value:'card',label:'Card(VISA,MasterCard,UnionPay,JCB...)'},*/}
{/* {value:'wechat',label:'Wechat'},*/}
{/* {value:'alipay',label:'Alipay'},*/}
{/* {value:'other',label:'Other'},*/}
{/* ]}*/}
{/* // renderItem={()=>{*/}
{/* //*/}
{/* // }}*/}
{/* showClear field="payment_method" label={t('bill.title_pay_method')}*/}
{/*/>*/}
<Form.Select <Form.Select
rules={[ rules={[
{required: true, message: 'required error'}, {required: true, message: 'required error'},

View File

@ -2,12 +2,11 @@ import {Button, Divider, Modal, Notification, Popconfirm, Toast} from "@douyinfe
import {useState} from "react"; import {useState} from "react";
import {useRequest, useSetState} from "ahooks"; import {useRequest, useSetState} from "ahooks";
import {useTranslation} from "react-i18next"; import {useTranslation} from "react-i18next";
import {stringify} from "qs"
import {BillList} from "@/components/bill/list.tsx"; import {BillList} from "@/components/bill/list.tsx";
import SearchForm from "@/components/bill/search-form.tsx"; import SearchForm from "@/components/bill/search-form.tsx";
import BillDetail from "@/components/bill/detail.tsx"; import BillDetail from "@/components/bill/detail.tsx";
import {billList, BillQueryParams, modifyBillStatus} from "@/service/api/bill.ts"; import {billList, BillQueryParams, exportBillList, modifyBillStatus} from "@/service/api/bill.ts";
import {BillStatus, BizError} from "@/service/types.ts"; import {BillStatus, BizError} from "@/service/types.ts";
import {useDownloadReceiptPDF} from "@/service/generate-pdf.ts"; import {useDownloadReceiptPDF} from "@/service/generate-pdf.ts";
import {BillDetailItems} from "@/components/bill"; import {BillDetailItems} from "@/components/bill";
@ -31,6 +30,7 @@ const BillQuery = () => {
updateBill?: BillModel updateBill?: BillModel
confirmBill?: BillModel confirmBill?: BillModel
updateLoading?: boolean updateLoading?: boolean
exporting?: boolean
confirmBillId: number confirmBillId: number
}>({confirmBillId: 0}) }>({confirmBillId: 0})
const [showBill, setShowBill] = useState<BillModel>() const [showBill, setShowBill] = useState<BillModel>()
@ -87,8 +87,22 @@ const BillQuery = () => {
</div>) </div>)
} }
const onExportExcel = ()=>{ const onExportExcel = ()=>{
const downloadUrl = `${AppConfig.API_PREFIX || '/api'}/bills/export?${stringify(queryParams)}` // const downloadUrl = `${AppConfig.API_PREFIX || '/api'}/bills/export?${stringify(queryParams)}`
saveAs(downloadUrl, 'bill-result-excel.xlsx') //
//
// saveAs(downloadUrl, 'bill-result-excel.xlsx')
setState({
exporting:true
})
exportBillList(queryParams).then(ret=>{
console.log(ret)
const blob = new Blob([ret], {type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
saveAs(blob, 'bill-result-excel.xlsx')
}).finally(()=>{
setState({
exporting:false
})
})
} }
return (<div> return (<div>
@ -96,7 +110,7 @@ const BillQuery = () => {
<BillList <BillList
type={'query'} loading={loading} source={data} type={'query'} loading={loading} source={data}
operationRender={operation} operationRenderWidth={180} operationRender={operation} operationRenderWidth={180}
beforeTotalAmount={<Button onClick={onExportExcel} theme={'solid'} type={'secondary'}>{t('bill.export_excel')}</Button>} beforeTotalAmount={<Button loading={state.exporting} onClick={onExportExcel} theme={'solid'} type={'secondary'}>{t('bill.export_excel')}</Button>}
onPageChange={(page_number) => { onPageChange={(page_number) => {
setBillQueryParams({ setBillQueryParams({
...queryParams, ...queryParams,

View File

@ -1,5 +1,7 @@
import {get, post, put} from "@/service/request.ts"; import {get, post, put} from "@/service/request.ts";
import dayjs from "dayjs"; import dayjs from "dayjs";
import {getAuthToken} from "@/hooks/useAuth.ts";
import {stringify} from "qs";
export type BillQueryResult = { export type BillQueryResult = {
result: BillModel[]; result: BillModel[];
@ -29,6 +31,18 @@ export async function billList(params: BillQueryParams) {
return formatBillQueryResult(params, result); return formatBillQueryResult(params, result);
} }
export function exportBillList(params: BillQueryParams) {
const token = getAuthToken();
const headers = new Headers({
'Token': token || ''
});
return fetch(`${AppConfig.API_PREFIX || '/api'}/bills/export?${stringify(params)}`,{
headers,
method:'GET'
}).then(r=>r.blob())
// return get<Blob>('/bills/export', params,true)
}
//现场支付创建账单接口 //现场支付创建账单接口
export function createManualBill(params: ManualCreateBillParam) { export function createManualBill(params: ManualCreateBillParam) {
return post<BillModel>('/manual_payment', params) return post<BillModel>('/manual_payment', params)
@ -53,7 +67,7 @@ export function modifyBillStatus(id: number,status: BillStatus) {
} }
export function confirmBillType({id,type}: {id:number,type: string}) { export function confirmBillType({id,type}: {id:number,type: string}) {
return post<BillModel>(`/bill/detail/${id}/confirm`, {type}) return post<BillModel>(`/bill/detail/${id}/confirm`, {confirm_type:type})
} }
export function confirmBills(bill_ids: number[]) { export function confirmBills(bill_ids: number[]) {
@ -81,6 +95,7 @@ x&cardIssuingCountry=HK&channelType=SPC&`
return ret?.toLowerCase() == 'ok' return ret?.toLowerCase() == 'ok'
} }
export async function finishFlywire({bill,param}: BillUpdateFormParams){ export async function finishFlywire({bill,param}: BillUpdateFormParams){
const eventData = { const eventData = {
"event_type": "guaranteed", "event_type": "guaranteed",

View File

@ -28,8 +28,8 @@ export default defineConfig(({mode}) => {
port:10086, port:10086,
proxy: { proxy: {
'/api': { '/api': {
// target: 'https://test-payment-be.hkchc.team', // target: 'https://test-payment-be.hkchc.team', //
target: 'http://127.0.0.1:50000', // // target: 'http://127.0.0.1:50000', //
changeOrigin: true, changeOrigin: true,
//rewrite: (path) => path.replace(/^\/api/, '') //rewrite: (path) => path.replace(/^\/api/, '')
} }