Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
U
uni-pdtravel
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
panyongping
uni-pdtravel
Commits
5525234a
Commit
5525234a
authored
Dec 21, 2023
by
潘永坪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
场次票bug处理
parent
5273d112
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
141 additions
and
49 deletions
+141
-49
App.vue
App.vue
+1
-1
pages.json
pages.json
+25
-20
distributionCombiChoose.vue
...ation/distributionCombiChoose/distributionCombiChoose.vue
+15
-0
orderPayment.vue
pages/payment/orderPayment/orderPayment.vue
+2
-2
combinationProduct.vue
pages/scenic/combinationProduct/combinationProduct.vue
+17
-2
scenicCombiOrder.vue
pages/scenic/scenicCombiOrder/scenicCombiOrder.vue
+9
-18
calendar.vue
pages/scenic/scenicComponents/calendar.vue
+0
-1
scenicOrder.vue
pages/scenic/scenicOrder/scenicOrder.vue
+10
-5
scenicSingleOrder - 副本.vue
pages/scenic/scenicSingleOrder/scenicSingleOrder - 副本.vue
+62
-0
No files found.
App.vue
View file @
5525234a
...
@@ -127,7 +127,7 @@ export default {
...
@@ -127,7 +127,7 @@ export default {
}
}
//大按钮
//大按钮
.big-btn
{
.big-btn
{
background
:
linear-gradient
(
132deg
,
#ED400C
0
%
,
#FB862C
100
%
)
;
background
:
#3688FF
;
display
:
inline-block
;
display
:
inline-block
;
color
:
#FFFFFF
;
color
:
#FFFFFF
;
width
:
240rpx
;
width
:
240rpx
;
...
...
pages.json
View file @
5525234a
...
@@ -331,15 +331,15 @@
...
@@ -331,15 +331,15 @@
"navigationBarTextStyle"
:
"black"
"navigationBarTextStyle"
:
"black"
}
}
},
},
{
//
{
"path"
:
"vlogface/vlogface"
,
//
"path"
:
"vlogface/vlogface"
,
"style"
:
{
//
"style"
:
{
"navigationBarTitleText"
:
"扫脸获取视频"
,
//
"navigationBarTitleText"
:
"扫脸获取视频"
,
"enablePullDownRefresh"
:
false
,
//
"enablePullDownRefresh"
:
false
,
"navigationBarBackgroundColor"
:
"#ffffff"
,
//
"navigationBarBackgroundColor"
:
"#ffffff"
,
"navigationBarTextStyle"
:
"black"
//
"navigationBarTextStyle"
:
"black"
}
//
}
},
//
},
{
{
"path"
:
"scenicList/scenicList"
,
"path"
:
"scenicList/scenicList"
,
"style"
:
{
"style"
:
{
...
@@ -461,42 +461,47 @@
...
@@ -461,42 +461,47 @@
"navigationStyle"
:
"custom"
"navigationStyle"
:
"custom"
}
}
},
},
//
{
//
"path"
:
"getPortrait"
,
//
"style"
:
{
//
"navigationBarTitleText"
:
"获取人像"
,
//
"enablePullDownRefresh"
:
false
,
//
"navigationStyle"
:
"custom"
//
}
//
},
{
{
"path"
:
"getPortrait"
,
"style"
:
{
"navigationBarTitleText"
:
"获取人像"
,
"enablePullDownRefresh"
:
false
,
"navigationStyle"
:
"custom"
}
},
{
"path"
:
"myPhotoAlbum/myPhotoAlbum"
,
"path"
:
"myPhotoAlbum/myPhotoAlbum"
,
"style"
:
{
"style"
:
{
"navigationBarTitleText"
:
"我的相册"
,
"navigationBarTitleText"
:
"我的相册"
,
"enablePullDownRefresh"
:
false
"enablePullDownRefresh"
:
false
}
}
},
{
},
{
"path"
:
"albumOrderdetail/albumOrderdetail"
,
"path"
:
"albumOrderdetail/albumOrderdetail"
,
"style"
:
{
"style"
:
{
"navigationBarTitleText"
:
""
,
"navigationBarTitleText"
:
""
,
"enablePullDownRefresh"
:
false
"enablePullDownRefresh"
:
false
}
}
},
{
},
{
"path"
:
"purchasedPhotoAlbum/purchasedPhotoAlbum"
,
"path"
:
"purchasedPhotoAlbum/purchasedPhotoAlbum"
,
"style"
:
{
"style"
:
{
"navigationBarTitleText"
:
"我的影集"
,
"navigationBarTitleText"
:
"我的影集"
,
"enablePullDownRefresh"
:
false
"enablePullDownRefresh"
:
false
}
}
},
{
},
{
"path"
:
"DIYPurchase/DIYPurchase"
,
"path"
:
"DIYPurchase/DIYPurchase"
,
"style"
:
{
"style"
:
{
"navigationBarTitleText"
:
"影像DIY"
,
"navigationBarTitleText"
:
"影像DIY"
,
"enablePullDownRefresh"
:
false
"enablePullDownRefresh"
:
false
}
}
},
{
},
{
"path"
:
"DIYDetails/DIYDetails"
,
"path"
:
"DIYDetails/DIYDetails"
,
"style"
:
{
"style"
:
{
"navigationBarTitleText"
:
"我的相片"
,
"navigationBarTitleText"
:
"我的相片"
,
...
...
pages/combination/distributionCombiChoose/distributionCombiChoose.vue
View file @
5525234a
...
@@ -174,6 +174,7 @@
...
@@ -174,6 +174,7 @@
<u-modal
:show=
"showModal"
@
confirm=
"chooseConfirm"
@
cancel=
"chooseCancel"
title=
"提示"
content=
"该产品不支持多选"
show-cancel-button=
"true"
>
<u-modal
:show=
"showModal"
@
confirm=
"chooseConfirm"
@
cancel=
"chooseCancel"
title=
"提示"
content=
"该产品不支持多选"
show-cancel-button=
"true"
>
</u-modal>
</u-modal>
</scroll-view>
</scroll-view>
<image
class=
"suodaoImg"
v-if=
"showSuodaoImg"
src=
"https://lx.pangdly.com/img/cjsdFirst.50a2e63.jpg"
></image>
</view>
</view>
</template>
</template>
...
@@ -194,6 +195,7 @@ export default {
...
@@ -194,6 +195,7 @@ export default {
data
()
{
data
()
{
return
{
return
{
detailData
:
''
,
//详情数据
detailData
:
''
,
//详情数据
showSuodaoImg
:
false
,
//索道耳麦图片是否显示隐藏
companyId
:
''
,
//公司Id
companyId
:
''
,
//公司Id
merchantId
:
''
,
//商户Id
merchantId
:
''
,
//商户Id
// tabbar:['热门景点','一日游','摄影/旅拍','文创DIY'],//tabbar标题列表
// tabbar:['热门景点','一日游','摄影/旅拍','文创DIY'],//tabbar标题列表
...
@@ -314,6 +316,13 @@ export default {
...
@@ -314,6 +316,13 @@ export default {
this
.
channelType
=
this
.
$commonjs
.
getKey
(
option
,
'channelType'
)
||
0
this
.
channelType
=
this
.
$commonjs
.
getKey
(
option
,
'channelType'
)
||
0
},
},
onShow
()
{
onShow
()
{
//如果是索道
if
(
this
.
merchantId
==
'z0015605022691a5945bbe463141668c'
){
this
.
showSuodaoImg
=
true
setTimeout
(()
=>
{
this
.
showSuodaoImg
=
false
},
2500
)
}
//清空之前选中的数据
//清空之前选中的数据
this
.
detailData
=
''
this
.
detailData
=
''
this
.
chooseProduct
=
[]
this
.
chooseProduct
=
[]
...
@@ -884,6 +893,12 @@ export default {
...
@@ -884,6 +893,12 @@ export default {
justify-content
:
center
;
justify-content
:
center
;
padding-left
:
8rpx
;
padding-left
:
8rpx
;
}
}
.suodaoImg
{
position
:
fixed
;
z-index
:
9999
;
width
:
100%
;
height
:
100%
;
}
.swiper-item
/
deep
/
.u-waterfall
{
.swiper-item
/
deep
/
.u-waterfall
{
padding-top
:
8rpx
;
padding-top
:
8rpx
;
}
}
...
...
pages/payment/orderPayment/orderPayment.vue
View file @
5525234a
...
@@ -219,7 +219,7 @@ export default {
...
@@ -219,7 +219,7 @@ export default {
}
}
this
.
background
=
'#E6E6E6'
this
.
background
=
'#E6E6E6'
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
background
=
'
f9690e
'
this
.
background
=
'
#3688FF
'
},
1000
)
},
1000
)
// #ifdef MP-WEIXIN
// #ifdef MP-WEIXIN
if
(
!
this
.
timeStamp
||!
this
.
nonceStr
||!
this
.
package
||!
this
.
signType
||!
this
.
paySign
){
if
(
!
this
.
timeStamp
||!
this
.
nonceStr
||!
this
.
package
||!
this
.
signType
||!
this
.
paySign
){
...
@@ -383,7 +383,7 @@ export default {
...
@@ -383,7 +383,7 @@ export default {
display
:
inline-block
;
display
:
inline-block
;
text-align
:
center
;
text-align
:
center
;
line-height
:
70
rpx
;
line-height
:
70
rpx
;
background
:
#
f9690e
;
background
:
#
3688FF
;
color
:
#ffffff
;
color
:
#ffffff
;
margin-left
:
30
rpx
;
margin-left
:
30
rpx
;
border-radius
:
20
rpx
;
border-radius
:
20
rpx
;
...
...
pages/scenic/combinationProduct/combinationProduct.vue
View file @
5525234a
...
@@ -9,11 +9,11 @@
...
@@ -9,11 +9,11 @@
</u-swiper>
</u-swiper>
</view>
</view>
<view
class=
"middle"
>
<view
class=
"middle"
>
<view
class=
"tabbar"
:style=
"tabbarObj"
>
<
!--
<
view
class=
"tabbar"
:style=
"tabbarObj"
>
<text
v-for=
"(item, index) in tabbar"
:key=
"index"
@
click=
"tabbarChange(index)"
:class=
"
{ on: active == index }">
<text
v-for=
"(item, index) in tabbar"
:key=
"index"
@
click=
"tabbarChange(index)"
:class=
"
{ on: active == index }">
{{
item
}}
{{
item
}}
</text>
</text>
</view>
</view>
-->
<swiper
:current=
"active"
@
animationfinish=
"animationfinish"
class=
"swiper-box"
:style=
"
{ height: swiperHeight + 'px' }">
<swiper
:current=
"active"
@
animationfinish=
"animationfinish"
class=
"swiper-box"
:style=
"
{ height: swiperHeight + 'px' }">
<swiper-item
class=
"swiper-item"
>
<swiper-item
class=
"swiper-item"
>
<checkbox-group
@
change=
"checkboxChange"
class=
"checkbox-box"
>
<checkbox-group
@
change=
"checkboxChange"
class=
"checkbox-box"
>
...
@@ -174,6 +174,7 @@
...
@@ -174,6 +174,7 @@
<u-modal
:show=
"showModal"
@
confirm=
"chooseConfirm"
@
cancel=
"chooseCancel"
title=
"提示"
content=
"该产品不支持多选"
show-cancel-button=
"true"
>
<u-modal
:show=
"showModal"
@
confirm=
"chooseConfirm"
@
cancel=
"chooseCancel"
title=
"提示"
content=
"该产品不支持多选"
show-cancel-button=
"true"
>
</u-modal>
</u-modal>
</scroll-view>
</scroll-view>
<image
class=
"suodaoImg"
v-if=
"showSuodaoImg"
src=
"https://lx.pangdly.com/img/cjsdFirst.50a2e63.jpg"
></image>
</view>
</view>
</template>
</template>
...
@@ -194,6 +195,7 @@ export default {
...
@@ -194,6 +195,7 @@ export default {
data
()
{
data
()
{
return
{
return
{
detailData
:
''
,
//详情数据
detailData
:
''
,
//详情数据
showSuodaoImg
:
false
,
//索道耳麦图片是否显示隐藏
companyId
:
''
,
//公司Id
companyId
:
''
,
//公司Id
merchantId
:
''
,
//商户Id
merchantId
:
''
,
//商户Id
// tabbar:['热门景点','一日游','摄影/旅拍','文创DIY'],//tabbar标题列表
// tabbar:['热门景点','一日游','摄影/旅拍','文创DIY'],//tabbar标题列表
...
@@ -314,6 +316,13 @@ export default {
...
@@ -314,6 +316,13 @@ export default {
this
.
merchantId
=
option
.
merchantId
||
''
this
.
merchantId
=
option
.
merchantId
||
''
},
},
onShow
()
{
onShow
()
{
//如果是索道
if
(
this
.
merchantId
==
'z0015605022691a5945bbe463141668c'
){
this
.
showSuodaoImg
=
true
setTimeout
(()
=>
{
this
.
showSuodaoImg
=
false
},
2500
)
}
//清空之前选中的数据
//清空之前选中的数据
this
.
detailData
=
''
this
.
detailData
=
''
this
.
chooseProduct
=
[]
this
.
chooseProduct
=
[]
...
@@ -884,6 +893,12 @@ export default {
...
@@ -884,6 +893,12 @@ export default {
justify-content
:
center
;
justify-content
:
center
;
padding-left
:
8rpx
;
padding-left
:
8rpx
;
}
}
.suodaoImg
{
position
:
fixed
;
z-index
:
9999
;
width
:
100%
;
height
:
100%
;
}
.swiper-item
/
deep
/
.u-waterfall
{
.swiper-item
/
deep
/
.u-waterfall
{
padding-top
:
8rpx
;
padding-top
:
8rpx
;
}
}
...
...
pages/scenic/scenicCombiOrder/scenicCombiOrder.vue
View file @
5525234a
...
@@ -520,14 +520,6 @@ export default {
...
@@ -520,14 +520,6 @@ export default {
}
}
//默认选择每个产品第一个日期的值
//默认选择每个产品第一个日期的值
this
.
dateChoose
(
item
,
item
.
priceStockList
[
0
],
0
)
this
.
dateChoose
(
item
,
item
.
priceStockList
[
0
],
0
)
//解决如果班次票不是第一个产品时,dateChoose方法里面不会执行下面代码
if
(
item
.
productType
==
3
){
//productType=3为场次票
item
.
cruisePlanId
=
''
item
.
timeActive
=
10000
this
.
timeActive
=
10000
this
.
getTimeStock
(
item
)
}
}
else
{
}
else
{
uni
.
showToast
({
title
:
'没有库存'
,
icon
:
'none'
})
uni
.
showToast
({
title
:
'没有库存'
,
icon
:
'none'
})
this
.
maxBookNum
=
0
this
.
maxBookNum
=
0
...
@@ -602,6 +594,7 @@ export default {
...
@@ -602,6 +594,7 @@ export default {
},
},
//---获取班次票---已修改
//---获取班次票---已修改
getTimeStock
(
item
)
{
getTimeStock
(
item
)
{
item
.
timeList
=
[]
let
data
=
{
let
data
=
{
endDate
:
item
.
endDate
,
//结束日期
endDate
:
item
.
endDate
,
//结束日期
startDate
:
item
.
startDate
,
//开始日期
startDate
:
item
.
startDate
,
//开始日期
...
@@ -766,7 +759,6 @@ export default {
...
@@ -766,7 +759,6 @@ export default {
this
.
$refs
.
calendar
.
defaultDate
=
item
.
chooseDate
//日历组件选中日期
this
.
$refs
.
calendar
.
defaultDate
=
item
.
chooseDate
//日历组件选中日期
item
.
endDate
=
item2
.
endTime
//开始日期
item
.
endDate
=
item2
.
endTime
//开始日期
item
.
startDate
=
item2
.
startTime
//结束日期
item
.
startDate
=
item2
.
startTime
//结束日期
uni
.
$u
.
throttle
(()
=>
{
this
.
initCoupon
(
item
)
this
.
initCoupon
(
item
)
if
(
item
.
productType
==
3
){
if
(
item
.
productType
==
3
){
//productType=3为场次票
//productType=3为场次票
...
@@ -775,7 +767,6 @@ export default {
...
@@ -775,7 +767,6 @@ export default {
this
.
timeActive
=
10000
this
.
timeActive
=
10000
this
.
getTimeStock
(
item
)
this
.
getTimeStock
(
item
)
}
}
},
3000
)
this
.
computedPrice
()
this
.
computedPrice
()
//解决点击日期无反应的情况
//解决点击日期无反应的情况
this
.
$forceUpdate
()
this
.
$forceUpdate
()
...
...
pages/scenic/scenicComponents/calendar.vue
View file @
5525234a
...
@@ -45,7 +45,6 @@ export default {
...
@@ -45,7 +45,6 @@ export default {
methods
:
{
methods
:
{
//---日期确认事件
//---日期确认事件
onConfirm
(
date
){
onConfirm
(
date
){
console
.
log
(
date
)
this
.
showPop
=
false
this
.
showPop
=
false
this
.
$emit
(
'dateConfig'
,
date
[
0
])
this
.
$emit
(
'dateConfig'
,
date
[
0
])
},
},
...
...
pages/scenic/scenicOrder/scenicOrder.vue
View file @
5525234a
...
@@ -684,6 +684,7 @@ export default {
...
@@ -684,6 +684,7 @@ export default {
},
},
//---获取班次票
//---获取班次票
getTimeStock
()
{
getTimeStock
()
{
this
.
timeList
=
[]
let
data
=
{
let
data
=
{
endDate
:
this
.
endDate
,
//结束日期
endDate
:
this
.
endDate
,
//结束日期
startDate
:
this
.
startDate
,
//开始日期
startDate
:
this
.
startDate
,
//开始日期
...
@@ -782,13 +783,17 @@ export default {
...
@@ -782,13 +783,17 @@ export default {
this
.
endDate
=
this
.
dateList
[
index
].
endTime
//开始日期
this
.
endDate
=
this
.
dateList
[
index
].
endTime
//开始日期
this
.
startDate
=
this
.
dateList
[
index
].
startTime
//结束日期
this
.
startDate
=
this
.
dateList
[
index
].
startTime
//结束日期
this
.
$refs
.
calendar
.
defaultDate
=
this
.
dateList
[
index
].
startTime
.
substr
(
0
,
10
)
//日历组件选中日期
this
.
$refs
.
calendar
.
defaultDate
=
this
.
dateList
[
index
].
startTime
.
substr
(
0
,
10
)
//日历组件选中日期
if
(
this
.
productIfo
.
productType
==
3
)
{
this
.
initCoupon
()
//如果为班次票,点击时,请求班次票接口
if
(
this
.
productIfo
.
productType
==
3
){
//productType=3为场次票
this
.
cruisePlanId
=
''
//清空班次id
this
.
cruisePlanId
=
''
//清空班次id
this
.
timeActive
=
10000
this
.
timeActive
=
10000
uni
.
$u
.
throttle
(
this
.
getTimeStock
,
3000
)
this
.
getTimeStock
(
)
}
}
uni
.
$u
.
throttle
(
this
.
initCoupon
,
3000
)
// uni.$u.throttle(()=>{
// 1.通过日历插件选择日期之后未执行该方法
// 2.用了该方法之后点击其他日期也会3秒之内无效果,
// },3000)
},
},
//---日历确认事件
//---日历确认事件
...
@@ -796,7 +801,7 @@ export default {
...
@@ -796,7 +801,7 @@ export default {
let
index
=
this
.
dateList
.
findIndex
(
item
=>
{
let
index
=
this
.
dateList
.
findIndex
(
item
=>
{
return
item
.
startTime
.
substr
(
0
,
10
)
==
data
return
item
.
startTime
.
substr
(
0
,
10
)
==
data
})
})
this
.
dateChoose
(
index
)
//选中确认的日期
this
.
dateChoose
(
index
)
this
.
docQuery
.
selectAll
(
'.date-list'
).
boundingClientRect
(
data
=>
{
this
.
docQuery
.
selectAll
(
'.date-list'
).
boundingClientRect
(
data
=>
{
this
.
dateScroll
=
(
data
[
index
].
width
+
6
)
*
index
this
.
dateScroll
=
(
data
[
index
].
width
+
6
)
*
index
}).
exec
()
}).
exec
()
...
...
pages/scenic/scenicSingleOrder/scenicSingleOrder - 副本.vue
0 → 100644
View file @
5525234a
<
template
>
<view>
<web-view
:src=
"outUrl"
></web-view>
</view>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
enterUrl
:
''
,
//进入页面路由
outUrl
:
''
,
//跳出页面路由
}
},
onLoad
(
option
)
{
//#ifdef MP-WEIXIN
this
.
enterUrl
=
option
.
q
//#endif
//#ifdef MP-ALIPAY
this
.
enterUrl
=
uni
.
getStorageSync
(
'alipayQrCode'
)
//#endif
if
(
this
.
enterUrl
){
//普通二维码扫码进入
let
merchantId
=
this
.
getUrlKey
(
'merchantId'
)
let
productId
=
this
.
getUrlKey
(
'productId'
)
let
orderSource
=
this
.
getUrlKey
(
'orderSource'
)
let
companyId
=
this
.
getUrlKey
(
'companyId'
)
let
pdOpenid
=
uni
.
getStorageSync
(
'openid'
)
//胖丁小程序openid,临时用,当公众号授权做好之后可以删除
let
pdToken
=
uni
.
getStorageSync
(
'token'
)
let
pdCreateUserId
=
uni
.
getStorageSync
(
'createUserId'
)
let
pdUserId
=
uni
.
getStorageSync
(
'userId'
)
let
baseUrl
=
this
.
$wxurl
+
'scenicSingleOrder?pdOpenid='
+
pdOpenid
+
'&pdToken='
+
pdToken
+
'&pdCreateUserId='
+
pdCreateUserId
+
'&pdUserId='
+
pdUserId
let
url
=
'&merchantId='
+
merchantId
+
'&productId='
+
productId
+
'&orderSource='
+
orderSource
+
'&companyId='
+
companyId
this
.
outUrl
=
baseUrl
+
url
}
else
{
//小程序页面跳转进入
let
merchantId
=
option
.
merchantId
||
''
let
productId
=
option
.
productId
||
''
let
orderSource
=
option
.
orderSource
||
''
let
companyId
=
option
.
companyId
||
''
let
ifyukuaiCode
=
option
.
ifyukuaiCode
||
''
//是否是渝快码跳入,渝快码跳入需要在H5端另外走流程
let
pdOpenid
=
uni
.
getStorageSync
(
'openid'
)
//胖丁小程序openid,临时用,当公众号授权做好之后可以删除
let
pdToken
=
uni
.
getStorageSync
(
'token'
)
let
pdCreateUserId
=
uni
.
getStorageSync
(
'createUserId'
)
let
pdUserId
=
uni
.
getStorageSync
(
'userId'
)
let
baseUrl
=
this
.
$wxurl
+
'scenicSingleOrder?pdOpenid='
+
pdOpenid
+
'&pdToken='
+
pdToken
+
'&pdCreateUserId='
+
pdCreateUserId
+
'&pdUserId='
+
pdUserId
let
url
=
'&merchantId='
+
merchantId
+
'&productId='
+
productId
+
'&orderSource='
+
orderSource
+
'&companyId='
+
companyId
+
'&ifyukuaiCode='
+
ifyukuaiCode
this
.
outUrl
=
baseUrl
+
url
}
},
methods
:
{
getUrlKey
(
name
){
//---------------------------------------------------------------获取url
return
(
new
RegExp
(
'[?|&]'
+
name
+
'='
+
'([^&;]+?)(&|#|;|$)'
).
exec
(
decodeURIComponent
(
this
.
enterUrl
))
||
[,
''
])[
1
].
replace
(
/
\+
/g
,
'%20'
)
||
''
},
}
}
</
script
>
<
style
>
</
style
>
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