Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
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
lanbaoming
jiedao-app-operator-master
Commits
ae1da1fb
Commit
ae1da1fb
authored
Oct 10, 2022
by
我在何方
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://gitlab.jdshangmen.com/jiedao-app/jiedao-app-operator
into dev
parents
b28e2c51
3c294e0b
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
87 additions
and
49 deletions
+87
-49
index.vue
src/views/bpm/processInstance/index.vue
+2
-2
indexSea.vue
src/views/ecw/box/indexSea.vue
+1
-1
shippingDetail.vue
src/views/ecw/box/shippingDetail.vue
+5
-3
splitOrder.vue
...views/ecw/box/shippingSea/nodePage/cabinet/splitOrder.vue
+17
-12
startPacking.vue
...ews/ecw/box/shippingSea/nodePage/cabinet/startPacking.vue
+7
-4
cusDeclaration.vue
src/views/ecw/box/shippingSea/nodePage/cusDeclaration.vue
+2
-1
preinstall.vue
src/views/ecw/box/shippingSea/nodePage/preinstall.vue
+11
-2
review.vue
src/views/ecw/box/shippingSea/nodePage/review.vue
+11
-7
startUnloading.vue
...ecw/box/shippingSea/nodePage/unloading/startUnloading.vue
+2
-1
utils.js
src/views/ecw/box/shippingSea/utils.js
+4
-3
index.vue
src/views/ecw/node/index.vue
+2
-3
LandingBillDetail.vue
src/views/ecw/order/components/LandingBillDetail.vue
+2
-6
edit.vue
src/views/ecw/order/edit.vue
+15
-3
edit.vue
src/views/ecw/productPrice/edit.vue
+5
-0
index.vue
src/views/ecw/productPrice/index.vue
+1
-1
No files found.
src/views/bpm/processInstance/index.vue
View file @
ae1da1fb
...
...
@@ -38,10 +38,10 @@
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<
!--
<
el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['bpm:process-instance:query']"
>
发起流程
</el-button>
</el-col>
</el-col>
-->
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
...
...
src/views/ecw/box/indexSea.vue
View file @
ae1da1fb
...
...
@@ -163,7 +163,7 @@
</
template
>
<
template
v-if=
"dialogCfg.dialogType === 'notice'"
>
<div
class=
"notice-dialog"
>
<div
class=
"notice-title"
>
您有
一个/多
个待处理出货操作,请尽快前往处理:
</div>
<div
class=
"notice-title"
>
您有
{{
noticeList
.
length
}}
个待处理出货操作,请尽快前往处理:
</div>
<el-table
:data=
"noticeList"
height=
"500px"
border
>
<el-table-column
label=
"自编号"
align=
"center"
prop=
"selfNo"
/>
<el-table-column
label=
"类型"
align=
"center"
>
...
...
src/views/ecw/box/shippingDetail.vue
View file @
ae1da1fb
...
...
@@ -63,7 +63,8 @@
<
template
v-slot=
"{row}"
>
<section>
<div
v-for=
"(item, index) in row.goodsList"
:key=
"index"
>
{{
index
+
1
}}
:
{{
item
.
prodTitleZh
}}
<div>
{{
index
+
1
}}
:
{{
item
.
prodTitleZh
}}
</div>
<div>
{{
index
+
1
}}
:
{{
item
.
prodTitleEn
}}
</div>
</div>
</section>
</
template
>
...
...
@@ -97,6 +98,7 @@ import {
}
from
"
./shippingSea/utils
"
;
import
{
getCabinetPage
}
from
"
@/api/ecw/cabinet
"
;
import
{
getChannelList
}
from
"
@/api/ecw/channel
"
;
import
Decimal
from
"
decimal.js
"
;
/**
* 出货审核详情
...
...
@@ -162,13 +164,13 @@ export default {
calcSum
(
goodsList
)
{
let
sum
=
0
;
goodsList
.
forEach
((
element
)
=>
{
sum
=
sum
+
element
.
num
;
sum
=
Decimal
.
add
(
sum
,
element
.
num
)
;
});
return
sum
;
},
/* 跳转订单详情 */
jumpOrderDetail
(
row
)
{
this
.
$router
.
push
(
"
/order/
associated-order/
"
+
row
.
orderId
);
this
.
$router
.
push
(
"
/order/
detail?orderId=
"
+
row
.
orderId
);
},
},
watch
:
{
...
...
src/views/ecw/box/shippingSea/nodePage/cabinet/splitOrder.vue
View file @
ae1da1fb
...
...
@@ -16,7 +16,7 @@
{{
orderData
.
status
==
99
?
'
异常
'
:
'
正常
'
}}
</el-descriptions-item>
<el-descriptions-item
label=
"送货日期"
>
{{
orderData
.
consigneeVO
?
orderData
.
consigneeVO
.
deliveryDate
:
'
无
'
}}
{{
orderData
.
deliveryDate
}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"4"
>
...
...
@@ -95,9 +95,10 @@
</
template
>
</el-table-column>
<el-table-column
label=
"状态"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{orderData.abnormalState!=0?$t('异常'):$t('正常')}}
<!-- <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status" />
</
template
>
</template>
-->
</el-table-column>
</el-table>
</el-card>
...
...
@@ -223,6 +224,7 @@ import WorkFlow from "@/components/WorkFlow";
import
{
getOrder
}
from
"
@/api/ecw/order
"
;
import
{
serviceMsg
,
toReviewDetail
}
from
"
../../utils
"
;
import
{
createApproval
,
approvalCancel
}
from
"
@/api/ecw/boxSea
"
;
import
Decimal
from
"
decimal.js
"
;
export
default
{
name
:
"
splitOrder
"
,
...
...
@@ -310,7 +312,7 @@ export default {
let
_total
=
0
;
const
{
orderSplitItemBackVOList
=
[]
}
=
this
.
splitData
;
orderSplitItemBackVOList
.
forEach
((
v
)
=>
{
_total
+=
Number
(
v
.
num
);
_total
=
Decimal
.
add
(
_total
,
Number
(
v
.
num
)
);
});
return
_total
;
},
...
...
@@ -380,12 +382,15 @@ export default {
let
leviteV
=
0
;
let
leviteW
=
0
;
this
.
orderData
.
orderItemVOList
.
forEach
((
column
,
index
)
=>
{
orderSum
+=
column
.
num
??
0
;
orderV
+=
column
.
volume
??
0
;
orderW
+=
column
.
weight
??
0
;
leviteSum
+=
column
.
warehouseInInfoVO
?.
cartonsNum
??
0
;
leviteV
+=
column
.
warehouseInInfoVO
?.
volume
??
0
;
leviteW
+=
column
.
warehouseInInfoVO
?.
weight
??
0
;
orderSum
=
Decimal
.
add
(
orderSum
,
column
.
num
??
0
);
orderV
=
Decimal
.
add
(
orderV
,
column
.
volume
??
0
);
orderW
=
Decimal
.
add
(
orderW
,
column
.
weight
??
0
);
leviteSum
=
Decimal
.
add
(
leviteSum
,
column
.
warehouseInInfoVO
?.
cartonsNum
??
0
);
leviteV
+=
Decimal
.
add
(
leviteV
,
column
.
warehouseInInfoVO
?.
volume
??
0
);
leviteW
+=
Decimal
.
add
(
leviteW
,
column
.
warehouseInInfoVO
?.
weight
??
0
);
});
sums
[
1
]
=
"
下单统计:
"
+
...
...
@@ -455,8 +460,8 @@ export default {
if
(
valid
)
{
// 输入箱数大于实装箱数
const
total
=
this
.
totalSplitNum
();
const
canSplitNum
=
this
.
currRow
.
num
-
this
.
currRow
.
installNum
;
const
remain
=
canSplitNum
-
total
;
const
canSplitNum
=
Decimal
.
sub
(
this
.
currRow
.
num
,
this
.
currRow
.
installNum
)
;
const
remain
=
Decimal
.
sub
(
canSplitNum
,
total
)
;
if
(
this
.
shopForm
.
num
>
remain
)
{
this
.
$message
.
error
(
"
放入箱数不能大于总箱数
"
);
return
;
...
...
src/views/ecw/box/shippingSea/nodePage/cabinet/startPacking.vue
View file @
ae1da1fb
...
...
@@ -147,7 +147,7 @@
<el-option
v-for=
"warehouse in $attrs.warehouseList"
:key=
"warehouse.id"
:label=
"warehouse.titleZh"
:value=
"warehouse.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"预
计时间
"
>
{{
preinstallDate
}}
</el-form-item>
<el-form-item
label=
"预
装日期
"
>
{{
preinstallDate
}}
</el-form-item>
<el-form-item
label=
"选择柜型"
prop=
"cabinetId"
>
<el-select
v-model=
"modifyCabinetObj.cabinetId"
placeholder=
"请选择柜型"
>
<el-option
v-for=
"item in cabinetList"
:label=
"item.name"
:value=
"item.id"
:key=
"item.id"
></el-option>
...
...
@@ -262,6 +262,7 @@ import {
}
from
"
../../utils
"
;
import
splitOrder
from
"
./splitOrder.vue
"
;
import
WorkFlow
from
"
@/components/WorkFlow
"
;
import
Decimal
from
"
decimal.js
"
;
/**
* 开始装柜
...
...
@@ -618,8 +619,10 @@ export default {
},
/* 预计时间 */
preinstallDate
()
{
if
(
this
.
shipmentObj
.
yzDate
)
{
return
dayjs
(
this
.
shipmentObj
.
yzDate
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
if
(
this
.
shipmentObj
.
preInstallInfo
.
createTime
)
{
return
dayjs
(
this
.
shipmentObj
.
preInstallInfo
.
createTime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
}
return
null
;
},
...
...
@@ -639,7 +642,7 @@ export default {
this
.
listData
.
forEach
((
item
)
=>
{
const
{
sectionOrderList
=
[]
}
=
item
;
sectionOrderList
.
forEach
((
item
)
=>
{
count
=
count
+
item
.
installNum
;
count
=
Decimal
.
add
(
count
,
item
.
installNum
)
;
});
});
}
...
...
src/views/ecw/box/shippingSea/nodePage/cusDeclaration.vue
View file @
ae1da1fb
...
...
@@ -156,6 +156,7 @@ import {
downloadFile
,
}
from
"
../utils
"
;
import
ImageUpload
from
"
@/components/ImageUpload
"
;
import
Decimal
from
'
decimal.js
'
/**
* 报关
...
...
@@ -403,7 +404,7 @@ export default {
this
.
$set
(
this
.
cusDeclarationObj
,
"
dcVgmWgt
"
,
dcBoxWgtTmp
+
dcGoodsWgtTmp
Decimal
.
add
(
dcBoxWgtTmp
,
dcGoodsWgtTmp
)
);
},
// 审核详情
...
...
src/views/ecw/box/shippingSea/nodePage/preinstall.vue
View file @
ae1da1fb
...
...
@@ -142,6 +142,7 @@
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.volume"
>
{{
getTotlContent
(
scope
.
row
,[
'
volume
'
])
}}
</p>
<p
v-if=
"scope.row.weight"
>
{{
getTotlContent
(
scope
.
row
,[
'
weight
'
])
}}
</p>
<p>
{{
getRatioMax
(
scope
.
row
)
}}
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"报关方式"
align=
"center"
prop=
"customsType"
width=
"120"
>
...
...
@@ -323,6 +324,7 @@ import {
}
from
"
../utils
"
;
import
dayjs
from
"
dayjs
"
;
import
WorkFlow
from
"
@/components/WorkFlow
"
;
import
Decimal
from
"
decimal.js
"
;
/**
* 预装
...
...
@@ -370,7 +372,9 @@ export default {
operatorData
:
{},
// 校验
rules
:
{
noticeUser
:
[{
required
:
true
,
message
:
"
目的地操作员必填
"
,
trigger
:
"
change
"
}],
noticeUser
:
[
{
required
:
true
,
message
:
"
目的地操作员必填
"
,
trigger
:
"
change
"
},
],
},
// 出货信息
shipmentObj
:
this
.
$attrs
.
shipmentObj
,
...
...
@@ -511,7 +515,7 @@ export default {
return
values
.
reduce
((
prev
,
curr
)
=>
{
const
value
=
Number
(
curr
);
if
(
!
isNaN
(
value
))
{
return
prev
+
curr
;
return
Decimal
.
add
(
prev
,
curr
)
;
}
else
{
return
prev
;
}
...
...
@@ -638,6 +642,11 @@ export default {
toReviewDetail
.
apply
(
this
,
[
shipmentObj
[
currNode
.
voName
].
bpmProcessId
]);
this
.
$emit
(
"
closeDialog
"
);
},
getRatioMax
(
row
)
{
let
volume
=
row
.
volume
??
0
;
let
weight
=
row
.
weight
??
0
;
return
Decimal
.
div
(
volume
,
weight
).
toFixed
(
2
);
},
},
};
</
script
>
...
...
src/views/ecw/box/shippingSea/nodePage/review.vue
View file @
ae1da1fb
...
...
@@ -33,16 +33,20 @@ export default {
},
created
()
{
const
{
currNode
,
shipmentObj
}
=
this
.
$attrs
;
const
{
preInstallBackInfo
,
cabinetUnloadBackApprovalInfo
}
=
shipmentObj
;
if
(
currNode
.
type
===
"
preinstall
"
)
{
this
.
isReview
=
shipmentObj
[
"
preInstallBackInfo
"
]
?
true
:
false
;
this
.
bpmProcessId
=
shipmentObj
[
"
preInstallBackInfo
"
]?.
bpmProcessId
;
this
.
isReview
=
preInstallBackInfo
?
true
:
false
;
if
(
preInstallBackInfo
&&
preInstallBackInfo
.
approvalStatus
!==
1
)
{
this
.
isReview
=
false
;
}
this
.
bpmProcessId
=
preInstallBackInfo
?.
bpmProcessId
;
}
if
(
currNode
.
type
===
"
unloading
"
)
{
this
.
isReview
=
shipmentObj
[
"
cabinetUnloadBackApprovalInfo
"
]
?
true
:
false
;
this
.
bpmProcessId
=
shipmentObj
[
"
cabinetUnloadBackApprovalInfo
"
]
?.
bpmProcessId
;
this
.
isReview
=
cabinetUnloadBackApprovalInfo
?
true
:
false
;
if
(
cabinetUnloadBackApprovalInfo
&&
cabinetUnloadBackApprovalInfo
.
approvalStatus
!==
1
)
{
this
.
isReview
=
false
;
}
this
.
bpmProcessId
=
cabinetUnloadBackApprovalInfo
?.
bpmProcessId
;
}
},
methods
:
{
...
...
src/views/ecw/box/shippingSea/nodePage/unloading/startUnloading.vue
View file @
ae1da1fb
...
...
@@ -125,6 +125,7 @@ import {
}
from
"
@/api/ecw/boxSea
"
;
import
{
serviceMsg
,
getTotlContent
,
toReviewDetail
}
from
"
../../utils
"
;
import
WorkFlow
from
"
@/components/WorkFlow
"
;
import
Decimal
from
"
decimal.js
"
;
/**
* 开始卸柜
...
...
@@ -328,7 +329,7 @@ export default {
let
count
=
0
;
if
(
this
.
pageData
.
sectionOrderList
)
{
this
.
pageData
.
sectionOrderList
.
forEach
((
item
)
=>
{
count
=
count
+
item
.
unloadNum
;
count
=
Decimal
.
add
(
count
,
item
.
unloadNum
)
;
});
}
return
count
;
...
...
src/views/ecw/box/shippingSea/utils.js
View file @
ae1da1fb
import
dayjs
from
"
dayjs
"
;
import
*
as
_BOX
from
"
@/api/ecw/box
"
;
import
FileSaver
from
"
file-saver
"
;
import
Decimal
from
"
decimal.js
"
;
/**
* 节点状态值
...
...
@@ -1436,13 +1437,13 @@ function sumStatistics(val) {
const { secStatistics } = item;
if (secStatistics) {
if (!Number.isNaN(Number(secStatistics.num))) {
count.num =
count.num + Number(secStatistics.num
);
count.num =
Decimal.add(count.num, Number(secStatistics.num)
);
}
if (!Number.isNaN(Number(secStatistics.volume))) {
count.volume =
count.volume + Number(secStatistics.volume
);
count.volume =
Decimal.add(count.volume, Number(secStatistics.volume)
);
}
if (!Number.isNaN(Number(secStatistics.weight))) {
count.weight =
count.weight + Number(secStatistics.weight
);
count.weight =
Decimal.add(count.weight, Number(secStatistics.weight)
);
}
}
});
...
...
src/views/ecw/node/index.vue
View file @
ae1da1fb
...
...
@@ -210,7 +210,7 @@ export default {
Editor
,
},
data
()
{
var
areaCheck
=
(
rule
,
value
,
callback
)
=>
{
const
areaCheck
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
this
.
form
.
zhou
)
{
callback
(
new
Error
(
'
请选择大洲
'
));
}
else
if
(
!
this
.
form
.
guojia
){
...
...
@@ -221,7 +221,6 @@ export default {
callback
();
}
};
return
{
// 遮罩层
loading
:
true
,
...
...
src/views/ecw/order/components/LandingBillDetail.vue
View file @
ae1da1fb
<!--拆单审核中的申请信息部分-->
<
template
>
<div
v-if=
"order"
>
<el-descriptions
:column=
"4"
v-if=
"order"
:colon=
"
fals
e"
>
<el-descriptions
:column=
"4"
v-if=
"order"
:colon=
"
tru
e"
>
<el-descriptions-item
:label=
"$t('订单号')"
>
{{
order
.
orderNo
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('运输方式')"
>
<dict-tag
class=
"mr-10"
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"order.transportId"
/>
...
...
@@ -19,12 +19,8 @@
<el-descriptions-item
:label=
"$t('目的仓')"
:span=
"2"
>
{{
order
.
logisticsInfoDto
.
destAddressZh
}}
</el-descriptions-item>
<!-- 提单审核 -->
<el-descriptions-item>
<el-button
type=
"primary"
@
click=
"ShowLandingBill=true"
>
查看提单
</el-button>
</el-descriptions-item>
</el-descriptions>
<el-button
type=
"primary"
@
click=
"ShowLandingBill=true"
>
查看提单
</el-button>
<el-dialog
title=
"查看提单"
:visible.sync=
"ShowLandingBill"
>
<div
style=
"text-align:center; width: 600px; margin: auto"
v-html=
"billContent"
/>
...
...
src/views/ecw/order/edit.vue
View file @
ae1da1fb
...
...
@@ -313,7 +313,7 @@
</el-form-item>
</div>
<div
v-if=
"homeDeliveryService && form.harvestMethod == 2"
>
<el-form-item
:label=
"$t('收货地区')"
>
<el-form-item
:label=
"$t('收货地区')"
prop=
"country"
>
<area-selector
:country=
"form.consigneeVO ? form.consigneeVO.country : undefined"
:province=
"form.consigneeVO ? form.consigneeVO.province : undefined"
...
...
@@ -517,7 +517,8 @@ export default {
type
:[],
isExternalWarehouse
:
false
,
externalWarehouseDtoList
:[{}],
orderItemVOList
:[]
orderItemVOList
:[],
drawee
:
2
},
ccIdArr
:
[],
// 表单校验
...
...
@@ -542,7 +543,8 @@ export default {
lineId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择路线
'
)}],
channelId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择出货渠道
'
)}],
deliveryDate
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择送货日期
'
)}],
consigneeAddress
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请填写详细地址
'
)}]
consigneeAddress
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请填写详细地址
'
)}],
country
:
[{
required
:
true
,
message
:
this
.
$t
(
'
收货地区填写不完整
'
)}]
},
labelStyle
:
'
width:120px
'
,
showBatchImportDialog
:
false
,
// 显示批量导入弹窗
...
...
@@ -912,6 +914,16 @@ export default {
return
this
.
$showFormValidateErrors
(
errors
)
}
if
(
this
.
form
.
harvestMethod
==
2
){
if
(
!
this
.
form
.
country
||
!
this
.
form
.
province
||
!
this
.
form
.
city
){
return
this
.
$notify
({
title
:
'
提示
'
,
message
:
"
收货地区填写不完整
"
,
type
:
'
warning
'
});
}
}
this
.
form
.
orderItemVOList
.
map
(
item
=>
{
item
.
prodAttrIds
=
item
.
prodAttrArr
.
join
(
'
,
'
)
})
...
...
src/views/ecw/productPrice/edit.vue
View file @
ae1da1fb
...
...
@@ -270,6 +270,11 @@ export default {
/* getProductType(this.product.typeId).then(res => {
this.productType = res.data
}
) */
this
.
$set
(
this
.
form
,
'
needBook
'
,
this
.
product
.
needBook
)
this
.
$set
(
this
.
form
,
'
square
'
,
this
.
product
.
square
)
this
.
$set
(
this
.
form
,
'
dayLimit
'
,
this
.
product
.
dayLimit
)
this
.
$set
(
this
.
form
,
'
containerLocation
'
,
this
.
product
.
containerLocation
)
}
,
form
(
val
)
{
if
(
!
val
)
return
...
...
src/views/ecw/productPrice/index.vue
View file @
ae1da1fb
...
...
@@ -78,7 +78,7 @@
<el-button
v-if=
"!$route.query.product_id"
type=
"primary"
plain
icon=
"el-icon-setting"
size=
"mini"
@
click=
"batchOff"
:disabled=
"multiple"
>
{{
$t
(
'
批量下架
'
)
}}
</el-button>
<!--指定商品-->
<el-button
v-if=
"$route.query.product_id"
type=
"primary"
plain
icon=
"el-icon-setting"
size=
"mini"
@
click=
"batchSetSingleProductPrice"
>
{{
$t
(
'
批量设置单个商品的路线
路线
'
)
}}
</el-button>
<el-button
v-if=
"$route.query.product_id"
type=
"primary"
plain
icon=
"el-icon-setting"
size=
"mini"
@
click=
"batchSetSingleProductPrice"
>
{{
$t
(
'
批量设置单个商品的路线
'
)
}}
</el-button>
</el-col>
<!--
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
...
...
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