提交 fe0c1fba 作者: yueyang.lv

feat: 新增提现功能

上级 200e7b4a
import { useEffect, useState } from "react"; import { useEffect, useState, useImperativeHandle } from "react";
import { DataGrid, GridColDef } from "@mui/x-data-grid"; import { DataGrid, GridColDef } from "@mui/x-data-grid";
import { SORT, SORT_TYPE } from "../../constants"; import { SORT, SORT_TYPE } from "../../constants";
import { sortTypeCode2Value } from "../../utils"; import { sortTypeCode2Value } from "../../utils";
import type { Pagination, Sort } from "../../types"; import type { Pagination, Sort } from "../../types";
export type TableListTableRef = {
reload?: () => void;
};
interface TableListProps<T = any> { interface TableListProps<T = any> {
columns: GridColDef<T>[]; columns: GridColDef<T>[];
request: (options: Pagination) => Promise<{ list: T[]; total: number }>; request: (options: Pagination) => Promise<{ list: T[]; total: number }>;
tableRef?: React.MutableRefObject<TableListTableRef>;
} }
export default function TableList<T>({ columns, request }: TableListProps<T>) { const initPagination = {
const [pagination, setPagination] = useState<Pagination>({ current: 1,
current: 1, pageSize: 10,
pageSize: 10, total: 0,
total: 0, };
});
export default function TableList<T>({
columns,
request,
tableRef,
}: TableListProps<T>) {
const [pagination, setPagination] = useState<Pagination>(initPagination);
const [searchForm, setSearchForm] = useState<Sort>({ const [searchForm, setSearchForm] = useState<Sort>({
sort: SORT.DESC.value, sort: SORT.DESC.value,
}); });
...@@ -32,6 +42,18 @@ export default function TableList<T>({ columns, request }: TableListProps<T>) { ...@@ -32,6 +42,18 @@ export default function TableList<T>({ columns, request }: TableListProps<T>) {
getList(); getList();
}, [pagination.current, searchForm.sort]); }, [pagination.current, searchForm.sort]);
useImperativeHandle(
tableRef,
() => {
return {
reload: () => {
getList();
},
};
},
[]
);
const pageChangeHandler = (current: number) => { const pageChangeHandler = (current: number) => {
setPagination((state) => ({ ...state, current: current + 1 })); setPagination((state) => ({ ...state, current: current + 1 }));
}; };
......
import React from "react"; import React, { useRef } from "react";
import { import {
Card, Card,
CardContent, CardContent,
...@@ -12,15 +12,19 @@ import PageHeader from "../../../Common/PageHeader/PageHeader"; ...@@ -12,15 +12,19 @@ import PageHeader from "../../../Common/PageHeader/PageHeader";
import Price from "../../components/Price"; import Price from "../../components/Price";
import { useAccountMoneyInfo } from "./hooks"; import { useAccountMoneyInfo } from "./hooks";
import { LoadingButton } from "@mui/lab"; import { LoadingButton } from "@mui/lab";
import { applyWithdrawal } from "../../services"; import { applyWithdrawal, getWithdrawalList } from "../../services";
import message from "../../../../../utils/message"; import message from "../../../../../utils/message";
import TableList, { TableListTableRef } from "../../components/TableList";
import { WithdrawalItem } from "../../services/interface";
const CostWithdrawal: React.FC = () => { const CostWithdrawal: React.FC = () => {
const { data: info } = useAccountMoneyInfo(); const { data: info } = useAccountMoneyInfo();
const tableRef = useRef<TableListTableRef>();
const submitHandler = () => { const submitHandler = () => {
applyWithdrawal().then((res) => { applyWithdrawal().then((res) => {
message.success(res.msg || "申请成功"); message.success(res.msg || "申请成功");
tableRef.current.reload?.();
}); });
}; };
...@@ -59,6 +63,43 @@ const CostWithdrawal: React.FC = () => { ...@@ -59,6 +63,43 @@ const CostWithdrawal: React.FC = () => {
</Grid> </Grid>
</CardContent> </CardContent>
</Card> </Card>
<br />
<TableList<WithdrawalItem>
tableRef={tableRef}
columns={[
{
field: "id",
headerName: "ID",
sortable: false,
width: 250,
disableColumnMenu: true,
},
{
field: "money",
headerName: "提现金额",
width: 150,
sortable: false,
disableColumnMenu: true,
},
{
field: "status",
headerName: "提现状态",
width: 150,
sortable: false,
disableColumnMenu: true,
},
{
field: "created_at",
headerName: "申请时间",
width: 250,
sortable: false,
disableColumnMenu: true,
},
]}
request={(options) => {
return getWithdrawalList(options).then((res) => res.data);
}}
/>
</PageLayout> </PageLayout>
</> </>
); );
......
...@@ -6,8 +6,6 @@ import { ...@@ -6,8 +6,6 @@ import {
AccountMoneyInfo, AccountMoneyInfo,
CreateOrderRequestBody, CreateOrderRequestBody,
CreateOrderInfo, CreateOrderInfo,
PersonalAuthRequestBody,
CompanyAuthRequestBody,
ApplyContractRequestBody, ApplyContractRequestBody,
ApplyInvoiceRequestBody, ApplyInvoiceRequestBody,
InvoiceItem, InvoiceItem,
...@@ -44,7 +42,7 @@ export function applyWithdrawal(): ResultPromise<CreateOrderInfo> { ...@@ -44,7 +42,7 @@ export function applyWithdrawal(): ResultPromise<CreateOrderInfo> {
/** 提现列表 */ /** 提现列表 */
export function getWithdrawalList( export function getWithdrawalList(
options?: Pagination options?: Pagination
): ResultPromise<WithdrawalItem[]> { ): ResultListPromise<WithdrawalItem> {
return request.post("/api/user/Withdrawal/list", options2Pagination(options)); return request.post("/api/user/Withdrawal/list", options2Pagination(options));
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论