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
603a4119
Commit
603a4119
authored
Sep 02, 2024
by
qipeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
兑换票
parent
8693c8c2
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1011 additions
and
14 deletions
+1011
-14
pages.json
pages.json
+15
-1
exchangeComplete.vue
pages/my/exchangeCode/exchangeComplete/exchangeComplete.vue
+72
-0
exchangeIndex - 副本.vue
pages/my/exchangeCode/exchangeIndex/exchangeIndex - 副本.vue
+31
-0
exchangeIndex.vue
pages/my/exchangeCode/exchangeIndex/exchangeIndex.vue
+234
-13
exchangePage.vue
pages/my/exchangeCode/exchangePage/exchangePage.vue
+659
-0
GIExchange.png
pages/my/static/exchangeCode/GIExchange.png
+0
-0
GIOrder.png
pages/my/static/exchangeCode/GIOrder.png
+0
-0
GIbuyTicket.png
pages/my/static/exchangeCode/GIbuyTicket.png
+0
-0
icon01.png
pages/my/static/exchangeCode/icon01.png
+0
-0
icon02.png
pages/my/static/exchangeCode/icon02.png
+0
-0
icon03.png
pages/my/static/exchangeCode/icon03.png
+0
-0
icon04.png
pages/my/static/exchangeCode/icon04.png
+0
-0
timer01.gif
pages/my/static/exchangeCode/timer01.gif
+0
-0
No files found.
pages.json
View file @
603a4119
...
...
@@ -183,7 +183,7 @@
{
"path"
:
"exchangeCode/exchangeIndex/exchangeIndex"
,
"style"
:
{
"navigationBarTitleText"
:
"
兑换
"
,
"navigationBarTitleText"
:
"
胖丁旅游
"
,
"enablePullDownRefresh"
:
false
}
},
{
...
...
@@ -273,6 +273,20 @@
"navigationBarTextStyle"
:
"black"
,
"navigationBarBackgroundColor"
:
"#F7F8FA"
}
},
{
"path"
:
"exchangeCode/exchangePage/exchangePage"
,
"style"
:
{
"navigationBarTitleText"
:
"兑换票"
}
},
{
"path"
:
"exchangeCode/exchangeComplete/exchangeComplete"
,
"style"
:
{
"navigationBarTitleText"
:
"兑换结果"
}
}
]
},
...
...
pages/my/exchangeCode/exchangeComplete/exchangeComplete.vue
0 → 100644
View file @
603a4119
<
template
>
<view
class=
"bigBox"
>
<u-icon
name=
"checkmark-circle-fill"
></u-icon>
<view
class=
"exchange-name"
>
兑换成功
</view>
<view
class=
"exchange-text"
>
可在胖丁旅行“我的-我的订单”中查找您的电子门票
</view>
<view
class=
"exchange-btn"
>
完成
</view>
</view>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
}
},
onLoad
(
option
)
{
},
methods
:
{
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
.bigBox
{
height
:
100vh
;
background-color
:
#F7F8FA
;
overflow-y
:
auto
;
}
/
deep
/
.u-icon
{
margin-top
:
272rpx
;
margin-bottom
:
46rpx
;
}
/
deep
/
.u-icon__icon
{
margin
:
0
auto
;
font-size
:
112rpx
!
important
;
line-height
:
112rpx
!
important
;
color
:
#00B42B
!
important
;
}
.exchange-name
{
font-weight
:
600
;
font-size
:
40rpx
;
color
:
#333333
;
line-height
:
56rpx
;
text-align
:
center
;
margin-bottom
:
12rpx
;
}
.exchange-text
{
font-weight
:
400
;
font-size
:
28rpx
;
color
:
#999999
;
line-height
:
40rpx
;
text-align
:
center
;
padding
:
0
24rpx
;
margin-bottom
:
254rpx
;
}
.exchange-btn
{
width
:
380rpx
;
height
:
88rpx
;
background
:
#FFFFFF
;
border
:
2rpx
solid
#EDEDED
;
font-weight
:
400
;
font-size
:
28rpx
;
color
:
#333333
;
line-height
:
84rpx
;
border-radius
:
50rpx
;
text-align
:
center
;
margin
:
0
auto
;
}
</
style
>
pages/my/exchangeCode/exchangeIndex/exchangeIndex - 副本.vue
0 → 100644
View file @
603a4119
<
template
>
<view>
<web-view
:src=
"outUrl"
></web-view>
</view>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
outUrl
:
''
,
//跳出页面路由
}
},
onLoad
(
option
)
{
let
merchantId
=
option
.
merchantId
||
''
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
+
'exchangeIndex?merchantId='
+
merchantId
this
.
outUrl
=
baseUrl
+
'&pdOpenid='
+
pdOpenid
+
'&pdToken='
+
pdToken
+
'&pdCreateUserId='
+
pdCreateUserId
+
'&pdUserId='
+
pdUserId
},
methods
:
{
}
}
</
script
>
<
style
>
</
style
>
pages/my/exchangeCode/exchangeIndex/exchangeIndex.vue
View file @
603a4119
<
template
>
<view>
<web-view
:src=
"outUrl"
></web-view>
<view
class=
"bigBox"
>
<view
class=
"exchange-btn exchange-btnTop"
@
click=
"distributionCombiChooseFun()"
>
<image
class=
"btn-img"
src=
"../../static/exchangeCode/GIbuyTicket.png"
></image>
<view
class=
"btn-name"
>
立即购票
</view>
<view
class=
"btn-ENname"
>
BUY TICKETS NOW
</view>
</view>
<view
class=
"exchange-btn"
@
click=
"exchangeCodeChoose()"
>
<image
class=
"btn-img"
src=
"../../static/exchangeCode/GIExchange.png"
></image>
<view
class=
"btn-name"
>
兑换票
</view>
<view
class=
"btn-ENname"
>
EXCHANGE TICKETS
</view>
</view>
<view
class=
"exchange-btn"
@
click=
"orderListFun()"
>
<image
class=
"btn-img"
src=
"../../static/exchangeCode/GIOrder.png"
></image>
<view
class=
"btn-name"
>
查看订单
</view>
<view
class=
"btn-ENname"
>
VIEW ORDERS
</view>
</view>
<view
class=
"exchange-mask"
v-if=
"maskType==true"
>
<view
class=
"mask-case"
>
<view
class=
"mask-list"
>
<view
class=
"list-box"
:class=
"active == index?'list-boxAct':''"
@
click=
"listNumFun(index)"
v-for=
"(item,index) in stringProduct"
:key=
"index"
>
{{
item
.
productName
}}
</view>
</view>
<view
class=
"mask-btn"
></view>
</view>
</view>
</view>
</
template
>
...
...
@@ -8,24 +32,221 @@
export
default
{
data
()
{
return
{
outUrl
:
''
,
//跳出页面路由
productId
:
''
,
merchantId
:
''
,
ticketCode
:
''
,
userId
:
''
,
companyMess
:{},
//公司信息
companyId
:
''
,
//公司ID
fromOrderId
:
''
,
//历史ID
pdFromOrderId
:
''
,
stringProduct
:
[],
//可兑换产品列表
maskType
:
true
,
active
:
0
,
}
},
onLoad
(
option
)
{
let
merchantId
=
option
.
merchantId
||
''
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
+
'exchangeIndex?merchantId='
+
merchantId
this
.
outUrl
=
baseUrl
+
'&pdOpenid='
+
pdOpenid
+
'&pdToken='
+
pdToken
+
'&pdCreateUserId='
+
pdCreateUserId
+
'&pdUserId='
+
pdUserId
//this.userId = ''//uni.getStorageSync('openid')
//this.productId = option.productId||'z001700015788731bfffd2581156dcfa'
this
.
ticketCode
=
this
.
$commonjs
.
getKey
(
option
.
ticketCode
)
||
'85729040864674'
this
.
merchantId
=
this
.
$commonjs
.
getKey
(
option
.
merchantId
)
||
'z001666149446146aaaf63f524961e53'
this
.
loadMerchantInfo
()
},
methods
:
{
listNumFun
(
index
){
//当可选产品>1时 选择的产品是
this
.
active
=
index
},
loadMerchantInfo
(){
//景区详情
var
data
=
{
id
:
this
.
merchantId
,
isDetail
:
1
}
this
.
$request
(
'scenic/newMerchant/loadMerchantInfo'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
this
.
companyMess
=
res
.
data
this
.
companyId
=
res
.
data
.
productCompanyId
this
.
productListFun
(
res
.
data
.
productCompanyId
)
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
productListFun
(
productCompanyId
){
//可兑换的产品列表
var
data
=
{
companyId
:
productCompanyId
,
}
this
.
$request
(
'scenic/exchangeProduct/loadExchangeList'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
this
.
stringProduct
=
res
.
data
this
.
stringProduct
.
forEach
((
item
,
index
)
=>
{
var
productNameGroup
=
JSON
.
parse
(
JSON
.
stringify
(
item
.
productName
)).
split
(
'('
)
item
.
productNameGroup
=
JSON
.
parse
(
JSON
.
stringify
(
productNameGroup
))
})
console
.
log
(
this
.
stringProduct
)
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
exchangeCodeChoose
(){
//大于1出现遮罩 等于1跳转
if
(
this
.
stringProduct
.
length
>
1
){
this
.
maskType
=
true
}
else
{
this
.
exchangeCode
()
}
},
exchangeCode
(){
//订单查询
var
data
=
{
ticketCode
:
this
.
ticketCode
,
//userId : this.userId,//上线之前注销 此为普通票
//productId : this.productId,
//orderStatus : 2,//上线之前注销 此为普通票
}
this
.
$request
(
'order/userOrder/findExchangeOrderList'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
if
(
res
.
data
.
list
.
length
>
0
)
{
this
.
checkExchangeFun
(
res
.
data
.
list
[
0
].
id
,
res
.
data
.
list
[
0
].
productId
,
res
.
data
.
list
[
0
].
userId
)
this
.
fromOrderId
=
res
.
data
.
list
[
0
].
thirdOrderId
this
.
pdFromOrderId
=
res
.
data
.
list
[
0
].
id
}
else
{
this
.
$toast
.
fail
(
'未查询到相应订单'
)
}
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
checkExchangeFun
(
id
,
productId
,
userId
){
//兑换检测
var
data
=
{
fromOrderId
:
id
,
}
this
.
$request
(
'order/exchange/checkExchange'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
if
(
res
.
data
.
exchangeStatus
==
0
)
{
uni
.
navigateTo
({
url
:
'/pages/my/exchangeCode/exchangePage/exchangePage?productId='
+
this
.
productId
+
'&id='
+
id
+
'&userId='
+
userId
+
'&merchantId='
+
this
.
merchantId
+
'&fromOrderId='
+
this
.
fromOrderId
+
'&pdFromOrderId='
+
this
.
pdFromOrderId
+
'&ticketCode='
+
this
.
ticketCode
})
}
else
{
uni
.
showToast
({
title
:
'当前兑换码已兑换,若需兑换其他兑换码,请扫描对应门票二维码进行兑换。'
,
icon
:
'none'
})
}
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
orderListFun
(){
//跳转订单列表
uni
.
navigateTo
({
url
:
'/pages/my/order/orderList/orderList'
})
},
distributionCombiChooseFun
(){
//跳转立即购票
uni
.
navigateTo
({
url
:
'/pages/combination/distributionCombiChoose/distributionCombiChoose?channelId=1&merchantId=z0015605022691a5945bbe463141668c&groupId=z0016038113016708b8ad38c637b2f26&groupChannelId=z00160423712018998e6260ffcaf3369'
})
},
}
}
</
script
>
<
style
>
<
style
scoped
lang=
"scss"
>
.bigBox
{
height
:
100vh
;
background-color
:
#F4F6F8
;
overflow-y
:
auto
;
}
.exchange-btn
{
width
:
628rpx
;
height
:
216rpx
;
margin
:
0
auto
;
margin-bottom
:
54rpx
;
position
:
relative
;
.btn-img
{
display
:
block
;
width
:
628rpx
;
height
:
216rpx
;
}
.btn-name
{
font-weight
:
600
;
font-size
:
40rpx
;
color
:
#FFFFFF
;
line-height
:
56rpx
;
position
:
absolute
;
top
:
56rpx
;
left
:
60rpx
;
}
.btn-ENname
{
font-weight
:
600
;
font-size
:
24rpx
;
color
:
#FFFFFF
;
line-height
:
34rpx
;
position
:
absolute
;
top
:
120rpx
;
left
:
60rpx
;
}
}
.exchange-btnTop
{
margin-top
:
126rpx
;
}
.exchange-mask
{
position
:
fixed
;
top
:
0
;
right
:
0
;
bottom
:
0
;
left
:
0
;
z-index
:
998
;
background-color
:
rgba
(
0
,
0
,
0
,.
3
);
.mask-case
{
width
:
700rpx
;
height
:
800rpx
;
margin
:
auto
;
background-color
:
#fff
;
border-radius
:
18rpx
;
position
:
fixed
;
top
:
0
;
right
:
0
;
bottom
:
0
;
left
:
0
;
.mask-list
{
height
:
600rpx
;
overflow-y
:
auto
;
.list-box
{
width
:
680rpx
;
margin
:
0
auto
;
padding
:
30rpx
20rpx
;
border
:
solid
1px
#EEEFF0
;
line-height
:
30rpx
;
font-size
:
26rpx
;
color
:
#333333
;
}
.list-boxAct
{
border
:
1px
solid
#FE6600
;
}
}
.mask-btn
{
height
:
200rpx
;
}
}
}
</
style
>
pages/my/exchangeCode/exchangePage/exchangePage.vue
0 → 100644
View file @
603a4119
<
template
>
<view
class=
"bigBox"
>
<view
class=
"baseStyleBox baseStyleBoxTop"
>
<view
class=
"exchange-nav"
>
<view
class=
"nav-left"
>
<view
class=
"left-name"
>
{{
companyMess
.
name
}}
</view>
<view
class=
"left-address"
>
{{
companyMess
.
address
}}
</view>
</view>
<view
class=
"nav-right"
>
<view
class=
"right-list"
>
<view
class=
"list-title"
>
<image
src=
"../../static/exchangeCode/icon01.png"
></image>
</view>
<view
class=
"list-name"
>
导航
</view>
</view>
<view
class=
"right-list"
>
<view
class=
"list-title"
>
<image
src=
"../../static/exchangeCode/icon02.png"
></image>
</view>
<view
class=
"list-name"
>
电话
</view>
</view>
</view>
</view>
<view
class=
"exchange-label"
>
选择日期
<image
class=
"exchange-gif"
src=
"../../static/exchangeCode/timer01.gif"
></image>
</view>
<view
class=
"middle-Datelist"
>
<scroll-view
class=
"date-content"
scroll-x=
"true"
:scroll-left=
"dateScroll"
v-if=
"dateList.length > 0"
>
<view
class=
"date-list"
v-for=
"(item, index) of dateList"
:class=
"
{ on: active == index }" @click="dateChoose(index)" :key="index">
<view
v-if=
"item.week"
>
<text
v-if=
"item.week != '今天' && item.week != '明天' && item.week != '后天'"
>
周
</text>
{{
item
.
week
}}
</view>
<view>
{{
item
.
startTime
?
item
.
startTime
.
substr
(
5
,
5
)
:
''
}}
</view>
<view
class=
"date-price"
>
¥
<text>
{{
item
.
sellingPrice
}}
</text>
</view>
</view>
</scroll-view>
<view
class=
"dateMore"
@
click=
"showCalendar()"
v-if=
"dateList.length > 0"
>
<view
class=
"date-more-content"
>
<view>
更多
</view>
<view>
日期
</view>
</view>
<u-icon
name=
"arrow-right"
></u-icon>
</view>
</view>
<view
class=
"exchange-line"
></view>
<view
class=
"exchange-number"
>
<view
class=
"exchange-label"
>
兑换数量
</view>
<!--
<view
class=
"number-rule"
>
<view
class=
"rule-text"
>
不可退
</view>
<view
class=
"rule-line"
></view>
<view
class=
"rule-text"
>
免预约
</view>
</view>
-->
<view
class=
"number-timer"
>
{{
newCheckTime
}}
</view>
<view
class=
"number-codeNum"
>
1
</view>
</view>
</view>
<view
class=
"baseStyleBox"
>
<view
class=
"exchange-label"
style=
"padding: 40rpx 24rpx 20rpx 24rpx;"
>
游客信息
</view>
<view
class=
"exchange-tourist"
>
<view
class=
"tourist-list"
>
<view
class=
"list-name"
>
兑换码
</view>
<view
class=
"list-text"
>
{{
ticketCode
}}
</view>
</view>
<view
class=
"tourist-list"
>
<view
class=
"list-name"
>
游客姓名
</view>
<input
class=
"uni-input"
v-model=
"orderTouristDate.name"
placeholder=
"请输入"
/>
</view>
<view
class=
"tourist-list"
>
<view
class=
"list-name"
>
身份证号
</view>
<input
class=
"uni-input"
v-model=
"orderTouristDate.credentialNumber"
placeholder=
"请输入"
/>
</view>
<view
class=
"tourist-list"
>
<view
class=
"list-name"
>
手机号码
</view>
<input
class=
"uni-input"
v-model=
"orderTouristDate.phone"
placeholder=
"请输入"
/>
</view>
</view>
</view>
<view
class=
"exchange-bottom"
>
<view
class=
"bottom-btn"
@
click=
"createOrderFun()"
>
去兑换
</view>
</view>
<calendar
ref=
"calendar"
@
dateConfig=
"dateConfig"
:dateList=
"dateList"
v-if=
"dateList.length > 0"
></calendar>
</view>
</
template
>
<
script
>
import
calendar
from
'@/components/calendar'
//日历组件
export
default
{
components
:
{
calendar
,
},
data
()
{
return
{
ticketCode
:
''
,
//兑换码
productId
:
''
,
id
:
''
,
userId
:
''
,
merchantId
:
''
,
fromOrderId
:
''
,
//途比达历史订单
pdFromOrderId
:
''
,
exchangeType
:
1
,
//默认为1 VIP 测试普通票 exchangeType=0
orderDetail
:{},
//订单详情
buyNum
:
null
,
//购买张数
companyMess
:{},
//公司信息
companyId
:
''
,
//公司ID
orderTouristDate
:{
name
:
''
,
credentialNumber
:
''
,
phone
:
''
,
credentialType
:
1
},
//游客信息
stringProduct
:[],
//兑换产品列表
stringProductType
:
false
,
//列表显隐
stringProductMinDate
:
''
,
//日历最小时间
stringProductMaxDate
:
''
,
//日历最大时间
dateTimer
:
''
,
dateScroll
:
''
,
//日期滚动值
dateList
:
[
],
//日期列表
active
:
0
,
//日期下标
docQuery
:
''
,
//元素变量
newCheckTime
:
'加载中'
,
//当前选择的时间
//changeValue: '',
}
},
onLoad
(
option
)
{
this
.
productId
=
option
.
productId
this
.
id
=
option
.
id
this
.
userId
=
option
.
userId
this
.
merchantId
=
option
.
merchantId
this
.
fromOrderId
=
option
.
fromOrderId
this
.
pdFromOrderId
=
option
.
pdFromOrderId
this
.
ticketCode
=
option
.
ticketCode
this
.
findOrderDetail
()
this
.
loadMerchantInfo
()
this
.
docQuery
=
uni
.
createSelectorQuery
().
in
(
this
)
},
methods
:
{
findOrderDetail
(){
//产品订单信息
var
data
=
{
orderId
:
this
.
id
,
userId
:
this
.
userId
,
}
this
.
$request
(
'order/userOrder/findOrderDetail'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
this
.
orderDetail
=
res
.
data
this
.
buyNum
=
this
.
orderDetail
.
orderNum
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
loadMerchantInfo
(){
//景区详情
var
data
=
{
id
:
this
.
merchantId
,
isDetail
:
1
}
this
.
$request
(
'scenic/newMerchant/loadMerchantInfo'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
this
.
companyMess
=
res
.
data
this
.
companyId
=
res
.
data
.
productCompanyId
this
.
loadExchangeProductInfoFun
()
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
loadExchangeProductInfoFun
(){
//兑换产品查询
var
data
=
{
companyId
:
this
.
companyId
,
//productId:this.productId,
exchangeType
:
1
,
//exchangeType:1,//正式环境为VIP票 只需要exchangeType:1 exchangeType、productId需要注释
}
this
.
$request
(
'scenic/exchangeProduct/loadExchangeList'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
this
.
stringProduct
=
res
.
data
this
.
stringProduct
.
forEach
(
item
=>
{
item
[
'interfaceCompanyId'
]
=
''
//接口编号
item
[
'merchantCode'
]
=
''
//商户code
item
[
'productCode'
]
=
''
//产品code
item
[
'minDate'
]
=
''
//开始时间
item
[
'maxDate'
]
=
''
//结束时间
item
[
'name'
]
=
''
//票种名称
item
[
'session'
]
=
[]
//场次
})
this
.
stringProduct
.
forEach
((
item
,
index
)
=>
{
this
.
initData
(
item
.
exchangeProductId
,
index
)
})
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
initData
(
productId
,
index
){
// //页面初始化数据,获取产品基本信息
var
data
=
{
id
:
productId
,
}
this
.
$request
(
'scenic/groupGood/loadProduct'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
this
.
stringProduct
[
index
].
interfaceCompanyId
=
res
.
data
.
merchantVo
.
interfaceCompanyId
//接口编号
this
.
stringProduct
[
index
].
merchantCode
=
res
.
data
.
merchantVo
.
code
//商户code
this
.
stringProduct
[
index
].
productCode
=
res
.
data
.
code
//产品code
this
.
stringProduct
[
index
].
name
=
res
.
data
.
name
//产品名称
this
.
stringProduct
[
index
].
merchantId
=
res
.
data
.
merchantId
//产品ID
this
.
dateOfInventory
(
res
.
data
.
id
,
index
)
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
dateOfInventory
(
productId
,
index
){
//兑换时间
var
data
=
{
productId
:
productId
,
//产品id
isExchange
:
1
}
this
.
$request
(
'scenic/user/product/priceStockList'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
var
minData
=
res
.
data
[
0
].
startTime
var
maxDate
=
res
.
data
[
res
.
data
.
length
-
1
].
startTime
var
minDataT
=
minData
.
substring
(
0
,
10
)
var
maxDateT
=
maxDate
.
substring
(
0
,
10
)
var
mindates
=
this
.
getDefaultDate
(
minDataT
)
var
maxdates
=
this
.
getDefaultDate
(
maxDateT
)
this
.
stringProduct
[
index
].
minDate
=
new
Date
(
mindates
)
this
.
stringProduct
[
index
].
maxDate
=
new
Date
(
maxdates
)
//this.getTimeStock(res.data[0].startTime,res.data[0].endTime,index)
this
.
dateTimer
=
res
.
data
[
0
].
startTime
let
today
=
this
.
$commonjs
.
today
()
//今天
let
tomorrow
=
this
.
$commonjs
.
tomorrow
()
//明天
let
afterTomorrow
=
this
.
$commonjs
.
afterTomorrow
()
//后天
this
.
dateList
=
res
.
data
this
.
dateList
.
forEach
((
item
,
index
)
=>
{
item
.
week
=
'日一二三四五六'
.
charAt
(
new
Date
(
item
.
startTime
.
substr
(
0
,
10
)).
getDay
())
if
(
item
.
startTime
.
substr
(
0
,
10
)
==
today
)
{
item
.
week
=
'今天'
}
if
(
item
.
startTime
.
substr
(
0
,
10
)
==
tomorrow
)
{
item
.
week
=
'明天'
}
if
(
item
.
startTime
.
substr
(
0
,
10
)
==
afterTomorrow
)
{
item
.
week
=
'后天'
}
})
this
.
newCheckTime
=
this
.
dateList
[
this
.
active
].
startTime
.
substring
(
0
,
10
)
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
getDefaultDate
(
val
)
{
//获取默认日期
let
dates
=
val
.
split
(
'-'
)
let
year
=
parseInt
(
dates
[
0
])
let
month
=
parseInt
(
dates
[
1
])
-
1
let
day
=
parseInt
(
dates
[
2
])
let
defaultDate
=
new
Date
(
year
,
month
,
day
)
return
defaultDate
},
dateChoose
(
index
)
{
//---日期选择
this
.
active
=
index
//修改选中样式
this
.
newCheckTime
=
this
.
dateList
[
this
.
active
].
startTime
.
substring
(
0
,
10
)
this
.
$refs
.
calendar
.
defaultDate
=
this
.
dateList
[
index
].
startTime
.
substr
(
0
,
10
)
//日历组件选中日期
},
showCalendar
()
{
//---展示日历
this
.
$refs
.
calendar
.
showPop
=
true
},
dateConfig
(
data
)
{
//---日历确认事件
let
index
=
this
.
dateList
.
findIndex
(
item
=>
{
return
item
.
startTime
.
substr
(
0
,
10
)
==
data
})
this
.
dateChoose
(
index
)
this
.
docQuery
.
selectAll
(
'.date-list'
).
boundingClientRect
(
data
=>
{
this
.
dateScroll
=
(
data
[
index
].
width
+
6
)
*
index
}).
exec
()
},
createOrderFun
(){
//下单
var
data
=
{
companyId
:
this
.
companyId
,
//公司Id
fromOrderId
:
this
.
fromOrderId
,
//途比达历史订单
buyMethod
:
1
,
// 单品购买,2套票、联票购买,3组合购买
userId
:
uni
.
getStorageSync
(
'openid'
)
||
''
,
//用户id
cash
:
0
,
//现金红包
orderMoney
:
0
,
//订单总价 = 订单原价 - 优惠券价格 - 现金抵扣价格
orderType
:
1
,
//订单类型,景区
orderSource
:
this
.
orderDetail
.
orderSource
||
1
,
//订单来源 1公众号平台、2公众号组合页面1、3公众号组合页面2、4胖丁伙伴app、5第三方自助机、6第三方票房窗口
orderProductList
:
[],
//额外服务不为空,联票购买不为空,带有儿童票,组合购买不为空,单品购买为空
orderProductVo
:
{
//产品信息列表
extendContent
:
'{"openid":'
+
'"'
+
uni
.
getStorageSync
(
'openid'
)
+
'"'
+
','
+
'"zr":""}'
,
productId
:
this
.
productId
,
//产品Id
buyNum
:
this
.
buyNum
,
//购买数量
subOrderType
:
0
,
//产品类型,网络
unitPrice
:
0
,
//产品单价
distributionPrice
:
0
,
//临时用
merchantId
:
this
.
merchantId
,
//商户id
orderTouristList
:[],
//游客信息
playDate
:
this
.
dateList
[
this
.
active
].
startTime
,
//开始日期
endPlayDate
:
this
.
dateList
[
this
.
active
].
endTime
,
//结束日期
startPlayTime
:
this
.
dateList
[
this
.
active
].
startTime
.
substring
(
11
,
19
),
endPlayTime
:
this
.
dateList
[
this
.
active
].
endTime
.
substring
(
11
,
19
),
isMaster
:
0
,
//是否主产品 1 否, 0 是
couponList
:[],
//券列表
},
}
if
(
this
.
orderTouristDate
.
name
==
''
){
uni
.
showToast
({
title
:
'请输入用户姓名'
,
icon
:
'none'
})
return
false
}
if
(
this
.
orderTouristDate
.
credentialNumber
==
''
){
uni
.
showToast
({
title
:
'请输入用户身份证号'
,
icon
:
'none'
})
return
false
}
if
(
this
.
orderTouristDate
.
phone
==
''
){
uni
.
showToast
({
title
:
'请输入用户联系电话'
,
icon
:
'none'
})
return
false
}
if
(
!
this
.
$commonjs
.
phoneReg
().
test
(
this
.
orderTouristDate
.
phone
))
{
//未填写正确手机号码
uni
.
showToast
({
title
:
'请填写正确的手机号码'
,
icon
:
'none'
})
return
false
}
data
.
orderProductVo
.
orderTouristList
.
push
(
this
.
orderTouristDate
)
data
[
'ticketPhone'
]
=
this
.
orderTouristDate
.
phone
this
.
$request
(
'orderc/order/createOrder'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
let
id
=
res
.
data
.
id
if
(
id
)
{
this
.
init
(
id
)
}
else
{
uni
.
showToast
({
title
:
'下单失败'
,
icon
:
'none'
})
}
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
init
(
orderId
)
{
//是否下单成功
var
payType
=
''
//#ifdef MP-WEIXIN
payType
=
42
//#endif
//#ifdef MP-ALIPAY
payType
=
33
//#endif
let
data
=
{
'orderId'
:
orderId
,
//订单Id
'userId'
:
this
.
userId
,
//用户Id
'payType'
:
payType
,
//支付类型
'fromOrderId'
:
this
.
fromOrderId
,
'pdFromOrderId'
:
this
.
pdFromOrderId
}
this
.
$request
(
'orderc/order/findOrderInfo'
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
'00'
){
uni
.
navigateTo
({
url
:
'/pages/my/exchangeCode/exchangeComplete/exchangeComplete?orderId='
+
res
.
data
.
id
})
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
.bigBox
{
height
:
100vh
;
background-color
:
#F7F8FA
;
padding-bottom
:
120rpx
;
overflow-y
:
auto
;
}
.baseStyleBox
{
width
:
726rpx
;
background
:
#FFFFFF
;
border-radius
:
16rpx
;
margin
:
0
auto
20rpx
auto
;
}
.baseStyleBoxTop
{
margin-top
:
12rpx
;
}
.exchange-nav
{
display
:
flex
;
justify-content
:
space-between
;
padding
:
24rpx
;
border-bottom
:
solid
2rpx
#F5F5F5
;
margin-bottom
:
36rpx
;
.nav-left
{
.left-name
{
font-weight
:
600
;
font-size
:
32rpx
;
color
:
#333333
;
line-height
:
44rpx
;
margin-bottom
:
4rpx
;
}
.left-address
{
font-weight
:
400
;
font-size
:
24rpx
;
color
:
#999999
;
line-height
:
34rpx
;
}
}
.nav-right
{
display
:
flex
;
.right-list
{
margin-left
:
24rpx
;
.list-title
{
width
:
52rpx
;
height
:
52rpx
;
border
:
2rpx
solid
#F5F5F5
;
border-radius
:
50%
;
margin-bottom
:
2rpx
;
position
:
relative
;
image
{
display
:
block
;
width
:
28rpx
;
height
:
28rpx
;
margin
:
auto
;
position
:
absolute
;
top
:
0
;
right
:
0
;
bottom
:
0
;
left
:
0
;
}
}
.list-name
{
font-weight
:
400
;
font-size
:
20rpx
;
color
:
#333333
;
line-height
:
24rpx
;
text-align
:
center
;
}
}
}
}
.exchange-label
{
display
:
flex
;
font-weight
:
600
;
font-size
:
32rpx
;
color
:
#333333
;
line-height
:
36rpx
;
padding
:
0
24rpx
0
24rpx
;
}
.exchange-gif
{
width
:
168rpx
;
height
:
24rpx
;
margin-top
:
6rpx
;
margin-left
:
12rpx
;
}
.middle-Datelist
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
margin-top
:
38rpx
;
padding
:
0
24rpx
0
24rpx
;
.date-content
{
flex
:
1
;
overflow-x
:
scroll
;
white-space
:
nowrap
;
}
.
date-content
:
:-
webkit-scrollbar
{
display
:
none
;
}
.date-list
{
width
:
120rpx
;
text-align
:
center
;
margin-right
:
18rpx
;
border-radius
:
8rpx
;
border
:
2rpx
solid
#EEEFF0
;
background
:
#FCFCFC
;
position
:
relative
;
display
:
inline-block
;
padding
:
14rpx
0
12rpx
0
;
}
.date-list.on
{
border
:
1px
solid
#FE6600
;
}
.date-list
>
view
{
line-height
:
36rpx
;
font-size
:
26rpx
;
color
:
#333333
;
}
.date-price
{
color
:
#FE6600
!
important
;
}
.dateMore
{
flex-shrink
:
0
;
padding
:
20rpx
0
;
width
:
120rpx
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.date-more-content
{
margin-right
:
8rpx
;
}
/
deep
/
.u-icon__icon
{
color
:
#333333
;
}
}
.exchange-line
{
height
:
2rpx
;
background
:
#F5F5F5
;
margin
:
30rpx
0
30rpx
0
;
}
.exchange-number
{
position
:
relative
;
.number-rule
{
display
:
flex
;
padding
:
0
24rpx
0
24rpx
;
margin
:
8rpx
0
8rpx
0
;
.rule-text
{
font-weight
:
400
;
font-size
:
24rpx
;
color
:
#FE6600
;
line-height
:
36rpx
;
}
.rule-line
{
width
:
2rpx
;
height
:
18rpx
;
background
:
#DDDDDD
;
margin
:
auto
16rpx
auto
16rpx
;
justify-content
:
center
;
}
}
.number-timer
{
font-weight
:
400
;
font-size
:
24rpx
;
color
:
#999999
;
line-height
:
36rpx
;
padding
:
0
24rpx
24rpx
24rpx
;
}
.number-codeNum
{
font-weight
:
600
;
font-size
:
32rpx
;
color
:
#333333
;
line-height
:
32rpx
;
position
:
absolute
;
top
:
10rpx
;
right
:
38rpx
;
}
}
.exchange-tourist
{
display
:
flex
;
justify-content
:
flex-end
;
flex-direction
:
column
;
.tourist-list
{
display
:
flex
;
height
:
100rpx
;
border-bottom
:
2rpx
solid
#F5F5F5
;
box-sizing
:
border-box
;
margin-left
:
40rpx
;
padding-right
:
52rpx
;
.list-name
{
flex-shrink
:
0
;
width
:
120rpx
;
font-weight
:
400
;
font-size
:
28rpx
;
color
:
#666666
;
line-height
:
98rpx
;
}
.list-text
{
flex
:
1
;
font-weight
:
400
;
font-size
:
28rpx
;
color
:
#333333
;
line-height
:
98rpx
;
text-align
:
right
;
}
/
deep
/
.uni-input
{
text-align
:
right
;
flex
:
1
;
height
:
98rpx
;
}
}
.tourist-list
:nth-last-child
(
1
)
{
border-bottom
:
none
;
}
}
.exchange-bottom
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
width
:
100%
;
height
:
120rpx
;
box-sizing
:
content-box
;
border-top
:
solid
2rpx
#EDEDED
;
background-color
:
#FFFFFF
;
position
:
fixed
;
bottom
:
0
;
left
:
0
;
.bottom-btn
{
width
:
670rpx
;
height
:
80rpx
;
background
:
linear-gradient
(
119deg
,
#FFA000
0%
,
#FE6600
100%
);
border-radius
:
40rpx
;
font-weight
:
600
;
font-size
:
32rpx
;
color
:
#FFFFFF
;
line-height
:
80rpx
;
text-align
:
center
;
}
}
</
style
>
pages/my/static/exchangeCode/GIExchange.png
0 → 100644
View file @
603a4119
67.1 KB
pages/my/static/exchangeCode/GIOrder.png
0 → 100644
View file @
603a4119
68.9 KB
pages/my/static/exchangeCode/GIbuyTicket.png
0 → 100644
View file @
603a4119
53 KB
pages/my/static/exchangeCode/icon01.png
0 → 100644
View file @
603a4119
1.04 KB
pages/my/static/exchangeCode/icon02.png
0 → 100644
View file @
603a4119
778 Bytes
pages/my/static/exchangeCode/icon03.png
0 → 100644
View file @
603a4119
428 Bytes
pages/my/static/exchangeCode/icon04.png
0 → 100644
View file @
603a4119
323 Bytes
pages/my/static/exchangeCode/timer01.gif
0 → 100644
View file @
603a4119
16.9 KB
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