Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
admin
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
admin
Commits
fc07d9aa
提交
fc07d9aa
authored
9月 11, 2023
作者:
龚洪江
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop'
上级
4c307c32
c2e4da4b
隐藏空白字符变更
内嵌
并排
正在显示
23 个修改的文件
包含
1198 行增加
和
385 行删除
+1198
-385
kustomization.yaml
kustomization/overlays/dev/kustomization.yaml
+1
-1
orderManageType.ts
src/api/interface/orderManageType.ts
+348
-1
rentManageType.ts
src/api/interface/rentManageType.ts
+2
-0
orderManage.ts
src/api/modules/orderManage.ts
+25
-0
rentManageAPI.ts
src/api/modules/rentManageAPI.ts
+4
-0
index.tsx
src/pages/depleteManage/withDrawList/index.tsx
+4
-0
index.scss
src/pages/orderManage/demandOrder/orderDetail/index.scss
+5
-0
index.tsx
src/pages/orderManage/demandOrder/orderDetail/index.tsx
+73
-13
index.tsx
...ge/productOrder/orderDetail/comp/detailDelivery/index.tsx
+75
-40
index.scss
...roductOrder/orderDetail/comp/detailInformation/index.scss
+25
-0
index.tsx
...productOrder/orderDetail/comp/detailInformation/index.tsx
+56
-48
index.tsx
...e/productOrder/orderDetail/comp/detailPurchaser/index.tsx
+47
-50
index.tsx
...roductOrder/orderDetail/comp/logisticsStepModal/index.tsx
+26
-0
index.scss
src/pages/orderManage/productOrder/orderDetail/index.scss
+1
-18
index.tsx
src/pages/orderManage/productOrder/orderDetail/index.tsx
+11
-36
index.tsx
...uctOrder/orderList/components/distributionOrder/index.tsx
+0
-27
index.tsx
...e/productOrder/orderList/components/remarkModal/index.tsx
+49
-0
index.tsx
...roductOrder/orderList/components/shipmentsOrder/index.tsx
+85
-23
index.scss
src/pages/orderManage/productOrder/orderList/index.scss
+56
-0
index.tsx
src/pages/orderManage/productOrder/orderList/index.tsx
+251
-120
index.tsx
src/pages/rentManage/rentMake/index.tsx
+21
-1
router.tsx
src/router/router.tsx
+31
-5
router.ts
src/utils/router.ts
+2
-2
没有找到文件。
kustomization/overlays/dev/kustomization.yaml
浏览文件 @
fc07d9aa
...
...
@@ -14,4 +14,4 @@ patches:
images
:
-
name
:
REGISTRY/NAMESPACE/IMAGE:TAG
newName
:
mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/admin
newTag
:
9a54b481ab291a270787c485217d307c2d1d5c4e
newTag
:
b3715add25197d0446cad6c949abca7c31295f27
src/api/interface/orderManageType.ts
浏览文件 @
fc07d9aa
...
...
@@ -192,7 +192,7 @@ export type orderDetailType = InterFunction<
actualRefund
:
number
;
createTime
:
string
;
id
:
number
;
orderInfo
:
{}
;
orderInfo
:
any
;
orderInfoId
:
number
;
orderVcu
:
{
id
:
number
;
...
...
@@ -339,6 +339,20 @@ export type listExpressInfoType = InterFunction<
exCode
:
string
;
}[]
>
;
// 物流动态信息
export
type
logisticsDynamicsType
=
InterFunction
<
{
/**
* exCode
*/
exCode
:
string
;
/**
* exNo
*/
exNo
:
string
;
},
any
>
;
// web/小程序 确认收货-订单
export
type
renterTakeOrderType
=
InterFunction
<
{
...
...
@@ -687,6 +701,8 @@ export type serviceOrderFormDetailsType = InterFunction<
updateOrderAmount
:
number
;
weChat
:
number
;
orderStatus
:
string
;
duty
:
number
;
decisionContent
:
string
;
}
>
;
// 需求订单-进度条
...
...
@@ -862,3 +878,334 @@ export type flowDictionaryAndTimeType = InterFunction<
};
}
>
;
// 需求订单-争议处理
export
type
disputeType
=
InterFunction
<
{
/**
* 客服判定内容
*/
decisionContent
?:
string
;
/**
* 责任问题 1:双方无责 2:发布者责任 3:飞手责任
*/
duty
:
number
;
/**
* id
*/
requirementsInfoId
:
number
;
},
any
>
;
// 商城订单-列表(新)
type
mallOrderType
=
{
/**
* 卖家企业名称
*/
companyName
?:
string
;
/**
* 确认收货时间
*/
confirmReceiptTime
?:
Date
;
/**
* 下单时间
*/
createTime
:
string
;
/**
* 订单交期
*/
deliveryTime
?:
Date
;
/**
* id
*/
id
:
number
;
kdnExpDTO
?:
{
logisticCode
?:
string
;
shipperCode
?:
string
;
stateEx
?:
string
;
traces
?:
{
acceptStation
?:
string
;
acceptTime
?:
string
;
action
?:
string
;
location
?:
string
;
}[];
};
/**
* 订单编号
*/
orderNo
?:
string
;
/**
* 订单实付总额
*/
orderTotalAmount
?:
number
;
/**
* 订单类型,0正常订单、1意向订单
*/
orderType
?:
number
;
/**
* 其他方式支付额度
*/
otherAmount
?:
number
;
/**
* 用户支付凭证
*/
payDTOList
?:
{
/**
* 审核状态,0待审批,1通过,2未通过
*/
checkStatus
?:
number
;
/**
* 提交时间
*/
createTime
?:
Date
;
/**
* id
*/
id
?:
number
;
/**
* 支付凭证
*/
payImgList
?:
string
;
/**
* 备注信息
*/
payRemark
?:
string
;
/**
* 未通过原因
*/
refuseReason
?:
string
;
/**
* 订单id
*/
uavOrderId
?:
number
;
}[];
/**
* 支付时间
*/
payTime
?:
Date
;
/**
* 支付方式,wechatpay微信,alipay支付宝
*/
payType
?:
string
;
/**
* 评价状态
*/
remarkStatus
?:
number
;
/**
* 卖家备注
*/
sellerRemark
?:
string
;
/**
* 抵扣云享金余额
*/
shareAmount
?:
number
;
/**
* 订单规格列表
*/
skuDTOList
:
{
/**
* 下单时间
*/
createTime
?:
Date
;
/**
* 订单规格id
*/
id
?:
number
;
/**
* 商品id
*/
mallGoodsId
?:
number
;
/**
* 购买数量
*/
orderNum
:
number
;
/**
* 商品规格id
*/
priceStockId
?:
number
;
/**
* 商品规格
*/
productSpec
:
string
;
/**
* 商品规格图片
*/
skuImage
?:
string
;
/**
* 商品规格编号
*/
skuNo
?:
string
;
/**
* 商品名称
*/
tradeName
?:
string
;
/**
* 订单id
*/
uavOrderId
?:
number
;
/**
* 单价
*/
unitPrice
?:
number
;
}[];
/**
* 订单状态
*/
statusCode
:
number
;
/**
* 卖家id
*/
thirdBackUserAccountId
?:
number
;
uavOrderExpressDTO
:
{
/**
* id
*/
id
:
number
;
/**
* 是否已取件,0未取,1已取
*/
receive
?:
number
;
/**
* 取件时间
*/
receiveTime
?:
Date
;
/**
* 快递编码
*/
sendExpCode
?:
string
;
/**
* 快递编号
*/
sendExpNo
?:
string
;
/**
* 发货-收货详细地址
*/
takeAddress
:
string
;
/**
* 取货人
*/
takeName
:
string
;
/**
* 取货人号码
*/
takePhone
:
string
;
/**
* 地区信息
*/
takeRegion
:
string
;
/**
* 订单id
*/
uavOrderId
:
number
;
};
/**
* 最近修改时间
*/
updateTime
?:
Date
;
/**
* 买家id
*/
userAccountId
?:
number
;
/**
* 收货地址id
*/
userAddressId
?:
number
;
/**
* 买家备注
*/
userRemark
?:
string
;
/**
* 修改版本
*/
version
?:
number
;
/**
* 抵扣钱包余额
*/
walletAmount
?:
number
;
};
export
type
mallOrderListType
=
InterListFunction
<
{
/**
* 结束时间
*/
endTime
?:
string
;
/**
* 关键字-订单编号
*/
keyword
?:
string
;
/**
* 开始时间
*/
startTime
?:
string
;
/**
* 订单状态码
*/
statusCode
?:
number
;
/**
* 用户uid
*/
uid
?:
string
;
},
mallOrderType
>
;
// 商城订单-详情(新)
export
type
mallOrderDetailType
=
InterFunction
<
{
id
:
number
},
mallOrderType
>
;
// 商城订单-状态字典(新)
export
type
mallOrderStatusType
=
InterFunction
<
any
,
{
code
:
number
;
nextCode
:
number
;
status
:
string
;
id
:
number
;
}[]
>
;
// 商城订单-发货
export
type
mallOrderSendType
=
InterFunction
<
{
/**
* 快递编码
*/
sendExpCode
?:
string
;
/**
* 快递编号
*/
sendExpNo
?:
string
;
/**
* 发货-收货详细地址
*/
takeAddress
?:
string
;
/**
* 取货人
*/
takeName
?:
string
;
/**
* 取货人号码
*/
takePhone
?:
string
;
/**
* 地区信息
*/
takeRegion
?:
string
;
/**
* 订单id
*/
uavOrderId
?:
number
;
},
any
>
;
// 商城订单-卖家备注
export
type
sellerRemarkType
=
InterFunction
<
{
/**
* content
*/
content
:
string
;
/**
* id
*/
id
:
number
;
},
any
>
;
src/api/interface/rentManageType.ts
浏览文件 @
fc07d9aa
...
...
@@ -29,6 +29,8 @@ export type listBrandInfoType = InterItemFunction<
}[];
}[]
>
;
//租赁-品牌-删除
export
type
deleteBrandInfoType
=
InterItemFunction
<
{
id
:
number
},
null
>
;
//租赁-型号-新增
export
type
addRentModeType
=
InterFunction
<
...
...
src/api/modules/orderManage.ts
浏览文件 @
fc07d9aa
import
axios
from
'../request'
;
import
{
disputeType
,
flowDictionaryAndTimeType
,
flowDictionaryType
,
getMallOrderDetailById
,
...
...
@@ -8,6 +9,11 @@ import {
listPageManagerVerOne
,
listPcWechatOrderType
,
listTranStatusType
,
logisticsDynamicsType
,
mallOrderDetailType
,
mallOrderListType
,
mallOrderSendType
,
mallOrderStatusType
,
orderDetailType
,
orderImageDetailType
,
orderListStatus
,
...
...
@@ -15,6 +21,7 @@ import {
platFormCloseOrderType
,
refundOrderType
,
renterTakeOrderType
,
sellerRemarkType
,
sendOrderWareType
,
serviceOrderFormDetailsType
,
serviceOrderFormListType
,
...
...
@@ -54,6 +61,9 @@ export class OrderManageAPI {
// v1.0.1 物流公司列表-字典
static
listExpressInfo
:
listExpressInfoType
=
(
params
)
=>
axios
.
get
(
'/oms/express/listExpressInfo'
,
{
params
});
// 物流动态信息
static
getLogisticsDynamics
:
logisticsDynamicsType
=
(
params
)
=>
axios
.
get
(
'/oms/express/logisticsDynamics'
,
{
params
});
// web-小程序——订单详情相关图片信息
static
orderImageDetail
:
orderImageDetailType
=
(
params
)
=>
...
...
@@ -96,4 +106,19 @@ export class OrderManageAPI {
// 需求订单-进度条
static
getFlowDictionary
:
flowDictionaryType
=
()
=>
axios
.
get
(
'/release/requirements/flowDictionary'
);
// 需求订单-争议
static
disputeOrder
:
disputeType
=
(
data
)
=>
axios
.
post
(
'/release/requirements/cancelAll'
,
data
);
// 商城订单-列表(新)
static
getMallOrderList
:
mallOrderListType
=
(
data
)
=>
axios
.
post
(
'/oms/uav-order/list'
,
data
);
// 商城订单-状态字典(新)
static
getMallOrderStatusList
:
mallOrderStatusType
=
()
=>
axios
.
get
(
'/oms/uav-order/statusList'
);
// 商城订单-详情(新)
static
getMallOrderDetail
:
mallOrderDetailType
=
(
params
)
=>
axios
.
get
(
'/oms/uav-order/detail'
,
{
params
});
// 商城订单-发货(新)
static
mallOrderSend
:
mallOrderSendType
=
(
data
)
=>
axios
.
post
(
'/oms/uav-order/send'
,
data
);
// 商城订单-卖家备注
static
sellerRemark
:
sellerRemarkType
=
(
params
)
=>
axios
.
get
(
'/oms/uav-order/sellerRemark'
,
{
params
});
}
src/api/modules/rentManageAPI.ts
浏览文件 @
fc07d9aa
...
...
@@ -3,6 +3,7 @@ import {
addRentModeType
,
addType
,
batchRemoveWareInfoType
,
deleteBrandInfoType
,
deleteModeType
,
editBrandInfoType
,
editLeaseGoodsType
,
...
...
@@ -42,6 +43,9 @@ export class RentManageAPI {
// 租赁-品牌-列表
static
getListBrandInfo
:
listBrandInfoType
=
(
params
)
=>
axios
.
get
(
'/pms/brand/listBrandInfo'
,
{
params
});
// 租赁-品牌-删除
static
deleteBrandInfo
:
deleteBrandInfoType
=
(
params
)
=>
axios
.
get
(
'/pms/brand/deleteBrandInfo'
,
{
params
});
// 租赁-型号-新增
static
addRentMode
:
addRentModeType
=
(
data
)
=>
axios
.
post
(
'/pms/brand/addMode'
,
data
);
...
...
src/pages/depleteManage/withDrawList/index.tsx
浏览文件 @
fc07d9aa
...
...
@@ -128,6 +128,7 @@ const WithDrawManage = () => {
},
];
const
[
tableData
,
setTableData
]
=
useState
<
withdrawalApplyType
>
([]);
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
);
const
[
pagination
,
setPagination
]
=
useState
<
PaginationProps
&
{
totalCount
:
number
}
>
({
pageNo
:
1
,
pageSize
:
10
,
...
...
@@ -141,11 +142,13 @@ const WithDrawManage = () => {
// 获取提现列表
const
getListPageWithdrawalApply
=
(
query
?:
withdrawalApplyParameterType
)
=>
{
setLoading
(
true
);
DepleteManageTypeAPI
.
getListPageWithdrawalApply
({
pageNo
:
pagination
.
pageNo
,
pageSize
:
pagination
.
pageSize
,
...
query
,
}).
then
(({
result
})
=>
{
setLoading
(
false
);
pagination
.
totalCount
=
result
.
totalCount
;
setPagination
({
...
pagination
});
setTableData
(
result
.
list
||
[]);
...
...
@@ -189,6 +192,7 @@ const WithDrawManage = () => {
columns=
{
tableColumns
}
rowKey=
'id'
dataSource=
{
tableData
}
loading=
{
loading
}
pagination=
{
{
total
:
pagination
.
totalCount
,
pageSize
:
pagination
.
pageSize
,
...
...
src/pages/orderManage/demandOrder/orderDetail/index.scss
0 → 100644
浏览文件 @
fc07d9aa
.detail-rich-text
{
image
,
video
{
max-width
:
100%
;
}
}
src/pages/orderManage/demandOrder/orderDetail/index.tsx
浏览文件 @
fc07d9aa
import
{
Button
,
Descriptions
,
Steps
}
from
'antd'
;
import
{
Button
,
Descriptions
,
Form
,
message
,
Modal
,
Radio
,
Steps
}
from
'antd'
;
import
{
useNavigate
}
from
'react-router-dom'
;
import
RichText
from
'~/components/richText'
;
import
{
useSearchParams
}
from
'react-router-dom'
;
...
...
@@ -6,6 +6,7 @@ import { OrderManageAPI } from '~/api';
import
{
useEffect
,
useState
}
from
'react'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
serviceOrderFormDetailsType
}
from
'~/api/interface/orderManageType'
;
import
'./index.scss'
;
// 详情返回类型
type
detailType
=
InterDataType
<
serviceOrderFormDetailsType
>
;
...
...
@@ -40,9 +41,24 @@ const flowStatusKey = [
key
:
'serviceEvaluateDTO'
,
},
];
const
dutyOptionList
=
[
{
label
:
'双方无责'
,
value
:
1
,
},
{
label
:
'发布者责任'
,
value
:
2
,
},
{
label
:
'飞手责任'
,
value
:
3
,
},
];
const
DemandOrderDetail
=
()
=>
{
const
navigate
=
useNavigate
();
const
[
controversyForm
]
=
Form
.
useForm
<
{
duty
:
number
;
decisionContent
:
string
}
>
();
const
[
searchParams
]
=
useSearchParams
();
// 需求订单详情
...
...
@@ -55,7 +71,9 @@ const DemandOrderDetail = () => {
//获取详情
const
getServiceOrderFormDetails
=
(
requirementsInfoId
:
number
)
=>
{
OrderManageAPI
.
getServiceOrderFormDetails
({
requirementsInfoId
}).
then
(({
result
})
=>
{
setDemandDetail
(
result
);
if
(
result
)
{
setDemandDetail
({
...
result
});
}
});
};
// 获取进度条
...
...
@@ -71,10 +89,7 @@ const DemandOrderDetail = () => {
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'
,
'500'
].
includes
(
v
.
orderStatus
))
:
flowDictionarySortResult
.
filter
((
v
)
=>
!
[
'700'
,
'550'
].
includes
(
v
.
orderStatus
));
const
stepList
=
flowDictionaryFilterResult
.
map
((
v
)
=>
{
...
...
@@ -92,13 +107,33 @@ const DemandOrderDetail = () => {
:
''
,
};
});
setSteps
(
stepList
);
setSteps
(
stepList
.
map
((
v
)
=>
({
title
:
v
.
title
,
description
:
v
.
description
}))
);
setCurrentStep
(
stepList
.
findIndex
((
v
)
=>
v
.
orderStatus
===
demandDetail
.
orderStatus
));
}
},
);
});
};
// 提交争议
const
submitDispute
=
()
=>
{
Modal
.
confirm
({
title
:
'提示'
,
content
:
'确认提交该判定结果?'
,
onOk
:
()
=>
{
controversyForm
.
validateFields
().
then
((
values
)
=>
{
OrderManageAPI
.
disputeOrder
({
requirementsInfoId
:
Number
(
searchParams
.
get
(
'id'
)),
...
values
,
}).
then
(({
code
})
=>
{
if
(
code
===
'200'
)
{
message
.
success
(
'判定成功'
);
getServiceOrderFormDetails
(
Number
(
searchParams
.
get
(
'id'
)));
}
});
});
},
});
};
// 返回
const
backRoute
=
()
=>
{
...
...
@@ -171,22 +206,47 @@ const DemandOrderDetail = () => {
style=
{
{
marginTop
:
'10px'
}
}
column=
{
1
}
extra=
{
<
Button
danger
type=
'primary'
>
确认判定
</
Button
>
demandDetail
?.
orderStatus
===
'700'
?
(
''
)
:
(
<
Button
danger
type=
'primary'
onClick=
{
submitDispute
}
>
确认判定
</
Button
>
)
}
>
<
Descriptions
.
Item
label
=
'判定结果'
label
Style=
{
{
color
:
'#000'
}
}
>
<
Descriptions
.
Item
labelStyle=
{
{
color
:
'#000'
}
}
>
<
div
style=
{
{
color
:
'red'
}
}
>
1、发单方责任(扣除30%违约金,20%支付给接单方,信息推送)
<
br
/>
2、
发单方责任(扣除30%违约金,20%支付给接
单方,信息推送)
2、
接单方责任(扣除30%违约金,20%支付给发
单方,信息推送)
<
br
/>
3、双方无责(不扣违约金,信息推送)
</
div
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
>
<
RichText
richTextContent=
''
/>
<
Form
form=
{
controversyForm
}
initialValues=
{
{
duty
:
demandDetail
?.
orderStatus
===
'700'
?
demandDetail
?.
duty
:
1
}
}
>
<
Form
.
Item
label=
'争议结果'
name=
'duty'
>
{
demandDetail
?.
orderStatus
===
'700'
?
(
<
span
>
{
dutyOptionList
.
find
((
v
)
=>
v
.
value
===
demandDetail
.
duty
)?.
label
}
</
span
>
)
:
(
<
Radio
.
Group
options=
{
dutyOptionList
}
></
Radio
.
Group
>
)
}
</
Form
.
Item
>
<
Form
.
Item
label=
'争议描述'
name=
'decisionContent'
>
{
demandDetail
?.
orderStatus
===
'700'
?
(
<
div
dangerouslySetInnerHTML=
{
{
__html
:
demandDetail
.
decisionContent
||
''
}
}
className=
'detail-rich-text'
></
div
>
)
:
(
<
RichText
richTextContent=
''
/>
)
}
</
Form
.
Item
>
</
Form
>
</
Descriptions
.
Item
>
</
Descriptions
>
</
div
>
...
...
src/pages/orderManage/productOrder/orderDetail/comp/detailDelivery/index.tsx
浏览文件 @
fc07d9aa
import
React
,
{
useEffect
}
from
'react'
;
import
{
Button
}
from
'antd'
;
import
{
getMallOrderDetailById
}
from
'~/api/interface/orderManageType'
;
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
Steps
}
from
'antd'
;
import
{
mallOrderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
LogisticsStepModal
from
'../logisticsStepModal'
;
// 接口返回的类型
type
DataType
=
InterDataType
<
getMallOrderDetailById
>
;
type
DataType
=
InterDataType
<
mallOrderDetailType
>
;
// 参数类型
type
PropsType
=
{
detail
:
DataType
;
detail
:
DataType
|
undefined
;
};
const
DetailDelivery
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
// 物流列表
const
[
expressList
,
setExpressList
]
=
React
.
useState
<
{
label
:
string
;
value
:
string
}[]
>
([]);
// 获取物流信息
const
getListExpressInfo
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
listExpressInfo
({});
if
(
res
&&
res
.
code
===
'200'
)
{
setExpressList
(
res
.
result
.
map
((
item
)
=>
({
label
:
item
.
exName
,
value
:
item
.
exCode
})));
// console.log(res);
}
const
DetailDelivery
:
React
.
FC
<
PropsType
>
=
({
detail
})
=>
{
const
[
logisticsStepModalShow
,
setLogisticsStepModalShow
]
=
useState
<
boolean
>
(
false
);
const
[
listExpressInfo
,
setListExpressInfo
]
=
useState
<
{
label
:
string
;
value
:
string
}[]
>
([]);
//获取物流公司列表
const
getExpressList
=
()
=>
{
OrderManageAPI
.
listExpressInfo
().
then
(({
result
})
=>
{
setListExpressInfo
(
result
?.
map
((
v
)
=>
({
label
:
v
.
exName
,
value
:
v
.
exCode
}))
||
[]);
});
};
// 转换物流信息
const
getExpressInfo
=
(
code
:
string
|
undefined
|
null
)
=>
{
return
expressList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
const
showStepModal
=
()
=>
{
setLogisticsStepModalShow
(
true
);
};
const
logisticsStepModalCancel
=
()
=>
{
setLogisticsStepModalShow
(
false
);
};
// componentDidMount
useEffect
(()
=>
{
get
ListExpressInfo
().
then
();
get
ExpressList
();
},
[]);
return
(
<
div
className=
{
'detail-delivery detail-half'
}
>
<
div
className=
{
'detail-title'
}
>
发货信息
</
div
>
<
div
className=
{
'detail-text'
}
>
收货人:
{
detail
?.
receipt
?.
takeName
}
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
{
detail
?.
receipt
?.
takePhone
}
</
div
>
<
div
className=
{
'detail-text'
}
>
收货地址:
{
detail
?.
receipt
?.
detailAddress
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流单号:
{
detail
?.
receipt
?.
sendExNo
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流公司:
{
getExpressInfo
(
detail
?.
receipt
?.
sendExCode
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流进度:--
<
Button
type=
{
'link'
}
>
查看详情
</
Button
>
</
div
>
<
div
className=
{
'detail-title'
}
>
归还信息
</
div
>
<
div
className=
{
'detail-text'
}
>
收货人:
{
detail
?.
receipt
?.
renName
}
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
{
detail
?.
receipt
?.
renPhone
}
</
div
>
<
div
className=
{
'detail-text'
}
>
收货地址:
{
detail
?.
receipt
?.
renAddress
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流单号:
{
detail
?.
receipt
?.
renExNo
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流公司:
{
getExpressInfo
(
detail
?.
receipt
?.
renExCode
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流进度:--
<
Button
type=
{
'link'
}
>
查看详情
</
Button
>
return
(
<
div
className=
'detail-delivery detail-half'
>
<
div
className=
'detail-title'
>
发货信息
</
div
>
<
div
className=
'detail-text'
>
收货人:
{
detail
?.
uavOrderExpressDTO
?.
takeName
}
</
div
>
<
div
className=
'detail-text'
>
手机号:
{
detail
?.
uavOrderExpressDTO
?.
takePhone
}
</
div
>
<
div
className=
'detail-text'
>
收货地址:
{
(
detail
?.
uavOrderExpressDTO
.
takeRegion
.
split
(
'/'
).
join
(
''
)
||
''
)
+
detail
?.
uavOrderExpressDTO
.
takeAddress
}
</
div
>
{
detail
?.
uavOrderExpressDTO
?.
sendExpCode
&&
(
<>
<
div
className=
'detail-text'
>
物流单号:
{
detail
?.
uavOrderExpressDTO
?.
sendExpNo
}
</
div
>
<
div
className=
'detail-text'
>
物流公司:
{
listExpressInfo
.
find
((
v
)
=>
v
.
value
===
detail
?.
uavOrderExpressDTO
?.
sendExpCode
)
?.
label
}
</
div
>
<
div
className=
'detail-text'
style=
{
{
display
:
'flex'
}
}
>
<
span
>
物流进度:
</
span
>
<
div
>
<
Steps
direction=
'vertical'
current=
{
0
}
progressDot
items=
{
[
{
title
:
detail
?.
kdnExpDTO
?.
traces
?.[
0
].
acceptStation
,
description
:
detail
?.
kdnExpDTO
?.
traces
?.[
0
].
acceptTime
,
},
{
title
:
`送至${
detail?.uavOrderExpressDTO?.takeRegion.split('/').join('') +
detail?.uavOrderExpressDTO?.takeAddress
}`
,
},
]
}
/>
</
div
>
<
div
>
<
Button
type=
'link'
onClick=
{
showStepModal
}
>
查看详情
</
Button
>
</
div
>
</
div
>
</>
)
}
<
LogisticsStepModal
open=
{
logisticsStepModalShow
}
onCancel=
{
logisticsStepModalCancel
}
logisticsStep=
{
detail
?.
kdnExpDTO
}
/>
</
div
>
);
};
...
...
src/pages/orderManage/productOrder/orderDetail/comp/detailInformation/index.scss
0 → 100644
浏览文件 @
fc07d9aa
.mall-sku-item
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
10px
;
.sku-img
{
width
:
48px
;
height
:
48px
;
}
.sku-info
{
margin-left
:
10px
;
line-height
:
16px
;
text-align
:
left
;
.info-name
{
color
:
#1677ff
}
.info-spec
{
margin-top
:
10px
;
span
:not
(
:last-child
)
{
&
:after
{
content
:
';'
;
}
}
}
}
}
src/pages/orderManage/productOrder/orderDetail/comp/detailInformation/index.tsx
浏览文件 @
fc07d9aa
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Table
}
from
'antd'
;
import
{
Image
,
Table
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
orderDetailType
}
from
'~/api/interface/orderManageType'
;
import
dayjs
from
'dayjs'
;
import
{
mallOrderDetailType
}
from
'~/api/interface/orderManageType'
;
import
'./index.scss'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 表格数据类型
type
TableType
=
any
;
// 接口返回的类型
type
DataType
=
InterDataType
<
o
rderDetailType
>
;
type
DataType
=
InterDataType
<
mallO
rderDetailType
>
;
// 参数类型
type
PropsType
=
{
detail
:
DataType
;
detail
:
DataType
|
undefined
;
};
const
DetailInformation
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
// 表格数据
const
[
tableData
,
setTableData
]
=
useState
<
TableType
>
([]);
// 表格结构
const
columns
:
ColumnsType
<
TableType
[
0
]
>
=
[
const
columns
:
ColumnsType
<
DataType
[
'skuDTOList'
]
[
0
]
>
=
[
{
title
:
'商品'
,
dataIndex
:
'wareTitle'
,
align
:
'center'
,
width
:
'20%'
,
render
:
(
_text
,
record
)
=>
(
<
div
className=
'mall-sku-item'
>
<
Image
src=
{
record
.
skuImage
}
className=
'sku-img'
/>
<
div
className=
'sku-info'
>
<
div
className=
'info-name'
>
{
record
.
tradeName
}
</
div
>
<
div
className=
'info-spec'
>
{
Object
.
entries
(
JSON
.
parse
(
record
.
productSpec
)).
map
((
v
,
index
)
=>
(
<
span
key=
{
index
}
>
{
v
.
join
(
':'
)
}
</
span
>
))
}
</
div
>
</
div
>
</
div
>
),
},
{
title
:
'单价
(元)
'
,
title
:
'单价
(元)
'
,
dataIndex
:
'unitPrice'
,
align
:
'center'
,
render
:
(
text
)
=>
`¥
${
text
?.
toLocaleString
()}
`,
},
{
title: '数量',
dataIndex: '
ware
Num',
dataIndex: '
order
Num',
align: 'center',
},
{
title: '订单状态',
dataIndex: 'waiting',
align: 'center',
render: () => orderStatusList.find((v) => v.value === detail?.statusCode)?.label,
},
{
title: '应收款',
dataIndex: 'shouldPay',
title: '订单金额(元)',
align: 'center',
render: (
text) => `
¥
$
{
text
?.
toLocaleString
()
}
`,
render: (
) => `
¥
$
{
detail
?.
orderTotalAmount
}
`,
},
];
// 订单状态
const [orderStatusList, setOrderStatusList] = useState<{ value: number; label: string }[]>([]);
// 获取订单状态
const getOrderStatus = () => {
OrderManageAPI.getMallOrderStatusList().then(({ result }) => {
if (result) {
const list = result.map((item) => ({ value: item.code, label: item.status }));
setOrderStatusList(list);
}
});
};
useEffect(() => {
if (!detail) return;
setTableData([
{
id: 1,
wareTitle: detail?.wareTitle,
unitPrice: detail?.unitPrice,
wareNum: detail?.wareNum,
waiting: detail?.waiting,
shouldPay: detail?.shouldPay,
},
]);
}, [detail]);
getOrderStatus();
}, []);
return (
<div className=
{'detail-information'}
>
<div className=
{'detail-title'}
>订单明细</div>
<div className=
{'detail-text'}
>
<span className=
{'item'}
>订单编号:{detail?.orderNo}</span>
<span className=
{'item'} style={{ display: 'none' }}
>
合同编号:UAV202334741131
</span>
<span className={'item'}>
订单租期:
{dayjs(detail?.startDate).format('YYYY-MM-DD')
}
{' ~ '
}
{dayjs(detail?.endDate).format('YYYY-MM-DD')
}
</span>
<span className={'item'}>创建时间:{detail?.createTime}</span>
<div className=
'detail-information'
>
<div className=
'detail-title'
>订单明细</div>
<div className=
'detail-text'
>
<span className=
'item'
>订单编号:{detail?.orderNo}</span>
<span className=
'item'>创建时间:{detail?.createTime}</span
>
{/*<span className={'item'} style={{ display: 'none' }}>*/}
{/* 合同编号:UAV202334741131*/}
{/*</span>*/}
{/*<span className={'item'}>*/}
{/* 订单租期:*/
}
{/* {dayjs(detail?.startDate).format('YYYY-MM-DD')}*/
}
{/* {' ~ '}*/
}
{/* {dayjs(detail?.endDate).format('YYYY-MM-DD')}*/}
{/*</span>*/}
</div>
<Table
style={{ margin: '20px auto', width: '90%' }}
size='small'
dataSource={
tableData
}
dataSource={
detail?.skuDTOList || []
}
columns={columns}
rowKey='id'
bordered
pagination={false}
// rowSelection={{ selectedRowKeys, onChange: onSelectChange }}
/>
<div className='detail-price'>
实收款<span className={'num'}>¥ {detail?.actualPay}</span>元
</div>
</div>
);
};
...
...
src/pages/orderManage/productOrder/orderDetail/comp/detailPurchaser/index.tsx
浏览文件 @
fc07d9aa
import
React
from
'react'
;
import
{
Button
,
Image
}
from
'antd'
;
import
{
getMallOrderDetailById
}
from
'~/api/interface/orderManageType'
;
import
{
getMallOrderDetailById
,
mallOrderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
InterDataType
}
from
'~/api/interface'
;
// 接口返回的类型
type
DataType
=
InterDataType
<
getMallOrderDetailById
>
;
type
DataType
=
InterDataType
<
mallOrderDetailType
>
;
// 参数类型
type
PropsType
=
{
detail
:
DataType
;
detail
:
DataType
|
undefined
;
};
const
DetailPurchaser
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
const
DetailPurchaser
:
React
.
FC
<
PropsType
>
=
({
detail
})
=>
{
return
(
<
div
className=
{
'detail-purchaser detail-half'
}
>
<
div
className=
{
'detail-title'
}
>
买家信息
</
div
>
<
div
className=
{
'detail-text'
}
>
UID:
{
detail
?.
uid
}
</
div
>
<
div
className=
{
'detail-text'
}
>
姓名:
{
detail
?.
userName
}
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
{
detail
?.
phoneNum
}
</
div
>
{
/*<div className={'detail-text'}>企业: 浙江科比特创新科技有限公司</div>*/
}
<
div
className=
{
'detail-text'
}
>
备注:
{
detail
?.
remark
}
</
div
>
<
div
className=
{
'detail-text'
}
>
UID:
</
div
>
<
div
className=
{
'detail-text'
}
>
姓名:
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
</
div
>
<
div
className=
{
'detail-text'
}
>
备注:
</
div
>
<
div
style=
{
{
display
:
'none'
}
}
>
<
div
className=
{
'detail-title'
}
>
合同信息
</
div
>
<
div
className=
{
'detail-text'
}
>
合同编号: UAV202334741131
</
div
>
<
div
className=
{
'detail-text'
}
>
合同状态: 已归档
</
div
>
<
div
className=
{
'detail-text'
}
>
合同操作:
<
Button
type=
{
'link'
}
>
平台签署
</
Button
>
<
Button
type=
{
'link'
}
>
查看
</
Button
>
<
Button
type=
{
'link'
}
>
下载
</
Button
>
</
div
>
</
div
>
{
/*<div style={{ display: 'none' }}>*/
}
{
/* <div className={'detail-title'}>合同信息</div>*/
}
{
/* <div className={'detail-text'}>合同编号: UAV202334741131</div>*/
}
{
/* <div className={'detail-text'}>合同状态: 已归档</div>*/
}
{
/* <div className={'detail-text'}>*/
}
{
/* 合同操作:*/
}
{
/* <Button type={'link'}>平台签署</Button>*/
}
{
/* <Button type={'link'}>查看</Button>*/
}
{
/* <Button type={'link'}>下载</Button>*/
}
{
/* </div>*/
}
{
/*</div>*/
}
<
div
className=
{
'detail-title'
}
>
付款凭证
</
div
>
<
div
className=
{
'detail-text'
}
>
预付款:
</
div
>
<
div
className=
{
'detail-image'
}
>
{
[
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
].
map
((
i
,
j
)
=>
(
<
Image
key=
{
j
}
className=
{
'image'
}
src=
{
i
}
alt=
'付款凭证'
/>
))
}
</
div
>
<
div
className=
{
'detail-text'
}
>
尾款:
</
div
>
<
div
className=
{
'detail-image'
}
>
{
[
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
].
map
((
i
,
j
)
=>
(
<
Image
key=
{
j
}
className=
{
'image'
}
src=
{
i
}
alt=
'付款凭证'
/>
))
}
</
div
>
<
div
className=
{
'detail-text'
}
>
全款:
</
div
>
<
div
className=
{
'detail-image'
}
>
{
[
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
].
map
((
i
,
j
)
=>
(
<
Image
key=
{
j
}
className=
{
'image'
}
src=
{
i
}
alt=
'付款凭证'
/>
))
}
</
div
>
{
/*<div className={'detail-title'}>付款凭证</div>*/
}
{
/*<div className={'detail-text'}>预付款:</div>*/
}
{
/*<div className={'detail-image'}>*/
}
{
/* {[*/
}
{
/* 'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png',*/
}
{
/* 'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png',*/
}
{
/* ].map((i, j) => (*/
}
{
/* <Image key={j} className={'image'} src={i} alt='付款凭证' />*/
}
{
/* ))}*/
}
{
/*</div>*/
}
{
/*<div className={'detail-text'}>尾款:</div>*/
}
{
/*<div className={'detail-image'}>*/
}
{
/* {[*/
}
{
/* 'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png',*/
}
{
/* 'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png',*/
}
{
/* ].map((i, j) => (*/
}
{
/* <Image key={j} className={'image'} src={i} alt='付款凭证' />*/
}
{
/* ))}*/
}
{
/*</div>*/
}
{
/*<div className={'detail-text'}>全款:</div>*/
}
{
/*<div className={'detail-image'}>*/
}
{
/* {[*/
}
{
/* 'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png',*/
}
{
/* 'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png',*/
}
{
/* ].map((i, j) => (*/
}
{
/* <Image key={j} className={'image'} src={i} alt='付款凭证' />*/
}
{
/* ))}*/
}
{
/*</div>*/
}
</
div
>
);
};
...
...
src/pages/orderManage/productOrder/orderDetail/comp/logisticsStepModal/index.tsx
0 → 100644
浏览文件 @
fc07d9aa
import
{
Modal
,
ModalProps
,
Steps
}
from
'antd'
;
import
React
,
{
FC
}
from
'react'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
mallOrderDetailType
}
from
'~/api/interface/orderManageType'
;
// 商品订单详情返回类型
type
DataType
=
InterDataType
<
mallOrderDetailType
>
;
interface
selfProps
{
logisticsStep
:
DataType
[
'kdnExpDTO'
];
}
const
LogisticsStepModal
:
FC
<
ModalProps
&
selfProps
>
=
({
open
,
onCancel
,
logisticsStep
})
=>
{
return
(
<
Modal
open=
{
open
}
title=
'物流进度'
onCancel=
{
onCancel
}
footer=
{
false
}
>
<
Steps
direction=
'vertical'
current=
{
(
logisticsStep
?.
traces
?.
length
||
1
)
-
1
}
progressDot
items=
{
logisticsStep
?.
traces
?.
map
((
v
)
=>
({
title
:
v
.
acceptStation
,
description
:
v
.
acceptTime
,
}))
}
/>
</
Modal
>
);
};
export
default
LogisticsStepModal
;
src/pages/orderManage/productOrder/orderDetail/index.scss
浏览文件 @
fc07d9aa
...
...
@@ -3,24 +3,7 @@
box-sizing
:
border-box
;
.order-head
{
width
:
100%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
.head-text
{
font-size
:
13px
;
font-weight
:
600
;
color
:
#000000
;
div
{
margin-bottom
:
10px
;
span
{
margin-right
:
20px
;
}
}
}
text-align
:
right
;
}
.detail-wrap
{
...
...
src/pages/orderManage/productOrder/orderDetail/index.tsx
浏览文件 @
fc07d9aa
...
...
@@ -5,12 +5,12 @@ import './index.scss';
import
DetailDelivery
from
'./comp/detailDelivery'
;
import
DetailPurchaser
from
'./comp/detailPurchaser'
;
import
DetailInformation
from
'./comp/detailInformation'
;
import
{
getMallOrderDetailById
}
from
'~/api/interface/orderManageType'
;
import
{
mallOrderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 接口返回的类型
type
DataType
=
InterDataType
<
getMallOrderDetailById
>
;
type
DataType
=
InterDataType
<
mallOrderDetailType
>
;
function
ProductOrderDetail
()
{
// 路由钩子
...
...
@@ -19,59 +19,34 @@ function ProductOrderDetail() {
const
[
searchParams
]
=
useSearchParams
();
// 接收到的参数
const
id
=
searchParams
.
get
(
'id'
);
// 订单状态
const
[
orderStatusList
,
setOrderStatusList
]
=
useState
<
{
value
:
number
;
label
:
string
}[]
>
([]);
// 返回上一页
const
handleBack
=
()
=>
{
navigate
(
-
1
);
};
// 订单详情
const
[
orderDetail
,
setOrderDetail
]
=
useState
<
DataType
>
(
null
!
);
const
[
orderDetail
,
setOrderDetail
]
=
useState
<
DataType
>
();
// 获取订单详情
const
getOrderDetail
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
getMallOrderDetail
ById
({
orderI
d
:
Number
(
id
),
const
res
=
await
OrderManageAPI
.
getMallOrderDetail
({
i
d
:
Number
(
id
),
});
if
(
res
&&
res
.
code
===
'200'
)
{
setOrderDetail
(
res
.
result
);
}
};
// 获取订单状态
const
getOrderStatus
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
orderListStatus
({});
if
(
res
&&
res
.
code
===
'200'
)
{
const
list
=
res
.
result
.
map
((
item
)
=>
({
value
:
item
.
code
,
label
:
item
.
status
}));
setOrderStatusList
(
list
);
}
};
// componentDidMount
useEffect
(()
=>
{
getOrderStatus
().
then
();
getOrderDetail
().
then
();
// console.log('拿到的id是 --->', id);
},
[
id
]);
},
[]);
return
(
<
div
className=
{
'order-detail'
}
>
<
div
className=
{
'order-head'
}
>
<
div
className=
'head-text'
>
<
div
>
<
span
>
订单编号:
{
orderDetail
?.
orderNo
}
</
span
>
{
/*<span>合同编号:UAV202334741131</span>*/
}
</
div
>
<
div
>
<
span
>
当前状态:
{
orderStatusList
?.
find
((
i
)
=>
i
.
value
===
orderDetail
?.
statusCode
)?.
label
||
orderDetail
?.
statusCode
}
</
span
>
<
span
>
创建时间:
{
orderDetail
?.
createTime
}
</
span
>
</
div
>
</
div
>
<
Button
type=
{
'primary'
}
onClick=
{
()
=>
handleBack
()
}
>
<
div
className=
'order-detail'
>
<
div
className=
'order-head'
>
<
Button
type=
'primary'
onClick=
{
()
=>
handleBack
()
}
>
返回
</
Button
>
</
div
>
<
div
className=
{
'detail-wrap'
}
>
<
div
className=
'detail-wrap'
>
<
DetailPurchaser
detail=
{
orderDetail
}
/>
<
DetailDelivery
detail=
{
orderDetail
}
/>
<
DetailInformation
detail=
{
orderDetail
}
/>
...
...
src/pages/orderManage/productOrder/orderList/components/distributionOrder/index.tsx
deleted
100644 → 0
浏览文件 @
4c307c32
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
;
src/pages/orderManage/productOrder/orderList/components/remarkModal/index.tsx
0 → 100644
浏览文件 @
fc07d9aa
import
{
FC
,
useEffect
}
from
'react'
;
import
{
Form
,
Modal
,
ModalProps
,
Input
,
message
}
from
'antd'
;
import
{
InterListType
}
from
'~/api/interface'
;
import
{
mallOrderListType
}
from
'~/api/interface/orderManageType'
;
import
{
OrderManageAPI
}
from
'~/api'
;
type
mallOrderType
=
InterListType
<
mallOrderListType
>
[
0
];
interface
selfProps
{
onOk
:
()
=>
void
;
onCancel
:
()
=>
void
;
mallOrderItem
:
mallOrderType
|
undefined
;
}
const
RemarkModal
:
FC
<
ModalProps
&
selfProps
>
=
({
open
,
onCancel
,
onOk
,
mallOrderItem
})
=>
{
const
[
form
]
=
Form
.
useForm
<
{
content
:
string
}
>
();
const
handleOk
=
()
=>
{
if
(
mallOrderItem
)
{
form
.
validateFields
().
then
((
value
)
=>
{
OrderManageAPI
.
sellerRemark
({
...
value
,
id
:
mallOrderItem
.
id
}).
then
(({
code
})
=>
{
if
(
code
===
'200'
)
{
message
.
success
(
'操作成功'
);
onOk
();
form
.
resetFields
();
}
});
});
}
};
const
handleCancel
=
()
=>
{
form
.
resetFields
();
onCancel
();
};
useEffect
(()
=>
{
if
(
mallOrderItem
)
{
form
.
setFieldValue
(
'content'
,
mallOrderItem
.
sellerRemark
||
undefined
);
}
},
[
mallOrderItem
]);
return
(
<
Modal
open=
{
open
}
onOk=
{
handleOk
}
onCancel=
{
handleCancel
}
title=
'备注'
>
<
Form
labelCol=
{
{
span
:
2
}
}
wrapperCol=
{
{
span
:
20
}
}
form=
{
form
}
>
<
Form
.
Item
label=
'备注'
name=
'content'
>
<
Input
.
TextArea
placeholder=
'请输入备注'
maxLength=
{
70
}
showCount
rows=
{
4
}
/>
</
Form
.
Item
>
</
Form
>
</
Modal
>
);
};
export
default
RemarkModal
;
src/pages/orderManage/productOrder/orderList/components/shipmentsOrder/index.tsx
浏览文件 @
fc07d9aa
import
{
FC
}
from
'react'
;
import
{
Cascader
,
Form
,
Input
,
Modal
,
ModalProps
,
Select
}
from
'antd'
;
import
{
FC
,
useEffect
,
useState
}
from
'react'
;
import
{
Cascader
,
Form
,
Input
,
message
,
Modal
,
ModalProps
,
Select
}
from
'antd'
;
import
{
CommonAPI
,
OrderManageAPI
}
from
'~/api'
;
import
{
InterDataType
,
InterListType
,
InterReqType
}
from
'~/api/interface'
;
import
{
getSecondDistrictInfoType
}
from
'~/api/interface/commonType'
;
import
{
mallOrderListType
,
mallOrderSendType
}
from
'~/api/interface/orderManageType'
;
// 地址返回类型
type
locationType
=
InterDataType
<
getSecondDistrictInfoType
>
;
type
mallOrderType
=
InterListType
<
mallOrderListType
>
[
0
];
// 发货请求类型
type
sendMallType
=
InterReqType
<
mallOrderSendType
>
;
interface
selfProps
{
currentOrderItem
:
mallOrderType
|
undefined
;
onCancel
:
()
=>
void
;
onOk
:
()
=>
void
;
}
const
ShipmentsOrder
:
FC
<
ModalProps
&
selfProps
>
=
({
onOk
,
onCancel
,
open
})
=>
{
const
ShipmentsOrder
:
FC
<
ModalProps
&
selfProps
>
=
({
onOk
,
onCancel
,
open
,
currentOrderItem
})
=>
{
const
[
form
]
=
Form
.
useForm
<
sendMallType
>
();
const
[
listExpressInfo
,
setListExpressInfo
]
=
useState
<
{
label
:
string
;
value
:
string
}[]
>
([]);
const
[
location
,
setLocation
]
=
useState
<
locationType
>
([]);
//获取物流公司列表
const
getExpressList
=
()
=>
{
OrderManageAPI
.
listExpressInfo
().
then
(({
result
})
=>
{
setListExpressInfo
(
result
?.
map
((
v
)
=>
({
label
:
v
.
exName
,
value
:
v
.
exCode
}))
||
[]);
});
};
// 获取地址信息
const
getLocation
=
()
=>
{
CommonAPI
.
getSecondDistrictInfo
().
then
(({
result
})
=>
{
setLocation
(
result
||
[]);
});
};
const
handleOk
=
()
=>
{
onOk
();
form
.
validateFields
().
then
((
value
)
=>
{
OrderManageAPI
.
mallOrderSend
({
...
value
,
uavOrderId
:
currentOrderItem
?.
id
}).
then
(
({
code
})
=>
{
if
(
code
===
'200'
)
{
message
.
success
(
'发货成功'
);
form
.
resetFields
();
onOk
();
}
},
);
});
};
const
handleCancel
=
()
=>
{
form
.
resetFields
();
onCancel
();
};
useEffect
(()
=>
{
if
(
open
)
{
getLocation
();
getExpressList
();
}
},
[
open
]);
useEffect
(()
=>
{
if
(
currentOrderItem
&&
open
)
{
form
.
setFieldsValue
({
takeName
:
currentOrderItem
.
uavOrderExpressDTO
.
takeName
,
takePhone
:
currentOrderItem
.
uavOrderExpressDTO
.
takePhone
,
takeRegion
:
currentOrderItem
.
uavOrderExpressDTO
.
takeRegion
,
takeAddress
:
currentOrderItem
.
uavOrderExpressDTO
.
takeAddress
,
});
}
},
[
currentOrderItem
]);
return
(
<
Modal
open=
{
open
}
title=
'发货'
onOk=
{
handleOk
}
onCancel=
{
handleCancel
}
>
<
Form
...
...
@@ -20,6 +77,7 @@ const ShipmentsOrder: FC<ModalProps & selfProps> = ({ onOk, onCancel, open }) =>
wrapperCol=
{
{
span
:
16
}
}
initialValues=
{
{
remember
:
true
}
}
autoComplete=
'off'
form=
{
form
}
>
<
Form
.
Item
label=
'物流公司'
...
...
@@ -31,7 +89,7 @@ const ShipmentsOrder: FC<ModalProps & selfProps> = ({ onOk, onCancel, open }) =>
},
]
}
>
<
Select
placeholder=
'请选择物流公司'
allowClear
></
Select
>
<
Select
placeholder=
'请选择物流公司'
allowClear
options=
{
listExpressInfo
}
></
Select
>
</
Form
.
Item
>
<
Form
.
Item
label=
'物流编号'
...
...
@@ -43,31 +101,35 @@ const ShipmentsOrder: FC<ModalProps & selfProps> = ({ onOk, onCancel, open }) =>
},
]
}
>
<
Input
placeholder=
'请输入物流编号'
allowClear
/>
<
Input
placeholder=
'请输入物流编号'
allowClear
maxLength=
{
50
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'用户姓名'
name=
'takeName'
//
rules={[
//
{
// validator: validateUserNam
e,
// required: true
,
//
},
//
]}
rules=
{
[
{
required
:
tru
e
,
message
:
'请输入用户姓名'
,
},
]
}
>
<
Input
placeholder=
'请输入用户姓名'
allowClear
/>
<
Input
placeholder=
'请输入用户姓名'
allowClear
maxLength=
{
30
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'手机号'
name=
'takePhone'
// rules={[
// {
// validator: validatePhone,
// required: true,
// },
// ]}
rules=
{
[
{
required
:
true
,
message
:
'请输入手机号'
,
},
{
pattern
:
/^1
[
3-9
]\d
{9}$/
,
message
:
'手机号格式不正确'
,
},
]
}
>
<
Input
placeholder=
'请输入手机号'
allowClear
/>
<
Input
placeholder=
'请输入手机号'
allowClear
maxLength=
{
30
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'收货地址'
...
...
@@ -80,7 +142,7 @@ const ShipmentsOrder: FC<ModalProps & selfProps> = ({ onOk, onCancel, open }) =>
]
}
>
<
Cascader
//
options={location}
options=
{
location
}
placeholder=
'请选择收货地址'
allowClear
fieldNames=
{
{
...
...
@@ -96,11 +158,11 @@ const ShipmentsOrder: FC<ModalProps & selfProps> = ({ onOk, onCancel, open }) =>
rules=
{
[
{
required
:
false
,
message
:
'请输入
收货
地址'
,
message
:
'请输入
详细
地址'
,
},
]
}
>
<
Input
.
TextArea
maxLength=
{
70
}
showCount
placeholder=
'请输入
收货
地址'
allowClear
/>
<
Input
.
TextArea
maxLength=
{
70
}
showCount
placeholder=
'请输入
详细
地址'
allowClear
/>
</
Form
.
Item
>
</
Form
>
</
Modal
>
...
...
src/pages/orderManage/productOrder/orderList/index.scss
0 → 100644
浏览文件 @
fc07d9aa
.order-table-item
{
.item-td
{
position
:
absolute
;
top
:
0
;
left
:
0
;
height
:
40px
;
width
:
100%
;
background
:
rgba
(
22
,
119
,
255
,
0
.1
);
line-height
:
40px
;
}
.item-tr
{
min-height
:
50px
;
width
:
100%
;
margin-top
:
50px
;
.mall-sku-item
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
10px
;
.sku-img
{
width
:
48px
;
height
:
48px
;
}
.sku-info
{
margin-left
:
10px
;
line-height
:
16px
;
text-align
:
left
;
.info-name
{
color
:
#1677ff
}
.info-spec
{
margin-top
:
10px
;
span
:not
(
:last-child
)
{
&
:after
{
content
:
';'
;
}
}
}
}
}
}
.goods-text
{
height
:
60px
;
width
:
100%
;
text-align
:
center
;
line-height
:
60px
;
}
.mall-order-remark
{
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
width
:
100%
;
cursor
:
pointer
;
color
:
#1677ff
;
}
}
src/pages/orderManage/productOrder/orderList/index.tsx
浏览文件 @
fc07d9aa
import
{
useEffect
,
useState
}
from
'react'
;
import
SearchBox
from
'~/components/search-box'
;
import
{
Button
,
Image
,
Tabl
e
}
from
'antd'
;
import
{
Button
,
Table
,
Imag
e
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
useNavigate
}
from
'react-router-dom'
;
import
qs
from
'query-string'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
{
listPageManagerVerOn
e
}
from
'~/api/interface/orderManageType'
;
import
{
mallOrderListTyp
e
}
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'
;
import
'./index.scss'
;
import
{
filterObjAttr
}
from
'~/utils'
;
import
RemarkModal
from
'~/pages/orderManage/productOrder/orderList/components/remarkModal'
;
// 表格数据类型
type
TableType
=
InterListType
<
listPageManagerVerOn
e
>
;
type
TableType
=
InterListType
<
mallOrderListTyp
e
>
;
// 请求数据的类型
type
ReqType
=
InterReqType
<
listPageManagerVerOn
e
>
;
type
ReqType
=
InterReqType
<
mallOrderListTyp
e
>
;
// 搜索表单的数据
let
query
:
ReqType
=
{};
...
...
@@ -26,6 +28,35 @@ function ProductOrderView() {
const
[
tranStatusList
,
setTranStatusList
]
=
useState
<
{
value
:
number
|
undefined
;
label
:
string
}[]
>
([]);
// 订单操作按钮列表
const
operateBtnList
=
[
{
btnStr
:
'确认订单'
,
status
:
200
,
btnClick
:
(
_record
:
TableType
[
0
])
=>
{
setSureOrderShow
(
true
);
},
},
{
btnStr
:
'签署合同'
,
status
:
300
,
btnClick
:
(
_record
:
TableType
[
0
])
=>
{},
},
// {
// btnStr: '凭证审批',
// status: 400,
// btnClick: () => {},
// },
{
btnStr
:
'发货'
,
status
:
500
,
btnClick
:
(
record
:
TableType
[
0
])
=>
{
getMallOrderDetail
(
record
.
id
);
setShipmentsOrderShow
(
true
);
},
},
];
// 订单状态
const
[
orderStatusList
,
setOrderStatusList
]
=
useState
<
{
value
:
number
;
label
:
string
}[]
>
([]);
// 当前选择的是第几个按钮
...
...
@@ -39,26 +70,41 @@ function ProductOrderView() {
});
// 表格数据
const
[
tableData
,
setTableData
]
=
useState
<
TableType
>
([]);
// 需要编辑的数据
// const [editData, setEditData] = useState<TableType[0]>(); // 用于编辑
const
[
currentOrderItem
,
setCurrentOrderItem
]
=
useState
<
TableType
[
0
]
>
();
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
);
// 订单流程操作
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
[
remarkModalShow
,
setRemarkModalShow
]
=
useState
<
boolean
>
(
false
);
// 封装表格行样式
const
TableItem
:
React
.
FC
<
{
td
?:
React
.
ReactNode
;
tr
?:
React
.
ReactNode
;
// eslint-disable-next-line react/prop-types
}
>
=
({
td
,
tr
})
=>
{
return
(
<
div
className=
'order-table-item'
>
<
div
className=
'item-td'
>
{
td
}
</
div
>
<
div
className=
'item-tr'
>
{
tr
}
</
div
>
</
div
>
);
};
// 加载列表
const
getTableList
=
async
(
value
=
{})
=>
{
const
getTableList
=
(
value
=
{})
=>
{
setLoading
(
true
);
// 只需要修改这个地方的接口即可
const
res
=
await
OrderManageAPI
.
listPageManagerVerOne
({
OrderManageAPI
.
getMallOrderList
({
pageNo
:
pagination
.
current
,
pageSize
:
pagination
.
pageSize
,
...
value
,
...
query
,
})
;
if
(
res
&&
res
.
code
===
'200'
)
{
const
{
list
,
pageNo
,
totalCount
,
pageSize
,
totalPage
}
=
res
.
res
ult
;
// 解构
})
.
then
(({
result
})
=>
{
setLoading
(
false
);
const
{
list
,
pageNo
,
totalCount
,
pageSize
,
totalPage
}
=
result
;
// 解构
setPagination
({
total
:
totalCount
,
current
:
pageNo
,
...
...
@@ -66,59 +112,45 @@ function ProductOrderView() {
totalPage
,
});
setTableData
(
list
);
}
});
};
// 获取订单详情
const
getMallOrderDetail
=
(
id
:
number
)
=>
{
OrderManageAPI
.
getMallOrderDetail
({
id
}).
then
(({
result
})
=>
{
setCurrentOrderItem
(
result
);
});
};
// 翻页
const
paginationChange
=
(
pageNo
:
number
,
pageSize
:
number
)
=>
{
getTableList
({
pageNo
,
pageSize
})
.
then
()
;
getTableList
({
pageNo
,
pageSize
});
};
// 表单提交
const
onFinish
=
(
data
:
ReqType
)
=>
{
pagination
.
current
=
1
;
query
=
data
;
getTableList
(
data
).
then
(
);
query
=
filterObjAttr
(
data
,
[
'rangeTime'
])
;
getTableList
();
};
// 订单状态筛选
const
statusChangeEvent
=
(
i
:
number
)
=>
{
if
(
i
===
statusCodeButtonIndex
)
{
setStatusCodeButtonIndex
(
0
);
}
else
{
setStatusCodeButtonIndex
(
i
);
}
if
(
i
===
0
)
return
;
query
=
{
...
query
,
statusCode
:
[
Number
(
tranStatusList
[
i
].
value
)]
};
getTableList
().
then
();
setStatusCodeButtonIndex
(
i
);
query
=
{
...
query
,
statusCode
:
tranStatusList
[
i
].
value
};
getTableList
();
};
// 跳转订单详情
const
handleDetail
=
(
record
:
TableType
[
0
])
=>
{
navigate
(
`/orderManage/productOrder/detail?
${
qs
.
stringify
({
id
:
record
.
id
})}
`
);
};
// 获取订单状态
const
getOrderStatus
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
orderListStatus
({});
if
(
res
&&
res
.
code
===
'200'
)
{
const
list
=
res
.
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
showDistributionOrderEvent
=
()
=>
{
setDistributionOrderShow
(
true
);
};
const
distributionOrderOk
=
()
=>
{
setDistributionOrderShow
(
false
);
};
const
distributionOrderCancel
=
()
=>
{
setDistributionOrderShow
(
false
);
// 获取商城订单状态列表
const
getMallOrderStatusList
=
()
=>
{
OrderManageAPI
.
getMallOrderStatusList
().
then
(({
result
})
=>
{
if
(
result
)
{
const
list
=
result
.
map
((
item
)
=>
({
value
:
item
.
code
,
label
:
item
.
status
}));
setOrderStatusList
(
list
);
setTranStatusList
([{
label
:
'全部'
,
value
:
undefined
},
...
list
]);
}
});
};
// 确认订单
const
showSureOrderEvent
=
()
=>
{
setSureOrderShow
(
true
);
};
const
sureOrderCancel
=
()
=>
{
setSureOrderShow
(
false
);
};
...
...
@@ -126,9 +158,6 @@ function ProductOrderView() {
setSureOrderShow
(
false
);
};
// 凭证审批
const
showApprovalOrderEvent
=
()
=>
{
setApprovalOrderShow
(
true
);
};
const
approvalOrderOk
=
()
=>
{
setApprovalOrderShow
(
false
);
};
...
...
@@ -136,22 +165,38 @@ function ProductOrderView() {
setApprovalOrderShow
(
false
);
};
// 发货
const
showShipmentsOrderEvent
=
()
=>
{
setShipmentsOrderShow
(
true
);
};
const
shipmentsOrderCancel
=
()
=>
{
setShipmentsOrderShow
(
false
);
};
const
shipmentsOrderOk
=
()
=>
{
setShipmentsOrderShow
(
false
);
getTableList
(
query
);
};
// 卖家备注
const
showRemarkModalClick
=
(
record
:
TableType
[
0
])
=>
{
setCurrentOrderItem
({
...
record
});
setRemarkModalShow
(
true
);
};
const
remarkModalOk
=
()
=>
{
setRemarkModalShow
(
false
);
getTableList
(
query
);
};
const
remarkModalCancel
=
()
=>
{
setRemarkModalShow
(
false
);
};
// 获取当前操作按钮
const
getCurrentOperateBtn
=
(
status
:
number
)
=>
{
return
operateBtnList
.
find
((
v
)
=>
v
.
status
===
status
);
};
// componentDidMount
useEffect
(()
=>
{
query
=
{};
get
OrderStatus
().
then
();
get
TableList
().
then
();
get
TableList
();
get
MallOrderStatusList
();
},
[]);
// 表格结构
const
columns
:
ColumnsType
<
TableType
[
0
]
>
=
[
{
...
...
@@ -159,96 +204,185 @@ function ProductOrderView() {
dataIndex
:
'userName'
,
align
:
'center'
,
width
:
280
,
fixed
:
'left'
,
render
:
(
_text
,
record
)
=>
(
<
div
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
}
}
>
<
Image
src=
{
record
.
orderMainImg
}
style=
{
{
width
:
48
,
height
:
48
}
}
/>
<
div
style=
{
{
marginLeft
:
10
,
textAlign
:
'left'
,
lineHeight
:
'16px'
}
}
>
<
div
style=
{
{
color
:
'#1677ff'
}
}
>
{
record
.
orderName
}
</
div
>
<
div
>
{
record
.
mallOrderProdListDTOList
.
map
((
i
)
=>
i
.
prodSkuSpecName
).
join
(
' + '
)
}
</
div
>
<
div
>
订单编号:
{
record
.
orderNo
}
</
div
>
<
div
>
创建时间:
{
record
.
createTime
}
</
div
>
</
div
>
</
div
>
<
TableItem
td=
{
<
div
>
<
span
>
订单编号:
</
span
>
<
span
>
{
record
.
orderNo
}
</
span
>
</
div
>
}
tr=
{
record
.
skuDTOList
.
map
((
v
)
=>
(
<
div
key=
{
v
.
id
}
className=
'mall-sku-item'
>
<
Image
src=
{
v
.
skuImage
}
className=
'sku-img'
/>
<
div
className=
'sku-info'
>
<
div
className=
'info-name'
>
{
v
.
tradeName
}
</
div
>
<
div
className=
'info-spec'
>
{
Object
.
entries
(
JSON
.
parse
(
v
.
productSpec
)).
map
((
v
,
index
)
=>
(
<
span
key=
{
index
}
>
{
v
.
join
(
':'
)
}
</
span
>
))
}
</
div
>
</
div
>
</
div
>
))
}
/>
),
},
{
title
:
'订单金额(元)'
,
dataIndex
:
'orderAmount'
,
dataIndex
:
'order
Total
Amount'
,
align
:
'center'
,
render
:
(
text
)
=>
text
.
toLocaleString
(),
render
:
(
text
)
=>
(
<
TableItem
tr=
{
<
div
className=
'goods-text'
>
¥
{
text
?.
toFixed
(
2
).
toLocaleString
()
}
</
div
>
}
/>
),
},
{
title
:
'买家'
,
dataIndex
:
'uid'
,
title
:
'数量'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
(
<>
<
div
>
{
text
}
</
div
>
<
div
>
{
record
.
userName
}
</
div
>
<
div
>
{
record
.
entName
}
</
div
>
</>
width
:
'15%'
,
render
:
(
_text
,
record
)
=>
(
<
TableItem
td=
{
<
div
>
<
span
>
创建时间:
</
span
>
<
span
>
{
record
.
createTime
}
</
span
>
</
div
>
}
tr=
{
record
.
skuDTOList
.
map
((
v
)
=>
(
<
div
key=
{
v
.
id
}
className=
'goods-text'
>
x
{
v
.
orderNum
}
</
div
>
))
}
/>
),
},
{
title
:
'订单状态'
,
dataIndex
:
'statusCode'
,
title
:
'单价'
,
align
:
'center'
,
render
:
(
text
)
=>
orderStatusList
.
find
((
i
)
=>
i
.
value
===
text
)?.
label
||
text
,
render
:
(
_text
,
record
)
=>
(
<
TableItem
tr=
{
record
.
skuDTOList
.
map
((
v
)
=>
(
<
div
key=
{
v
.
id
}
className=
'goods-text'
>
¥
{
v
.
unitPrice
}
</
div
>
))
}
/>
),
},
{
title
:
'实收款'
,
dataIndex
:
'realPayAmount'
,
title
:
'订单类型'
,
align
:
'center'
,
render
:
(
text
)
=>
text
?.
toLocaleString
()
||
0
,
dataIndex
:
'orderType'
,
render
:
(
text
)
=>
(
<
TableItem
tr=
{
<
div
className=
'goods-text'
>
{
text
?
'意向订单'
:
'正常订单'
}
</
div
>
}
/>
),
},
{
title
:
'
相关运营
'
,
dataIndex
:
'
userName
'
,
title
:
'
实际支付
'
,
dataIndex
:
'
otherAmount
'
,
align
:
'center'
,
render
:
(
_text
)
=>
`--`
,
render
:
(
text
)
=>
(
<
TableItem
tr=
{
<
div
className=
'goods-text'
>
¥
{
text
?.
toFixed
(
2
).
toLocaleString
()
}
</
div
>
}
/>
),
},
{
title
:
'
推荐人
'
,
dataIndex
:
'
userName
'
,
title
:
'
抵扣云享金/余额
'
,
dataIndex
:
'
shareAmount
'
,
align
:
'center'
,
render
:
(
_text
)
=>
`--`
,
render
:
(
text
)
=>
(
<
TableItem
tr=
{
<
div
className=
'goods-text'
>
¥
{
text
?.
toFixed
(
2
).
toLocaleString
()
}
</
div
>
}
/>
),
},
{
title
:
'订单交期'
,
title
:
'买家'
,
dataIndex
:
'uid'
,
align
:
'center'
,
width
:
'15%'
,
render
:
(
text
,
_record
)
=>
(
<
TableItem
tr=
{
<>
<
div
className=
'goods-text'
>
{
text
}
</
div
>
{
/*<div>{record.userName}</div>*/
}
{
/*<div>{record.entName}</div>*/
}
</>
}
/>
),
},
{
title
:
'订单状态'
,
dataIndex
:
'statusCode'
,
align
:
'center'
,
render
:
(
text
)
=>
(
<
TableItem
tr=
{
<
div
className=
'goods-text'
>
{
orderStatusList
.
find
((
i
)
=>
i
.
value
===
text
)?.
label
||
text
}
</
div
>
}
/>
),
},
{
title
:
'推荐人'
,
dataIndex
:
'userName'
,
align
:
'center'
,
render
:
(
_text
)
=>
`--`
,
render
:
(
_text
)
=>
<
TableItem
tr=
{
<
div
className=
'goods-text'
>
--
</
div
>
}
/>
,
},
// {
// title: '订单交期',
// dataIndex: 'deliveryTime',
// align: 'center',
// render: (_text) => <TableItem tr={<div className='goods-text'>--</div>} />,
// },
{
title
:
'备注'
,
dataIndex
:
'
r
emark'
,
dataIndex
:
'
sellerR
emark'
,
align
:
'center'
,
width
:
150
,
ellipsis
:
true
,
render
:
(
text
,
record
)
=>
(
<
TableItem
tr=
{
<
div
onClick=
{
()
=>
showRemarkModalClick
(
record
)
}
className=
'goods-text mall-order-remark'
>
{
text
||
'--'
}
</
div
>
}
/>
),
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
align
:
'center'
,
fixed
:
'right'
,
width
:
'10%'
,
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
>
</>
<
TableItem
tr=
{
<>
{
getCurrentOperateBtn
?
(
<
Button
type=
{
'link'
}
onClick=
{
()
=>
getCurrentOperateBtn
(
record
.
statusCode
)?.
btnClick
(
record
)
}
>
{
getCurrentOperateBtn
(
record
.
statusCode
)?.
btnStr
}
</
Button
>
)
:
(
''
)
}
<
Button
type=
{
'link'
}
onClick=
{
()
=>
handleDetail
(
record
)
}
>
详情
</
Button
>
</>
}
/>
),
},
];
...
...
@@ -263,12 +397,6 @@ function ProductOrderView() {
placeholder
:
'请输入订单编号'
,
},
{
label
:
'买家账号'
,
name
:
'keyword2'
,
type
:
'input'
,
placeholder
:
'请输入用户账号'
,
},
{
label
:
'时间'
,
name
:
'rangeTime'
,
type
:
'rangePicker'
,
...
...
@@ -299,6 +427,7 @@ function ProductOrderView() {
columns=
{
columns
}
rowKey=
'id'
scroll=
{
{
x
:
1200
}
}
loading=
{
loading
}
pagination=
{
{
total
:
pagination
.
total
,
pageSize
:
pagination
.
pageSize
,
...
...
@@ -310,12 +439,6 @@ function ProductOrderView() {
}
}
// rowSelection={{ selectedRowKeys, onChange: onSelectChange }}
/>
{
/*分配订单*/
}
<
DistributionOrder
open=
{
distributionOrderShow
}
onOk=
{
distributionOrderOk
}
onCancel=
{
distributionOrderCancel
}
/>
{
/*确认订单*/
}
<
SureOrder
open=
{
sureOrderShow
}
onCancel=
{
sureOrderCancel
}
onOk=
{
sureOrderOk
}
/>
{
/*凭证审批*/
}
...
...
@@ -329,6 +452,14 @@ function ProductOrderView() {
open=
{
shipmentsOrderShow
}
onCancel=
{
shipmentsOrderCancel
}
onOk=
{
shipmentsOrderOk
}
currentOrderItem=
{
currentOrderItem
}
/>
{
/*卖家备注*/
}
<
RemarkModal
open=
{
remarkModalShow
}
onOk=
{
remarkModalOk
}
onCancel=
{
remarkModalCancel
}
mallOrderItem=
{
currentOrderItem
}
/>
</>
);
...
...
src/pages/rentManage/rentMake/index.tsx
浏览文件 @
fc07d9aa
import
{
Button
,
Table
,
Tag
}
from
'antd'
;
import
{
Button
,
Modal
,
Table
,
Tag
,
message
}
from
'antd'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
AddOrEditRentMakeModal
from
'./components/addOrEditRentMakeModal'
;
...
...
@@ -40,6 +40,9 @@ const RentMake = () => {
<
Button
type=
'link'
onClick=
{
()
=>
addRentModeClick
(
record
)
}
>
详情
</
Button
>
<
Button
type=
'link'
danger
onClick=
{
()
=>
deleteBrandInfoClick
(
record
)
}
>
删除
</
Button
>
</>
),
},
...
...
@@ -84,6 +87,23 @@ const RentMake = () => {
});
};
//品牌删除
const
deleteBrandInfoClick
=
(
record
:
makeListType
[
0
])
=>
{
Modal
.
confirm
({
content
:
'是否删除该品牌?'
,
onOk
:
()
=>
{
RentManageAPI
.
deleteBrandInfo
({
id
:
record
.
id
}).
then
(({
code
})
=>
{
if
(
code
===
'200'
)
{
if
(
tableData
.
length
===
1
&&
pagination
.
pageNo
!==
1
)
{
pagination
.
pageNo
--
;
}
message
.
success
(
'删除成功'
);
getListBrandInfo
();
}
});
},
});
};
//分页
const
paginationChange
=
(
pageNo
:
number
,
pageSize
:
number
)
=>
{
pagination
.
pageNo
=
pageNo
;
...
...
src/router/router.tsx
浏览文件 @
fc07d9aa
...
...
@@ -195,6 +195,7 @@ export interface RouteObjectType {
customIcon
?:
boolean
;
title
:
string
;
develop
?:
boolean
;
pid
?:
number
;
};
}
// 加载页面
...
...
@@ -264,6 +265,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'实名认证详情'
,
hidden
:
true
,
icon
:
<
SolutionOutlined
/>,
pid
:
260
,
},
},
{
...
...
@@ -275,6 +277,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'邀请列表'
,
icon
:
<
SolutionOutlined
/>,
hidden
:
true
,
pid
:
200
,
},
},
{
...
...
@@ -285,7 +288,6 @@ export const routerList: Array<RouteObjectType> = [
id
:
26200
,
title
:
'现金管理'
,
icon
:
<
RedEnvelopeOutlined
/>,
hidden
:
true
,
},
},
{
...
...
@@ -293,10 +295,11 @@ export const routerList: Array<RouteObjectType> = [
element
:
withLoadingComponent
(<
CustomMoneyDetail
/>),
errorElement
:
<
ErrorPage
/>,
meta
:
{
id
:
262
0
0
,
id
:
262
1
0
,
title
:
'现金变更'
,
icon
:
<
RedEnvelopeOutlined
/>,
hidden
:
true
,
pid
:
26200
,
},
},
{
...
...
@@ -340,6 +343,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'认证日志'
,
hidden
:
true
,
icon
:
<
UserOutlined
/>,
pid
:
1810
,
},
},
{
...
...
@@ -351,6 +355,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'飞手详情'
,
hidden
:
true
,
icon
:
<
UserOutlined
/>,
pid
:
1810
,
},
},
{
...
...
@@ -362,6 +367,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'飞手审批'
,
hidden
:
true
,
icon
:
<
UserOutlined
/>,
pid
:
1810
,
},
},
],
...
...
@@ -395,6 +401,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'需求详情'
,
hidden
:
true
,
icon
:
<
MonitorOutlined
/>,
pid
:
410
,
},
},
{
...
...
@@ -416,6 +423,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'宣传管理详情'
,
icon
:
<
SketchOutlined
/>,
hidden
:
true
,
pid
:
420
,
},
},
{
...
...
@@ -457,6 +465,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'招标快讯详情'
,
icon
:
<
CoffeeOutlined
/>,
hidden
:
true
,
pid
:
450
,
},
},
{
...
...
@@ -468,6 +477,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'用户反馈'
,
icon
:
<
CoffeeOutlined
/>,
hidden
:
true
,
pid
:
450
,
},
},
{
...
...
@@ -533,6 +543,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'商城订单 / 详情'
,
icon
:
<
ShoppingOutlined
/>,
hidden
:
true
,
pid
:
810
,
},
},
{
...
...
@@ -553,8 +564,8 @@ export const routerList: Array<RouteObjectType> = [
id
:
10070
,
title
:
'采购订单详情'
,
icon
:
<
ShoppingOutlined
/>,
develop
:
true
,
hidden
:
true
,
pid
:
840
,
},
},
{
...
...
@@ -576,6 +587,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'租赁订单 / 详情'
,
icon
:
<
ShopOutlined
/>,
hidden
:
true
,
pid
:
820
,
},
},
{
...
...
@@ -597,6 +609,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'服务订单 / 详情'
,
icon
:
<
CreditCardOutlined
/>,
hidden
:
true
,
pid
:
830
,
},
},
{
...
...
@@ -628,7 +641,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'需求订单详情'
,
icon
:
<
CreditCardOutlined
/>,
hidden
:
true
,
develop
:
true
,
pid
:
850
,
},
},
],
...
...
@@ -658,10 +671,11 @@ export const routerList: Array<RouteObjectType> = [
element
:
withLoadingComponent
(<
ServiceDetailView
/>),
errorElement
:
<
ErrorPage
/>,
meta
:
{
id
:
102
0
,
id
:
102
5
,
icon
:
<
SmileOutlined
/>,
title
:
'服务详情'
,
hidden
:
true
,
pid
:
1020
,
},
},
// {
...
...
@@ -694,6 +708,7 @@ export const routerList: Array<RouteObjectType> = [
icon
:
<
SmileOutlined
/>,
title
:
'商城商品新增'
,
hidden
:
true
,
pid
:
1040
,
},
},
{
...
...
@@ -705,6 +720,7 @@ export const routerList: Array<RouteObjectType> = [
icon
:
<
SmileOutlined
/>,
title
:
'商城商品编辑'
,
hidden
:
true
,
pid
:
1040
,
},
},
{
...
...
@@ -716,6 +732,7 @@ export const routerList: Array<RouteObjectType> = [
icon
:
<
SmileOutlined
/>,
title
:
'商城商品详情'
,
hidden
:
true
,
pid
:
1040
,
},
},
{
...
...
@@ -737,6 +754,7 @@ export const routerList: Array<RouteObjectType> = [
icon
:
<
SmileOutlined
/>,
title
:
'产品详情'
,
hidden
:
true
,
pid
:
1050
,
},
},
{
...
...
@@ -780,6 +798,7 @@ export const routerList: Array<RouteObjectType> = [
icon
:
<
SmileOutlined
/>,
title
:
'租赁商品新增'
,
hidden
:
true
,
pid
:
1030
,
},
},
{
...
...
@@ -791,6 +810,7 @@ export const routerList: Array<RouteObjectType> = [
icon
:
<
SmileOutlined
/>,
title
:
'租赁商品编辑'
,
hidden
:
true
,
pid
:
1030
,
},
},
{
...
...
@@ -802,6 +822,7 @@ export const routerList: Array<RouteObjectType> = [
icon
:
<
SmileOutlined
/>,
title
:
'租赁商品详情'
,
hidden
:
true
,
pid
:
1030
,
},
},
{
...
...
@@ -833,6 +854,7 @@ export const routerList: Array<RouteObjectType> = [
icon
:
<
SmileOutlined
/>,
title
:
'品牌管理/型号'
,
hidden
:
true
,
pid
:
2020
,
},
},
],
...
...
@@ -908,6 +930,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'分类详情'
,
icon
:
''
,
hidden
:
true
,
pid
:
1240
,
},
},
// {
...
...
@@ -980,6 +1003,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'个人积分明细'
,
icon
:
<
MacCommandOutlined
/>,
hidden
:
true
,
pid
:
2210
,
},
},
// {
...
...
@@ -1229,6 +1253,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'权限信息'
,
icon
:
<
UserOutlined
/>,
hidden
:
true
,
pid
:
1420
,
},
},
{
...
...
@@ -1250,6 +1275,7 @@ export const routerList: Array<RouteObjectType> = [
title
:
'单位详情'
,
icon
:
<
BankOutlined
/>,
hidden
:
true
,
pid
:
1430
,
},
},
{
...
...
src/utils/router.ts
浏览文件 @
fc07d9aa
...
...
@@ -33,12 +33,12 @@ export const getRouteList = (router: routerItem[]) => {
}
return
arr
;
};
// 根据路由地址获取当前路由的id
// 根据路由地址获取当前路由的id
(菜单栏专用,存在特殊处理)
export
const
getRouteID
=
(
routerList
:
RouteObjectType
[],
path
:
string
)
=>
{
let
id
:
number
|
string
=
''
;
routerList
.
forEach
((
i
)
=>
{
if
(
i
.
path
===
path
)
{
id
=
i
.
meta
?.
id
||
''
;
id
=
i
.
meta
.
hidden
?
i
.
meta
?.
pid
||
''
:
i
.
meta
?.
id
||
''
;
}
else
if
(
i
.
children
?.
length
&&
id
===
''
)
{
id
=
getRouteID
(
i
.
children
,
path
);
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论