Files
GDstarmotion-admin/src/pages/finance/withdraw/index.tsx
PC-202306242200\Administrator fdd7e33fbe 1
2024-10-23 18:27:30 +08:00

273 lines
9.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { withdrawPage, withdrawExtract, importUsersPointsExtract } from '@/services/finance/index';
import { usersPage } from '@/services/user/user';
import { exportData } from '@/utils/func';
import React, { useRef, useEffect, useState } from 'react';
import { useIntl, useAccess } from '@umijs/max';
import { message, Tag, Select, Button, Upload } from 'antd';
import { ActionType, PageContainer, ProTable, ProFormSelect } from '@ant-design/pro-components';
import { UploadOutlined } from '@ant-design/icons';
import TempFormModal from './components/TempFormModal';
const LogTableList: React.FC = () => {
const actionRef = useRef<ActionType>();
const [tempFormModal, setTempFormModal] = useState(false);
const [shopOption, setShopOption] = useState([]);
const [searchParams, setSearchParams] = useState(null);
const access = useAccess()
const searchShop = async (value) => {
const { success, data } = await usersPage({
userName: value
});
data.records.map((i) => {
i.userName = i.userName + ' ' + i.phone
})
setShopOption(data.records)
}
const handleTemp = async (fields) => {
try {
const _res = await importUsersPointsExtract(fields);
message.success('导入成功');
actionRef.current?.reload();
setTempFormModal(false);
} catch (error) {
}
};
const columns = [
{
title: 'ID',
dataIndex: 'id',
valueType: 'text',
search: false,
},
{
title: '用户信息',
dataIndex: 'userId',
valueType: 'text',
render: (_: any, record: any) => {
return <div>
<div>ID:{record?.userId}</div>
<div>{record?.userName}</div>
<div>{record?.phone}</div>
<div>{record?.level}</div>
</div>
},
renderFormItem: (
_,
{ type, defaultRender, formItemProps, fieldProps, ...rest },
form,
) => {
return <Select
{...fieldProps}
allowClear
showSearch
placeholder="请输入用户名"
style={{ width: "100%" }}
filterOption={false}
onSearch={
(e) => {
if (!e) {
return;
}
searchShop(e);
}
}
fieldNames={{
label: "userName",
value: "id"
}}
options={shopOption}
/>
// <div className='w-52'>
// <ProFormSelect
// name="formUserId"
// fieldProps={{
// fieldNames: {
// label: "userName",
// value: "id"
// },
// placeholder: "请输入用户名",
// showSearch: true
// }}
// request={async (param) => {
// const { success, data } = await usersPage({
// userName: param.keyWords
// });
// data.records.map((i) => {
// i.userName = i.userName + ' ' + i.phone
// })
// return data.records;
// }}
// />
// </div>
},
},
{
title: '订单号',
dataIndex: 'orderNo',
valueType: 'text',
search: false,
},
{
title: '提取积分',
dataIndex: 'points',
valueType: 'text',
search: false,
},
{
title: '手续费',
dataIndex: 'commission',
valueType: 'text',
search: false,
},
{
title: '到账积分',
dataIndex: 'inToAccountPoints',
valueType: 'text',
search: false,
},
{
title: '基础收益',
dataIndex: 'points1',
valueType: 'text',
search: false,
},
{
title: '状态',
dataIndex: 'status',
valueType: 'text',
render: (_: any, record: any) => {
let color = record.status == 0 ? 'orange' : record.status == 1 ? 'green' : record.status == -1 ? 'red' : ''
return <Tag color={color}>{record.status == 0 ? '申请中' : record.status == 1 ? '提现成功' : record.status == -1 ? '失败' : ''}</Tag>
},
renderFormItem: (
_,
{ type, defaultRender, formItemProps, fieldProps, ...rest },
form,
) => {
const statusMap = [
{ label: '申请中', value: 0 },
{ label: '提现成功', value: 1 },
{ label: '失败', value: -1 },
]
return <Select
{...fieldProps}
allowClear
style={{ width: "100%" }}
filterOption={false}
fieldNames={{
label: "label",
value: "value"
}}
options={statusMap}
/>
},
},
{
title: '提现信息',
dataIndex: 'type',
valueType: 'text',
search: false,
render: (_: any, record: any) => {
let color = record.type == 1 ? 'cyan' : record.type == 2 ? 'red' : ''
return <div>
<div>
<Tag color={color}>{record.type == 1 ? '个人' : record.type == 2 ? '企业' : ''}</Tag>
{record.name}
</div>
<div hidden={record.type == 2}>
{record.idCard}
</div>
<div>
{record.bankCard}
</div>
<div>
{record.subbranchName}
</div>
<div hidden={record.type == 1}>
{record.taxNo}
</div>
</div>
}
},
{
title: '完成时间',
dataIndex: 'completeTime',
valueType: 'text',
search: false,
},
{
title: '处理结果',
dataIndex: 'handleMessage',
valueType: 'text',
search: false,
},
{
title: '创建时间',
dataIndex: 'createTime',
valueType: 'dateRange',
search: {
transform: (value) => {
return {
createTimeBegin: value[0],
createTimeEnd: value[1],
};
},
},
render: (_, record) => {
return record?.createTime
},
},
];
return (
<PageContainer>
<div style={{ width: '100%', float: 'right' }}>
<TempFormModal
modalOpenState={tempFormModal}
onModalOpenState={setTempFormModal}
onSubmit={handleTemp}
/>
<ProTable
actionRef={actionRef}
rowKey="id"
key="logList"
search={{
labelWidth: 120,
defaultCollapsed: false,
}}
toolBarRender={() => [
<Button hidden={!access.hasPerms('/api/userspoints/points/extract/export')} type="primary" onClick={async () => {
let _res = await withdrawExtract(searchParams)
exportData(_res, '提现记录')
}}></Button>,
<Button hidden={!access.hasPerms('/api/userspoints/importUsersPointsExtract')} icon={<UploadOutlined />} onClick={async () => {
setTempFormModal(true)
}}></Button>
]}
request={async (params, sorter, filter) => {
setSearchParams(params)
let { data } = await withdrawPage(params)
return {
data: data?.records || [],
total: data?.total,
};
}}
columns={columns}
/>
</div>
</PageContainer>
);
};
export default LogTableList;