Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
merchant-manage-ui
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ui
merchant-manage-ui
Commits
06cdb868
Commit
06cdb868
authored
May 12, 2021
by
FE-安焕焕
👣
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改逻辑
parent
31511129
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
381 additions
and
84 deletions
+381
-84
config.js
config/config.js
+6
-0
index.jsx
src/pages/AfterSaleManage/PassAudit/index.jsx
+167
-0
data.js
src/pages/AfterSaleManage/Pending/data.js
+0
-4
index.jsx
src/pages/AfterSaleManage/Pending/index.jsx
+18
-74
auditModal.jsx
src/pages/AfterSaleManage/components/auditModal.jsx
+8
-2
detailTable.jsx
src/pages/AfterSaleManage/components/detailTable.jsx
+0
-0
proofsModal.jsx
src/pages/AfterSaleManage/components/proofsModal.jsx
+1
-1
rejectModal.jsx
src/pages/AfterSaleManage/components/rejectModal.jsx
+59
-0
data.js
src/pages/AfterSaleManage/data.js
+95
-0
services.js
src/pages/AfterSaleManage/services.js
+22
-2
styles.less
src/pages/AfterSaleManage/styles.less
+0
-0
LogisticsCom.jsx
...erManage/pendingDeliveryOrder/components/LogisticsCom.jsx
+5
-1
No files found.
config/config.js
View file @
06cdb868
...
@@ -128,6 +128,12 @@ export default {
...
@@ -128,6 +128,12 @@ export default {
icon
:
'
smile
'
,
icon
:
'
smile
'
,
component
:
'
./AfterSaleManage/Pending
'
,
component
:
'
./AfterSaleManage/Pending
'
,
},
},
{
path
:
'
/passAudit
'
,
name
:
'
passAudit
'
,
icon
:
'
smile
'
,
component
:
'
./AfterSaleManage/PassAudit
'
,
},
{
{
component
:
'
./404
'
,
component
:
'
./404
'
,
},
},
...
...
src/pages/AfterSaleManage/PassAudit/index.jsx
0 → 100644
View file @
06cdb868
import
React
,
{
useState
,
useRef
}
from
'
react
'
;
import
{
Button
,
notification
,
Popconfirm
}
from
'
antd
'
;
import
ProTable
from
'
@ant-design/pro-table
'
;
import
{
PageHeaderWrapper
}
from
'
@ant-design/pro-layout
'
;
import
{
searchList
,
shopCheck
,
jdInfo
,
trackInfo
}
from
'
../services
'
;
import
{
columnPassAudit
}
from
'
../data
'
;
import
RejectModal
from
'
../components/rejectModal
'
;
import
DetailTable
from
'
../components/detailTable
'
;
import
ProofsModal
from
'
../components/proofsModal
'
;
import
LogisticsCom
from
'
../../orderManage/pendingDeliveryOrder/components/LogisticsCom
'
;
export
default
()
=>
{
const
table
=
useRef
();
const
[
visible
,
setVisible
]
=
useState
(
false
);
const
[
detailVisible
,
setDetailVisible
]
=
useState
(
false
);
const
[
detailInfo
,
setDetailInfo
]
=
useState
([]);
const
[
proofsVisible
,
setProofsVisible
]
=
useState
(
false
);
const
[
proofsData
,
setProofsData
]
=
useState
([]);
const
[
serviceNoInfo
,
setServiceNoInfo
]
=
useState
({});
const
[
LogisticsComList
,
setLogisticsComList
]
=
useState
({});
const
[
LogisticsComModalVisible
,
handleComModalVisible
]
=
useState
(
false
);
const
viewDetail
=
async
({
serviceNo
})
=>
{
const
data
=
await
jdInfo
({
serviceNo
});
setDetailInfo
(
data
?.
skuQuantity
||
[]);
setDetailVisible
(
true
);
};
const
closeModal
=
isReload
=>
{
if
(
isReload
)
{
// eslint-disable-next-line no-unused-expressions
table
.
current
?.
reload
?.();
}
setVisible
(
false
);
setDetailVisible
(
false
);
setProofsVisible
(
false
);
handleComModalVisible
(
false
);
};
const
reject
=
async
({
serviceNo
})
=>
{
setServiceNoInfo
(
serviceNo
);
setVisible
(
true
);
};
const
viewProofs
=
proofs
=>
{
if
(
!
proofs
)
{
notification
.
warning
({
message
:
'
该订单没有凭证
'
});
return
;
}
setProofsData
(
proofs
.
split
(
'
,
'
));
setProofsVisible
(
true
);
};
const
refund
=
async
({
serviceNo
})
=>
{
const
data
=
await
shopCheck
({
serviceNo
,
auditResult
:
1
,
});
if
(
data
.
businessCode
===
'
0000
'
)
{
notification
.
success
({
message
:
'
操作成功
'
});
closeModal
(
true
);
}
};
const
handleCom
=
async
({
companyCode
,
logisticsNo
})
=>
{
const
tempObj
=
{
expressCompanyCode
:
companyCode
,
expressCompanyName
:
companyCode
,
deliveryNo
:
logisticsNo
,
detailList
:
[],
key
:
Date
.
now
(),
};
const
data
=
await
trackInfo
({
companyCode
,
logisticsNo
});
if
(
!
data
)
{
notification
.
info
({
message
:
'
暂无物流信息
'
});
return
;
}
tempObj
.
expressCompanyName
=
data
?.
logisticsName
||
tempObj
.
expressCompanyName
;
tempObj
.
deliveryNo
=
data
?.
logisticsBillNo
||
tempObj
.
deliveryNo
;
if
(
data
.
logisticsList
?.
length
)
{
data
.
logisticsList
.
forEach
(
v
=>
{
tempObj
.
detailList
=
[...
tempObj
.
detailList
,
...
v
.
detailList
];
});
}
handleComModalVisible
(
true
);
setLogisticsComList
(
tempObj
);
};
const
columns
=
[
...
columnPassAudit
,
{
title
:
'
售后凭证
'
,
dataIndex
:
'
proofs
'
,
hideInSearch
:
true
,
order
:
4
,
render
:
proofs
=>
<
a
onClick=
{
()
=>
viewProofs
(
proofs
)
}
>
查看凭证
</
a
>,
},
{
title
:
'
操作
'
,
hideInSearch
:
true
,
width
:
450
,
render
:
(
_
,
r
)
=>
[
<
Popconfirm
title=
"确定允许退款?"
onConfirm=
{
()
=>
refund
(
r
)
}
okText=
"确认"
cancelText=
"取消"
disabled=
{
!
r
.
showRefund
||
!
r
.
showRefunded
}
>
<
Button
key=
"link1"
className=
"mr10"
type=
"primary"
disabled=
{
!
r
.
showRefund
||
!
r
.
showRefunded
}
>
{
r
.
showRefunded
?
'
已退款
'
:
'
允许退款
'
}
</
Button
>
</
Popconfirm
>,
<
Button
key=
"link"
onClick=
{
()
=>
reject
(
r
)
}
type=
"primary"
className=
"mr10"
disabled=
{
!
r
.
showRefuse
}
>
驳回
</
Button
>,
<
Button
key=
"link"
onClick=
{
()
=>
viewDetail
(
r
)
}
type=
"primary"
className=
"mr10"
>
订单详情
</
Button
>,
<
Button
key=
"link"
onClick=
{
()
=>
handleCom
(
r
)
}
type=
"primary"
className=
"mr10"
disabled=
{
!
r
.
showLogistics
}
>
查看物流
</
Button
>,
],
},
];
return
(
<
PageHeaderWrapper
>
<
ProTable
columns=
{
columns
}
request=
{
params
=>
searchList
(
params
,
2
)
}
rowKey=
"orderNo"
pagination=
{
{
pagesSize
:
20
,
}
}
bordered
actionRef=
{
table
}
scroll=
{
{
x
:
'
100%
'
}
}
search=
{
{
collapsed
:
false
,
}
}
/>
<
RejectModal
visible=
{
visible
}
onCancel=
{
closeModal
}
serviceNo=
{
serviceNoInfo
}
/>
<
DetailTable
visible=
{
detailVisible
}
onCancel=
{
closeModal
}
dataSource=
{
detailInfo
}
/>
<
ProofsModal
visible=
{
proofsVisible
}
onCancel=
{
closeModal
}
data=
{
proofsData
}
/>
<
LogisticsCom
onSubmit=
{
closeModal
}
onCancel=
{
closeModal
}
modalVisible=
{
LogisticsComModalVisible
}
value=
{
LogisticsComList
}
key=
{
LogisticsComList
.
key
}
/>
</
PageHeaderWrapper
>
);
};
src/pages/AfterSaleManage/Pending/data.js
deleted
100644 → 0
View file @
31511129
export
const
appealType
=
{
1
:
'
已申诉
'
,
0
:
'
未申诉
'
,
};
src/pages/AfterSaleManage/Pending/index.jsx
View file @
06cdb868
import
React
,
{
useState
,
useRef
}
from
'
react
'
;
import
React
,
{
useState
,
useRef
}
from
'
react
'
;
import
{
Button
,
notificati
on
}
from
'
antd
'
;
import
{
notification
,
Butt
on
}
from
'
antd
'
;
import
ProTable
from
'
@ant-design/pro-table
'
;
import
ProTable
from
'
@ant-design/pro-table
'
;
import
{
PageHeaderWrapper
}
from
'
@ant-design/pro-layout
'
;
import
{
PageHeaderWrapper
}
from
'
@ant-design/pro-layout
'
;
import
{
searchList
,
auditInfoApi
,
jdInfo
}
from
'
./services
'
;
import
{
searchList
,
auditInfoApi
,
jdInfo
}
from
'
.
.
/services
'
;
import
{
appealType
}
from
'
./data
'
;
import
{
columnSticData
,
appealType
}
from
'
.
./data
'
;
import
AuditModal
from
'
./auditModal
'
;
import
AuditModal
from
'
.
./components
/auditModal
'
;
import
DetailTable
from
'
./detailTable
'
;
import
DetailTable
from
'
.
./components
/detailTable
'
;
import
ProofsModal
from
'
./proofsModal
'
;
import
ProofsModal
from
'
.
./components
/proofsModal
'
;
// 售后状态和售后类型,售后原因枚举,
export
default
()
=>
{
export
default
()
=>
{
const
table
=
useRef
();
const
table
=
useRef
();
const
[
visible
,
setVisible
]
=
useState
(
false
);
const
[
visible
,
setVisible
]
=
useState
(
false
);
...
@@ -44,84 +43,29 @@ export default () => {
...
@@ -44,84 +43,29 @@ export default () => {
setProofsData
(
proofs
.
split
(
'
,
'
));
setProofsData
(
proofs
.
split
(
'
,
'
));
setProofsVisible
(
true
);
setProofsVisible
(
true
);
};
};
const
viewAppeal
=
r
=>
{
console
.
log
(
r
);
};
const
columns
=
[
const
columns
=
[
{
...
columnSticData
,
title
:
'
订单ID
'
,
dataIndex
:
'
orderNo
'
,
hideInSearch
:
true
,
},
{
title
:
'
售后单ID
'
,
dataIndex
:
'
serviceNo
'
,
hideInSearch
:
true
,
},
{
title
:
'
收货人姓名
'
,
dataIndex
:
'
receiverName
'
,
},
{
title
:
'
收货人手机号
'
,
dataIndex
:
'
receiverPhone
'
,
},
{
title
:
'
收货人地址
'
,
dataIndex
:
'
receiveAddress
'
,
hideInSearch
:
true
,
},
{
title
:
'
售后类型
'
,
dataIndex
:
'
serviceType
'
,
hideInSearch
:
true
,
valueEnum
:
{
1
:
'
退款不退货
'
,
2
:
'
退货退款
'
,
},
},
{
title
:
'
售后原因
'
,
dataIndex
:
'
serviceReason
'
,
hideInSearch
:
true
,
},
{
{
title
:
'
售后凭证
'
,
title
:
'
售后凭证
'
,
dataIndex
:
'
proofs
'
,
dataIndex
:
'
proofs
'
,
hideInSearch
:
true
,
hideInSearch
:
true
,
order
:
4
,
render
:
proofs
=>
<
a
onClick=
{
()
=>
viewProofs
(
proofs
)
}
>
查看凭证
</
a
>,
render
:
proofs
=>
<
a
onClick=
{
()
=>
viewProofs
(
proofs
)
}
>
查看凭证
</
a
>,
},
},
{
title
:
'
售后发生时间
'
,
dataIndex
:
'
serviceTime
'
,
hideInSearch
:
true
,
},
{
title
:
'
超时时间
'
,
dataIndex
:
'
overTime
'
,
hideInSearch
:
true
,
},
{
title
:
'
是否催办
'
,
dataIndex
:
'
reminderFlag
'
,
hideInSearch
:
true
,
valueEnum
:
{
1
:
'
是
'
,
2
:
'
否
'
,
},
},
{
title
:
'
是否同意售后
'
,
dataIndex
:
'
isAgree
'
,
hideInSearch
:
true
,
},
{
title
:
'
拒绝原因
'
,
dataIndex
:
'
refuseReason
'
,
hideInSearch
:
true
,
},
{
{
title
:
'
售后申诉
'
,
title
:
'
售后申诉
'
,
dataIndex
:
'
appealFlag
'
,
dataIndex
:
'
appealFlag
'
,
valueEnum
:
appealType
,
valueEnum
:
appealType
,
hideInSearch
:
true
,
hideInSearch
:
true
,
render
:
(
appealFlag
,
r
)
=>
{
if
(
appealFlag
===
1
)
{
return
<
a
onClick=
{
()
=>
viewAppeal
(
r
)
}
>
{
appealFlag
}
</
a
>;
}
return
<
div
>
未申诉
</
div
>;
},
},
},
{
{
title
:
'
操作
'
,
title
:
'
操作
'
,
...
@@ -141,7 +85,7 @@ export default () => {
...
@@ -141,7 +85,7 @@ export default () => {
<
PageHeaderWrapper
>
<
PageHeaderWrapper
>
<
ProTable
<
ProTable
columns=
{
columns
}
columns=
{
columns
}
request=
{
searchList
}
request=
{
params
=>
searchList
(
params
,
1
)
}
rowKey=
"orderNo"
rowKey=
"orderNo"
pagination=
{
{
pagination=
{
{
pagesSize
:
20
,
pagesSize
:
20
,
...
...
src/pages/AfterSaleManage/
Pending
/auditModal.jsx
→
src/pages/AfterSaleManage/
components
/auditModal.jsx
View file @
06cdb868
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
{
Modal
,
Form
,
Input
,
TreeSelect
,
notification
}
from
'
antd
'
;
import
{
Modal
,
Form
,
Input
,
TreeSelect
,
notification
}
from
'
antd
'
;
import
{
shopAudit
}
from
'
./services
'
;
import
{
shopAudit
}
from
'
.
.
/services
'
;
const
FormItem
=
Form
.
Item
;
const
FormItem
=
Form
.
Item
;
const
{
TextArea
}
=
Input
;
const
{
TextArea
}
=
Input
;
...
@@ -130,7 +130,13 @@ const AuditModal = props => {
...
@@ -130,7 +130,13 @@ const AuditModal = props => {
message
:
'
请填写拒绝原因!
'
,
message
:
'
请填写拒绝原因!
'
,
},
},
],
],
})(<
TextArea
placeholder=
"请填写拒绝原因"
allowClear
/>)
}
})(
<
TextArea
placeholder=
"请填写拒绝原因"
allowClear
autoSize=
{
{
minRows
:
3
,
maxRows
:
6
}
}
/>,
)
}
</
FormItem
>
</
FormItem
>
)
}
)
}
</
Form
>
</
Form
>
...
...
src/pages/AfterSaleManage/
Pending
/detailTable.jsx
→
src/pages/AfterSaleManage/
components
/detailTable.jsx
View file @
06cdb868
File moved
src/pages/AfterSaleManage/
Pending
/proofsModal.jsx
→
src/pages/AfterSaleManage/
components
/proofsModal.jsx
View file @
06cdb868
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
{
Modal
}
from
'
antd
'
;
import
{
Modal
}
from
'
antd
'
;
import
style
from
'
./styles.less
'
;
import
style
from
'
.
.
/styles.less
'
;
export
default
props
=>
{
export
default
props
=>
{
const
{
visible
,
onCancel
,
data
}
=
props
;
const
{
visible
,
onCancel
,
data
}
=
props
;
...
...
src/pages/AfterSaleManage/components/rejectModal.jsx
0 → 100644
View file @
06cdb868
import
React
from
'
react
'
;
import
{
Modal
,
Form
,
Input
,
notification
}
from
'
antd
'
;
import
{
shopCheck
}
from
'
../services
'
;
const
FormItem
=
Form
.
Item
;
const
{
TextArea
}
=
Input
;
const
RejectModal
=
props
=>
{
const
{
visible
,
onCancel
,
form
:
{
getFieldDecorator
,
validateFields
,
resetFields
},
serviceNo
=
null
,
}
=
props
;
const
handleCancel
=
isSuccess
=>
{
resetFields
();
onCancel
(
isSuccess
);
};
const
handleOk
=
()
=>
{
validateFields
(
async
(
error
,
fieldsValue
)
=>
{
if
(
!
error
)
{
const
data
=
await
shopCheck
({
...
fieldsValue
,
serviceNo
,
auditResult
:
2
,
});
if
(
data
.
code
===
'
0000
'
)
{
notification
.
success
({
message
:
'
操作成功
'
});
handleCancel
(
true
);
}
}
});
};
const
layout
=
{
labelCol
:
{
span
:
6
},
wrapperCol
:
{
span
:
16
},
};
return
(
<
Modal
title=
"驳回"
visible=
{
visible
}
onOk=
{
()
=>
handleOk
()
}
onCancel=
{
()
=>
handleCancel
()
}
>
<
Form
{
...
layout
}
name=
"formData"
>
<
FormItem
label=
"原因"
>
{
getFieldDecorator
(
'
refuseDesc
'
,
{
rules
:
[
{
required
:
true
,
message
:
'
请填写原因!
'
,
},
],
})(
<
TextArea
placeholder=
"请填写原因"
allowClear
autoSize=
{
{
minRows
:
3
,
maxRows
:
6
}
}
/>,
)
}
</
FormItem
>
</
Form
>
</
Modal
>
);
};
export
default
Form
.
create
()(
RejectModal
);
src/pages/AfterSaleManage/data.js
0 → 100644
View file @
06cdb868
export
const
appealType
=
{
1
:
'
已申诉
'
,
0
:
'
未申诉
'
,
};
export
const
columnSticData
=
[
{
title
:
'
订单ID
'
,
dataIndex
:
'
orderNo
'
,
hideInSearch
:
true
,
},
{
title
:
'
售后单ID
'
,
dataIndex
:
'
serviceNo
'
,
hideInSearch
:
true
,
},
{
title
:
'
收货人姓名
'
,
dataIndex
:
'
receiverName
'
,
},
{
title
:
'
收货人手机号
'
,
dataIndex
:
'
receiverPhone
'
,
},
{
title
:
'
收货人地址
'
,
dataIndex
:
'
receiveAddress
'
,
hideInSearch
:
true
,
},
{
title
:
'
售后类型
'
,
dataIndex
:
'
serviceType
'
,
hideInSearch
:
true
,
valueEnum
:
{
1
:
'
退款不退货
'
,
2
:
'
退货退款
'
,
},
},
{
title
:
'
售后原因
'
,
dataIndex
:
'
serviceReason
'
,
hideInSearch
:
true
,
},
{
title
:
'
售后发生时间
'
,
dataIndex
:
'
serviceTime
'
,
hideInSearch
:
true
,
},
{
title
:
'
超时时间
'
,
dataIndex
:
'
overTime
'
,
hideInSearch
:
true
,
},
{
title
:
'
是否催办
'
,
dataIndex
:
'
reminderFlag
'
,
hideInSearch
:
true
,
valueEnum
:
{
1
:
'
是
'
,
2
:
'
否
'
,
},
},
{
title
:
'
是否同意售后
'
,
dataIndex
:
'
isAgree
'
,
hideInSearch
:
true
,
},
{
title
:
'
拒绝原因
'
,
dataIndex
:
'
refuseReason
'
,
hideInSearch
:
true
,
},
];
export
const
columnPassAudit
=
[
...
columnSticData
,
{
title
:
'
商家退货地址
'
,
dataIndex
:
'
merchantAddress
'
,
hideInSearch
:
true
,
},
{
title
:
'
退回物流
'
,
dataIndex
:
'
expressCompanyName
'
,
hideInSearch
:
true
,
},
{
title
:
'
退回物流单号
'
,
dataIndex
:
'
deliveryNo
'
,
hideInSearch
:
true
,
},
{
title
:
'
售后状态
'
,
dataIndex
:
'
serviceStatus
'
,
hideInSearch
:
true
,
},
];
src/pages/AfterSaleManage/
Pending/
services.js
→
src/pages/AfterSaleManage/services.js
View file @
06cdb868
import
request
from
'
@/utils/request
'
;
import
request
from
'
@/utils/request
'
;
import
config
from
'
../../../
../
config/env.config
'
;
import
config
from
'
../../../config/env.config
'
;
let
{
kdspApi
}
=
config
;
let
{
kdspApi
}
=
config
;
kdspApi
=
'
http://yapi.quantgroups.com/mock/351
'
;
kdspApi
=
'
http://yapi.quantgroups.com/mock/351
'
;
// 分页查询所有数据
// 分页查询所有数据
export
async
function
searchList
(
params
)
{
export
async
function
searchList
(
params
,
queryStatus
)
{
const
param
=
{
const
param
=
{
...
params
,
...
params
,
pageNo
:
params
.
current
,
pageNo
:
params
.
current
,
queryStatus
,
};
};
const
data
=
await
request
.
post
(
'
/api/kdsp/op/afs/shop/list
'
,
{
const
data
=
await
request
.
post
(
'
/api/kdsp/op/afs/shop/list
'
,
{
data
:
param
,
data
:
param
,
...
@@ -48,3 +49,22 @@ export async function auditInfoApi(serviceNo) {
...
@@ -48,3 +49,22 @@ export async function auditInfoApi(serviceNo) {
prefix
:
kdspApi
,
prefix
:
kdspApi
,
});
});
}
}
// 审核核检
export
async
function
shopCheck
(
params
)
{
return
request
.
post
(
'
/api/kdsp/op/afs/shop/check
'
,
{
params
,
prefix
:
kdspApi
,
});
}
// 查询物流信息
export
async
function
trackInfo
(
params
)
{
const
data
=
await
request
.
get
(
'
/api/kdsp/logistics/kd100/track-list
'
,
{
params
,
prefix
:
kdspApi
,
});
if
(
data
.
businessCode
===
'
0000
'
)
{
return
data
.
data
;
}
return
{};
}
src/pages/AfterSaleManage/
Pending/
styles.less
→
src/pages/AfterSaleManage/styles.less
View file @
06cdb868
File moved
src/pages/orderManage/pendingDeliveryOrder/components/LogisticsCom.jsx
View file @
06cdb868
...
@@ -13,7 +13,11 @@ const LogisticsCom = props => {
...
@@ -13,7 +13,11 @@ const LogisticsCom = props => {
return
(
return
(
<
Modal
<
Modal
destroyOnClose
destroyOnClose
title=
{
`${result?.expressCompanyName}-${result?.deliveryNo}`
}
title=
{
`${
result?.expressCompanyName
? `
$
{
result
?.
expressCompanyName
}
-
$
{
result
?.
deliveryNo
}
`
: '物流信息'
}`
}
visible=
{
modalVisible
}
visible=
{
modalVisible
}
onCancel=
{
()
=>
onCancel
()
}
onCancel=
{
()
=>
onCancel
()
}
onOk=
{
()
=>
onCancel
()
}
onOk=
{
()
=>
onCancel
()
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment