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
bcc9dc38
Commit
bcc9dc38
authored
Aug 18, 2023
by
qipeng
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of
http://git.tbd.yanzuoguang.com/panyongping/uni-pdtravel
into develop
parents
4a6857f1
961aa929
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
320 additions
and
325 deletions
+320
-325
albumOrderdetail.vue
pages/album/albumOrderdetail/albumOrderdetail.vue
+4
-2
index.vue
pages/indexs/index/index.vue
+1
-1
merchantListIndex.vue
pages/indexs/merchantListIndex/merchantListIndex.vue
+0
-1
scenicChooseProduct.vue
pages/scenic/scenicChooseProduct/scenicChooseProduct.vue
+311
-319
scenicProduct.vue
pages/scenic/scenicProduct/scenicProduct.vue
+4
-2
No files found.
pages/album/albumOrderdetail/albumOrderdetail.vue
View file @
bcc9dc38
...
...
@@ -96,7 +96,7 @@
取片地址:
</text>
<text>
重庆市渝中区新华路151号长江索道南站观景台旁
{{
extendContent
.
projectAddress
}}
</text>
</view>
...
...
@@ -114,7 +114,7 @@
咨询电话:
</text>
<text>
023-68567748
{{
extendContent
.
projectPhone
}}
</text>
</view>
<view>
...
...
@@ -147,6 +147,7 @@ export default {
orderInfo
:
''
,
//订单信息
imgList
:[],
//下载图片列表
downImgNumber
:
0
,
//下载图片的数量
extendContent
:
''
,
//额外信息
}
},
onLoad
(
option
)
{
...
...
@@ -181,6 +182,7 @@ export default {
this
.
$request
(
'order/userOrder/findOrderDetail'
,
data
).
then
(
res
=>
{
if
(
res
.
code
==
'00'
)
{
this
.
orderInfo
=
res
.
data
this
.
extendContent
=
JSON
.
parse
(
this
.
orderInfo
.
extendContent
)
let
imgList
=
this
.
orderInfo
.
orderImgList
||
[]
imgList
.
forEach
(
item
=>
{
this
.
imgList
.
push
(
item
.
imgUrl
)
...
...
pages/indexs/index/index.vue
View file @
bcc9dc38
...
...
@@ -288,7 +288,7 @@ export default {
//---跳转联合国际
goGuoji
(){
uni
.
navigateTo
({
url
:
'/pages/scenic/scenicProduct/scenicProduct?merchantId=z00160128940329482da6bd94d443a91'
url
:
'/pages/scenic/scenicProduct/scenicProduct?merchantId=z00160128940329482da6bd94d443a91
&channelType=1
'
})
},
//---跳转两江游
...
...
pages/indexs/merchantListIndex/merchantListIndex.vue
View file @
bcc9dc38
...
...
@@ -171,7 +171,6 @@ export default {
//获取公司Id,保存到本地,支付等逻辑需要入口companyId
this
.
$commonjs
.
getCompanyId
(
option
)
let
token
=
uni
.
getStorageSync
(
'token'
)
||
''
uni
.
setStorageSync
(
'companyId'
,
companyId
)
if
(
token
){
uni
.
getLocation
({
type
:
'wgs84'
,
...
...
pages/scenic/scenicChooseProduct/scenicChooseProduct.vue
View file @
bcc9dc38
<
template
>
<view
class=
"wrap"
>
<view
class=
"banner"
>
<u-swiper
:list=
"imgList"
name=
'url'
mode=
"number"
height=
"420"
indicator-pos=
"topRight"
></u-swiper>
<u-swiper
:list=
"imgList"
name=
"url"
mode=
"number"
height=
"420"
indicator-pos=
"topRight"
></u-swiper>
</view>
<view
class=
"middle"
>
<view
class=
"tabbar"
>
<text
v-for=
"(item,
index) in tabbar"
:key=
'index'
@
click=
"tabbarChange(index)"
:class=
"
{'on':active==index
}">
{{
item
}}
<text
v-for=
"(item,
index) in tabbar"
:key=
"index"
@
click=
"tabbarChange(index)"
:class=
"
{ on: active == index
}">
{{
item
}}
</text>
</view>
<swiper
:current=
"active"
@
animationfinish=
"animationfinish"
class=
"swiper-box"
>
<swiper
:current=
"active"
@
animationfinish=
"animationfinish"
class=
"swiper-box"
>
<swiper-item
class=
"swiper-item"
>
<scroll-view
scroll-y
style=
"height:
100%;width: 100%;
"
>
<checkbox-group
@
change=
"checkboxChange"
>
<view
class=
"merchant"
v-for=
"(item,index) in scenicList"
:key=
'index'
>
<view
class=
"merchant-title"
>
<view
class=
"title-left"
>
<text
>
{{
item
.
name
}}
</text>
<template
v-if=
"item.couponVoList&&item.couponVoList.length>
0"
>
<image
src=
"../../..
/static/img/scenic/coupon.png"
></image>
<text
class=
"title-coupon"
>
劵惠
</text
>
</
template
>
<scroll-view
scroll-y
style=
"height:
100%; width: 100%
"
>
<checkbox-group
@
change=
"checkboxChange"
>
<view
class=
"merchant"
v-for=
"(item, index) in scenicList"
:key=
"index"
>
<view
class=
"merchant-title"
>
<view
class=
"title-left"
>
<text>
{{
item
.
name
}}
</text>
<template
v-if=
"item.couponVoList && item.couponVoList.length >
0"
>
<image
src=
"@
/static/img/scenic/coupon.png"
></image>
<text
class=
"title-coupon"
>
劵惠
</text
>
</
template
>
</view
>
<view
v-if=
"showDistance"
class=
"title-right"
>
距您{{ item.distance ? parseFloat((item.distance / 1000).toFixed(2)) : 0 }}km
</view>
</view>
<view
v-if=
"showDistance"
class=
"title-right"
>
距您{{item.distance?parseFloat((item.distance/1000).toFixed(2)):0}}km
</view>
</view>
<label
v-for=
"(items,a) in item.productListCopy"
:key=
'a'
:class=
"{'off':items.status==2}"
>
<view
class=
"product"
:class=
"{'on':items.ifChangeBg}"
>
<label
v-for=
"(items, a) in item.productListCopy"
:key=
"a"
:class=
"{ off: items.status == 2 }"
>
<view
class=
"product"
:class=
"{ on: items.ifChangeBg }"
>
<view
class=
"product-left"
>
<checkbox
style=
"transform:scale(0.8)"
class=
"blue"
:disabled=
"items.status==2"
:value=
"JSON.stringify(items)"
:checked=
"items.ifChecked"
/>
<checkbox
style=
"transform: scale(0.8)"
class=
"blue"
:disabled=
"items.status == 2"
:value=
"JSON.stringify(items)"
:checked=
"items.ifChecked"
/>
</view>
<view
class=
"product-right"
>
<view
class=
"product-name"
>
<text>
{{
items.name
}}
</text>
<text
class=
"product-status"
v-if=
'items.status==2'
>
{{items.statusName
}}
</text>
<text>
{{
items.name
}}
</text>
<text
class=
"product-status"
v-if=
"items.status == 2"
>
{{ items.statusName
}}
</text>
</view>
<view
class=
"product-price"
>
<view
style=
"font-size: 24rpx
;
"
>
<view
style=
"font-size: 24rpx"
>
<text
class=
"product-rule"
v-if=
"items.productRefundRuleVo"
>
<text
v-if=
"items.productRefundRuleVo.refundType
==
0"
>
不可退
</text>
<text
v-if=
"items.productRefundRuleVo.refundType
==
1"
>
规定时间退
</text>
<text
v-if=
"items.productRefundRuleVo.refundType
==
2"
>
随时可退
</text>
<text
v-if=
"items.productRefundRuleVo.refundType
==
0"
>
不可退
</text>
<text
v-if=
"items.productRefundRuleVo.refundType
==
1"
>
规定时间退
</text>
<text
v-if=
"items.productRefundRuleVo.refundType
==
2"
>
随时可退
</text>
</text>
<text
class=
"product-rule"
>
无需取票
</text>
<text
@
click=
"showBuyKnow(items)"
>
购买须知
</text>
<text
class=
"product-rule"
>
无需取票
</text>
<text
@
click=
"showBuyKnow(items)"
>
购买须知
</text>
<u-icon
name=
"arrow-right"
></u-icon>
</view>
<view>
<text
class=
"product-orange"
>
¥{{items.originalPrice}}
</text>
<text
class=
"product-sell"
>
<text
style=
"font-size: 28rpx;"
>
¥
</text>
{{items.sellingPrice}}
</text>
<text
class=
"product-orange"
>
¥{{ items.originalPrice }}
</text>
<text
class=
"product-sell"
>
<text
style=
"font-size: 28rpx"
>
¥
</text>
{{ items.sellingPrice }}
</text>
</view>
</view>
</view>
</view>
</label>
<view
class=
"product-more"
v-if=
"index>0&&item.productList.length>2"
>
<view
v-if=
"item.productListCopy.length!=item.productList.length"
@
click=
"showMoreProduct(item)"
>
更多
<u-icon
name=
'arrow-down'
></u-icon>
</view>
<view
v-else
@
click=
"retractProduct(item)"
>
收起
<u-icon
name=
'arrow-up'
></u-icon>
<view
class=
"product-more"
v-if=
"index > 0 && item.productList.length > 2"
>
<view
v-if=
"item.productListCopy.length != item.productList.length"
@
click=
"showMoreProduct(item)"
>
更多
<u-icon
name=
"arrow-down"
></u-icon>
</view>
<view
v-else
@
click=
"retractProduct(item)"
>
收起
<u-icon
name=
"arrow-up"
></u-icon>
</view>
</view>
</view>
</view>
</checkbox-group>
<u-empty
text=
"空空如也..."
mode=
"list"
v-if=
"scenicList.length==0"
></u-empty>
</checkbox-group>
<u-empty
text=
"空空如也..."
mode=
"list"
v-if=
"scenicList.length == 0"
></u-empty>
</scroll-view>
</swiper-item>
<swiper-item
class=
"swiper-item"
>
<u-empty
text=
"空空如也2..."
mode=
"list"
></u-empty>
</swiper-item>
<swiper-item
class=
"swiper-item"
>
<u-empty
text=
"空空如也3..."
mode=
"list"
></u-empty>
</swiper-item>
...
...
@@ -101,22 +96,20 @@
</view>
<view
class=
"bottom"
>
<view
class=
"bottom-left"
@
click=
"showCustomer()"
>
<u-icon
name=
'chat'
size=
'36'
style=
"margin-right: 8rpx;position: relative;top: 2rpx;
"
></u-icon>
<u-icon
name=
"chat"
size=
"36"
style=
"margin-right: 8rpx; position: relative; top: 2rpx
"
></u-icon>
客服
</view>
<view
class=
"bottom-middle"
>
<view
class=
"bottom-more"
v-show=
"chooseProduct.length
>
0"
>
<view
class=
"bottom-more"
v-show=
"chooseProduct.length
>
0"
>
组合购更优惠
<text
class=
"bottom-three"
></text>
</view>
<view
class=
"bottom-detail"
@
click=
"showDetail()"
:style=
"{'top':chooseProduct.length>0?'-28rpx':'0'}"
>
<text>
明细
</text>
<u-icon
name=
'arrow-up'
size=
'32'
style=
"margin: 0 8rpx;"
></u-icon>
<view
class=
"bottom-detail"
@
click=
"showDetail()"
:style=
"{ top: chooseProduct.length > 0 ? '-28rpx' : '0' }"
>
<text>
明细
</text>
<u-icon
name=
"arrow-up"
size=
"32"
style=
"margin: 0 8rpx"
></u-icon>
<text
class=
"bottom-number"
>
{{
chooseProduct.length
}}
{{
chooseProduct.length
}}
</text>
</view>
</view>
...
...
@@ -125,315 +118,314 @@
</view>
</view>
<!-- 客服组件 -->
<customer
:scenicList=
'scenicList'
ref=
'customer'
></customer>
<customer
:scenicList=
"scenicList"
ref=
"customer"
></customer>
<!-- 购买须知 -->
<buyKnow
:buyKnowData=
'buyKnowData'
ref=
'buyKnow'
></buyKnow>
<buyKnow
:buyKnowData=
"buyKnowData"
ref=
"buyKnow"
></buyKnow>
<!-- 详情明细 -->
<detail
:chooseProduct=
'chooseProduct'
ref=
'detail'
></detail>
<detail
:chooseProduct=
"chooseProduct"
ref=
"detail"
></detail>
<!-- 模态框 -->
<u-modal
v-model=
"showModal"
@
confirm=
"chooseConfirm"
@
cancel=
'chooseCancel'
title=
'提示'
content=
'该产品不支持多选'
show-cancel-button=
true
>
<u-modal
v-model=
"showModal"
@
confirm=
"chooseConfirm"
@
cancel=
"chooseCancel"
title=
"提示"
content=
"该产品不支持多选"
show-cancel-button=
"true"
>
</u-modal>
</view>
</template>
<
script
>
import
customer
from
'@/components/customer.vue'
//客服
import
buyKnow
from
'@/components/buyKnow.vue'
//购买须知
import
detail
from
'./components/detail.vue'
//购买须知
import
customer
from
'@/components/customer.vue'
//客服
import
buyKnow
from
'@/components/buyKnow.vue'
//购买须知
import
detail
from
'./components/detail.vue'
//购买须知
export
default
{
components
:{
components
:
{
customer
,
buyKnow
,
detail
},
data
()
{
return
{
merchantId
:
''
,
//商户Id
merchantId
:
''
,
//商户Id
// tabbar:['热门景点','一日游','摄影/旅拍','文创DIY'],//tabbar标题列表
tabbar
:[
'热门景点'
,
'一日游'
,
'摄影/旅拍'
],
//tabbar标题列表
active
:
0
,
//导航栏下标
imgList
:[],
//图片列表
scenicList
:[],
//景区数据
showDistance
:
false
,
//定位成功显示距离
buyKnowData
:
''
,
//购买须知数据
chooseProduct
:[],
//选中的产品
showModal
:
false
,
//是否显示模态框
chooseMerchantProduct
:
''
,
//不支持多产品购买时,选中的景区产品
groupId
:
''
,
//组合Id
groupChannelId
:
''
,
//组合渠道Id
tabbar
:
[
'热门景点'
,
'一日游'
,
'摄影/旅拍'
],
//tabbar标题列表
active
:
0
,
//导航栏下标
imgList
:
[],
//图片列表
scenicList
:
[],
//景区数据
showDistance
:
false
,
//定位成功显示距离
buyKnowData
:
''
,
//购买须知数据
chooseProduct
:
[],
//选中的产品
showModal
:
false
,
//是否显示模态框
chooseMerchantProduct
:
''
,
//不支持多产品购买时,选中的景区产品
groupId
:
''
,
//组合Id
groupChannelId
:
''
,
//组合渠道Id
channelType
:
0
//渠道类型
}
},
watch
:
{
//选中产品的数量变化
chooseProduct
:
{
handler
(
newValue
,
oldValue
)
{
chooseProduct
:
{
handler
(
newValue
,
oldValue
)
{
//当选中产品时
if
(
newValue
.
length
>
oldValue
.
length
)
{
if
(
newValue
.
length
>
oldValue
.
length
)
{
//找到当前选中的产品
let
product
=
newValue
[
newValue
.
length
-
1
]
let
product
=
newValue
[
newValue
.
length
-
1
]
//商家一级
let
merchant
=
''
let
merchant
=
''
//通过产品一级找到商家一级
this
.
scenicList
.
forEach
(
item
=>
{
if
(
item
.
id
==
product
.
merchantId
)
{
merchant
=
item
this
.
scenicList
.
forEach
(
item
=>
{
if
(
item
.
id
==
product
.
merchantId
)
{
merchant
=
item
}
})
//当选中产品的景区有2个以上选中产品时
let
number
=
0
this
.
chooseProduct
.
forEach
(
item
=>
{
if
(
merchant
.
id
==
item
.
merchantId
)
{
number
+=
1
let
number
=
0
this
.
chooseProduct
.
forEach
(
item
=>
{
if
(
merchant
.
id
==
item
.
merchantId
)
{
number
+=
1
}
})
if
(
product
.
isMoreBuy
!==
0
)
{
if
(
number
>
1
)
{
if
(
product
.
isMoreBuy
!==
0
)
{
if
(
number
>
1
)
{
//显示确认弹窗
this
.
showModal
=
true
this
.
showModal
=
true
//当前选中的景区产品,用于确定以及取消方法取值
this
.
chooseMerchantProduct
=
product
}
}
else
{
this
.
chooseMerchantProduct
=
product
}
}
else
{
//支持多产品购买时,删除该景区其他产品不支持多产品购买的产品
this
.
chooseProduct
.
forEach
((
item
,
index
)
=>
{
if
(
merchant
.
id
==
item
.
merchantId
&&
item
.
isMoreBuy
!==
0
)
{
this
.
chooseProduct
.
forEach
((
item
,
index
)
=>
{
if
(
merchant
.
id
==
item
.
merchantId
&&
item
.
isMoreBuy
!==
0
)
{
//取消选中状态和选中背景颜色
this
.
scenicList
.
forEach
(
item2
=>
{
item2
.
productList
.
forEach
(
item3
=>
{
if
(
item
.
id
==
item3
.
id
)
{
item3
.
ifChecked
=
false
item3
.
ifChangeBg
=
false
}
})
this
.
scenicList
.
forEach
(
item2
=>
{
item2
.
productList
.
forEach
(
item3
=>
{
if
(
item
.
id
==
item3
.
id
)
{
item3
.
ifChecked
=
false
item3
.
ifChangeBg
=
false
}
})
})
delete
this
.
chooseProduct
[
index
]
}
})
this
.
chooseProduct
=
this
.
chooseProduct
.
filter
(
function
(
val
)
{
return
val
this
.
chooseProduct
=
this
.
chooseProduct
.
filter
(
function
(
val
)
{
return
val
})
}
}
},
deep
:
true
,
immediate
:
false
},
},
deep
:
true
,
immediate
:
false
}
},
onLoad
(
option
){
onLoad
(
option
)
{
//获取公司Id,保存到本地,支付等逻辑需要入口companyId
this
.
$commonjs
.
getCompanyId
(
option
)
this
.
merchantId
=
option
.
merchantId
||
''
this
.
channelType
=
option
.
channelType
||
0
this
.
merchantId
=
option
.
merchantId
||
''
let
token
=
uni
.
getStorageSync
(
'token'
)
if
(
token
)
{
uni
.
getLocation
({
type
:
'wgs84'
,
success
:
res
=>
{
let
latitude
=
res
.
latitude
//纬度
let
longitude
=
res
.
longitude
//经度
this
.
showDistance
=
true
this
.
initList
(
latitude
,
longitude
)
},
fail
:
res
=>
{
let
latitude
=
''
let
longitude
=
''
this
.
initList
(
latitude
,
longitude
)
}
})
if
(
token
)
{
uni
.
getLocation
({
type
:
'wgs84'
,
success
:
res
=>
{
let
latitude
=
res
.
latitude
//纬度
let
longitude
=
res
.
longitude
//经度
this
.
showDistance
=
true
this
.
initList
(
latitude
,
longitude
)
},
fail
:
res
=>
{
let
latitude
=
''
let
longitude
=
''
this
.
initList
(
latitude
,
longitude
)
}
})
}
},
methods
:{
methods
:
{
//---导航栏切换
tabbarChange
(
index
){
this
.
active
=
index
tabbarChange
(
index
)
{
this
.
active
=
index
},
//---swiper滑动结束,分别设置tabs和swiper的状态
animationfinish
(
e
)
{
let
current
=
e
.
detail
.
current
this
.
active
=
current
let
current
=
e
.
detail
.
current
this
.
active
=
current
},
//---展示客服组件
showCustomer
(){
this
.
$refs
.
customer
.
showPop
=
true
showCustomer
()
{
this
.
$refs
.
customer
.
showPop
=
true
},
//---展示购买须知
showBuyKnow
(
data
){
this
.
buyKnowData
=
data
this
.
$refs
.
buyKnow
.
showPop
=
true
showBuyKnow
(
data
)
{
this
.
buyKnowData
=
data
this
.
$refs
.
buyKnow
.
showPop
=
true
},
//---展示明细弹窗
showDetail
(){
this
.
$refs
.
detail
.
showPop
=
true
showDetail
()
{
this
.
$refs
.
detail
.
showPop
=
true
},
//---展示更多产品
showMoreProduct
(
item
){
item
.
productListCopy
=
item
.
productList
showMoreProduct
(
item
)
{
item
.
productListCopy
=
item
.
productList
this
.
$forceUpdate
()
},
//---收起产品
retractProduct
(
item
){
item
.
productListCopy
=
item
.
productList
.
slice
(
0
,
2
)
retractProduct
(
item
)
{
item
.
productListCopy
=
item
.
productList
.
slice
(
0
,
2
)
this
.
$forceUpdate
()
},
//---多选框变化
checkboxChange
(
e
){
let
value
=
e
.
detail
.
value
let
arr
=
[]
value
.
forEach
(
item
=>
{
arr
.
push
(
JSON
.
parse
(
item
))
checkboxChange
(
e
)
{
let
value
=
e
.
detail
.
value
let
arr
=
[]
value
.
forEach
(
item
=>
{
arr
.
push
(
JSON
.
parse
(
item
))
})
this
.
chooseProduct
=
arr
this
.
chooseProduct
=
arr
//判断是否选中产品,选中产品的背景颜色需要变化
this
.
scenicList
.
forEach
(
item
=>
{
item
.
productList
.
forEach
(
item2
=>
{
item2
.
ifChangeBg
=
false
this
.
chooseProduct
.
forEach
(
item3
=>
{
if
(
item2
.
id
==
item3
.
id
)
{
item2
.
ifChangeBg
=
true
this
.
scenicList
.
forEach
(
item
=>
{
item
.
productList
.
forEach
(
item2
=>
{
item2
.
ifChangeBg
=
false
this
.
chooseProduct
.
forEach
(
item3
=>
{
if
(
item2
.
id
==
item3
.
id
)
{
item2
.
ifChangeBg
=
true
//解决是否支持多产品购买弹窗2次之后,选中状态错误bug,需要在选中时修改状态
item2
.
ifChecked
=
true
item2
.
ifChecked
=
true
}
})
})
})
},
//---不支持多选产品,选择确定事件
chooseConfirm
(){
this
.
chooseProduct
.
forEach
((
item
,
index
)
=>
{
//删除选中产品以外的其他所有产品
if
(
this
.
chooseMerchantProduct
.
merchantId
==
item
.
merchantId
&&
JSON
.
stringify
(
item
)
!=
JSON
.
stringify
(
this
.
chooseMerchantProduct
))
{
chooseConfirm
()
{
this
.
chooseProduct
.
forEach
((
item
,
index
)
=>
{
//删除选中产品以外的其他所有产品
if
(
this
.
chooseMerchantProduct
.
merchantId
==
item
.
merchantId
&&
JSON
.
stringify
(
item
)
!=
JSON
.
stringify
(
this
.
chooseMerchantProduct
))
{
//取消选中状态和选中背景颜色
this
.
scenicList
.
forEach
(
item2
=>
{
item2
.
productList
.
forEach
(
item3
=>
{
if
(
item
.
id
==
item3
.
id
)
{
item3
.
ifChecked
=
false
item3
.
ifChangeBg
=
false
this
.
scenicList
.
forEach
(
item2
=>
{
item2
.
productList
.
forEach
(
item3
=>
{
if
(
item
.
id
==
item3
.
id
)
{
item3
.
ifChecked
=
false
item3
.
ifChangeBg
=
false
}
})
})
delete
this
.
chooseProduct
[
index
]
}
})
this
.
chooseProduct
=
this
.
chooseProduct
.
filter
(
function
(
val
)
{
return
val
})
this
.
showModal
=
false
delete
this
.
chooseProduct
[
index
]
}
})
this
.
chooseProduct
=
this
.
chooseProduct
.
filter
(
function
(
val
)
{
return
val
})
this
.
showModal
=
false
},
//---不支持多选产品,选择取消事件
chooseCancel
(){
//删除选中产品
this
.
chooseProduct
.
forEach
((
item
,
index
)
=>
{
if
(
item
.
id
===
this
.
chooseMerchantProduct
.
id
)
{
chooseCancel
()
{
//删除选中产品
this
.
chooseProduct
.
forEach
((
item
,
index
)
=>
{
if
(
item
.
id
===
this
.
chooseMerchantProduct
.
id
)
{
//取消选中状态和选中背景颜色
this
.
scenicList
.
forEach
(
item2
=>
{
item2
.
productList
.
forEach
(
item3
=>
{
if
(
item
.
id
==
item3
.
id
)
{
item3
.
ifChecked
=
false
item3
.
ifChangeBg
=
false
}
})
this
.
scenicList
.
forEach
(
item2
=>
{
item2
.
productList
.
forEach
(
item3
=>
{
if
(
item
.
id
==
item3
.
id
)
{
item3
.
ifChecked
=
false
item3
.
ifChangeBg
=
false
}
})
})
this
.
chooseProduct
.
splice
(
index
,
1
)
}
})
this
.
showModal
=
false
this
.
chooseProduct
.
splice
(
index
,
1
)
}
})
this
.
showModal
=
false
},
//---商品列表
initList
(
latitude
,
longitude
)
{
let
data
=
{
merchantId
:
this
.
merchantId
,
//商户id
openid
:
uni
.
getStorageSync
(
'openid'
)
||
''
,
initList
(
latitude
,
longitude
)
{
let
data
=
{
merchantId
:
this
.
merchantId
,
//商户id
openid
:
uni
.
getStorageSync
(
'openid'
)
||
''
,
channelType
:
this
.
channelType
,
//渠道类型
latitude
,
longitude
}
this
.
$request
(
'/scenic/groupGood/getGroupProducts'
,
data
).
then
(
res
=>
{
if
(
res
.
code
==
'00'
)
{
this
.
scenicList
=
res
.
data
.
merchantList
||
[]
this
.
groupId
=
res
.
data
.
groupId
||
''
this
.
groupChannelId
=
res
.
data
.
groupChannelId
||
''
this
.
scenicList
.
forEach
((
item
,
index
)
=>
{
}
this
.
$request
(
'/scenic/groupGood/getGroupProducts'
,
data
).
then
(
res
=>
{
if
(
res
.
code
==
'00'
)
{
this
.
scenicList
=
res
.
data
.
merchantList
||
[]
this
.
groupId
=
res
.
data
.
groupId
||
''
this
.
groupChannelId
=
res
.
data
.
groupChannelId
||
''
this
.
scenicList
.
forEach
((
item
,
index
)
=>
{
//获取当前景区图片,把当前景区放在第一位
if
(
item
.
id
==
this
.
merchantId
)
{
this
.
imgList
=
item
.
imgList
this
.
scenicList
.
splice
(
index
,
1
)
if
(
item
.
id
==
this
.
merchantId
)
{
this
.
imgList
=
item
.
imgList
this
.
scenicList
.
splice
(
index
,
1
)
this
.
scenicList
.
unshift
(
item
)
item
.
productListCopy
=
item
.
productList
}
else
{
item
.
productListCopy
=
item
.
productList
.
slice
(
0
,
2
)
item
.
productListCopy
=
item
.
productList
}
else
{
item
.
productListCopy
=
item
.
productList
.
slice
(
0
,
2
)
}
//预订时间为当天时,当前时间大于最早预订时间显示未开售,当前时间大于最晚预订时间显示已售罄
let
times
=
new
Date
().
Format
(
'hh:mm:ss'
)
let
timeNumber
=
parseInt
(
this
.
$commonjs
.
changeTime
(
times
))
//将当前时间转化为数字
item
.
productList
.
forEach
(
item2
=>
{
item2
.
timeNumber1
=
parseInt
(
this
.
$commonjs
.
changeTime
(
item2
.
earlyBookTime
))
item2
.
timeNumber2
=
parseInt
(
this
.
$commonjs
.
changeTime
(
item2
.
bookTime
))
if
(
item2
.
aheadBookDays
==
0
)
{
if
(
item2
.
status
==
2
)
{
item2
.
statusName
=
'已售罄'
}
else
{
if
(
timeNumber
<
item2
.
timeNumber1
)
{
item2
.
status
=
2
item2
.
statusName
=
'未开售'
}
if
(
timeNumber
>
item2
.
timeNumber2
)
{
item2
.
status
=
2
item2
.
statusName
=
'已售罄'
}
}
}
item
.
productList
.
forEach
(
item2
=>
{
item2
.
timeNumber1
=
parseInt
(
this
.
$commonjs
.
changeTime
(
item2
.
earlyBookTime
))
item2
.
timeNumber2
=
parseInt
(
this
.
$commonjs
.
changeTime
(
item2
.
bookTime
))
if
(
item2
.
aheadBookDays
==
0
)
{
if
(
item2
.
status
==
2
)
{
item2
.
statusName
=
'已售罄'
}
else
{
if
(
timeNumber
<
item2
.
timeNumber1
)
{
item2
.
status
=
2
item2
.
statusName
=
'未开售'
}
if
(
timeNumber
>
item2
.
timeNumber2
)
{
item2
.
status
=
2
item2
.
statusName
=
'已售罄'
}
}
}
})
})
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
},
//---跳转填写订单页面
goFillorder
(){
goFillorder
()
{
for
(
let
i
=
0
;
i
<
this
.
chooseProduct
.
length
;
i
++
)
{
let
item
=
this
.
chooseProduct
[
i
]
if
(
item
.
status
==
2
)
{
let
item
=
this
.
chooseProduct
[
i
]
if
(
item
.
status
==
2
)
{
uni
.
showToast
({
title
:
'售罄产品不能进行购买'
,
icon
:
'none'
title
:
'售罄产品不能进行购买'
,
icon
:
'none'
})
return
}
return
}
}
if
(
this
.
chooseProduct
.
length
==
0
)
{
uni
.
showToast
({
title
:
'请选择至少一个产品'
,
icon
:
'none'
title
:
'请选择至少一个产品'
,
icon
:
'none'
})
return
return
}
else
if
(
this
.
chooseProduct
.
length
==
1
)
{
let
query
=
'?merchantId='
+
this
.
chooseProduct
[
0
].
merchantId
+
'&productId='
+
this
.
chooseProduct
[
0
].
id
+
'&orderSource=3'
if
(
this
.
chooseProduct
[
0
].
ticketType
==
2
){
//联票
let
query
=
'?merchantId='
+
this
.
chooseProduct
[
0
].
merchantId
+
'&productId='
+
this
.
chooseProduct
[
0
].
id
+
'&orderSource=3'
if
(
this
.
chooseProduct
[
0
].
ticketType
==
2
)
{
//联票
uni
.
navigateTo
({
url
:
'/pages/scenic/scenicJointOrder/scenicJointOrder'
+
query
})
}
else
{
//普通票
uni
.
navigateTo
({
url
:
'/pages/scenic/scenicJointOrder/scenicJointOrder'
+
query
url
:
'/pages/scenic/scenicSingleOrder/scenicSingleOrder'
+
query
})
}
else
{
//普通票
uni
.
navigateTo
({
url
:
'/pages/scenic/scenicSingleOrder/scenicSingleOrder'
+
query
})
}
}
}
else
{
let
productIdList
=
this
.
chooseProduct
.
map
((
item
)
=>
{
return
item
.
id
})
let
query
=
'?productIdList='
+
JSON
.
stringify
(
productIdList
)
+
'&groupId='
+
this
.
groupId
+
'&groupChannelId='
+
this
.
groupChannelId
+
'&orderSource=3'
uni
.
navigateTo
({
url
:
'/pages/combination/combiOrder/combiOrder'
+
query
})
let
productIdList
=
this
.
chooseProduct
.
map
(
item
=>
{
return
item
.
id
})
let
query
=
'?productIdList='
+
JSON
.
stringify
(
productIdList
)
+
'&groupId='
+
this
.
groupId
+
'&groupChannelId='
+
this
.
groupChannelId
+
'&orderSource=3'
uni
.
navigateTo
({
url
:
'/pages/combination/combiOrder/combiOrder'
+
query
})
}
}
}
...
...
@@ -441,13 +433,13 @@ export default {
</
script
>
<
style
lang=
"scss"
scoped
>
.wrap
{
.wrap
{
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
background
:
#fff
;
}
.middle
{
.middle
{
position
:
relative
;
top
:
-40rpx
;
padding
:
0
24rpx
60rpx
24rpx
;
...
...
@@ -455,91 +447,91 @@ export default {
flex-direction
:
column
;
flex
:
1
;
}
.swiper-box
{
.swiper-box
{
flex
:
1
;
}
.tabbar
{
.tabbar
{
background
:
#fff
;
border-radius
:
16rpx
;
display
:
flex
;
justify-content
:
space-between
;
font-size
:
32rpx
;
text
{
padding
:
24rpx
32rpx
24rpx
20rpx
;
text
{
padding
:
24rpx
32rpx
24rpx
20rpx
;
border-radius
:
16rpx
;
}
}
.tabbar
.on
{
.tabbar
.on
{
background
:
url('../../../static/img/scenic/tabbar.png')
no-repeat
;
background-size
:
100%
100%
;
color
:
#fff
;
font-weight
:
bold
;
}
.merchant
{
.merchant
{
border-radius
:
16rpx
;
background
:
#
FFFFFF
;
box-shadow
:
0px
0px
8px
2px
rgba
(
0
,
0
,
0
,
0
.08
);
background
:
#
ffffff
;
box-shadow
:
0px
0px
8px
2px
rgba
(
0
,
0
,
0
,
0
.08
);
margin-top
:
24rpx
;
padding
:
24rpx
;
}
.merchant
label
.off
.product
{
background
:
#
F3F3F
3
;
.merchant
label
.off
.product
{
background
:
#
f3f3f
3
;
}
.merchant-title
{
.merchant-title
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding-bottom
:
16rpx
;
}
.title-left
{
.title-left
{
font-size
:
32rpx
;
margin-right
:
10rpx
;
font-weight
:
bold
;
image
{
image
{
width
:
36rpx
;
height
:
36rpx
;
position
:
relative
;
top
:
6rpx
;
margin
:
0
8rpx
;
margin
:
0
8rpx
;
}
}
.title-coupon
{
.title-coupon
{
color
:
$red
;
font-size
:
24rpx
;
}
.title-right
{
.title-right
{
color
:
$grey
;
font-size
:
24rpx
;
}
.product
{
padding
:
10rpx
16rpx
;
.product
{
padding
:
10rpx
16rpx
;
background
:
#ffffff
;
border-radius
:
8rpx
;
display
:
flex
;
align-items
:
center
;
margin-top
:
10rpx
;
}
.product.on
{
background
:
#
E2EEFF
;
.product.on
{
background
:
#
e2eeff
;
}
.product-left
{
.product-left
{
margin-right
:
10rpx
;
}
.product-right
{
.product-right
{
flex
:
1
;
}
.product-name
{
.product-name
{
font-size
:
28rpx
;
font-weight
:
bold
;
color
:
#191919
;
display
:
flex
;
justify-content
:
space-between
;
}
.product-status
{
.product-status
{
padding
:
6rpx
12rpx
;
border
:
2px
solid
#
F
40000
;
border
:
2px
solid
#
f
40000
;
background
:
#ffffff
;
color
:
#
F
40000
;
color
:
#
f
40000
;
font-size
:
24rpx
;
border-radius
:
4rpx
;
transform
:
rotate
(
-25deg
);
...
...
@@ -547,15 +539,15 @@ export default {
top
:
30rpx
;
right
:
80rpx
;
}
.product-price
{
.product-price
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
.product-rule
{
.product-rule
{
color
:
$blue
;
}
.
product-rule
:
:
after
{
.
product-rule
:
:
after
{
display
:
inline-block
;
content
:
''
;
height
:
22rpx
;
...
...
@@ -563,23 +555,23 @@ export default {
background
:
#ccc
;
width
:
1px
;
}
.product-orange
{
.product-orange
{
font-size
:
20rpx
;
color
:
$grey
;
text-decoration
:line-through
;
color
:
$grey
;
text-decoration
:
line-through
;
}
.product-sell
{
.product-sell
{
font-size
:
40rpx
;
color
:
$red
;
font-weight
:
bold
;
margin-left
:
10rpx
;
}
.product-more
{
.product-more
{
padding
:
10rpx
;
text-align
:
center
;
}
.bottom
{
.bottom
{
position
:
fixed
;
bottom
:
0
;
width
:
100%
;
...
...
@@ -592,45 +584,45 @@ export default {
justify-content
:
space-between
;
padding
:
0
32rpx
;
}
.bottom-middle
{
.bottom-middle
{
position
:
relative
;
padding
:
0
40rpx
;
}
.bottom-more
{
.bottom-more
{
position
:
relative
;
top
:
-40rpx
;
background
:
#
F
40000
;
background
:
#
f
40000
;
border-radius
:
28px
;
opacity
:
0
.64
;
padding
:
10rpx
20rpx
;
color
:
#ffffff
;
}
.bottom-three
{
.bottom-three
{
width
:
14rpx
;
height
:
14rpx
;
display
:
inline-block
;
background
:
#
F
40000
;
background
:
#
f
40000
;
opacity
:
0
.64
;
position
:
absolute
;
right
:
42rpx
;
bottom
:
-7rpx
;
transform
:rotate
(
45deg
)
;
transform
:
rotate
(
45deg
);
}
.bottom-detail
{
.bottom-detail
{
position
:
relative
;
text-align
:
center
;
}
.bottom-number
{
.bottom-number
{
display
:
inline-block
;
width
:
36rpx
;
height
:
36rpx
;
border-radius
:
50%
;
text-align
:
center
;
background
:
#
F
40000
;
background
:
#
f
40000
;
color
:
#ffffff
;
font-weight
:
bold
;
}
.btn
{
.btn
{
padding
:
16rpx
48rpx
;
border-radius
:
20rpx
;
font-size
:
32rpx
;
...
...
pages/scenic/scenicProduct/scenicProduct.vue
View file @
bcc9dc38
...
...
@@ -24,24 +24,26 @@ export default {
if
(
this
.
enterUrl
){
//普通二维码扫码进入
let
merchantId
=
this
.
getUrlKey
(
'merchantId'
)
let
companyId
=
this
.
getUrlKey
(
'companyId'
)
let
channelType
=
this
.
getUrlKey
(
'channelType'
)
let
pdOpenid
=
uni
.
getStorageSync
(
'openid'
)
//胖丁小程序openid,临时用,当公众号授权做好之后可以删除
let
pdToken
=
uni
.
getStorageSync
(
'token'
)
let
pdCreateUserId
=
uni
.
getStorageSync
(
'createUserId'
)
let
pdUserId
=
uni
.
getStorageSync
(
'userId'
)
let
baseUrl
=
'https://wx.pangdly.com/#/scenicProduct?pdOpenid='
+
pdOpenid
+
'&pdToken='
+
pdToken
+
'&pdCreateUserId='
+
pdCreateUserId
+
'&pdUserId='
+
pdUserId
let
url
=
'&merchantId='
+
merchantId
+
'&companyId='
+
companyId
let
url
=
'&merchantId='
+
merchantId
+
'&companyId='
+
companyId
+
'&channelType='
+
channelType
this
.
outUrl
=
baseUrl
+
url
}
else
{
//小程序页面跳转进入
let
merchantId
=
option
.
merchantId
||
''
let
companyId
=
option
.
companyId
||
''
let
channelType
=
option
.
channelType
||
0
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
=
'https://wx.pangdly.com/#/scenicProduct?pdOpenid='
+
pdOpenid
+
'&pdToken='
+
pdToken
+
'&pdCreateUserId='
+
pdCreateUserId
+
'&pdUserId='
+
pdUserId
let
url
=
'&merchantId='
+
merchantId
+
'&companyId='
+
companyId
+
'&ifyukuaiCode='
+
ifyukuaiCode
let
url
=
'&merchantId='
+
merchantId
+
'&companyId='
+
companyId
+
'&ifyukuaiCode='
+
ifyukuaiCode
+
'&channelType='
+
channelType
this
.
outUrl
=
baseUrl
+
url
}
},
...
...
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