提交 ce72e3d3 作者: 龚洪江

Merge branch 'develop'

......@@ -14,4 +14,4 @@ patches:
images:
- name: REGISTRY/NAMESPACE/IMAGE:TAG
newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/admin
newTag: 8b6264c308beae36de6ac8a133d0d8d52497d6fc
newTag: 9a54b481ab291a270787c485217d307c2d1d5c4e
......@@ -15,6 +15,7 @@ import { ForumManageAPI } from './modules/forumManageAPI';
import { PilotTrainAPI } from './modules/pilotTrainAPI';
import { FlyerCenterAPI } from './modules/flyerCenterAPI';
import { RentManageAPI } from './modules/rentManageAPI';
import { DepleteManageTypeAPI } from './modules/depleteManageTypeAPI';
export {
CommonAPI,
......@@ -34,4 +35,5 @@ export {
PilotTrainAPI,
FlyerCenterAPI,
RentManageAPI,
DepleteManageTypeAPI,
};
import { InterFunction, InterListFunction } from '~/api/interface';
// 提现列表
export type listPageWithdrawalApplyType = InterListFunction<
{
/**
* 状态: 0提现申请中 1提现成功 2提现失败
*/
tradeStatus?: string;
/**
* 结束时间
*/
endTime?: string;
/**
* 关键字
*/
keyword?: string;
/**
* 通道标识-微信(wechat)-支付宝(alipay)-银行卡(bank_card)
*/
settleType?: string;
/**
* 开始时间
*/
startTime?: string;
},
{
/**
* 申请金额
*/
applyAmt?: number;
/**
* 状态: 0平台处理中 1提现成功 2提现失败
*/
applyStatus?: number;
/**
* 开户银行-支行名称
*/
bankName?: string;
/**
* 创建时间
*/
createTime?: Date;
/**
* 开户人
*/
empName?: string;
/**
* id
*/
id: number;
/**
* 流水编号
*/
outerTradeNo?: string;
/**
* 收款账号
*/
payAccount?: string;
/**
* 手机号
*/
phoneNum?: string;
/**
* 备注
*/
remark?: string;
/**
* 提现方式-微信(wechat)-支付宝(alipay)-银行卡(bank_card)
*/
settleType: string;
/**
* 处理信息
*/
tradeResult?: string;
tradeStatus: string;
/**
* 申请人的用户ID
*/
userAccountId?: number;
}
>;
//提现审批
export type approveWithdrawalApplyType = InterFunction<
{
/**
* 状态: 0提现申请中 1审批通过 2审批未通过
*/
applyStatus: number;
/**
* 申请单ID
*/
id: number;
/**
* 备注
*/
remark?: string;
},
any
>;
......@@ -603,3 +603,262 @@ export type getMallOrderDetailById = InterFunction<
userName: string;
}
>;
// 需求订单-列表
export type serviceOrderFormListType = InterItemFunction<
{
orderAttribute?: number;
/**
* 抢单手机号
*/
preemptPhone?: string;
/**
* 发单手机号
*/
publishPhone?: string;
},
{
/**
* 订单当前状态
*/
doing?: string;
/**
* id
*/
id?: number;
/**
* 1正常 2争议订单
*/
orderAttribute?: number;
/**
* 平台总收益
*/
orderEarnings?: number;
/**
* 订单级别 REGULAR_ORDER,RUSH_ORDER,TOP_ORDER
*/
orderLevel?: string;
/**
* 抢单者电话
*/
preemptPhone?: string;
/**
* 发布者订单编号
*/
publisherNumber?: string;
/**
* 发布者电话
*/
publishPhone?: string;
/**
* 服务类型id
*/
serviceId?: number;
/**
* 服务类型名称
*/
serviceName?: string;
waiting: string;
}[]
>;
// 需求订单-详情
export type serviceOrderFormDetailsType = InterFunction<
{ requirementsInfoId: number },
{
cashAmount: number;
createTime: string;
id: number;
latitude: number;
longitude: number;
orderAmount: number;
orderEarnings: number;
orderEarningsDTO: null;
preemptCashAmount: number;
preemptSalaryAmount: number;
preemptWeChat: number;
publisherNumber: string;
requireDescription: string;
salaryAmount: number;
serviceId: number;
serviceName: string;
taskAddress: string;
taskEndTime: string;
taskStartTime: string;
updateOrderAmount: number;
weChat: number;
orderStatus: string;
}
>;
// 需求订单-进度条
export type flowDictionaryType = InterFunction<
any,
{
/**
* 当前状态
*/
doing: string;
/**
* 飞手当前状态
*/
flyerPort: string;
id: number;
/**
* 状态码
*/
orderStatus: string;
/**
* 用户当前流程状态
*/
userPort: string;
/**
* 等待状态
*/
waiting: string;
}[]
>;
// 需求订单-进度条(带时间)
type flowDictionaryDTO = {
/**
* 当前状态
*/
doing?: string;
/**
* 飞手当前状态
*/
flyerPort?: string;
id?: number;
/**
* 状态码
*/
orderStatus?: string;
/**
* 用户当前流程状态
*/
userPort?: string;
/**
* 等待状态
*/
waiting?: string;
};
export type flowDictionaryAndTimeType = InterFunction<
{ requirementsInfoId: number },
{
amountUpdate?: {
createTime?: Date;
flowDictionaryDTO?: flowDictionaryDTO;
/**
* 服务需求id
*/
requirementsInfoId: number;
updateTime?: Date;
};
requirementsServiceDTO?: {
/**
* 抢单时间
*/
createTime?: string;
flowDictionaryDTO?: flowDictionaryDTO;
/**
* 服务id
*/
requirementsInfoId?: number;
/**
* 抢单时间
*/
updateTime?: string;
};
serviceArriveSceneDTO?: {
/**
* 到达现场时间
*/
createTime?: string;
flowDictionaryDTO?: flowDictionaryDTO;
/**
* id
*/
id?: number;
/**
* id
*/
latitude?: number;
/**
* id
*/
longitude?: number;
/**
* 服务需求id
*/
requirementsInfoId: number;
/**
* 现场地址
*/
sceneAddress?: string;
/**
* 现场地址的url
*/
sceneUrl: string;
updateTime?: string;
};
serviceEvaluateDTO?: {
createTime?: Date;
/**
* 评价内容
*/
evaluationContent?: string;
/**
* 评价图片
*/
evaluationUrl?: string;
flowDictionaryDTO?: flowDictionaryDTO;
/**
* id
*/
id?: number;
/**
* 需求id
*/
requirementsInfoId?: number;
/**
* 星级
*/
starLevel?: string;
updateTime?: Date;
};
serviceFulfilATaskDTO?: {
createTime?: Date;
flowDictionaryDTO?: flowDictionaryDTO;
id?: number;
/**
* 需求id
*/
requirementsInfoId?: number;
/**
* 完成任务描述
*/
taskDescribe?: string;
/**
* 完成任务图片
*/
taskUrl?: string;
updateTime?: Date;
};
serviceSettleAccountsDTO?: {
createTime?: Date;
flowDictionaryDTO?: flowDictionaryDTO;
id?: number;
/**
* 订单金额
*/
orderAmount?: number;
/**
* 备注
*/
remark?: string;
/**
* 需求id
*/
requirementsInfoId?: number;
updateTime?: Date;
};
}
>;
import {
approveWithdrawalApplyType,
listPageWithdrawalApplyType,
} from '~/api/interface/depleteManageType';
import axios from '~/api/request';
export class DepleteManageTypeAPI {
// 提现列表
static getListPageWithdrawalApply: listPageWithdrawalApplyType = (data) =>
axios.post('/userapp/withdrawal/listPageWithdrawalApply', data);
//提现审批
static approveWithdrawalApply: approveWithdrawalApplyType = (params) =>
axios.get('/userapp/withdrawal/approveWithdrawalApply', { params });
}
import axios from '../request';
import {
flowDictionaryAndTimeType,
flowDictionaryType,
getMallOrderDetailById,
listExpressInfoType,
listOfRentalOrdersType,
......@@ -14,6 +16,8 @@ import {
refundOrderType,
renterTakeOrderType,
sendOrderWareType,
serviceOrderFormDetailsType,
serviceOrderFormListType,
serviceOrderStatusType,
serviceOrderType,
} from '~/api/interface/orderManageType';
......@@ -79,4 +83,17 @@ export class OrderManageAPI {
// 服务-订单字典
static getServiceStatusList: serviceOrderStatusType = () =>
axios.post('/oms/serviceOrderTask/getServiceOrderStatus');
//需求订单-列表
static getServiceOrderFormList: serviceOrderFormListType = (data) =>
axios.post('/release/backRequirements/serviceOrderFormList', data);
// 需求订单-详情
static getServiceOrderFormDetails: serviceOrderFormDetailsType = (params) =>
axios.get('/release/backRequirements/serviceOrderFormDetails', { params });
// 需求订单-进度条(带时间)
static getFlowDictionaryAndTime: flowDictionaryAndTimeType = (params) =>
axios.get('/release/requirements/flowDictionaryAndTime', { params });
// 需求订单-进度条
static getFlowDictionary: flowDictionaryType = () =>
axios.get('/release/requirements/flowDictionary');
}
import { FC } from 'react';
import { Modal, ModalProps } from 'antd';
interface selfProps {
url: string;
title: string;
}
const IframeModal: FC<ModalProps & selfProps> = ({ open, onCancel, title, url }) => {
return (
<Modal open={open} onCancel={onCancel} title={title}>
<iframe src={url} title={title} style={{ width: '100%', height: '1000px' }} />
</Modal>
);
};
export default IframeModal;
......@@ -59,9 +59,8 @@ const RichText: React.FC<PropsType> = ({
}
const formData = new FormData();
formData.append('uploadFile', file);
CommonAPI.uploadOss(formData).then(({ result }) => {
insertFn(result.filePath);
});
const { result } = await CommonAPI.uploadOss(formData);
insertFn(result.filePath);
},
},
},
......@@ -94,7 +93,7 @@ const RichText: React.FC<PropsType> = ({
return (
<>
<div style={{ border: '1px solid #ccc', zIndex: 100 }}>
<div style={{ border: '1px solid #ccc', zIndex: 100, width: '100%' }}>
<Toolbar
editor={editor}
defaultConfig={toolbarConfig}
......
......@@ -90,7 +90,7 @@ const AddEditModalView: React.FC<ModalProps & selfProps> = ({ open, title, onCan
name='description'
rules={[{ required: true, message: '请输入分类描述' }]}
>
<Input placeholder='请输入分类名称' maxLength={25} allowClear />
<Input placeholder='请输入分类描述' maxLength={25} allowClear />
</Form.Item>
</Form>
</Modal>
......
import { Form, Input, message, Modal, ModalProps, Radio } from 'antd';
import { FC } from 'react';
import { DepleteManageTypeAPI } from '~/api';
import { listPageWithdrawalApplyType } from '~/api/interface/depleteManageType';
import { InterListType } from '~/api/interface';
// 提现列表返回类型
type withdrawalApplyType = InterListType<listPageWithdrawalApplyType>;
interface selfProps {
onOk: () => void;
onCancel: () => void;
currentWithDrawItem: withdrawalApplyType[0] | undefined;
}
const ApplyStatusModal: FC<ModalProps & selfProps> = ({
open,
onOk,
onCancel,
currentWithDrawItem,
}) => {
const [form] = Form.useForm<{ applyStatus: number; remark?: string }>();
const handleOk = () => {
if (currentWithDrawItem) {
form.validateFields().then((values) => {
DepleteManageTypeAPI.approveWithdrawalApply({ ...values, id: currentWithDrawItem.id }).then(
({ code }) => {
if (code === '200') {
message.success('审批成功');
form.resetFields();
onOk();
}
},
);
});
}
};
const handleCancel = () => {
form.resetFields();
onCancel();
};
return (
<Modal title='审批' open={open} onOk={handleOk} onCancel={handleCancel}>
<Form
form={form}
initialValues={{ applyStatus: 1 }}
wrapperCol={{ span: 22 }}
labelCol={{ span: 2 }}
>
<Form.Item label='状态' name='applyStatus'>
<Radio.Group>
<Radio value={1}>提现成功</Radio>
<Radio value={2}>提现失败</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label='备注' name='remark'>
<Input.TextArea placeholder='请输入备注' maxLength={70} rows={4} showCount />
</Form.Item>
</Form>
</Modal>
);
};
export default ApplyStatusModal;
import SearchBox from '~/components/search-box';
import { searchColumns as searchColumnsType } from '~/components/search-box';
import { Button, Table } from 'antd';
import { ColumnsType } from 'antd/es/table/InternalTable';
import { DepleteManageTypeAPI } from '~/api';
import { useEffect, useState } from 'react';
import { InterListType, PaginationProps } from '~/api/interface';
import { listPageWithdrawalApplyType } from '~/api/interface/depleteManageType';
import { filterObjAttr } from '~/utils';
import ApplyStatusModal from '~/pages/depleteManage/withDrawList/components/applyStatusModal';
import { withdrawStatusList } from '~/utils/dictionary';
// 提现列表返回类型
type withdrawalApplyType = InterListType<listPageWithdrawalApplyType>;
// 提现列表请求类型
type withdrawalApplyParameterType = InterListType<listPageWithdrawalApplyType>;
// 提现方式字典
const settleTypeDic = [
{
label: '微信',
value: 'wechat',
},
{
label: '支付宝',
value: 'alipay',
},
{
label: '银行卡',
value: 'bankcard',
},
];
const WithDrawManage = () => {
const searchColumns: searchColumnsType[] = [
{
label: '关键字',
placeholder: '请输入关键字',
name: 'keyword',
type: 'input',
},
{
label: '状态',
placeholder: '请选择状态',
name: 'tradeStatus',
type: 'Select',
options: withdrawStatusList,
},
{
label: '提现方式',
placeholder: '请选择提现方式',
name: 'settleType',
type: 'Select',
options: settleTypeDic,
},
{
label: '时间',
name: 'time',
type: 'rangePicker',
placeholder: '',
},
];
const tableColumns: ColumnsType<withdrawalApplyType[0]> = [
{
title: '流水编号',
align: 'center',
dataIndex: 'outerTradeNo',
},
{
title: '账户名称',
align: 'center',
dataIndex: 'empName',
},
{
title: '金额',
align: 'center',
dataIndex: 'applyAmt',
render: (text: number) => text.toFixed(2).toLocaleString(),
},
{
title: '提现方式',
align: 'center',
dataIndex: 'settleType',
render: (text: string) => settleTypeDic.find((v) => v.value === text)?.label || '',
},
{
title: '手机号',
align: 'center',
dataIndex: 'phoneNum',
},
{
title: '收款账号',
align: 'center',
dataIndex: 'payAccount',
},
{
title: '状态',
align: 'center',
dataIndex: 'tradeStatus',
render: (text: string) => withdrawStatusList.find((v) => v.value === text)?.label || '',
},
{
title: '处理信息',
align: 'center',
dataIndex: 'tradeResult',
},
{
title: '时间',
align: 'center',
dataIndex: 'createTime',
},
{
title: '备注',
align: 'center',
dataIndex: 'remark',
},
{
title: '操作',
align: 'center',
render: (_: any, record) => (
<Button
type='link'
onClick={() => applyStatusEvent(record)}
disabled={record.applyStatus !== 0}
>
审批
</Button>
),
},
];
const [tableData, setTableData] = useState<withdrawalApplyType>([]);
const [pagination, setPagination] = useState<PaginationProps & { totalCount: number }>({
pageNo: 1,
pageSize: 10,
totalCount: 0,
});
const [query, setQuery] = useState<withdrawalApplyParameterType>();
// 审批弹窗
const [applyStatusModalShow, setApplyStatusModalShow] = useState<boolean>(false);
// 当前审批对象
const [currentWithDrawItem, setCurrentWithDrawItem] = useState<withdrawalApplyType[0]>();
// 获取提现列表
const getListPageWithdrawalApply = (query?: withdrawalApplyParameterType) => {
DepleteManageTypeAPI.getListPageWithdrawalApply({
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;
getListPageWithdrawalApply(query);
};
// 筛选成功
const searchSuccess = (value: any) => {
pagination.pageNo = 1;
pagination.pageSize = 10;
const filterQuery = filterObjAttr(value, ['time']);
setQuery(filterQuery);
getListPageWithdrawalApply(filterQuery);
};
// 审批弹窗事件
const applyStatusEvent = (record: withdrawalApplyType[0]) => {
setCurrentWithDrawItem(record);
setApplyStatusModalShow(true);
};
const applyStatusModalCancel = () => {
setApplyStatusModalShow(false);
};
const applyStatusModalOk = () => {
setApplyStatusModalShow(false);
getListPageWithdrawalApply(query);
};
useEffect(() => {
getListPageWithdrawalApply();
}, []);
return (
<div className='with-draw-manage'>
<SearchBox search={searchColumns} searchData={searchSuccess} />
<Table
bordered
columns={tableColumns}
rowKey='id'
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} 条数据`,
}}
/>
{/*审批*/}
<ApplyStatusModal
open={applyStatusModalShow}
onCancel={applyStatusModalCancel}
onOk={applyStatusModalOk}
currentWithDrawItem={currentWithDrawItem}
/>
</div>
);
};
export default WithDrawManage;
import { Button, Descriptions, Steps } from 'antd';
import { useNavigate } from 'react-router-dom';
import RichText from '~/components/richText';
import { useSearchParams } from 'react-router-dom';
import { OrderManageAPI } from '~/api';
import { useEffect, useState } from 'react';
import { InterDataType } from '~/api/interface';
import { serviceOrderFormDetailsType } from '~/api/interface/orderManageType';
// 详情返回类型
type detailType = InterDataType<serviceOrderFormDetailsType>;
const flowStatusKey = [
{
orderStatus: '550',
key: 'amountUpdate',
},
{
orderStatus: '100',
key: 'releaseSuccess',
},
{
orderStatus: '200',
key: 'requirementsServiceDTO',
},
{
orderStatus: '300',
key: 'serviceArriveSceneDTO',
},
{
orderStatus: '400',
key: 'serviceFulfilATaskDTO',
},
{
orderStatus: '500',
key: 'serviceSettleAccountsDTO',
},
{
orderStatus: '600',
key: 'serviceEvaluateDTO',
},
];
const DemandOrderDetail = () => {
const navigate = useNavigate();
const [searchParams] = useSearchParams();
// 需求订单详情
const [demandDetail, setDemandDetail] = useState<detailType>();
// 进度条
const [steps, setSteps] = useState<{ title: string; description: string }[]>([]);
// 当前进度
const [currentStep, setCurrentStep] = useState<number>(0);
//获取详情
const getServiceOrderFormDetails = (requirementsInfoId: number) => {
OrderManageAPI.getServiceOrderFormDetails({ requirementsInfoId }).then(({ result }) => {
setDemandDetail(result);
});
};
// 获取进度条
const getFlowDictionaryList = (requirementsInfoId: number) => {
OrderManageAPI.getFlowDictionary().then(({ result: flowDictionaryResult }) => {
OrderManageAPI.getFlowDictionaryAndTime({ requirementsInfoId }).then(
(flowDictionaryAndTimeRes: any) => {
// 排序
const flowDictionarySortResult = flowDictionaryResult.sort(
(a, b) => Number(a.orderStatus) - Number(b.orderStatus),
);
if (demandDetail) {
const flowDictionaryFilterResult = ['700'].includes(demandDetail.orderStatus)
? flowDictionarySortResult.filter((v) => v.orderStatus === demandDetail.orderStatus)
: ['550'].includes(demandDetail.orderStatus)
? flowDictionarySortResult.filter(
(v) =>
v.orderStatus !== demandDetail.orderStatus && !['700'].includes(v.orderStatus),
)
: flowDictionarySortResult.filter((v) => !['700', '550'].includes(v.orderStatus));
const stepList = flowDictionaryFilterResult
.map((v) => {
return {
...v,
key: flowStatusKey.find((i) => i.orderStatus === v.orderStatus)?.key,
};
})
.map((v) => {
return {
title: demandDetail?.orderStatus > v.orderStatus ? v.doing : v.waiting,
orderStatus: v.orderStatus,
description: v.key
? flowDictionaryAndTimeRes.result[v.key]?.createTime || ''
: '',
};
});
setSteps(stepList);
setCurrentStep(stepList.findIndex((v) => v.orderStatus === demandDetail.orderStatus));
}
},
);
});
};
// 返回
const backRoute = () => {
navigate(-1);
};
useEffect(() => {
getServiceOrderFormDetails(Number(searchParams.get('id')));
}, []);
useEffect(() => {
if (demandDetail) {
getFlowDictionaryList(Number(searchParams.get('id')));
}
}, [demandDetail]);
return (
<div className='demand-order-detail'>
<Descriptions
title='订单进度'
extra={
<Button type='primary' onClick={backRoute}>
返回
</Button>
}
>
<Descriptions.Item>
<Steps current={currentStep} items={steps} />
</Descriptions.Item>
</Descriptions>
<Descriptions title='订单信息' bordered style={{ marginTop: '10px' }}>
<Descriptions.Item label='发单时间'>{demandDetail?.createTime}</Descriptions.Item>
<Descriptions.Item label='订单类型'>{demandDetail?.serviceName}</Descriptions.Item>
<Descriptions.Item label='订单编号'>{demandDetail?.publisherNumber}</Descriptions.Item>
<Descriptions.Item label='订单金额'>
{demandDetail?.orderAmount.toFixed(2).toLocaleString()}
</Descriptions.Item>
<Descriptions.Item label='任务时间'>
{demandDetail?.taskStartTime}~{demandDetail?.taskEndTime}
</Descriptions.Item>
<Descriptions.Item label='任务地址'>{demandDetail?.taskAddress}</Descriptions.Item>
<Descriptions.Item label='平台收益'>
{demandDetail?.orderEarnings.toFixed(2).toLocaleString()}
</Descriptions.Item>
</Descriptions>
<Descriptions title='发单方' bordered style={{ marginTop: '10px' }}>
<Descriptions.Item label='冻结云享金'>
{demandDetail?.cashAmount.toFixed(2).toLocaleString()}
</Descriptions.Item>
<Descriptions.Item label='冻结余额'>
{demandDetail?.salaryAmount.toFixed(2).toLocaleString()}
</Descriptions.Item>
<Descriptions.Item label='冻结微信支付'>
{demandDetail?.weChat.toFixed(2).toLocaleString()}
</Descriptions.Item>
</Descriptions>
<Descriptions title='接单方' bordered style={{ marginTop: '10px' }}>
<Descriptions.Item label='冻结云享金'>
{demandDetail?.preemptCashAmount.toFixed(2).toLocaleString()}
</Descriptions.Item>
<Descriptions.Item label='冻结余额'>
{demandDetail?.preemptSalaryAmount.toFixed(2).toLocaleString()}
</Descriptions.Item>
<Descriptions.Item label='冻结微信支付'>
{demandDetail?.preemptWeChat.toFixed(2).toLocaleString()}
</Descriptions.Item>
</Descriptions>
<Descriptions
title='订单争议处理记录'
style={{ marginTop: '10px' }}
column={1}
extra={
<Button danger type='primary'>
确认判定
</Button>
}
>
<Descriptions.Item label='判定结果' labelStyle={{ color: '#000' }}>
<div style={{ color: 'red' }}>
1、发单方责任(扣除30%违约金,20%支付给接单方,信息推送)
<br />
2、发单方责任(扣除30%违约金,20%支付给接单方,信息推送)
<br />
3、双方无责(不扣违约金,信息推送)
</div>
</Descriptions.Item>
<Descriptions.Item>
<RichText richTextContent='' />
</Descriptions.Item>
</Descriptions>
</div>
);
};
export default DemandOrderDetail;
import SearchBox from '~/components/search-box';
import { searchColumns as searchColumnsType } from '~/components/search-box';
import { Button, Table, Tag } from 'antd';
import { ColumnsType } from 'antd/es/table/InternalTable';
import { useEffect, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { OrderManageAPI } from '~/api';
import { InterDataType, InterListType, PaginationProps } from '~/api/interface';
import { serviceOrderFormListType } from '~/api/interface/orderManageType';
import { orderLevelList } from '~/utils/dictionary';
// 需求订单列表返回类型
type demandOrderListType = InterDataType<serviceOrderFormListType>['list'];
// 需求订单列表请求类型
type demandOrderListParameterType = InterListType<serviceOrderFormListType>;
const DemandOrderList = () => {
const navigate = useNavigate();
const searchColumns: searchColumnsType[] = [
{
label: '发单手机号',
name: 'publishPhone',
type: 'input',
placeholder: '请输入发单手机号',
},
{
label: '接单手机号',
name: 'preemptPhone',
type: 'input',
placeholder: '请输入接单手机号',
},
{
label: '订单属性',
name: 'orderAttribute',
type: 'Select',
placeholder: '请选择订单属性',
options: [
{ label: '正常订单', value: 1 },
{ label: '争议订单', value: 2 },
],
},
];
const tableColumns: ColumnsType<demandOrderListType[0]> = [
{
title: '发单时间',
align: 'center',
dataIndex: 'createTime',
},
{
title: '订单类型',
align: 'center',
dataIndex: 'serviceName',
},
{
title: '订单级别',
align: 'center',
dataIndex: 'orderLevel',
render: (text: string) => (
<Tag>{orderLevelList.find((v) => v.code === text)?.label || ''}</Tag>
),
},
{
title: '订单编号',
align: 'center',
dataIndex: 'publisherNumber',
},
{
title: '发单方信息',
align: 'center',
dataIndex: 'publishPhone',
},
{
title: '接单方信息',
align: 'center',
dataIndex: 'preemptPhone',
},
{
title: '订单状态',
align: 'center',
dataIndex: 'waiting',
},
{
title: '订单属性',
align: 'center',
dataIndex: 'orderAttribute',
render: (text: number) => (text === 1 ? '正常订单' : '争议订单'),
},
{
title: '订单收益',
align: 'center',
dataIndex: 'orderEarnings',
render: (text: number) => text.toFixed(2).toLocaleString(),
},
{
title: '操作',
align: 'center',
render: (_text: any, record) => (
<Button type='link' onClick={() => toOrderDetail(record)}>
查看订单
</Button>
),
},
];
const [tableData, setTableData] = useState<demandOrderListType>([]);
const [pagination, setPagination] = useState<PaginationProps & { totalCount: number }>({
pageNo: 1,
pageSize: 10,
totalCount: 0,
});
const [query, setQuery] = useState<demandOrderListParameterType>();
// 获取需求订单列表
const getServiceOrderFormList = (query?: demandOrderListParameterType) => {
OrderManageAPI.getServiceOrderFormList({
pageNo: pagination.pageNo,
pageSize: pagination.pageSize,
...query,
}).then(({ result }) => {
setTableData(result.list || []);
pagination.totalCount = result.totalCount;
setPagination({ ...pagination });
});
};
// 订单详情
const toOrderDetail = (record: demandOrderListType[0]) => {
navigate({ pathname: '/orderManage/demandOrderDetail', search: `id=${record.id}` });
};
//分页
const paginationChange = (pageNo: number, pageSize: number) => {
pagination.pageNo = pageNo;
pagination.pageSize = pageSize;
getServiceOrderFormList(query);
};
// 筛选成功事件
const searchSuccessEvent = (value: any) => {
setQuery(value);
pagination.pageNo = 1;
pagination.pageSize = 10;
getServiceOrderFormList(value);
};
useEffect(() => {
getServiceOrderFormList();
}, []);
return (
<div className='demand-order'>
<SearchBox search={searchColumns} searchData={searchSuccessEvent} />
<Table
columns={tableColumns}
bordered
rowKey='id'
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 DemandOrderList;
import { Button, Descriptions, Table } from 'antd';
import { useNavigate } from 'react-router-dom';
const ProcurementOrderDetail = () => {
const navigate = useNavigate();
const backRoute = () => {
navigate(-1);
};
return (
<div className='procurement-order-detail'>
<Descriptions
title='供应商'
bordered
extra={
<Button type='primary' onClick={backRoute}>
返回
</Button>
}
>
<Descriptions.Item label='供应商名称:'>供应商名称:</Descriptions.Item>
<Descriptions.Item label='供应商电话:'>供应商电话:</Descriptions.Item>
<Descriptions.Item label='Live'>Hangzhou, Zhejiang</Descriptions.Item>
</Descriptions>
<Descriptions title='订单' style={{ marginTop: '10px' }} column={3}>
<Descriptions.Item label='订单编号:' labelStyle={{ color: '#000' }}>
1
</Descriptions.Item>
<Descriptions.Item label='创建时间:' labelStyle={{ color: '#000' }}>
2
</Descriptions.Item>
<Descriptions.Item label='合同编号:' labelStyle={{ color: '#000' }}>
3
</Descriptions.Item>
<Descriptions.Item span={3}>
<Table bordered style={{ width: '100%' }} />
</Descriptions.Item>
</Descriptions>
<Descriptions title='物流' bordered style={{ marginTop: '10px' }}>
<Descriptions.Item label='收货人:'>供应商名称:</Descriptions.Item>
<Descriptions.Item label='手机号:'>供应商电话:</Descriptions.Item>
<Descriptions.Item label='收货地址:'>Hangzhou, Zhejiang</Descriptions.Item>
<Descriptions.Item label='物流单号:'>Hangzhou, Zhejiang</Descriptions.Item>
<Descriptions.Item label='物流进度:'>Hangzhou, Zhejiang</Descriptions.Item>
</Descriptions>
<Descriptions title='凭证' bordered style={{ marginTop: '10px' }}>
<Descriptions.Item label='付款凭证:'>供应商名称:</Descriptions.Item>
<Descriptions.Item label='验收商品:'>供应商电话:</Descriptions.Item>
<Descriptions.Item label='合同信息:'>Hangzhou, Zhejiang</Descriptions.Item>
</Descriptions>
</div>
);
};
export default ProcurementOrderDetail;
import SearchBox from '~/components/search-box';
import { Button, Table } from 'antd';
import { useEffect, useState } from 'react';
import { OrderManageAPI } from '~/api';
import { ColumnsType } from 'antd/es/table/InternalTable';
import { useNavigate } from 'react-router-dom';
const ProcurementOrderList = () => {
const navigate = useNavigate();
// 订单状态
const [orderStatusList, setOrderStatusList] = useState<{ value: number; label: string }[]>([]);
// 订单状态搜索列表
const [tranStatusList, setTranStatusList] = useState<
{ value: number | undefined; label: string }[]
>([]);
// 当前选择的是第几个按钮
const [statusCodeButtonIndex, setStatusCodeButtonIndex] = useState<number>(0);
// 表格数据
const [tableData, setTableData] = useState<any>([{ id: 1 }]);
const tableColumns: ColumnsType<any> = [
{
title: '商品',
align: 'center',
},
{
title: '订单金额(元)',
align: 'center',
},
{
title: '买家',
align: 'center',
},
{
title: '订单状态',
align: 'center',
},
{
title: '实收款',
align: 'center',
},
{
title: '推荐人',
align: 'center',
},
{
title: '订单交期',
align: 'center',
},
{
title: '备注',
align: 'center',
},
{
title: '操作',
align: 'center',
render: () => (
<Button type='link' onClick={toProcurementOrderDetail}>
详情
</Button>
),
},
];
// 获取订单状态
const getOrderStatus = () => {
OrderManageAPI.orderListStatus({}).then(({ result }) => {
const list = result.map((item) => ({ value: item.code, label: item.status }));
setOrderStatusList(list);
const arr = list
.filter((i) => [999, 800, 720, 300, 200, 100, 50].includes(i.value))
.reverse();
setTranStatusList([{ value: undefined, label: '全部订单' }, ...arr]);
});
};
// 订单状态筛选
const statusChangeEvent = (i: number) => {
if (i === statusCodeButtonIndex) {
setStatusCodeButtonIndex(0);
} else {
setStatusCodeButtonIndex(i);
}
};
// 采购订单详情
const toProcurementOrderDetail = () => {
navigate('/orderManage/procurementOrder/detail');
};
useEffect(() => {
getOrderStatus();
}, []);
return (
<div className='procurement-order-list'>
<SearchBox
search={[
{
label: '订单编号',
name: 'keyword',
type: 'input',
placeholder: '请输入订单编号',
},
{
label: '买家账号',
name: 'keyword2',
type: 'input',
placeholder: '请输入用户账号',
},
{
label: '时间',
name: 'rangeTime',
type: 'rangePicker',
placeholder: '请选择创建时间',
},
]}
sufFixBtn={
<>
{tranStatusList?.map((i, j) => {
return (
<Button
key={j}
type={j === statusCodeButtonIndex ? 'primary' : 'default'}
onClick={() => statusChangeEvent(j)}
style={{ marginTop: '5px' }}
>
{i.label}
</Button>
);
})}
</>
}
/>
<Table bordered columns={tableColumns} dataSource={tableData} />
</div>
);
};
export default ProcurementOrderList;
......@@ -2,9 +2,9 @@ import { useEffect, useState } from 'react';
import { useNavigate, useSearchParams } from 'react-router-dom';
import { Button } from 'antd';
import './index.scss';
import DetailDelivery from '~/pages/orderManage/productOrder/comp/detailDelivery';
import DetailPurchaser from '~/pages/orderManage/productOrder/comp/detailPurchaser';
import DetailInformation from '~/pages/orderManage/productOrder/comp/detailInformation';
import DetailDelivery from './comp/detailDelivery';
import DetailPurchaser from './comp/detailPurchaser';
import DetailInformation from './comp/detailInformation';
import { getMallOrderDetailById } from '~/api/interface/orderManageType';
import { InterDataType } from '~/api/interface';
import { OrderManageAPI } from '~/api';
......@@ -34,7 +34,6 @@ function ProductOrderDetail() {
});
if (res && res.code === '200') {
setOrderDetail(res.result);
console.log('获取订单详情 --->', res.result);
}
};
// 获取订单状态
......
import { FC } from 'react';
import { Form, Modal, ModalProps, Radio } from 'antd';
interface selfProps {
onCancel: () => void;
onOk: () => void;
}
const ApprovalOrder: FC<ModalProps & selfProps> = ({ open, onCancel, onOk }) => {
const handleOk = () => {
onOk();
};
const handleCancel = () => {
onCancel();
};
return (
<Modal open={open} title='凭证审批' onOk={handleOk} onCancel={handleCancel}>
<Form labelCol={{ span: 4 }} wrapperCol={{ span: 12 }}>
<Form.Item label='状态'>
<Radio.Group>
<Radio value={1}>通过</Radio>
<Radio value={2}>驳回</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label='凭证'></Form.Item>
</Form>
</Modal>
);
};
export default ApprovalOrder;
import { Form, Modal, ModalProps, Select } from 'antd';
import { FC } from 'react';
interface selfProps {
onCancel: () => void;
onOk: () => void;
}
const DistributionOrder: FC<ModalProps & selfProps> = ({ open, onCancel, onOk }) => {
const handleOk = () => {
onOk();
};
const handleCancel = () => {
onCancel();
};
return (
<Modal open={open} title='分配订单' onOk={handleOk} onCancel={handleCancel}>
<Form labelCol={{ span: 6 }} wrapperCol={{ span: 16 }}>
<Form.Item label='订单编号'></Form.Item>
<Form.Item label='订单名称'></Form.Item>
<Form.Item label='分配运营' rules={[{ required: true, message: '请选择运营人员' }]}>
<Select placeholder='请选择运营人员'></Select>
</Form.Item>
</Form>
</Modal>
);
};
export default DistributionOrder;
import { FC } from 'react';
import { Cascader, Form, Input, Modal, ModalProps, Select } from 'antd';
interface selfProps {
onCancel: () => void;
onOk: () => void;
}
const ShipmentsOrder: FC<ModalProps & selfProps> = ({ onOk, onCancel, open }) => {
const handleOk = () => {
onOk();
};
const handleCancel = () => {
onCancel();
};
return (
<Modal open={open} title='发货' onOk={handleOk} onCancel={handleCancel}>
<Form
name='basic'
labelCol={{ span: 4 }}
wrapperCol={{ span: 16 }}
initialValues={{ remember: true }}
autoComplete='off'
>
<Form.Item
label='物流公司'
name='sendExpCode'
rules={[
{
required: true,
message: '请选择物流公司',
},
]}
>
<Select placeholder='请选择物流公司' allowClear></Select>
</Form.Item>
<Form.Item
label='物流编号'
name='sendExpNo'
rules={[
{
required: true,
message: '请输入物流编号',
},
]}
>
<Input placeholder='请输入物流编号' allowClear />
</Form.Item>
<Form.Item
label='用户姓名'
name='takeName'
// rules={[
// {
// validator: validateUserName,
// required: true,
// },
// ]}
>
<Input placeholder='请输入用户姓名' allowClear />
</Form.Item>
<Form.Item
label='手机号'
name='takePhone'
// rules={[
// {
// validator: validatePhone,
// required: true,
// },
// ]}
>
<Input placeholder='请输入手机号' allowClear />
</Form.Item>
<Form.Item
label='收货地址'
name='takeRegion'
rules={[
{
required: false,
message: '请选择收货地址',
},
]}
>
<Cascader
// options={location}
placeholder='请选择收货地址'
allowClear
fieldNames={{
label: 'name',
value: 'name',
children: 'childInfo',
}}
/>
</Form.Item>
<Form.Item
label='详细地址'
name='takeAddress'
rules={[
{
required: false,
message: '请输入收货地址',
},
]}
>
<Input.TextArea maxLength={70} showCount placeholder='请输入收货地址' allowClear />
</Form.Item>
</Form>
</Modal>
);
};
export default ShipmentsOrder;
.sure-order{
.address-info,.order-info,.contract-info{
&-title{
font-size: 10px;
font-weight: bold;
}
}
.order-info{
&-form{
margin-top: 10px;
}
}
}
import { FC } from 'react';
import { Button, Cascader, Col, Form, Input, Modal, ModalProps, Row, Table, Upload } from 'antd';
import './index.scss';
import { ColumnsType } from 'antd/es/table/InternalTable';
import { UploadOutlined } from '@ant-design/icons';
interface selfProps {
onCancel: () => void;
onOk: () => void;
}
const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel }) => {
const tableColumns: ColumnsType<any> = [
{
title: '商品',
align: 'center',
},
{
title: '价格',
align: 'center',
},
{
title: '数量',
align: 'center',
},
];
const handleOk = () => {
onOk();
};
const handleCancel = () => {
onCancel();
};
return (
<Modal open={open} title='确认订单' onOk={handleOk} onCancel={handleCancel} width={800}>
<div className='sure-order'>
<div className='address-info'>
<div className='address-info-title'>收货信息:</div>
<div className='address-info-form'>
<Form labelCol={{ span: 5 }} wrapperCol={{ span: 16 }}>
<Form.Item
label='收货人'
name='takeName'
// rules={[{ required: true, validator: validateUserName }]}
>
<Input placeholder='请输入收货人' style={{ width: '300px' }} />
</Form.Item>
<Form.Item
label='联系方式'
name='takePhone'
// rules={[{ required: true, validator: validatePhone }]}
>
<Input placeholder='请输入联系方式' style={{ width: '300px' }} />
</Form.Item>
<Form.Item
label='所属地区'
rules={[{ required: true, message: '请输入所属地区' }]}
name='takeRegion'
>
<Cascader
// options={location}
style={{ width: '300px' }}
fieldNames={{
label: 'name',
value: 'name',
children: 'childInfo',
}}
placeholder='请选择所属地区'
/>
</Form.Item>
<Form.Item
label='详细地址'
name='takeAddress'
rules={[{ required: true, message: '请输入详细地址' }]}
>
<Input.TextArea
maxLength={250}
placeholder='请输入详细地址'
showCount
rows={4}
style={{ width: '300px' }}
/>
</Form.Item>
</Form>
</div>
</div>
<div className='order-info'>
<div className='order-info-title'>订单信息:</div>
<Row>
<Col span={3}></Col>
<Col span={16}>
<div className='order-info-table'>
<Table bordered columns={tableColumns} />
</div>
<div className='order-info-form'>
<Form wrapperCol={{ span: 10 }} labelCol={{ span: 3 }}>
<Form.Item label='订单交期'>
<Input placeholder='请输入订单交期' />
</Form.Item>
<Form.Item label='付款期限'>
<Input placeholder='请输入付款期限' />
</Form.Item>
</Form>
</div>
</Col>
</Row>
</div>
<div className='contract-info'>
<div className='contract-info-title'>合同签署:</div>
<div className='contract-info-form'>
<Form labelCol={{ span: 4 }} wrapperCol={{ span: 16 }}>
<Form.Item label='合同'>
<Upload>
<Button icon={<UploadOutlined />}>上传</Button>
</Upload>
</Form.Item>
</Form>
</div>
</div>
</div>
</Modal>
);
};
export default SureOrder;
import { FC } from 'react';
import { Modal, ModalProps } from 'antd';
interface selfProps {
onCancel: () => void;
onOk: () => void;
}
const TailPaymentOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel }) => {
const handleOk = () => {
onOk();
};
const handleCancel = () => {
onCancel();
};
return <Modal open={open} title='确认尾款' onOk={handleOk} onCancel={handleCancel} />;
};
export default TailPaymentOrder;
......@@ -7,6 +7,10 @@ import qs from 'query-string';
import { OrderManageAPI } from '~/api';
import { listPageManagerVerOne } from '~/api/interface/orderManageType';
import { InterListType, InterReqType } from '~/api/interface';
import DistributionOrder from './components/distributionOrder';
import SureOrder from './components/sureOrder';
import ApprovalOrder from './components/approvalOrder';
import ShipmentsOrder from './components/shipmentsOrder';
// 表格数据类型
type TableType = InterListType<listPageManagerVerOne>;
......@@ -37,6 +41,13 @@ function ProductOrderView() {
const [tableData, setTableData] = useState<TableType>([]);
// 需要编辑的数据
// const [editData, setEditData] = useState<TableType[0]>(); // 用于编辑
// 订单流程操作
const [distributionOrderShow, setDistributionOrderShow] = useState<boolean>(false); //分配
const [sureOrderShow, setSureOrderShow] = useState<boolean>(false); //确认订单
const [approvalOrderShow, setApprovalOrderShow] = useState<boolean>(false); //审核
const [shipmentsOrderShow, setShipmentsOrderShow] = useState<boolean>(false); //发货
// 加载列表
const getTableList = async (value = {}) => {
// 只需要修改这个地方的接口即可
......@@ -55,7 +66,6 @@ function ProductOrderView() {
totalPage,
});
setTableData(list);
// console.log('加载列表 --->', list);
}
};
// 翻页
......@@ -81,7 +91,6 @@ function ProductOrderView() {
};
// 跳转订单详情
const handleDetail = (record: TableType[0]) => {
console.log('跳转订单详情 --->', record.id);
navigate(`/orderManage/productOrder/detail?${qs.stringify({ id: record.id })}`);
};
// 获取订单状态
......@@ -96,6 +105,47 @@ function ProductOrderView() {
setTranStatusList([{ value: undefined, label: '全部订单' }, ...arr]);
}
};
// 分配订单
const showDistributionOrderEvent = () => {
setDistributionOrderShow(true);
};
const distributionOrderOk = () => {
setDistributionOrderShow(false);
};
const distributionOrderCancel = () => {
setDistributionOrderShow(false);
};
// 确认订单
const showSureOrderEvent = () => {
setSureOrderShow(true);
};
const sureOrderCancel = () => {
setSureOrderShow(false);
};
const sureOrderOk = () => {
setSureOrderShow(false);
};
// 凭证审批
const showApprovalOrderEvent = () => {
setApprovalOrderShow(true);
};
const approvalOrderOk = () => {
setApprovalOrderShow(false);
};
const approvalOrderCancel = () => {
setApprovalOrderShow(false);
};
// 发货
const showShipmentsOrderEvent = () => {
setShipmentsOrderShow(true);
};
const shipmentsOrderCancel = () => {
setShipmentsOrderShow(false);
};
const shipmentsOrderOk = () => {
setShipmentsOrderShow(false);
};
// componentDidMount
useEffect(() => {
query = {};
......@@ -127,11 +177,6 @@ function ProductOrderView() {
align: 'center',
render: (text) => text.toLocaleString(),
},
// {
// title: '数量',
// dataIndex: 'userName',
// align: 'center',
// },
{
title: '买家',
dataIndex: 'uid',
......@@ -188,6 +233,18 @@ function ProductOrderView() {
fixed: 'right',
render: (_text, record) => (
<>
{/*<Button type={'link'} onClick={() => showDistributionOrderEvent()}>*/}
{/* 分配运营*/}
{/*</Button>*/}
{/*<Button type={'link'} onClick={() => showSureOrderEvent()}>*/}
{/* 确认订单*/}
{/*</Button>*/}
{/*<Button type={'link'} onClick={() => showApprovalOrderEvent()}>*/}
{/* 凭证审批*/}
{/*</Button>*/}
<Button type={'link'} onClick={() => showShipmentsOrderEvent()}>
发货
</Button>
<Button type={'link'} onClick={() => handleDetail(record)}>
详情
</Button>
......@@ -212,13 +269,6 @@ function ProductOrderView() {
placeholder: '请输入用户账号',
},
{
label: '相关销售',
name: 'saleId',
type: 'Select',
placeholder: '请选择相关销售',
options: [],
},
{
label: '时间',
name: 'rangeTime',
type: 'rangePicker',
......@@ -260,22 +310,28 @@ function ProductOrderView() {
}}
// rowSelection={{ selectedRowKeys, onChange: onSelectChange }}
/>
{/*分配订单*/}
<DistributionOrder
open={distributionOrderShow}
onOk={distributionOrderOk}
onCancel={distributionOrderCancel}
/>
{/*确认订单*/}
<SureOrder open={sureOrderShow} onCancel={sureOrderCancel} onOk={sureOrderOk} />
{/*凭证审批*/}
<ApprovalOrder
open={approvalOrderShow}
onCancel={approvalOrderCancel}
onOk={approvalOrderOk}
/>
{/*发货*/}
<ShipmentsOrder
open={shipmentsOrderShow}
onCancel={shipmentsOrderCancel}
onOk={shipmentsOrderOk}
/>
</>
);
}
export default ProductOrderView;
// <div style={{ textAlign: 'left', lineHeight: '16px' }}>
// <div style={{ color: '#1677ff', marginBottom: '10px' }}>{record.orderName}</div>
// {record.mallOrderProdListDTOList.map((i, j) => (
// <div style={{ display: 'flex', marginBottom: '10px', alignItems: 'center' }} key={j}>
// <Image src={i.prodSkuSpecImage} style={{ width: 48, height: 48 }} />
// <div style={{ marginLeft: '20px' }}>{i.prodSkuSpecName}</div>
// <div style={{ marginLeft: '20px' }}>{`x${i.buyNum}`}</div>
// <div style={{ marginLeft: '20px' }}>{`¥${i.unitPrice?.toLocaleString()}`}</div>
// </div>
// ))}
// <div>订单编号:{record.orderNo}</div>
// <div>创建时间:{record.createTime}</div>
// </div>
......@@ -13,7 +13,6 @@ interface selfProps {
ref: any;
rentGoodsDetails: rentGoodsDetailType | undefined;
}
const AddressInfo = forwardRef<any, selfProps>(({ rentGoodsDetails }, ref) => {
const [addressInfoForm] = Form.useForm<{
shipAddress: number;
......
......@@ -39,7 +39,8 @@ const AddOrEditAddressModal: FC<ModalProps & selfProps> = ({
id: currentAddressItem ? currentAddressItem.id : undefined,
}).then(({ code }) => {
if (code === '200') {
message.success('新增地址成功');
const msg = currentAddressItem ? '更新地址成功' : '新增地址成功';
message.success(msg);
form.resetFields();
onOk();
}
......
......@@ -65,6 +65,9 @@ const CustomVerificationDetailView = React.lazy(
() => import('~/pages/customManage/customVerification/details'),
);
// 消耗管理
const WithDrawListView = React.lazy(() => import('src/pages/depleteManage/withDrawList')); //提现列表
//资源管理
import MaterielManageView from '~/pages/resourceManage/materielManage';
import MaterielManageDetail from '~/pages/resourceManage/materielManage/detail';
......@@ -80,13 +83,21 @@ const IndustryNewsView = React.lazy(() => import('~/pages/resourceManage/industr
//论坛管理
const DynamicListView = React.lazy(() => import('~/pages/forumManage/dynamicList'));
// 订单
const ProductOrderView = React.lazy(() => import('src/pages/orderManage/productOrder')); //销售订单
const ProductOrderView = React.lazy(() => import('src/pages/orderManage/productOrder/orderList')); //销售订单
const EquipmentOrderView = React.lazy(() => import('src/pages/orderManage/equipmentOrder')); //设备订单
const ServiceOrderView = React.lazy(() => import('src/pages/orderManage/serviceOrder')); //服务订单
const ProductOrderDetail = React.lazy(() => import('~/pages/orderManage/productOrder/detail'));
const ProductOrderDetail = React.lazy(() => import('~/pages/orderManage/productOrder/orderDetail'));
const ServiceOrderDetail = React.lazy(() => import('~/pages/orderManage/serviceOrder/detail'));
const EquipmentOrderDetail = React.lazy(() => import('~/pages/orderManage/equipmentOrder/detail'));
const PilotTrainingOrderView = React.lazy(() => import('~/pages/orderManage/pilotTrainingOrder'));
const DemandOrderListView = React.lazy(() => import('~/pages/orderManage/demandOrder/orderList')); //需求订单
const DemandOrderDetailView = React.lazy(
() => import('~/pages/orderManage/demandOrder/orderDetail'),
); //需求订单详情
const ProcurementOrder = React.lazy(() => import('~/pages/orderManage/procurementOrder/orderList')); //商城采购订单列表
const ProcurementOrderDetail = React.lazy(
() => import('~/pages/orderManage/procurementOrder/orderDetail'),
); //商城采购订单详情
//商品管理
import CourseManageView from '~/pages/mallManage/courseManage'; //课程管理
......@@ -525,6 +536,28 @@ export const routerList: Array<RouteObjectType> = [
},
},
{
path: '/orderManage/procurementOrder/list',
element: withLoadingComponent(<ProcurementOrder />),
errorElement: <ErrorPage />,
meta: {
id: 840,
title: '采购订单',
icon: <ShoppingOutlined />,
},
},
{
path: '/orderManage/procurementOrder/detail',
element: withLoadingComponent(<ProcurementOrderDetail />),
errorElement: <ErrorPage />,
meta: {
id: 10070,
title: '采购订单详情',
icon: <ShoppingOutlined />,
develop: true,
hidden: true,
},
},
{
path: '/orderManage/equipmentOrder',
element: withLoadingComponent(<EquipmentOrderView />),
errorElement: <ErrorPage />,
......@@ -576,6 +609,28 @@ export const routerList: Array<RouteObjectType> = [
icon: <CreditCardOutlined />,
},
},
{
path: '/orderManage/demandOrderList',
element: withLoadingComponent(<DemandOrderListView />),
errorElement: <ErrorPage />,
meta: {
id: 850,
title: '需求订单',
icon: <CreditCardOutlined />,
},
},
{
path: '/orderManage/demandOrderDetail',
element: withLoadingComponent(<DemandOrderDetailView />),
errorElement: <ErrorPage />,
meta: {
id: 10060,
title: '需求订单详情',
icon: <CreditCardOutlined />,
hidden: true,
develop: true,
},
},
],
},
{
......@@ -973,6 +1028,28 @@ export const routerList: Array<RouteObjectType> = [
// },
],
},
{
path: '/depleteManage',
element: <LayoutView />,
errorElement: <ErrorPage />,
meta: {
id: 2400,
icon: <AccountBookOutlined />,
title: '消耗管理',
},
children: [
{
path: '/depleteManage/withDrawList',
element: withLoadingComponent(<WithDrawListView />),
errorElement: <ErrorPage />,
meta: {
id: 2410,
title: '提现列表',
icon: <SolutionOutlined />,
},
},
],
},
// {
// path: '/couponManage',
// element: <LayoutView />,
......
......@@ -61,3 +61,38 @@ export const qualityList = [
value: 4,
},
];
// 需求订单级别字典
export const orderLevelList = [
{ label: '普通单', value: 0, code: 'REGULAR_ORDER' },
{ label: '加急单', value: 100, code: 'RUSH_ORDER' },
{ label: '置顶单', value: 300, code: 'TOP_ORDER' },
];
// 提现状态字典
// "apply 提现申请 await待发放 handle交易中 success 交易成功 failure 交易失败")
export const withdrawStatusList = [
{
label: '提现申请',
value: 'apply',
},
{
label: '待发放',
value: 'await',
},
{
label: '交易中',
value: 'handle',
},
{
label: '交易成功',
value: 'success',
},
{
label: '交易失败',
value: 'failure',
},
{
label: '审批未通过',
value: 'approve',
},
];
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论