Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
admin
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
admin
Commits
41cc802b
提交
41cc802b
authored
10月 12, 2023
作者:
龚洪江
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
功能:破损信息展示
上级
d91b2c60
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
196 行增加
和
27 行删除
+196
-27
orderManageType.ts
src/api/interface/orderManageType.ts
+56
-0
index.tsx
...s/orderManage/equipmentOrder/comp/confirmReturn/index.tsx
+76
-9
index.tsx
...orderManage/equipmentOrder/comp/detailPurchaser/index.tsx
+46
-14
index.tsx
src/pages/orderManage/equipmentOrder/index.tsx
+18
-4
没有找到文件。
src/api/interface/orderManageType.ts
浏览文件 @
41cc802b
...
@@ -1716,6 +1716,41 @@ type rentReqType = {
...
@@ -1716,6 +1716,41 @@ type rentReqType = {
*/
*/
status
?:
number
;
status
?:
number
;
};
};
storeDamageOrder
?:
{
/**
* 创建时间
*/
createTime
?:
Date
;
/**
* 物流编号
*/
expressCode
?:
string
;
/**
* 快递单号
*/
expressNum
?:
string
;
/**
* 图片文件
*/
file
?:
string
;
/**
* id
*/
id
?:
number
;
/**
* 订单id
*/
leaseOrderId
?:
number
;
/**
* 退款原因
*/
reason
?:
string
;
/**
* 归还状态:0已归还 1无需归还
*/
status
?:
number
;
modifiedDeposit
?:
number
;
};
confirmReceipt
?:
{
confirmReceipt
?:
{
/**
/**
* 创建时间
* 创建时间
...
@@ -2017,6 +2052,26 @@ export type rentPfConfirmOrderWareType = InterFunction<
...
@@ -2017,6 +2052,26 @@ export type rentPfConfirmOrderWareType = InterFunction<
*/
*/
damage
?:
number
;
damage
?:
number
;
/**
/**
* 扣除的押金
*/
deductionAmount
?:
number
;
/**
* 物流编码
*/
expressCode
?:
string
;
/**
* 物流单号
*/
expressNum
?:
string
;
/**
* 图片文件
*/
file
?:
string
;
/**
* id
*/
id
?:
number
;
/**
* 订单id
* 订单id
*/
*/
orderId
?:
number
;
orderId
?:
number
;
...
@@ -2027,6 +2082,7 @@ export type rentPfConfirmOrderWareType = InterFunction<
...
@@ -2027,6 +2082,7 @@ export type rentPfConfirmOrderWareType = InterFunction<
/**
/**
* 归还状态 0已归还 1无需归还(注:发货后申请退款需要传,归还商品的时候不需要)
* 归还状态 0已归还 1无需归还(注:发货后申请退款需要传,归还商品的时候不需要)
*/
*/
status
?:
number
;
},
},
any
any
>
;
>
;
src/pages/orderManage/equipmentOrder/comp/confirmReturn/index.tsx
浏览文件 @
41cc802b
import
{
Form
,
Input
,
Modal
,
ModalProps
,
Radio
,
RadioChangeEvent
,
Button
,
message
}
from
'antd'
;
import
{
Form
,
Input
,
Modal
,
ModalProps
,
Radio
,
RadioChangeEvent
,
Button
,
message
,
InputNumber
,
}
from
'antd'
;
import
React
,
{
FC
,
useState
}
from
'react'
;
import
React
,
{
FC
,
useState
}
from
'react'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
rentOrderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
rentOrderDetailType
}
from
'~/api/interface/orderManageType'
;
import
LogisticsStepModal
from
'~/components/order/productOrder/logisticsStepModal'
;
import
LogisticsStepModal
from
'~/components/order/productOrder/logisticsStepModal'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
{
UploadOutlined
}
from
'@ant-design/icons'
;
import
{
UploadFile
}
from
'antd/es/upload/interface'
;
import
{
Uploader
}
from
'~/components/uploader'
;
import
{
isEmptyBol
}
from
'~/utils/validateUtils'
;
// 租赁订单详情返回类型
// 租赁订单详情返回类型
type
detailType
=
InterDataType
<
rentOrderDetailType
>
;
type
detailType
=
InterDataType
<
rentOrderDetailType
>
;
...
@@ -23,11 +37,12 @@ const ConfirmReturn: FC<ModalProps & selfProps> = ({
...
@@ -23,11 +37,12 @@ const ConfirmReturn: FC<ModalProps & selfProps> = ({
modalTitle
,
modalTitle
,
})
=>
{
})
=>
{
const
[
form
]
=
Form
.
useForm
<
{
damage
:
number
;
reason
:
string
}
>
();
const
[
form
]
=
Form
.
useForm
<
{
damage
:
number
;
reason
:
string
}
>
();
const
[
is
ShowReason
,
setIsShowReas
on
]
=
useState
<
boolean
>
(
false
);
const
[
is
Dilapidation
,
setIsDilapidati
on
]
=
useState
<
boolean
>
(
false
);
const
[
logisticsStepModalShow
,
setLogisticsStepModalShow
]
=
useState
<
boolean
>
(
false
);
const
[
logisticsStepModalShow
,
setLogisticsStepModalShow
]
=
useState
<
boolean
>
(
false
);
const
[
dilapidationImgList
,
setDilapidationImgList
]
=
useState
<
UploadFile
[]
>
([]);
const
radioChangeEvent
=
(
e
:
RadioChangeEvent
)
=>
{
const
radioChangeEvent
=
(
e
:
RadioChangeEvent
)
=>
{
setIs
ShowReas
on
(
!!
e
.
target
.
value
);
setIs
Dilapidati
on
(
!!
e
.
target
.
value
);
};
};
// 物流弹窗
// 物流弹窗
const
logisticsStepModalShowClick
=
()
=>
{
const
logisticsStepModalShowClick
=
()
=>
{
...
@@ -46,7 +61,8 @@ const ConfirmReturn: FC<ModalProps & selfProps> = ({
...
@@ -46,7 +61,8 @@ const ConfirmReturn: FC<ModalProps & selfProps> = ({
if
(
code
===
'200'
)
{
if
(
code
===
'200'
)
{
message
.
success
(
'确认归还成功'
);
message
.
success
(
'确认归还成功'
);
form
.
resetFields
();
form
.
resetFields
();
setIsShowReason
(
false
);
setDilapidationImgList
([]);
setIsDilapidation
(
false
);
onOk
();
onOk
();
}
}
});
});
...
@@ -55,7 +71,31 @@ const ConfirmReturn: FC<ModalProps & selfProps> = ({
...
@@ -55,7 +71,31 @@ const ConfirmReturn: FC<ModalProps & selfProps> = ({
const
handleCancel
=
()
=>
{
const
handleCancel
=
()
=>
{
onCancel
();
onCancel
();
form
.
resetFields
();
form
.
resetFields
();
setIsShowReason
(
false
);
setDilapidationImgList
([]);
setIsDilapidation
(
false
);
};
// 破损图片上传
const
uploadDilapidationImg
=
(
value
:
any
)
=>
{
setDilapidationImgList
(
value
);
form
.
setFieldValue
(
'file'
,
JSON
.
stringify
(
value
.
map
((
v
:
any
)
=>
v
.
url
)));
};
// 破损金额限制
const
priceValidator
=
(
_rule
:
any
,
value
:
any
,
callback
:
any
)
=>
{
if
(
isEmptyBol
(
value
))
{
return
callback
(
new
Error
(
'金额不能为空'
));
}
if
(
value
<
0
)
{
return
callback
(
new
Error
(
'金额不能小于0'
));
}
if
(
value
>
(
currentOrderItem
?.
deposit
||
0
)
*
(
currentOrderItem
?.
wareNum
||
0
))
{
return
callback
(
new
Error
(
`金额不能大于
${(
currentOrderItem
?.
deposit
||
0
)
*
(
currentOrderItem
?.
wareNum
||
0
)}
`,
),
);
}
callback();
};
};
return (
return (
...
@@ -67,10 +107,37 @@ const ConfirmReturn: FC<ModalProps & selfProps> = ({
...
@@ -67,10 +107,37 @@ const ConfirmReturn: FC<ModalProps & selfProps> = ({
<Radio value={1}>破损</Radio>
<Radio value={1}>破损</Radio>
</Radio.Group>
</Radio.Group>
</Form.Item>
</Form.Item>
{
isShowReason
?
(
{isDilapidation ? (
<
Form
.
Item
label=
'原因'
name=
'reason'
>
<>
<
Input
.
TextArea
placeholder=
'请输入原因'
maxLength=
{
70
}
showCount
rows=
{
3
}
/>
<Form.Item
</
Form
.
Item
>
label='扣除金额'
name='deductionAmount'
rules={[{ required: true, validator: priceValidator }]}
>
<InputNumber placeholder='请输入抵扣金额' style={{ width: '200px' }} />
</Form.Item>
<Form.Item
label='破损图片'
name='file'
rules={[{ required: true, message: '请上传破损图片' }]}
>
<Uploader
listType='picture-card'
fileUpload
onChange={uploadDilapidationImg}
defaultFileList={dilapidationImgList}
>
<UploadOutlined />
</Uploader>
</Form.Item>
<Form.Item
label='破损描述'
name='reason'
rules={[{ required: true, message: '请输入破损描述' }]}
>
<Input.TextArea placeholder='请输入破损描述' maxLength={70} showCount rows={3} />
</Form.Item>
</>
) : (
) : (
''
''
)}
)}
...
...
src/pages/orderManage/equipmentOrder/comp/detailPurchaser/index.tsx
浏览文件 @
41cc802b
...
@@ -92,22 +92,27 @@ const DetailPurchaser: React.FC<PropsType> = (props) => {
...
@@ -92,22 +92,27 @@ const DetailPurchaser: React.FC<PropsType> = (props) => {
</
div
>
</
div
>
</>
</>
)
}
)
}
{
detail
?.
confirmReceipt
?.
file
?
(
{
detail
?.
confirmReceipt
?
(
<
div
>
<
div
>
<
div
className=
'detail-title'
>
收货信息
</
div
>
<
div
className=
'detail-title'
>
收货信息
</
div
>
<
div
className=
'detail-text'
style=
{
{
display
:
'flex'
}
}
>
{
detail
?.
confirmReceipt
.
file
?
(
<
span
>
图片:
</
span
>
<
div
className=
'detail-text'
style=
{
{
display
:
'flex'
}
}
>
<
div
<
span
>
图片:
</
span
>
className=
'image-file'
<
div
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
,
flexWrap
:
'wrap'
}
}
className=
'image-file'
>
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
,
flexWrap
:
'wrap'
}
}
{
JSON
.
parse
(
detail
?.
confirmReceipt
.
file
).
map
((
v
:
any
,
index
:
number
)
=>
(
>
<
div
style=
{
{
marginRight
:
'10px'
,
marginBottom
:
'10px'
}
}
key=
{
index
}
>
{
JSON
.
parse
(
detail
?.
confirmReceipt
.
file
).
map
((
v
:
any
,
index
:
number
)
=>
(
<
Image
src=
{
v
.
filePath
}
width=
{
50
}
height=
{
50
}
/>
<
div
style=
{
{
marginRight
:
'10px'
,
marginBottom
:
'10px'
}
}
key=
{
index
}
>
</
div
>
<
Image
src=
{
v
}
width=
{
50
}
height=
{
50
}
/>
))
}
</
div
>
))
}
</
div
>
</
div
>
</
div
>
</
div
>
)
:
(
''
)
}
<
div
className=
'detail-text'
>
描述:
{
detail
?.
confirmReceipt
.
reason
}
</
div
>
</
div
>
</
div
>
)
:
(
)
:
(
''
''
...
@@ -132,7 +137,34 @@ const DetailPurchaser: React.FC<PropsType> = (props) => {
...
@@ -132,7 +137,34 @@ const DetailPurchaser: React.FC<PropsType> = (props) => {
)
:
(
)
:
(
''
''
)
}
)
}
{
detail
?.
storeDamageOrder
?
(
<
div
>
<
div
className=
'detail-title'
>
破损信息
</
div
>
{
detail
?.
storeDamageOrder
.
file
?
(
<
div
className=
'detail-text'
style=
{
{
display
:
'flex'
}
}
>
<
span
>
图片:
</
span
>
<
div
className=
'image-file'
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
,
flexWrap
:
'wrap'
}
}
>
{
JSON
.
parse
(
detail
?.
storeDamageOrder
.
file
).
map
((
v
:
any
,
index
:
number
)
=>
(
<
div
style=
{
{
marginRight
:
'10px'
,
marginBottom
:
'10px'
}
}
key=
{
index
}
>
<
Image
src=
{
v
}
width=
{
50
}
height=
{
50
}
/>
</
div
>
))
}
</
div
>
</
div
>
)
:
(
''
)
}
<
div
className=
'detail-text'
>
扣除金额:¥
{
detail
?.
storeDamageOrder
.
modifiedDeposit
.
toLocaleString
()
}
</
div
>
<
div
className=
'detail-text'
>
描述:
{
detail
?.
storeDamageOrder
.
reason
}
</
div
>
</
div
>
)
:
(
''
)
}
<
LogisticsStepModal
<
LogisticsStepModal
open=
{
logisticsStepModalShow
}
open=
{
logisticsStepModalShow
}
onCancel=
{
logisticsStepModalCancel
}
onCancel=
{
logisticsStepModalCancel
}
...
...
src/pages/orderManage/equipmentOrder/index.tsx
浏览文件 @
41cc802b
import
{
useEffect
,
useState
}
from
'react'
;
import
{
useEffect
,
useState
}
from
'react'
;
import
SearchBox
from
'~/components/search-box'
;
import
SearchBox
from
'~/components/search-box'
;
import
{
Button
,
Image
,
Table
}
from
'antd'
;
import
{
Button
,
Image
,
Table
,
Tooltip
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
useNavigate
}
from
'react-router-dom'
;
import
{
useNavigate
}
from
'react-router-dom'
;
import
qs
from
'query-string'
;
import
qs
from
'query-string'
;
...
@@ -13,6 +13,7 @@ import TableItem from '~/components/order/selfTableItem';
...
@@ -13,6 +13,7 @@ import TableItem from '~/components/order/selfTableItem';
import
'./index.scss'
;
import
'./index.scss'
;
import
{
filterObjAttr
}
from
'~/utils'
;
import
{
filterObjAttr
}
from
'~/utils'
;
import
dayjs
from
'dayjs'
;
import
dayjs
from
'dayjs'
;
import
{
CommentOutlined
}
from
'@ant-design/icons'
;
// 表格数据类型
// 表格数据类型
type
TableType
=
InterListType
<
rentOrderListType
>
;
type
TableType
=
InterListType
<
rentOrderListType
>
;
...
@@ -226,7 +227,19 @@ function EquipmentOrderView() {
...
@@ -226,7 +227,19 @@ function EquipmentOrderView() {
<
TableItem
<
TableItem
tr=
{
tr=
{
<
div
>
<
div
>
<
div
>
{
record
.
userName
}
</
div
>
<
div
>
{
record
.
userName
||
record
.
nickname
}
(
{
record
.
userAccountId
}
)
</
div
>
<
div
>
{
record
.
phoneNum
}
</
div
>
{
record
.
userRemark
?
(
<
div
>
<
Tooltip
placement=
'top'
title=
{
record
.
userRemark
}
>
<
Button
icon=
{
<
CommentOutlined
/>
}
></
Button
>
</
Tooltip
>
</
div
>
)
:
(
''
)
}
</
div
>
</
div
>
}
}
/>
/>
...
@@ -236,6 +249,7 @@ function EquipmentOrderView() {
...
@@ -236,6 +249,7 @@ function EquipmentOrderView() {
title
:
'订单状态'
,
title
:
'订单状态'
,
dataIndex
:
'statusCode'
,
dataIndex
:
'statusCode'
,
align
:
'center'
,
align
:
'center'
,
width
:
'10%'
,
render
:
(
text
:
number
)
=>
(
render
:
(
text
:
number
)
=>
(
<
TableItem
tr=
{
tranStatusList
.
find
((
v
)
=>
v
.
value
===
String
(
text
))?.
label
}
/>
<
TableItem
tr=
{
tranStatusList
.
find
((
v
)
=>
v
.
value
===
String
(
text
))?.
label
}
/>
),
),
...
@@ -402,8 +416,8 @@ function EquipmentOrderView() {
...
@@ -402,8 +416,8 @@ function EquipmentOrderView() {
<
ShipmentsOrder
<
ShipmentsOrder
open=
{
deliverVisible
}
open=
{
deliverVisible
}
currentOrderItem=
{
currentOrderItem
}
currentOrderItem=
{
currentOrderItem
}
onCancel=
{
shipmentsOrder
Ok
}
onCancel=
{
shipmentsOrder
Cancel
}
onOk=
{
shipmentsOrder
Cancel
}
onOk=
{
shipmentsOrder
Ok
}
/>
/>
{
/*确认归还*/
}
{
/*确认归还*/
}
<
ConfirmReturn
<
ConfirmReturn
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论