提交 74586053 作者: 龚洪江

功能:飞手认证,客户实名认证联调

上级 af391b01
......@@ -249,3 +249,16 @@ export type listAuthPageType = InterItemFunction<
createTime: string;
}[]
>;
//实名认证详情返回类型
export type authDetailType = InterFunction<
{ id: number },
{
backIdImg: string;
checkStatus: number;
frontIdImg: string;
id: number;
idNumber: string;
userAccountId: number;
userName: string;
}
>;
import { InterFunction, InterItemFunction } from '~/api/interface';
//飞手列表
type flyerItemType = {
abilityUrl: string;
age: number;
areaNumber: number;
auditStatus: number;
createTime: string;
id: number;
individualResume: string;
licenseNumber: number;
licenseType: string;
licenseUrl: string;
phoneNum: number;
pilotAbility: {
abilityId: number;
abilityName: string;
id: number;
}[];
remark: string;
residentCity: string;
sex: number;
timeOfApplication: string;
updateTime: string;
userAccountId: number;
userName: number;
yearsOfWorking: number;
};
export type backListPilotType = InterItemFunction<
{
abilityId?: number;
......@@ -10,32 +36,35 @@ export type backListPilotType = InterItemFunction<
id?: number;
licenseType?: string;
},
flyerItemType[]
>;
//修改备注
export type updateRemarkType = InterFunction<{ id: number; remark: string }, any>;
//能力类型
export type abilityListType = InterFunction<any, { abilityId: number; abilityName: string }[]>;
//飞手认证日志类型
export type backPilotLogListType = InterItemFunction<
{ accountNumber?: string },
{
abilityUrl: string;
age: number;
areaNumber: number;
auditStatus: number;
certificationDate: number;
certificationMessage: number;
createTime: string;
id: number;
individualResume: string;
licenseNumber: number;
licenseType: string;
licenseUrl: string;
operatorUserAccount: number;
operatorUserId: number;
operatorUserName: number;
phoneNum: number;
pilotAbility: {
abilityId: number;
abilityName: string;
id: number;
}[];
remark: string;
residentCity: string;
sex: number;
timeOfApplication: string;
updateTime: string;
userAccountId: number;
userName: number;
yearsOfWorking: number;
}[]
>;
//能力类型
export type abilityListType = InterFunction<any, { abilityId: number; abilityName: string }[]>;
//飞手详情
export type backDetailPilotType = InterFunction<{ id: number }, flyerItemType>;
//飞手审批
export type updateAuditStatusType = InterFunction<
{ auditStatus: number; reasonId?: number; id: number },
any
>;
//飞手审批不通过原因列表
export type backListReasonType = InterFunction<any, { id: number; reason: string }[]>;
......@@ -2,6 +2,7 @@ import axios from '../request';
import {
applyTagDetails,
approvalApplyTag,
authDetailType,
changeUserTagNew,
changeUserTagType,
CompanyListTag,
......@@ -59,4 +60,7 @@ export class CustomManageAPI {
// 客户-实名认证列表
static getListAuth: listAuthPageType = (data) =>
axios.post('/userapp/real-name-auth/listPage', data);
// 客户-实名认证详情
static getAuthDetail: authDetailType = (params) =>
axios.get('/userapp/real-name-auth/detail', { params });
}
import { abilityListType, backListPilotType } from '~/api/interface/flyerCenterType';
import {
abilityListType,
backDetailPilotType,
backListPilotType,
backListReasonType,
backPilotLogListType,
updateAuditStatusType,
updateRemarkType,
} from '~/api/interface/flyerCenterType';
import axios from '../request';
export class FlyerCenterAPI {
//飞手列表
static getBackListPilot: backListPilotType = (data) =>
axios.post('/userapp/pilot/backListPilot', data);
//修改备注
static updateRemark: updateRemarkType = (data) => axios.post('/userapp/pilot/updateRemark', data);
// 飞手能力类型
static getAbilityList: abilityListType = () => axios.get('/userapp/pilot/abilityList');
// 飞手认证日志
static getBackPilotLogList: backPilotLogListType = (data) =>
axios.post('/userapp/pilot/backPilotLogList', data);
// 飞手详情
static getBackDetailPilot: backDetailPilotType = (params) =>
axios.get('/userapp/pilot/backDetailPilot', { params });
// 飞手审批
static updateAuditStatus: updateAuditStatusType = (data) =>
axios.post('/userapp/pilot/updateAuditStatus', data);
// 飞手审批不通过原因
static getBackListReason: backListReasonType = () => axios.get('/userapp/pilot/backListReason');
}
import { CustomManageAPI } from '~/api';
import { useSearchParams, useNavigate } from 'react-router-dom';
import { useEffect, useState } from 'react';
import { InterDataType } from '~/api/interface';
import { authDetailType } from '~/api/interface/customManageType';
import { Button, Descriptions, Image } from 'antd';
//实名认证详情返回类信息
type detailType = InterDataType<authDetailType>;
const CustomVerificationDetail = () => {
const [searchParams] = useSearchParams();
const navigate = useNavigate();
const [detail, setDetail] = useState<detailType>();
const getAuthDetail = (id: number) => {
CustomManageAPI.getAuthDetail({ id }).then(({ result }) => {
setDetail(result);
});
};
//返回
const backRoute = () => {
navigate(-1);
};
useEffect(() => {
getAuthDetail(Number(searchParams.get('id')));
}, []);
return (
<div className='custom-verification-detail'>
<Descriptions
title='认证信息'
bordered
column={2}
extra={
<Button type='primary' onClick={backRoute}>
返回
</Button>
}
>
<Descriptions.Item label='姓名'>{detail?.userName}</Descriptions.Item>
<Descriptions.Item label='身份证号码'>{detail?.idNumber}</Descriptions.Item>
<Descriptions.Item label='身份证正面'>
<Image src={detail?.frontIdImg} width={50} />
</Descriptions.Item>
<Descriptions.Item label='身份证反面'>
<Image src={detail?.backIdImg} width={50} />
</Descriptions.Item>
</Descriptions>
</div>
);
};
export default CustomVerificationDetail;
import SearchBox, { searchColumns as searchColumnsType } from '~/components/search-box';
import { Table } from 'antd';
import { Button, Table } from 'antd';
import { ColumnsType } from 'antd/es/table';
import { useEffect, useState } from 'react';
import { CustomManageAPI } from '~/api';
import { InterDataType, InterReqListType, PaginationProps } from '~/api/interface';
import { listAuthPageType } from '~/api/interface/customManageType';
import { useNavigate } from 'react-router-dom';
//实名认证列表返回类型
type listAuthType = InterDataType<listAuthPageType>['list'];
......@@ -12,6 +13,8 @@ type listAuthType = InterDataType<listAuthPageType>['list'];
type listAuthParametersType = InterReqListType<listAuthPageType>;
const CustomVerification = () => {
const navigate = useNavigate();
const searchColumns: searchColumnsType[] = [
{
name: 'keyword',
......@@ -54,6 +57,11 @@ const CustomVerification = () => {
{
title: '操作',
align: 'center',
render: (_text: string, record) => (
<Button type='link' onClick={() => toCustomVerificationDetail(record)}>
详情
</Button>
),
},
];
const [tableData, setTableData] = useState<listAuthType>([]);
......@@ -89,6 +97,10 @@ const CustomVerification = () => {
setQuery(value);
getAuthList(value);
};
//认证详情
const toCustomVerificationDetail = (record: listAuthType[0]) => {
navigate({ pathname: '/customManage/customVerificationDetail', search: `id=${record.id}` });
};
useEffect(() => {
getAuthList();
......
import SearchBox, { searchColumns as searchColumnsType } from '~/components/search-box';
import { Button, Table } from 'antd';
import { ColumnsType } from 'antd/es/table';
import { FlyerCenterAPI } from '~/api';
import { useEffect, useState } from 'react';
import { InterDataType, InterReqListType, PaginationProps } from '~/api/interface';
import { backPilotLogListType } from '~/api/interface/flyerCenterType';
import { useNavigate } from 'react-router-dom';
//日志列表返回类型
type logListType = InterDataType<backPilotLogListType>['list'];
//日志列表请求类型
type logParametersType = InterReqListType<backPilotLogListType>;
const FlyerAuthDaily = () => {
const navigate = useNavigate();
const searchColumns: searchColumnsType[] = [
{
label: '账号',
type: 'input',
placeholder: '请输入UID,姓名或手机号',
name: 'accountNumber',
},
];
const tableColumns: ColumnsType<logListType[0]> = [
{
title: '审批及认证时间',
align: 'center',
dataIndex: 'certificationDate',
},
{
title: '账号',
align: 'center',
dataIndex: 'userName',
},
{
title: '手机号',
align: 'center',
dataIndex: 'phoneNum',
},
{
title: '申请及审批信息',
align: 'center',
dataIndex: 'certificationMessage',
},
{
title: '操作人员',
align: 'center',
dataIndex: 'operatorUserName',
},
];
const [tableData, setTableData] = useState<logListType>([]);
const [pagination, setPagination] = useState<PaginationProps & { totalCount: number }>({
pageNo: 1,
pageSize: 10,
totalCount: 0,
});
const [query, setQuery] = useState<logParametersType>();
//认证日志列表
const getBackPilotLogList = (query?: logParametersType) => {
FlyerCenterAPI.getBackPilotLogList({
pageNo: pagination.pageNo,
pageSize: pagination.pageSize,
...query,
}).then(({ result }) => {
pagination.totalCount = result.totalCount;
setPagination(pagination);
setTableData(result.list || []);
});
};
//分页
const paginationChange = (pageNo: number, pageSize: number) => {
pagination.pageNo = pageNo;
pagination.pageSize = pageSize;
getBackPilotLogList(query);
};
//筛选成功
const searchSuccess = (value: logParametersType) => {
pagination.pageNo = 1;
pagination.pageSize = 10;
setQuery(value);
getBackPilotLogList(value);
};
//返回
const backRoute = () => {
navigate(-1);
};
useEffect(() => {
getBackPilotLogList();
}, []);
return (
<div className='flyer-auth-daily'>
<SearchBox
search={searchColumns}
searchData={searchSuccess}
otherChild={
<Button type='primary' onClick={backRoute}>
返回
</Button>
}
/>
<Table
columns={tableColumns}
dataSource={tableData}
pagination={{
total: pagination.totalCount,
pageSize: pagination.pageSize,
current: pagination.pageNo,
showSizeChanger: true,
showQuickJumper: true,
onChange: (page: number, pageSize: number) => paginationChange(page, pageSize),
showTotal: (total, range) => `当前 ${range[0]}-${range[1]} 条记录 / 共 ${total} 条数据`,
}}
/>
</div>
);
};
export default FlyerAuthDaily;
import { Form, message, Modal, ModalProps, Radio, RadioChangeEvent, Select } from 'antd';
import { FC, useState } from 'react';
import { FlyerCenterAPI } from '~/api';
import { InterDataType } from '~/api/interface';
import { backListReasonType } from '~/api/interface/flyerCenterType';
interface selfProps {
onCancel: () => void;
onOk: () => void;
flyerId: number;
}
//原因列表返回类型
type reasonType = InterDataType<backListReasonType>;
const ApproveModal: FC<ModalProps & selfProps> = ({ open, onCancel, onOk, flyerId }) => {
const [form] = Form.useForm();
const [auditStatus, setAuditStatus] = useState<number>(1);
const [reasonList, setReasonList] = useState<reasonType>([]);
const handleCancel = () => {
form.resetFields();
setAuditStatus(-1);
onCancel();
};
const handleOk = () => {
form.validateFields().then((values) => {
FlyerCenterAPI.updateAuditStatus({ ...values, id: flyerId }).then(({ code }) => {
if (code === '200') {
message.success('审批成功');
onOk();
form.resetFields();
setAuditStatus(-1);
}
});
});
};
const radioChange = (e: RadioChangeEvent) => {
if (!e.target.value) {
getBackListReason();
}
setAuditStatus(e.target.value);
};
//不通过原因列表
const getBackListReason = () => {
FlyerCenterAPI.getBackListReason().then(({ result }) => {
setReasonList(result || []);
});
};
return (
<Modal open={open} onCancel={handleCancel} onOk={handleOk} title='审批飞手'>
<Form form={form} initialValues={{ auditStatus: 1 }}>
<Form.Item label='状态' name='auditStatus'>
<Radio.Group onChange={radioChange}>
<Radio value={1}>已通过</Radio>
<Radio value={0}>未通过</Radio>
</Radio.Group>
</Form.Item>
{auditStatus ? (
''
) : (
<Form.Item
label='原因'
name='reasonId'
rules={[{ required: true, message: '请选择原因' }]}
>
<Select placeholder='请选择原因'>
{reasonList.map((v) => (
<Select.Option value={v.id} key={v.id}>
{v.reason}
</Select.Option>
))}
</Select>
</Form.Item>
)}
</Form>
</Modal>
);
};
export default ApproveModal;
.flyer-detail{
height: 100%;
padding: 20px;
box-sizing: border-box;
.ant-row{
height: 100%;
}
&-header{
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
}
&-auth{
}
&-ability{
.ability-img{
margin-right: 10px;
margin-bottom: 10px;
}
}
}
import { FlyerCenterAPI } from '~/api';
import { useSearchParams, useNavigate } from 'react-router-dom';
import { useEffect, useState } from 'react';
import { InterDataType } from '~/api/interface';
import { backDetailPilotType } from '~/api/interface/flyerCenterType';
import { Button, Col, Descriptions, Image, Row, Tag } from 'antd';
import './index.scss';
import ApproveModal from './components/approveModal';
//飞手详情返回类型
type flyerDetailType = InterDataType<backDetailPilotType>;
const FlyerDetail = () => {
const [searchParams] = useSearchParams();
const navigate = useNavigate();
const [isApprove, setIsApprove] = useState<boolean>(false);
const [flyerId, setFlyerId] = useState<number>(-1);
const [flyerDetail, setFlyerDetail] = useState<flyerDetailType>();
const [approveModalShow, setApproveModalShow] = useState<boolean>(false);
const getFlyerDetail = (id: number) => {
FlyerCenterAPI.getBackDetailPilot({ id }).then(({ result }) => {
setFlyerDetail(result);
});
};
//审批弹窗
const approveFlyerClick = () => {
setApproveModalShow(true);
};
const approveModalCancel = () => {
setApproveModalShow(false);
};
const approveModalOk = () => {
setApproveModalShow(false);
getFlyerDetail(flyerId);
};
//返回
const backRoute = () => {
navigate(-1);
};
useEffect(() => {
getFlyerDetail(Number(searchParams.get('id')));
setFlyerId(Number(searchParams.get('id')));
setIsApprove(!!searchParams.get('isApprove'));
}, []);
return (
<div className='flyer-detail'>
<div className='flyer-detail-header'>
<div className='header-info'>
{flyerDetail?.userAccountId}({flyerDetail?.userName})
</div>
<div className='header-operate'>
{isApprove && flyerDetail?.auditStatus === 0 ? (
<Button type='primary' style={{ marginRight: '10px' }} onClick={approveFlyerClick}>
审批
</Button>
) : (
''
)}
<Button type='primary' onClick={backRoute}>
返回
</Button>
</div>
</div>
<Row justify='space-between'>
<Col span={11}>
<div className='flyer-detail-auth'>
<Descriptions title='执照认证' bordered column={1} labelStyle={{ width: '100px' }}>
<Descriptions.Item label='执照类型'>{flyerDetail?.licenseType}</Descriptions.Item>
<Descriptions.Item label='执照编号'>{flyerDetail?.licenseNumber}</Descriptions.Item>
<Descriptions.Item label='执照图片'>
<Image src={flyerDetail?.licenseUrl} width={100} />
</Descriptions.Item>
<Descriptions.Item label='个人简介'>
{flyerDetail?.individualResume}
</Descriptions.Item>
</Descriptions>
</div>
</Col>
<Col span={11}>
<div className='flyer-detail-ability'>
<Descriptions title='能力认证' bordered column={1} labelStyle={{ minWidth: '100px' }}>
<Descriptions.Item label='常驻地'>{flyerDetail?.residentCity}</Descriptions.Item>
<Descriptions.Item label='工作年限'>{flyerDetail?.yearsOfWorking}</Descriptions.Item>
<Descriptions.Item label='能力'>
{flyerDetail?.pilotAbility.map((v) => (
<Tag key={v.id}>{v.abilityName}</Tag>
))}
</Descriptions.Item>
<Descriptions.Item label='业务案例'>
{flyerDetail?.abilityUrl ? (
<Image.PreviewGroup items={JSON.parse(flyerDetail?.abilityUrl)}>
{JSON.parse(flyerDetail?.abilityUrl).map((v: string, index: number) => (
<Image src={v} key={index} width={100} rootClassName='ability-img' />
))}
</Image.PreviewGroup>
) : (
''
)}
</Descriptions.Item>
</Descriptions>
</div>
</Col>
</Row>
{/* 审批弹窗*/}
<ApproveModal
open={approveModalShow}
onCancel={approveModalCancel}
onOk={approveModalOk}
flyerId={flyerId}
/>
</div>
);
};
export default FlyerDetail;
import { Form, Input, message, Modal, ModalProps } from 'antd';
import { FC, useEffect } from 'react';
import { InterDataType } from '~/api/interface';
import { backListPilotType } from '~/api/interface/flyerCenterType';
import { FlyerCenterAPI } from '~/api';
//飞手列表返回类型
type flyerListType = InterDataType<backListPilotType>['list'];
interface selfProps {
onOk: () => void;
flyerItem: flyerListType[0] | undefined;
}
const UpdateRemarkModal: FC<ModalProps & selfProps> = ({ open, onCancel, onOk, flyerItem }) => {
const [form] = Form.useForm<{ remark: string }>();
const handleOk = () => {
if (flyerItem) {
form.validateFields().then((values) => {
FlyerCenterAPI.updateRemark({ id: flyerItem.id, ...values }).then(({ code }) => {
if (code === '200') {
message.success('编辑备注成功');
onOk();
}
});
});
}
};
useEffect(() => {
if (flyerItem) {
form.setFieldValue('remark', flyerItem.remark);
}
}, [flyerItem]);
return (
<Modal open={open} onCancel={onCancel} onOk={handleOk} title='备注修改'>
<Form form={form}>
<Form.Item label='备注' name='remark'>
<Input.TextArea placeholder='请输入备注' maxLength={70} showCount rows={4} />
</Form.Item>
</Form>
</Modal>
);
};
export default UpdateRemarkModal;
......@@ -6,6 +6,8 @@ import { useEffect, useState } from 'react';
import { InterDataType, InterReqListType, PaginationProps } from '~/api/interface';
import { backListPilotType } from '~/api/interface/flyerCenterType';
import { getSecondDistrictInfoType } from '~/api/interface/commonType';
import { useNavigate } from 'react-router-dom';
import UpdateRemarkModal from './components/updateRemarkModal';
//飞手列表返回类型
type flyerListType = InterDataType<backListPilotType>['list'];
......@@ -15,6 +17,8 @@ type flyerListParameters = InterReqListType<backListPilotType>;
type locationType = InterDataType<getSecondDistrictInfoType>;
const FlyerList = () => {
const navigate = useNavigate();
const [searchColumns, setSearchColumns] = useState<searchColumnsType[]>([
{
name: 'accountNumber',
......@@ -51,7 +55,7 @@ const FlyerList = () => {
const tableColumns: ColumnsType<flyerListType[0]> = [
{
title: 'UID',
dataIndex: 'uid',
dataIndex: 'userAccountId',
align: 'center',
},
{
......@@ -91,29 +95,43 @@ const FlyerList = () => {
title: '备注',
align: 'center',
dataIndex: 'remark',
render: (text: string, record) => (
<Button type='link' onClick={() => updateRemarkClick(record)}>
{text || '--'}
</Button>
),
},
{
title: '操作',
align: 'center',
render: (_text: string, record) => (
<>
<Button type='link' danger disabled={record.auditStatus !== 0}>
<Button
type='link'
danger
disabled={record.auditStatus !== 0}
onClick={() => toFlyerApprove(record)}
>
审批
</Button>
<Button type='link'>变更</Button>
<Button type='link'>详情</Button>
<Button type='link' onClick={() => toFlyerDetail(record)}>
详情
</Button>
</>
),
},
];
const [tableData, setTableData] = useState<flyerListType>([]);
const [currentTableItem, setCurrentTableItem] = useState<flyerListType[0]>();
const [query, setQuery] = useState<flyerListParameters>();
const [pagination, setPagination] = useState<PaginationProps & { totalCount: number }>({
pageNo: 1,
pageSize: 10,
totalCount: 0,
});
//修改备注弹窗
const [updateRemarkModalShow, setUpdateRemarkModalShow] = useState<boolean>(false);
//飞手列表
const getFlyerList = (query?: flyerListParameters) => {
......@@ -165,6 +183,30 @@ const FlyerList = () => {
setSearchColumns([...searchColumns]);
});
};
//认证日志页面
const toFlyerAuthDaily = () => {
navigate('/flyerCenter/flyerAuthDaily');
};
//飞手审批页面
const toFlyerApprove = (record: flyerListType[0]) => {
navigate({ pathname: '/flyerCenter/flyerDetail', search: `id=${record.id}&isApprove=1` });
};
//飞手详情页面
const toFlyerDetail = (record: flyerListType[0]) => {
navigate({ pathname: '/flyerCenter/flyerApprove', search: `id=${record.id}` });
};
//修改备注
const updateRemarkClick = (record: flyerListType[0]) => {
setCurrentTableItem(record);
setUpdateRemarkModalShow(true);
};
const updateRemarkModalCancel = () => {
setUpdateRemarkModalShow(false);
};
const updateRemarkModalOk = () => {
getFlyerList(query);
setUpdateRemarkModalShow(false);
};
useEffect(() => {
getFlyerList();
......@@ -174,7 +216,15 @@ const FlyerList = () => {
return (
<div className='flyer-list'>
<SearchBox search={searchColumns} searchData={searchSuccess} />
<SearchBox
search={searchColumns}
searchData={searchSuccess}
sufFixBtn={
<Button type='primary' onClick={toFlyerAuthDaily}>
认证日志
</Button>
}
/>
<Table
bordered
columns={tableColumns}
......@@ -190,6 +240,13 @@ const FlyerList = () => {
showTotal: (total, range) => `当前 ${range[0]}-${range[1]} 条记录 / 共 ${total} 条数据`,
}}
/>
{/*修改备注*/}
<UpdateRemarkModal
open={updateRemarkModalShow}
onOk={updateRemarkModalOk}
onCancel={updateRemarkModalCancel}
flyerItem={currentTableItem}
/>
</div>
);
};
......
......@@ -79,7 +79,7 @@ const SkuAddOrEditModal: FC<ModalProps & selfProps> = ({
return Promise.reject(new Error('请输入正整数'));
}
} else {
return Promise.reject(new Error('请输入库存'));
return Promise.resolve();
}
};
......@@ -153,7 +153,7 @@ const SkuAddOrEditModal: FC<ModalProps & selfProps> = ({
editable: true,
align: 'center',
dataIndex: 'stock',
rules: [{ required: true, validator: stockPriceValidator }],
rules: [{ required: false, validator: stockPriceValidator }],
inputType: 'number',
},
{
......
......@@ -56,7 +56,12 @@ import LoginView from '~/pages/common/login';
import CustomListView from '~/pages/customManage/customList';
import CustomMoneyView from '~/pages/customManage/customMoney';
import CustomMoneyDetail from '~/pages/customManage/customMoney/detail';
const CustomVerificationView = React.lazy(() => import('~/pages/customManage/customVerification'));
const CustomVerificationView = React.lazy(
() => import('~/pages/customManage/customVerification/list'),
); //实名认证
const CustomVerificationDetailView = React.lazy(
() => import('~/pages/customManage/customVerification/details'),
);
//资源管理
import MaterielManageView from '~/pages/resourceManage/materielManage';
......@@ -117,7 +122,11 @@ const AddInstitutionsView = React.lazy(
); //机构上传
//飞手中心
const FlyerListView = React.lazy(() => import('~/pages/flyerCenter/flyerList'));
const FlyerListView = React.lazy(() => import('~/pages/flyerCenter/flyerManage/flyerList')); //飞手列表
const FlyerAuthDailyView = React.lazy(
() => import('~/pages/flyerCenter/flyerManage/flyerAuthDaily'),
); //飞手认证日志;
const FlyerDetailsView = React.lazy(() => import('~/pages/flyerCenter/flyerManage/flyerDetail')); //飞手详情、飞手审批
// 系统管理
import AccountManageView from '~/pages/systemManage/accountManage';
......@@ -220,6 +229,17 @@ export const routerList: Array<RouteObjectType> = [
},
},
{
path: '/customManage/customVerificationDetail',
element: withLoadingComponent(<CustomVerificationDetailView />),
errorElement: <ErrorPage />,
meta: {
id: 240,
title: '实名认证详情',
hidden: true,
icon: <SolutionOutlined />,
},
},
{
path: '/customManage/customList/detail',
element: withLoadingComponent(<CustomListDetail />),
errorElement: <ErrorPage />,
......@@ -990,6 +1010,39 @@ export const routerList: Array<RouteObjectType> = [
icon: <UserOutlined />,
},
},
{
path: '/flyerCenter/flyerAuthDaily',
element: withLoadingComponent(<FlyerAuthDailyView />),
errorElement: <ErrorPage />,
meta: {
id: 1520,
title: '认证日志',
hidden: true,
icon: <UserOutlined />,
},
},
{
path: '/flyerCenter/flyerDetail',
element: withLoadingComponent(<FlyerDetailsView />),
errorElement: <ErrorPage />,
meta: {
id: 1530,
title: '飞手详情',
hidden: true,
icon: <UserOutlined />,
},
},
{
path: '/flyerCenter/flyerApprove',
element: withLoadingComponent(<FlyerDetailsView />),
errorElement: <ErrorPage />,
meta: {
id: 1540,
title: '飞手审批',
hidden: true,
icon: <UserOutlined />,
},
},
],
},
{
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论