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
3c2a558a
Commit
3c2a558a
authored
Nov 28, 2023
by
qipeng
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into chargeback
parents
bf4400a5
7a7e3a5b
Changes
25
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
2130 additions
and
2152 deletions
+2130
-2152
App.vue
App.vue
+34
-15
common.js
common/common.js
+4
-1
buyKnow.vue
components/buyKnow.vue
+7
-15
customer.vue
components/customer.vue
+3
-4
merchantDetail.vue
components/merchantDetail.vue
+3
-6
orderCoupon.vue
components/orderCoupon.vue
+141
-82
albumOrderdetail.vue
pages/album/albumOrderdetail/albumOrderdetail.vue
+2
-2
index.vue
pages/indexs/index/index.vue
+1
-1
merchantListIndex.vue
pages/indexs/merchantListIndex/merchantListIndex.vue
+3
-3
numberChoose.vue
pages/my/takeNumber/numberChoose/numberChoose.vue
+1
-1
numberIndex.vue
pages/my/takeNumber/numberIndex/numberIndex.vue
+5
-2
orderPayment.vue
pages/payment/orderPayment/orderPayment.vue
+73
-66
ourPayment.vue
pages/payment/ourPayment/ourPayment.vue
+19
-19
combinationProduct.vue
pages/scenic/combinationProduct/combinationProduct.vue
+2
-2
calendar.vue
pages/scenic/scenicComponents/calendar.vue
+17
-39
chooseArea.vue
pages/scenic/scenicComponents/chooseArea.vue
+81
-93
contactList.vue
pages/scenic/scenicComponents/contactList.vue
+191
-152
detail.vue
pages/scenic/scenicComponents/detail.vue
+83
-124
editContacts.vue
pages/scenic/scenicComponents/editContacts.vue
+133
-142
times.vue
pages/scenic/scenicComponents/times.vue
+88
-96
scenicOrder.vue
pages/scenic/scenicOrder/scenicOrder.vue
+674
-689
uni.scss
uni.scss
+17
-63
u-icon.vue
uview-ui/components/u-icon/u-icon.vue
+81
-82
u-popup.vue
uview-ui/components/u-popup/u-popup.vue
+155
-155
dayjs.js
uview-ui/libs/util/dayjs.js
+312
-298
No files found.
App.vue
View file @
3c2a558a
...
@@ -80,16 +80,7 @@ export default {
...
@@ -80,16 +80,7 @@ export default {
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
@import
"uview-ui/index.scss"
;
@import
"uview-ui/index.scss"
;
/*
1.页面背景颜色#f7f7f7
2.分隔线颜色#DBDBDB
3.正常字体颜色#333333
4.灰色字体颜色#666666或者#999999
5.主题颜色#3688FF
6.正常字体大小28rpx,偏小一点的24rpx
8.页面最外层与里面的第一层为padding:0 12px;
9.css单位为rpx
*/
page
{
page
{
font-size
:
28rpx
;
font-size
:
28rpx
;
color
:
#333333
;
color
:
#333333
;
...
@@ -110,14 +101,42 @@ export default {
...
@@ -110,14 +101,42 @@ export default {
textarea
{
textarea
{
box-sizing
:
border-box
;
box-sizing
:
border-box
;
}
}
.btn
{
//小按钮
background
:
linear-gradient
(
132deg
,
#ED400C
0%
,
#FB862C
100%
);
.btn
{
background
:
#3688FF
;
display
:
inline-block
;
display
:
inline-block
;
color
:
#FFFFFF
;
color
:
#FFFFFF
;
font-size
:
28rpx
;
width
:
135rpx
;
border-radius
:
8rpx
;
height
:
70rpx
;
line-height
:
70rpx
;
font-size
:
28rpx
;
border-radius
:
16rpx
;
text-align
:
center
;
}
//中等按钮
.middle-btn
{
background
:linear-gradient
(
132deg
,
#ED400C
0
%
,
#FB862C
100
%
)
;
display
:
inline-block
;
color
:
#FFFFFF
;
width
:
180rpx
;
height
:
80rpx
;
line-height
:
80rpx
;
font-size
:
32rpx
;
border-radius
:
20rpx
;
text-align
:
center
;
}
//大按钮
.big-btn
{
background
:linear-gradient
(
132deg
,
#ED400C
0
%
,
#FB862C
100
%
)
;
display
:
inline-block
;
color
:
#FFFFFF
;
width
:
240rpx
;
height
:
100rpx
;
line-height
:
100rpx
;
font-size
:
36rpx
;
border-radius
:
28rpx
;
text-align
:
center
;
text-align
:
center
;
padding
:
10rpx
20rpx
;
font-weight
:
bold
;
}
}
/*单行溢出*/
/*单行溢出*/
...
...
common/common.js
View file @
3c2a558a
...
@@ -96,11 +96,14 @@ export default{
...
@@ -96,11 +96,14 @@ export default{
return
d
*
(
1
+
fl
*
(
h1
*
sf
*
(
1
-
sg
)
-
h2
*
(
1
-
sf
)
*
sg
))
return
d
*
(
1
+
fl
*
(
h1
*
sf
*
(
1
-
sg
)
-
h2
*
(
1
-
sf
)
*
sg
))
},
},
phoneReg
:
function
(){
//手机正则
phoneReg
:
function
(){
//手机正则
return
/^
(
13
[
0-9
]
|14
[
0-9
]
|15
[
0-9
]
|18
[
0-9
]
|17
[
0-9
]
|19
[
0-9
]
|16
[
0-9
])\d{8}
$/
return
/^
(
13
[
0-9
]
|14
[
0-9
]
|15
[
0-9
]
|18
[
0-9
]
|17
[
0-9
]
|19
[
0-9
]
|16
[
0-9
]
|12
[
0-9
]
)\d{8}
$/
},
},
idReg
:
function
(){
//身份证正则
idReg
:
function
(){
//身份证正则
return
/^
[
1-9
]\d{5}[
1-9
]\d{3}((
0
\d)
|
(
1
[
0-2
]))(([
0|1|2
]\d)
|3
[
0-1
])\d{3}([
0-9
]
|X|x
)
$/
return
/^
[
1-9
]\d{5}[
1-9
]\d{3}((
0
\d)
|
(
1
[
0-2
]))(([
0|1|2
]\d)
|3
[
0-1
])\d{3}([
0-9
]
|X|x
)
$/
},
},
nameReg
:
function
(){
//中文名字正则
return
/^
[\u
4E00-
\u
9FA5
]{2,40}
$/
},
getUrlKey
:
function
(
name
,
url
){
//通过连接地址获取参数值
getUrlKey
:
function
(
name
,
url
){
//通过连接地址获取参数值
return
(
new
RegExp
(
'[?|&]'
+
name
+
'='
+
'([^&;]+?)(&|#|;|$)'
).
exec
(
decodeURIComponent
(
url
))
||
[,
''
])[
1
].
replace
(
/
\+
/g
,
'%20'
)
||
''
return
(
new
RegExp
(
'[?|&]'
+
name
+
'='
+
'([^&;]+?)(&|#|;|$)'
).
exec
(
decodeURIComponent
(
url
))
||
[,
''
])[
1
].
replace
(
/
\+
/g
,
'%20'
)
||
''
},
},
...
...
components/buyKnow.vue
View file @
3c2a558a
<
template
>
<
template
>
<u-popup
:show=
"showPop"
:round=
"20"
@
close=
"showPop=false"
>
<u-popup
:show=
"showPop"
:round=
"20"
@
close=
"showPop=false"
closeable
>
<view
class=
"son-wrap"
>
<view
class=
"son-wrap"
>
<view
class=
"head"
>
<view
class=
"head"
>
<view
class=
"head1"
>
<view
class=
"head1"
>
<view
style=
"flex: 1;text-align: center;"
>
购买须知
购买须知
</view>
<u-icon
name=
"close"
@
click=
"showPop=false"
></u-icon>
</view>
</view>
<view
class=
"head2"
>
<view
class=
"head2"
>
{{
buyKnowData
.
name
}}
{{
buyKnowData
.
name
}}
...
@@ -20,7 +17,7 @@
...
@@ -20,7 +17,7 @@
<view
style=
"flex: 1;overflow-y: scroll;"
>
<view
style=
"flex: 1;overflow-y: scroll;"
>
<view
class=
"middle"
>
<view
class=
"middle"
>
<view
class=
"middle-list"
v-for=
"(item,a) of buyKnowData.productTitle
ResVos
"
:key=
"a"
>
<view
class=
"middle-list"
v-for=
"(item,a) of buyKnowData.productTitle
Data
"
:key=
"a"
>
<view
class=
"middle-title"
>
<view
class=
"middle-title"
>
{{
item
.
title
}}
{{
item
.
title
}}
</view>
</view>
...
@@ -45,7 +42,7 @@
...
@@ -45,7 +42,7 @@
¥
<text>
{{
buyKnowData
.
sellingPrice
}}
</text>
¥
<text>
{{
buyKnowData
.
sellingPrice
}}
</text>
</text>
</text>
<view
class=
"bottom-right"
>
<view
class=
"bottom-right"
>
<text
class=
"btn"
@
click=
"showPop=false"
>
<text
class=
"
middle-
btn"
@
click=
"showPop=false"
>
去预订
去预订
</text>
</text>
</view>
</view>
...
@@ -71,8 +68,7 @@ export default {
...
@@ -71,8 +68,7 @@ export default {
<
style
scoped=
"scoped"
>
<
style
scoped=
"scoped"
>
.son-wrap
{
.son-wrap
{
position
:
relative
;
height
:
80vh
;
height
:
85vh
;
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
}
}
...
@@ -80,7 +76,7 @@ export default {
...
@@ -80,7 +76,7 @@ export default {
padding
:
0
24
rpx
;
padding
:
0
24
rpx
;
}
}
.head1
{
.head1
{
display
:
flex
;
text-align
:
center
;
font-size
:
32
rpx
;
font-size
:
32
rpx
;
font-weight
:
bold
;
font-weight
:
bold
;
padding
:
30
rpx
0
;
padding
:
30
rpx
0
;
...
@@ -113,8 +109,9 @@ export default {
...
@@ -113,8 +109,9 @@ export default {
}
}
.middle-content
{
.middle-content
{
display
:
flex
;
display
:
flex
;
margin-top
:
3
0
rpx
;
margin-top
:
2
0
rpx
;
position
:
relative
;
position
:
relative
;
line-height
:
52
rpx
;
}
}
.middle-content
>
text
{
.middle-content
>
text
{
color
:
#666666
;
color
:
#666666
;
...
@@ -160,9 +157,4 @@ export default {
...
@@ -160,9 +157,4 @@ export default {
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
}
}
.btn
{
padding
:
16
rpx
48
rpx
;
border-radius
:
20
rpx
;
font-size
:
32
rpx
;
}
</
style
>
</
style
>
components/customer.vue
View file @
3c2a558a
<
template
>
<
template
>
<!-- 客服 -->
<!-- 客服 -->
<u-popup
:show=
"showPop"
:round=
"20"
@
close=
"showPop = false"
>
<u-popup
:show=
"showPop"
:round=
"20"
@
close=
"showPop = false"
closeable
>
<view
class=
"son-wrap"
>
<view
class=
"son-wrap"
>
<view
class=
"title"
>
<view
class=
"title"
>
<view
style=
"flex: 1; text-align: center"
>
客服电话
</view>
客服电话
<u-icon
name=
"close"
@
click=
"showPop = false"
></u-icon>
</view>
</view>
<view
class=
"middle"
>
<view
class=
"middle"
>
<view
class=
"list"
v-for=
"(item, index) in scenicList"
:key=
"index"
@
click=
"makePhone(item.phone)"
>
<view
class=
"list"
v-for=
"(item, index) in scenicList"
:key=
"index"
@
click=
"makePhone(item.phone)"
>
...
@@ -45,7 +44,7 @@ export default {
...
@@ -45,7 +44,7 @@ export default {
flex-direction
:
column
;
flex-direction
:
column
;
}
}
.title
{
.title
{
display
:
flex
;
text-align
:
center
;
font-size
:
32rpx
;
font-size
:
32rpx
;
font-weight
:
bold
;
font-weight
:
bold
;
padding
:
30rpx
;
padding
:
30rpx
;
...
...
components/merchantDetail.vue
View file @
3c2a558a
<
template
>
<
template
>
<!-- 商家详情弹窗 -->
<!-- 商家详情弹窗 -->
<u-popup
:show=
"showPop"
:round=
"20"
@
close=
"showPop=false"
>
<u-popup
:show=
"showPop"
:round=
"20"
@
close=
"showPop=false"
closeable
>
<view
class=
"son-wrap"
>
<view
class=
"son-wrap"
>
<view
class=
"head"
>
<view
class=
"head"
>
<view
class=
"head-name"
>
{{
detailData
.
name
}}
{{
detailData
.
name
}}
</view>
<u-icon
name=
"close"
@
click=
"showPop=false"
></u-icon>
</view>
</view>
<view
style=
"flex: 1;overflow-y: scroll;"
>
<view
style=
"flex: 1;overflow-y: scroll;"
>
<view
v-if=
"detailData.imgList&&detailData.imgList.length>0"
>
<view
v-if=
"detailData.imgList&&detailData.imgList.length>0"
>
...
@@ -166,7 +163,7 @@ export default {
...
@@ -166,7 +163,7 @@ export default {
flex-direction
:column
;
flex-direction
:column
;
}
}
.head
{
.head
{
display
:
flex
;
text-align
:
center
;
font-size
:
32rpx
;
font-size
:
32rpx
;
font-weight
:
bold
;
font-weight
:
bold
;
padding
:
30rpx
;
padding
:
30rpx
;
...
...
components/orderCoupon.vue
View file @
3c2a558a
<
template
>
<
template
>
<!----------------适用于订单选择券的时候展示券列表-------------------------->
<!-- -----------------------适用于下单页面选择券的时候展示券列表-------------------------- -->
<u-popup
:show=
"show"
:round=
"20"
closeable
@
close=
"show=false"
>
<u-popup
:show=
"showPop"
:round=
"20"
closeable
@
close=
"showPop=false"
>
<view
class=
"title"
>
<view
class=
"son-wrap"
>
<view
class=
"titleContent"
v-for=
"(item,index) of navTitle"
:key=
"index"
:class=
"
{on:active==index}" @click="navClick(index)">
<view
class=
"head"
>
<view
style=
"position: relative;top:15rpx;"
>
{{
item
}}
</view>
<view
class=
"headlist"
v-for=
"(item,index) of navTitle"
:key=
"index"
:class=
"
{on:active==index}" @click="navClick(index)">
<view
v-show=
"active==index"
>
<text>
<text></text>
{{
item
}}
</text>
</view>
</view>
</view>
</view>
</view>
<!------------------------------------可用-------------------------------------->
<!----------------------------------------------------可用------------------------------------------>
<view
class=
"middle"
v-if=
"active==0"
>
<view
v-show=
"active==0"
>
<checkbox-group
@
change=
"checkboxChange"
v-if=
"masterSlaveCouponList&&masterSlaveCouponList.length>0"
>
<view
class=
"middle"
>
<view
v-for=
"(item,index) of masterSlaveCouponList"
:key=
"index"
class=
"list-box"
>
<checkbox-group
@
change=
"checkboxChange"
v-if=
"couponList.masterSlaveCouponList&&couponList.masterSlaveCouponList.length>0"
>
<label>
<view
v-for=
"(item,index) of couponList.masterSlaveCouponList"
:key=
"index"
class=
"listBox"
>
<label
class=
"listLabel"
>
<view>
<view>
{{
item
.
couponName
}}
{{
item
.
couponName
}}
<checkbox
:value=
"
item.couponId"
:checked=
"item.couponId==chooseCoupon.couponId
"
/>
<checkbox
:value=
"
JSON.stringify(item)"
:checked=
"item.couponId==chooseCoupon.couponId"
class=
"blue
"
/>
</view>
</view>
<view>
<view>
{{
item
.
couponRule
}}
{{
item
.
couponRule
}}
...
@@ -33,36 +31,37 @@
...
@@ -33,36 +31,37 @@
</label>
</label>
</view>
</view>
</checkbox-group>
</checkbox-group>
<view
class=
"empty"
v-else
>
空空如也...
</view>
</view>
</view>
<!-- -------------------------------不可用-------------------------------- -->
<view
class=
"empty"
v-if=
"!couponList.masterSlaveCouponList||couponList.masterSlaveCouponList.length==0"
>
<view
v-if=
"active==1"
class=
"middle"
>
空空如也...
<view
v-if=
"unusableCouponList&&unusableCouponList.length>0"
>
</view>
<view
v-for=
"(item,index) of unusableCouponList"
:key=
"index"
class=
"list-box"
>
</view>
<view>
{{
item
.
couponName
}}
<!--------------------------------------不可用------------------------------------------------------------>
</view>
<view
v-show=
"active==1"
>
<view>
<view
class=
"middle"
v-if=
"couponList.unusableCouponList&&couponList.unusableCouponList.length>0"
>
{{
item
.
couponRule
}}
<view
v-for=
"(item,index) of couponList.unusableCouponList"
:key=
"index"
class=
"listBox"
>
<text
v-if=
"item.savedMoney"
>
<view>
<text>
¥
</text>
{{
parseFloat
(
item
.
savedMoney
.
toFixed
(
2
))
}}
{{
item
.
couponName
}}
</text>
</view>
</view>
<view>
{{
item
.
couponRule
}}
<view>
<text
v-if=
"item.savedMoney"
>
{{
item
.
useStartDate
}}
-
{{
item
.
useEndDate
}}
<text>
¥
</text>
{{
parseFloat
(
item
.
savedMoney
.
toFixed
(
2
))
}}
</view>
</text>
</view>
<view>
{{
item
.
useStartDate
}}
-
{{
item
.
useEndDate
}}
</view>
</view>
</view>
</view>
<view
class=
"empty"
v-else
>
空空如也...
</view>
</view>
</view>
<view
class=
"empty"
v-if=
"!couponList.unusableCouponList||couponList.unusableCouponList.length==0"
>
</view
>
空空如也...
<view
class=
"bottom-sure"
@
click=
"showPop=false"
>
</view>
确定
</view>
</view>
</u-popup>
</u-popup>
</
template
>
</
template
>
...
@@ -72,16 +71,25 @@
...
@@ -72,16 +71,25 @@
export
default
{
export
default
{
props
:[
'couponData'
,
'chooseCouponObj'
],
props
:[
'couponData'
,
'chooseCouponObj'
],
watch
:
{
watch
:
{
couponData
:{
//
couponData
:{
//
劵列表
handler
(
newValue
,
oldValue
){
handler
(
newValue
,
oldValue
){
if
(
newValue
){
if
(
newValue
){
this
.
couponList
=
this
.
couponData
//可用优惠券去重
this
.
masterSlaveCouponList
=
[]
if
(
newValue
.
masterSlaveCouponList
){
newValue
.
masterSlaveCouponList
.
forEach
(
item
=>
{
if
(
!
this
.
masterSlaveCouponList
.
find
(
item2
=>
item2
.
couponId
==
item
.
couponId
)){
this
.
masterSlaveCouponList
.
push
(
item
)
}
})
}
this
.
unusableCouponList
=
newValue
.
unusableCouponList
}
}
},
},
deep
:
true
,
deep
:
true
,
immediate
:
true
immediate
:
true
},
},
chooseCouponObj
:{
//
chooseCouponObj
:{
//
选中的券
handler
(
newValue
,
oldValue
){
handler
(
newValue
,
oldValue
){
if
(
newValue
){
if
(
newValue
){
this
.
chooseCoupon
=
this
.
chooseCouponObj
this
.
chooseCoupon
=
this
.
chooseCouponObj
...
@@ -94,36 +102,26 @@ export default{
...
@@ -94,36 +102,26 @@ export default{
data
(){
data
(){
return
{
return
{
active
:
0
,
//导航栏下标
active
:
0
,
//导航栏下标
show
:
false
,
//控制弹窗显示隐藏
show
Pop
:
false
,
//控制弹窗显示隐藏
current
:
0
,
//控制选项卡默认显示第几个
masterSlaveCouponList
:[],
//可用优惠券列表
couponList
:
''
,
//
券列表
unusableCouponList
:[],
//不可用优惠
券列表
chooseCoupon
:
''
,
//选中的劵
chooseCoupon
:
''
,
//选中的劵
navTitle
:[
'可用'
,
'不可用'
],
//导航标题
navTitle
:[
'可用'
,
'不可用'
],
//导航标题
}
}
},
},
methods
:{
methods
:{
navClick
(
index
){
//------------------------------------------导航栏点击
//---导航栏点击
navClick
(
index
){
this
.
active
=
index
this
.
active
=
index
},
},
showCoupon
(){
//----------------------------------------展示弹窗
this
.
show
=
true
},
//---多选框值变化
//---多选框值变化
checkboxChange
(
evt
){
checkboxChange
(
e
){
if
(
evt
.
detail
.
value
.
length
==
2
){
let
value
=
e
.
detail
.
value
//删除第一个
if
(
value
.
length
>
0
){
evt
.
detail
.
value
.
splice
(
0
,
1
)
let
obj
=
JSON
.
parse
(
value
[
value
.
length
-
1
])
//获取选中券,传值给父组件
this
.
$emit
(
'couponChoose'
,
obj
)
this
.
chooseCoupon
=
this
.
couponList
.
masterSlaveCouponList
.
find
((
item
)
=>
{
}
return
item
.
couponId
==
evt
.
detail
.
value
[
0
]
if
(
value
.
length
==
0
){
})
this
.
$emit
(
'couponChoose'
,
this
.
chooseCoupon
)
}
else
if
(
evt
.
detail
.
value
.
length
==
1
){
this
.
chooseCoupon
=
this
.
couponList
.
masterSlaveCouponList
.
find
((
item
)
=>
{
return
item
.
couponId
==
evt
.
detail
.
value
[
0
]
})
this
.
$emit
(
'couponChoose'
,
this
.
chooseCoupon
)
}
else
if
(
evt
.
detail
.
value
.
length
==
0
){
this
.
$emit
(
'couponChoose'
,
''
)
this
.
$emit
(
'couponChoose'
,
''
)
}
}
}
}
...
@@ -133,19 +131,80 @@ export default{
...
@@ -133,19 +131,80 @@ export default{
</
script
>
</
script
>
<
style
scoped=
"scoped"
lang=
"scss"
>
<
style
scoped=
"scoped"
lang=
"scss"
>
.title
{
display
:
flex
;
height
:
80rpx
;}
.son-wrap
{
.titleContent
{
flex
:
1
;
text-align
:
center
;
font-size
:
30rpx
;}
height
:
80vh
;
.titleContent.on
{
color
:
$blue
;
font-weight
:
bold
;}
display
:
flex
;
.titleContent
view
text
{
width
:
40rpx
;
height
:
6rpx
;
background
:
$blue
;
border-radius
:
6rpx
;
display
:inline-block
;
position
:
relative
;
top
:
-10rpx
;}
flex-direction
:column
;
.middle
{
padding
:
24rpx
;
background
:
#f5f5f5
;}
}
.listBox
{
background
:
#FFFFFF
;
padding
:
24rpx
;
border-radius
:
10rpx
;}
.head
{
.middle
.listBox
:not
(
:first-child
)
{
margin-top
:
20rpx
;}
display
:
flex
;
.middle
view
view
:not
(
:first-child
)
{
margin-top
:
20rpx
;}
}
.middle
view
view
{
display
:
flex
;
justify-content
:
space-between
;}
.headlist
{
.middle
view
view
:first-child
{
font-weight
:
bold
;}
width
:
50%
;
.middle
view
view
:nth-child
(
2
)
{
font-size
:
24rpx
;}
height
:
90rpx
;
.middle
view
view
:last-child
{
color
:
#666666
;
font-size
:
24rpx
;}
line-height
:
90rpx
;
.middle
view
text
{
color
:
#f9690e
;
font-size
:
30rpx
;
font-weight
:
bolder
;}
text-align
:
center
;
.middle
view
text
text
{
font-size
:
24rpx
;
font-weight
:
400
;}
font-size
:
30rpx
;
.empty
{
padding
:
100rpx
0
;
text-align
:
center
;
background
:
#f5f5f5
;}
}
.headlist.on
text
{
border-bottom
:
6rpx
solid
$theme
;
color
:
$theme
;
font-weight
:
bold
;
}
.middle
{
padding
:
24rpx
24rpx
100rpx
24rpx
;
background
:
#f5f5f5
;
flex
:
1
;
overflow-y
:
scroll
;
}
.list-box
{
background
:
#FFFFFF
;
padding
:
24rpx
;
border-radius
:
10rpx
;
}
.middle
.list-box
:not
(
:first-child
)
{
margin-top
:
20rpx
;
}
.list-box
view
:not
(
:first-child
)
{
margin-top
:
20rpx
;
}
.list-box
view
{
display
:
flex
;
justify-content
:
space-between
;
}
.list-box
view
:first-child
{
font-weight
:
bold
;
}
.list-box
view
:last-child
{
color
:
#999999
;
font-size
:
24rpx
;
}
.list-box
text
{
color
:
#f9690e
;
font-size
:
32rpx
;
font-weight
:
bold
;
}
.list-box
text
text
{
font-size
:
24rpx
;
font-weight
:
400
;
}
.empty
{
padding
:
160rpx
0
;
text-align
:
center
;
color
:
$red
;
}
.bottom-sure
{
position
:
fixed
;
bottom
:
0
;
left
:
0
;
width
:
100%
;
height
:
100rpx
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
background
:
$theme
;
font-size
:
32rpx
;
font-weight
:
bold
;
color
:
#ffffff
;
}
</
style
>
</
style
>
pages/album/albumOrderdetail/albumOrderdetail.vue
View file @
3c2a558a
...
@@ -365,7 +365,7 @@ export default {
...
@@ -365,7 +365,7 @@ export default {
.button
{
.button
{
width
:
144rpx
;
width
:
144rpx
;
height
:
64rpx
;
height
:
64rpx
;
background
:
$
blu
e
;
background
:
$
them
e
;
border-radius
:
8rpx
;
border-radius
:
8rpx
;
display
:
inline-block
;
display
:
inline-block
;
color
:
#ffffff
;
color
:
#ffffff
;
...
@@ -411,7 +411,7 @@ export default {
...
@@ -411,7 +411,7 @@ export default {
display
:
inline-block
;
display
:
inline-block
;
width
:
212rpx
;
width
:
212rpx
;
height
:
80rpx
;
height
:
80rpx
;
background
:
$
blu
e
;
background
:
$
them
e
;
border-radius
:
44rpx
;
border-radius
:
44rpx
;
text-align
:
center
;
text-align
:
center
;
line-height
:
80rpx
;
line-height
:
80rpx
;
...
...
pages/indexs/index/index.vue
View file @
3c2a558a
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
</view>
</view>
<view
class=
"banner"
>
<view
class=
"banner"
>
<u-swiper
:list=
"list"
@
change=
"e => currentNum = e.current"
indicatorStyle=
"right: 20px"
height=
"300"
circular
>
<u-swiper
:list=
"list"
@
change=
"e => currentNum = e.current"
indicatorStyle=
"right: 20px"
height=
"300"
circular
@
click=
'swiperClick(currentNum)'
>
<view
slot=
"indicator"
class=
"indicator-num"
>
<view
slot=
"indicator"
class=
"indicator-num"
>
<text
class=
"indicator-num__text"
>
{{
currentNum
+
1
}}
/
{{
list
.
length
}}
</text>
<text
class=
"indicator-num__text"
>
{{
currentNum
+
1
}}
/
{{
list
.
length
}}
</text>
</view>
</view>
...
...
pages/indexs/merchantListIndex/merchantListIndex.vue
View file @
3c2a558a
...
@@ -344,7 +344,7 @@ export default {
...
@@ -344,7 +344,7 @@ export default {
padding-right
:
40rpx
;
padding-right
:
40rpx
;
}
}
.search-btn
{
.search-btn
{
background
:
$
blu
e
;
background
:
$
them
e
;
color
:
#fff
;
color
:
#fff
;
border-radius
:
32rpx
;
border-radius
:
32rpx
;
padding
:
12rpx
24rpx
;
padding
:
12rpx
24rpx
;
...
@@ -388,8 +388,8 @@ export default {
...
@@ -388,8 +388,8 @@ export default {
justify-content
:
space-between
;
justify-content
:
space-between
;
}
}
.right2-left
text
{
.right2-left
text
{
color
:
$
blu
e
;
color
:
$
them
e
;
border
:
1px
solid
$
blu
e
;
border
:
1px
solid
$
them
e
;
font-size
:
20rpx
;
font-size
:
20rpx
;
padding
:
2rpx
4rpx
;
padding
:
2rpx
4rpx
;
border-radius
:
2rpx
;
border-radius
:
2rpx
;
...
...
pages/my/takeNumber/numberChoose/numberChoose.vue
View file @
3c2a558a
...
@@ -125,7 +125,7 @@ export default {
...
@@ -125,7 +125,7 @@ export default {
white-space
:
nowrap
;
white-space
:
nowrap
;
}
}
.choose-content.on
{
.choose-content.on
{
background
:
$
blu
e
;
background
:
$
them
e
;
color
:
#ffffff
;
color
:
#ffffff
;
}
}
.choose-name
{
.choose-name
{
...
...
pages/my/takeNumber/numberIndex/numberIndex.vue
View file @
3c2a558a
...
@@ -55,7 +55,9 @@ export default {
...
@@ -55,7 +55,9 @@ export default {
let
data
=
{
let
data
=
{
search
:
this
.
search
,
//输入框的值
search
:
this
.
search
,
//输入框的值
userId
:
uni
.
getStorageSync
(
'openid'
)
||
''
,
userId
:
uni
.
getStorageSync
(
'openid'
)
||
''
,
merchantCode
:
this
.
merchantCode
merchantCode
:
this
.
merchantCode
,
startPlayDate
:
new
Date
().
Format
(
'yyyy-MM-dd'
)
+
' 00:00:00'
,
//开始日期
endPlayDate
:
new
Date
().
Format
(
'yyyy-MM-dd'
)
+
' 23:59:59'
,
//结束日期
}
}
uni
.
showLoading
({
uni
.
showLoading
({
title
:
'加载中'
title
:
'加载中'
...
@@ -258,6 +260,7 @@ export default {
...
@@ -258,6 +260,7 @@ export default {
}
}
.mark-close
{
.mark-close
{
margin-top
:
60rpx
;
margin-top
:
60rpx
;
text-align
:
center
;
display
:
flex
;
justify-content
:
center
;
}
}
</
style
>
</
style
>
pages/payment/orderPayment/orderPayment.vue
View file @
3c2a558a
<
template
>
<
template
>
<view
v-show=
"bodyShow"
>
<view>
<view
class=
"middle"
>
<view
class=
"middle"
v-show=
"orderList.length>0"
>
<view
class=
"m
ain
"
>
<view
class=
"m
iddle-wrap
"
>
<view
v-if=
"orderList.length>0"
v-for=
"item of orderList"
:key=
"item.id"
class=
"product"
>
<view
v-for=
"item of orderList"
:key=
"item.id"
class=
"product"
>
<view>
<view>
<text>
{{
item
.
merchantName
}}
(
{{
item
.
productName
}}
)
</text>
<text>
{{
item
.
merchantName
}}
(
{{
item
.
productName
}}
)
</text>
...
@@ -15,16 +15,14 @@
...
@@ -15,16 +15,14 @@
<text>
券
</text>
<text>
<text
style=
"font-size:24rpx;"
>
-¥
</text>
{{
item
.
pdDiscountMoney
}}
</text>
<text>
券
</text>
<text>
<text
style=
"font-size:24rpx;"
>
-¥
</text>
{{
item
.
pdDiscountMoney
}}
</text>
</view>
</view>
</view>
</view>
<view
class=
"mainP3"
>
<view
class=
"middle-money"
>
<text>
实际支付
</text>
<view>
实际支付
</view>
<text>
<view>
<!--
<i>
<text
style=
"font-size:28rpx;"
>
¥
</text>
¥
{{
totalMoney
}}
{{
pdOrderMoney
}}
</i>
-->
</view>
<text>
<text
style=
"font-size:28rpx;"
>
¥
</text>
{{
pdOrderMoney
}}
</text>
</text>
</view>
</view>
<view
class=
"m
ainview
"
>
<view
class=
"m
iddle-image
"
>
<!-- #ifdef MP-WEIXIN -->
<!-- #ifdef MP-WEIXIN -->
<image
src=
"@/static/img/orderPayment/weixin.png"
style=
"width:70rpx;height:62rpx;"
/>
<view>
微信支付
</view>
<image
src=
"@/static/img/orderPayment/weixin.png"
style=
"width:70rpx;height:62rpx;"
/>
<view>
微信支付
</view>
<!-- #endif -->
<!-- #endif -->
...
@@ -36,16 +34,20 @@
...
@@ -36,16 +34,20 @@
</view>
</view>
</view>
</view>
</view>
</view>
<view
v-show=
"errorMessage1||errorMessage2"
>
错误1:
{{
errorMessage1
}}
错误2:
{{
errorMessage2
}}
</view>
<view
class=
"bottom"
>
<view
class=
"bottom"
>
<view
class=
"bottomFirst"
>
<view
class=
"bottom-left"
>
<text>
实付款
</text>
<text>
实付款
</text>
<text
v-show=
"pdOrderMoney"
>
<text>
<text>
¥
</text>
{{
pdOrderMoney
}}
</text>
<text
style=
"font-size: 28rpx;"
>
¥
</text>
{{
pdOrderMoney
}}
</text>
</view>
</view>
<view
class=
"bottom-right"
>
<view
class=
"bottomLast"
>
<u-icon
name=
"chat"
size=
"40"
@
click=
"makePhone()"
></u-icon>
<text
href=
"tel:400-072-0368"
>
<!--
<img
src=
"@/assets/img/combination/kefu11.png"
style=
"width: 0.31rpx;"
/>
-->
</text>
<text
@
click=
"goPay()"
:style=
"
{ background: background }">去支付
</text>
<text
@
click=
"goPay()"
:style=
"
{ background: background }">去支付
</text>
</view>
</view>
</view>
</view>
...
@@ -59,14 +61,14 @@ export default {
...
@@ -59,14 +61,14 @@ export default {
orderList
:[],
//订单列表
orderList
:[],
//订单列表
pdOrderMoney
:
''
,
//实际总价
pdOrderMoney
:
''
,
//实际总价
totalMoney
:
''
,
//原价总价
totalMoney
:
''
,
//原价总价
errorMessage
:
''
,
//
错误信息
errorMessage
1
:
''
,
//错误信息1,接口成功返回的
错误信息
bodyShow
:
false
,
//控制初始化数据成功显示
errorMessage2
:
''
,
//错误信息2,接口失败返回的错误信息
payType
:
''
,
//支付类型
payType
:
''
,
//支付类型
timeStamp
:
''
,
//支付参数
timeStamp
:
''
,
//
微信
支付参数
nonceStr
:
''
,
nonceStr
:
''
,
//微信支付参数
package
:
''
,
package
:
''
,
//微信支付参数
signType
:
''
,
signType
:
''
,
//微信支付参数
paySign
:
''
,
paySign
:
''
,
//微信支付参数
orderInfo
:
''
,
//支付宝订单号
orderInfo
:
''
,
//支付宝订单号
background
:
''
,
//去支付的背景颜色
background
:
''
,
//去支付的背景颜色
orderId
:
''
,
//订单Id
orderId
:
''
,
//订单Id
...
@@ -141,13 +143,22 @@ export default {
...
@@ -141,13 +143,22 @@ export default {
}
}
})
})
},
},
//---拨打电话
makePhone
()
{
uni
.
makePhoneCall
({
phoneNumber
:
'400-072-0368'
})
},
//---初始化产品信息,以及获取支付需要的参数
initDetail
()
{
initDetail
()
{
//---初始化产品信息,以及获取支付需要的参数
let
data
=
{
let
data
=
{
orderId
:
this
.
orderId
,
//订单Id
orderId
:
this
.
orderId
,
//订单Id
userId
:
this
.
openid
,
//用户Id
userId
:
this
.
openid
,
//用户Id
payType
:
this
.
payType
//支付类型
payType
:
this
.
payType
//支付类型
}
}
uni
.
showLoading
({
mask
:
true
})
this
.
$request
(
'orderc/order/findOrderInfo'
,
data
).
then
(
res
=>
{
this
.
$request
(
'orderc/order/findOrderInfo'
,
data
).
then
(
res
=>
{
if
(
res
.
code
==
'00'
)
{
if
(
res
.
code
==
'00'
)
{
if
(
this
.
albumOrderdetail
==
1
){
if
(
this
.
albumOrderdetail
==
1
){
...
@@ -159,8 +170,6 @@ export default {
...
@@ -159,8 +170,6 @@ export default {
this
.
afterBuyUrl
=
'/pages/my/order/orderList/orderList'
this
.
afterBuyUrl
=
'/pages/my/order/orderList/orderList'
}
}
}
}
this
.
bodyShow
=
true
//支付参数开始
//支付参数开始
this
.
timeStamp
=
res
.
data
.
timestamp
this
.
timeStamp
=
res
.
data
.
timestamp
this
.
nonceStr
=
res
.
data
.
noncestr
this
.
nonceStr
=
res
.
data
.
noncestr
...
@@ -176,7 +185,7 @@ export default {
...
@@ -176,7 +185,7 @@ export default {
url
:
'/pages/payment/paySuccess/paySuccess?orderId='
+
this
.
orderId
+
'&afterBuyUrl='
+
this
.
afterBuyUrl
+
'&ifyukuaiCode='
+
this
.
ifyukuaiCode
url
:
'/pages/payment/paySuccess/paySuccess?orderId='
+
this
.
orderId
+
'&afterBuyUrl='
+
this
.
afterBuyUrl
+
'&ifyukuaiCode='
+
this
.
ifyukuaiCode
})
})
}
}
this
.
errorMessage
=
res
.
data
.
errorMessage
this
.
errorMessage
1
=
res
.
data
.
errorMessage
this
.
totalMoney
=
res
.
data
.
totalMoney
this
.
totalMoney
=
res
.
data
.
totalMoney
this
.
orderList
=
res
.
data
.
orderList
||
[]
this
.
orderList
=
res
.
data
.
orderList
||
[]
if
(
this
.
orderList
.
length
==
0
)
{
if
(
this
.
orderList
.
length
==
0
)
{
...
@@ -195,14 +204,15 @@ export default {
...
@@ -195,14 +204,15 @@ export default {
title
:
res
.
message
,
title
:
res
.
message
,
icon
:
'none'
icon
:
'none'
})
})
this
.
errorMessage2
=
res
.
message
}
}
})
})
},
},
//----去支付
goPay
()
{
goPay
()
{
//-------------------------------------------------------去支付
if
(
this
.
errorMessage1
)
{
if
(
this
.
errorMessage
)
{
uni
.
showToast
({
uni
.
showToast
({
title
:
this
.
errorMessage
,
title
:
this
.
errorMessage
1
,
icon
:
'none'
icon
:
'none'
})
})
return
return
...
@@ -211,8 +221,14 @@ export default {
...
@@ -211,8 +221,14 @@ export default {
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
background
=
'f9690e'
this
.
background
=
'f9690e'
},
1000
)
},
1000
)
// #ifdef MP-WEIXIN
// #ifdef MP-WEIXIN
if
(
!
this
.
timeStamp
||!
this
.
nonceStr
||!
this
.
package
||!
this
.
signType
||!
this
.
paySign
){
uni
.
showToast
({
title
:
'缺少支付参数'
,
icon
:
'none'
})
return
}
uni
.
requestPayment
({
uni
.
requestPayment
({
provider
:
'wxpay'
,
provider
:
'wxpay'
,
timeStamp
:
this
.
timeStamp
,
timeStamp
:
this
.
timeStamp
,
...
@@ -235,6 +251,13 @@ export default {
...
@@ -235,6 +251,13 @@ export default {
//#endif
//#endif
// #ifdef MP-ALIPAY
// #ifdef MP-ALIPAY
if
(
!
this
.
orderInfo
){
uni
.
showToast
({
title
:
'缺少支付参数'
,
icon
:
'none'
})
return
}
uni
.
requestPayment
({
uni
.
requestPayment
({
provider
:
'alipay'
,
// 服务提供商 支付宝支付: alipay 微信支付: wxpay
provider
:
'alipay'
,
// 服务提供商 支付宝支付: alipay 微信支付: wxpay
orderInfo
:
this
.
orderInfo
,
// 支付宝订单号
orderInfo
:
this
.
orderInfo
,
// 支付宝订单号
...
@@ -264,7 +287,7 @@ export default {
...
@@ -264,7 +287,7 @@ export default {
.middle
{
.middle
{
padding
:
30
rpx
24
rpx
0
24
rpx
;
padding
:
30
rpx
24
rpx
0
24
rpx
;
}
}
.m
ain
{
.m
iddle-wrap
{
padding
:
10
rpx
24
rpx
20
rpx
24
rpx
;
padding
:
10
rpx
24
rpx
20
rpx
24
rpx
;
background
:
#ffffff
;
background
:
#ffffff
;
border-radius
:
20
rpx
;
border-radius
:
20
rpx
;
...
@@ -296,7 +319,7 @@ export default {
...
@@ -296,7 +319,7 @@ export default {
.product
view
.coupon
text
{
.product
view
.coupon
text
{
font-size
:
30
rpx
;
font-size
:
30
rpx
;
}
}
.m
ainP3
{
.m
iddle-money
{
height
:
120
rpx
;
height
:
120
rpx
;
color
:
#000000
;
color
:
#000000
;
border-bottom
:
1px
solid
#e5e5e5
;
border-bottom
:
1px
solid
#e5e5e5
;
...
@@ -306,25 +329,24 @@ export default {
...
@@ -306,25 +329,24 @@ export default {
box-sizing
:
border-box
;
box-sizing
:
border-box
;
justify-content
:
space-between
;
justify-content
:
space-between
;
}
}
.m
ainP3
text
:nth-child
(
2
)
{
.m
iddle-money
view
:nth-child
(
2
)
{
font-size
:
24
rpx
;
font-size
:
24
rpx
;
color
:
#666666
;
color
:
#666666
;
}
}
.m
ainP3
text
:nth-child
(
2
)
text
:nth-child
(
1
)
{
.m
iddle-money
view
:nth-child
(
2
)
{
font-size
:
36
rpx
;
font-size
:
36
rpx
;
color
:
#f9690e
;
color
:
#f9690e
;
margin-left
:
20
rpx
;
font-weight
:
bold
;
font-weight
:
bold
;
}
}
.m
ainview
{
.m
iddle-image
{
margin-top
:
50
rpx
;
margin-top
:
50
rpx
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
}
}
.m
ainview
>
image
:first-child
{
.m
iddle-image
>
image
:first-child
{
margin
:
0
20
rpx
0
10
rpx
;
margin
:
0
20
rpx
0
10
rpx
;
}
}
.m
ainview
>
view
{
.m
iddle-image
>
view
{
flex
:
1
;
flex
:
1
;
}
}
.bottom
{
.bottom
{
...
@@ -337,41 +359,25 @@ export default {
...
@@ -337,41 +359,25 @@ export default {
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
}
}
.bottom
Firs
t
{
.bottom
-lef
t
{
border-right
:
1px
solid
#cccccc
;
border-right
:
1px
solid
#cccccc
;
padding-left
:
40
rpx
;
padding-left
:
40
rpx
;
width
:
40%
;
width
:
40%
;
box-sizing
:
border-box
;
}
}
.bottom
Firs
t
text
:nth-child
(
2
)
{
.bottom
-lef
t
text
:nth-child
(
2
)
{
font-size
:
40
rpx
;
font-size
:
40
rpx
;
color
:
#f9690e
;
color
:
#f9690e
;
margin-left
:
10
rpx
;
margin-left
:
10
rpx
;
font-weight
:
bold
;
font-weight
:
bold
;
}
}
.bottomFirst
text
:nth-child
(
2
)
text
{
.bottom-right
{
font-size
:
28
rpx
;
padding-left
:
30
rpx
;
}
.bottomLast
{
padding-left
:
20
rpx
;
display
:
flex
;
display
:
flex
;
width
:
60%
;
width
:
60%
;
padding-right
:
20
rpx
;
padding-right
:
30
rpx
;
box-sizing
:
border-box
;
align-items
:
center
;
align-items
:
center
;
}
}
.bottomLast
text
:first-child
{
.bottom-right
text
:nth-child
(
2
)
{
display
:
block
;
text-align
:
center
;
width
:
60
rpx
;
}
.bottomLast
text
:first-child
text
{
margin-top
:
10
rpx
;
display
:
inline-block
;
font-size
:
24
rpx
;
color
:
#666666
;
}
.bottomLast
text
:nth-child
(
2
)
{
flex
:
1
;
flex
:
1
;
height
:
70
rpx
;
height
:
70
rpx
;
display
:
inline-block
;
display
:
inline-block
;
...
@@ -382,5 +388,6 @@ export default {
...
@@ -382,5 +388,6 @@ export default {
margin-left
:
30
rpx
;
margin-left
:
30
rpx
;
border-radius
:
20
rpx
;
border-radius
:
20
rpx
;
font-size
:
32
rpx
;
font-size
:
32
rpx
;
font-weight
:
bold
;
}
}
</
style
>
</
style
>
pages/payment/ourPayment/ourPayment.vue
View file @
3c2a558a
...
@@ -84,7 +84,7 @@
...
@@ -84,7 +84,7 @@
</view>
</view>
</view>
</view>
</
template
>
</
template
>
<!-- 显示增加数量页面 -->
<
template
v-if=
"showNumber"
>
<
template
v-if=
"showNumber"
>
<view
class=
"top2"
>
<view
class=
"top2"
>
<view
class=
"top2-name"
>
<view
class=
"top2-name"
>
...
@@ -100,9 +100,10 @@
...
@@ -100,9 +100,10 @@
v-model=
"buyNum"
v-model=
"buyNum"
bg-color=
'#3688FF'
bg-color=
'#3688FF'
color=
'#ffffff'
color=
'#ffffff'
:input-height=
"60"
iconStyle=
'color:#ffffff;font-size:32rpx;'
:min=
"1"
buttonSize=
'60'
size=
'28'
>
input-width=
"100"
:min=
"1"
>
</u-number-box>
</u-number-box>
</view>
</view>
<view
class=
"top2-price"
>
<view
class=
"top2-price"
>
...
@@ -363,7 +364,7 @@ export default {
...
@@ -363,7 +364,7 @@ export default {
},
},
showCoupon
()
{
showCoupon
()
{
//---展示券列表
//---展示券列表
this
.
$refs
.
orderCoupon
.
show
Coupon
()
this
.
$refs
.
orderCoupon
.
show
Pop
=
true
},
},
//---初始化获取商家名称,大商家
//---初始化获取商家名称,大商家
initMerchant
()
{
initMerchant
()
{
...
@@ -396,20 +397,21 @@ export default {
...
@@ -396,20 +397,21 @@ export default {
this
.
$request
(
'user/newCompany/findCompanyById'
,
data
).
then
(
res
=>
{
this
.
$request
(
'user/newCompany/findCompanyById'
,
data
).
then
(
res
=>
{
uni
.
hideLoading
()
uni
.
hideLoading
()
if
(
res
.
code
==
'00'
)
{
if
(
res
.
code
==
'00'
)
{
this
.
companyAttribute
=
res
.
data
.
companyAttribute
this
.
paydJumpUrl
=
res
.
data
.
paydJumpUrl
this
.
paydJumpUrl
=
res
.
data
.
paydJumpUrl
if
(
this
.
companyAttribute
==
5
)
{
let
list
=
res
.
data
.
companyTollPointVoList
||
[]
//出租车显示联系人姓名,其他显示公司名称
this
.
companyName
=
res
.
data
.
contactName
}
else
{
this
.
companyName
=
res
.
data
.
companyName
}
let
list
=
res
.
data
.
companyTollPointVoList
list
.
forEach
(
item
=>
{
list
.
forEach
(
item
=>
{
if
(
item
.
tollPoints
==
this
.
extendInfo
){
if
(
item
.
tollPoints
==
this
.
extendInfo
){
this
.
tollPoint
=
item
this
.
tollPoint
=
item
}
}
})
})
this
.
companyAttribute
=
res
.
data
.
companyAttribute
if
(
this
.
companyAttribute
==
5
)
{
//出租车显示联系人姓名
this
.
companyName
=
res
.
data
.
contactName
}
else
{
//优先取收费点名称,然后是公司名称,然后是联系人名称
this
.
companyName
=
this
.
tollPoint
.
tollPointByname
||
res
.
data
.
companyName
||
res
.
data
.
contactName
}
if
(
this
.
tollPoint
.
tollPointsModel
==
0
){
if
(
this
.
tollPoint
.
tollPointsModel
==
0
){
//显示输入金额页面
//显示输入金额页面
this
.
showMoney
=
true
this
.
showMoney
=
true
...
@@ -426,8 +428,6 @@ export default {
...
@@ -426,8 +428,6 @@ export default {
icon
:
'none'
icon
:
'none'
})
})
}
}
//优先取收费点名称,然后是公司名称,然后是联系人名称
this
.
companyName
=
this
.
tollPoint
.
tollPointByname
||
res
.
data
.
companyName
||
res
.
data
.
contactName
}
}
}
else
{
}
else
{
uni
.
showToast
({
uni
.
showToast
({
...
@@ -604,11 +604,11 @@ export default {
...
@@ -604,11 +604,11 @@ export default {
success
:
res
=>
{
success
:
res
=>
{
if
(
this
.
companyAttribute
==
5
)
{
if
(
this
.
companyAttribute
==
5
)
{
//出租车跳转分销组合票页面
//出租车跳转分销组合票页面
uni
.
navigateTo
({
uni
.
reLaunch
({
url
:
this
.
paydJumpUrl
url
:
this
.
paydJumpUrl
})
})
}
else
{
}
else
{
uni
.
navigateTo
({
uni
.
reLaunch
({
url
:
'/pages/payment/paySuccess/paySuccess?orderId='
+
this
.
orderId
url
:
'/pages/payment/paySuccess/paySuccess?orderId='
+
this
.
orderId
})
})
}
}
...
@@ -629,11 +629,11 @@ export default {
...
@@ -629,11 +629,11 @@ export default {
success
:
res
=>
{
success
:
res
=>
{
if
(
this
.
companyAttribute
==
5
)
{
if
(
this
.
companyAttribute
==
5
)
{
//出租车跳转分销组合票页面
//出租车跳转分销组合票页面
uni
.
navigateTo
({
uni
.
reLaunch
({
url
:
this
.
paydJumpUrl
url
:
this
.
paydJumpUrl
})
})
}
else
{
}
else
{
uni
.
navigateTo
({
uni
.
reLaunch
({
url
:
'/pages/payment/paySuccess/paySuccess?orderId='
+
this
.
orderId
url
:
'/pages/payment/paySuccess/paySuccess?orderId='
+
this
.
orderId
})
})
}
}
...
...
pages/scenic/combinationProduct/combinationProduct.vue
View file @
3c2a558a
...
@@ -660,7 +660,7 @@ export default {
...
@@ -660,7 +660,7 @@ export default {
}
}
.tabbar
.on
{
.tabbar
.on
{
// background: url('../../../static/img/scenic/tabbar.png') no-repeat;
// background: url('../../../static/img/scenic/tabbar.png') no-repeat;
background
:
$
blu
e
;
background
:
$
them
e
;
background-size
:
100%
100%
;
background-size
:
100%
100%
;
color
:
#fff
;
color
:
#fff
;
font-weight
:
bold
;
font-weight
:
bold
;
...
@@ -750,7 +750,7 @@ export default {
...
@@ -750,7 +750,7 @@ export default {
align-items
:
center
;
align-items
:
center
;
}
}
.product-rule
{
.product-rule
{
color
:
$
blu
e
;
color
:
$
them
e
;
}
}
.
product-rule
:
:
after
{
.
product-rule
:
:
after
{
display
:
inline-block
;
display
:
inline-block
;
...
...
pages/scenic/scenicComponents/calendar.vue
View file @
3c2a558a
<
template
>
<
template
>
<div>
<u-calendar
<u-calendar
:show=
"show"
:show=
"show"
@
confirm=
"onConfirm"
@
confirm=
"onConfirm"
...
@@ -8,51 +7,37 @@
...
@@ -8,51 +7,37 @@
:defaultDate=
"defaultDate"
:defaultDate=
"defaultDate"
:formatter=
'formatter'
:formatter=
'formatter'
ref=
"calendar2"
ref=
"calendar2"
rowHeight=
'112'
round=
'20'
closeOnClickOverlay=
'true'
></u-calendar>
></u-calendar>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
props
:
[
'dateList'
],
props
:
[
'dateList'
],
watch
:
{
watch
:
{
dateList
:{
dateList
:{
handler
(
newValue
,
oldValue
){
handler
(
newValue
,
oldValue
){
if
(
newValue
&&
newValue
.
length
>
0
){
if
(
newValue
&&
newValue
.
length
>
0
){
this
.
maxDate
=
newValue
[
newValue
.
length
-
1
].
startTime
.
substr
(
0
,
10
)
this
.
maxDate
=
newValue
[
newValue
.
length
-
1
].
startTime
.
substr
(
0
,
10
)
}
}
},
},
deep
:
true
,
deep
:
true
,
immediate
:
true
immediate
:
true
}
}
},
},
data
()
{
data
()
{
return
{
return
{
date
:
''
,
//选择的日期
show
:
false
,
//控制日历显示隐藏
show
:
false
,
//控制日历显示隐藏
defaultDate
:
''
,
//默认日期
defaultDate
:
''
,
//默认日期
maxDate
:
''
,
//最大日期
maxDate
:
''
,
//最大日期
}
}
},
},
mounted
()
{
//默认为第一天
mounted
()
{
this
.
$refs
.
calendar2
.
setFormatter
(
this
.
formatter
)
this
.
$refs
.
calendar2
.
setFormatter
(
this
.
formatter
)
},
},
methods
:
{
methods
:
{
//---年月日转化
formatDate
(
date
)
{
let
year
=
date
.
getFullYear
()
let
month
=
date
.
getMonth
()
+
1
if
(
month
<
10
)
{
month
=
'0'
+
month
}
let
days
=
date
.
getDate
()
if
(
days
<
10
)
{
days
=
'0'
+
days
}
let
dates
=
year
+
'-'
+
month
+
'-'
+
days
return
dates
},
//---日期确认事件
//---日期确认事件
onConfirm
(
date
)
{
onConfirm
(
date
)
{
this
.
show
=
false
this
.
show
=
false
...
@@ -73,23 +58,16 @@ export default {
...
@@ -73,23 +58,16 @@ export default {
//真机调试手极端报错,暂时注释
//真机调试手极端报错,暂时注释
// this.dateList.forEach((item, index) => {
// this.dateList.forEach((item, index) => {
// if (item.startTime.substr(0, 10) == dates) {
// if (item.startTime.substr(0, 10) == dates) {
// day.bottomInfo =
"¥"
+ item.sellingPrice
// day.bottomInfo =
'¥'
+ item.sellingPrice
// day.dot = true
// day.dot = true
// }
// }
// })
// })
// if (!day.bottomInfo) {
// if (!day.bottomInfo) {
// day.type =
"disabled"
// day.type =
'disabled'
// }
// }
return
day
return
day
},
//---设置默认日期方法
}
setDefaultDate
(
val
)
{
let
dates
=
val
.
split
(
'-'
)
let
year
=
parseInt
(
dates
[
0
])
let
month
=
parseInt
(
dates
[
1
])
-
1
let
day
=
parseInt
(
dates
[
2
])
this
.
defaultDate
=
new
Date
(
year
,
month
,
day
)
},
}
}
}
}
</
script
>
</
script
>
...
...
pages/scenic/scenicComponents/chooseArea.vue
View file @
3c2a558a
<
template
>
<
template
>
<view
class=
"area-box"
>
<view
class=
"area-box"
>
<view
class=
"top"
@
click=
"
sure
()"
>
<view
class=
"top"
@
click=
"
closeSon
()"
>
<view
class=
"top-left"
>
<view
class=
"top-left"
>
选择(索道)出发站点
选择(索道)出发站点
</view>
</view>
<view>
<view>
<u-icon
name=
"close"
></u-icon>
<u-icon
name=
"close"
bold
></u-icon>
</view>
</view>
</view>
</view>
<!-- 没有默认站点时-->
<view
v-if=
"defaultAreaCode"
class=
"defaultArea"
>
<template
v-if=
"!defaultAreaCode"
>
<view>
<text>
当前站点:
</text>
<text>
{{
areaObj
.
areaName
}}
</text>
</view>
<view>
<text>
当前排队人数:
</text>
<text>
{{
sortIfo
.
peopleNumber
}}
</text>
</view>
<view>
<text>
预计进入排队等候区时间:
</text>
<text>
{{
sortIfo
.
sortTotalTime
}}
</text>
</view>
<view>
<text>
退票规则:
</text>
<text>
不可退
</text>
</view>
<view>
<image
src=
"../static/scenic/chooseArea.jpg"
mode=
"widthFix"
></image>
</view>
<view>
<a
class=
"middle-btn"
@
click=
"sure()"
>
确定
</a>
</view>
</view>
<template
v-else
>
<view
class=
"bottom"
>
<view
class=
"bottom"
>
<view
class=
"bottom1"
>
<view
class=
"bottom1"
>
<view>
<view>
...
@@ -72,7 +21,7 @@
...
@@ -72,7 +21,7 @@
</view>
</view>
<view
class=
"bottom1-btn"
>
<view
class=
"bottom1-btn"
>
<text
class=
"btn"
@
click=
"
getSort
(item)"
v-for=
"(item,index) of areaList"
:key=
"index"
>
<text
class=
"btn"
@
click=
"
chooseArea
(item)"
v-for=
"(item,index) of areaList"
:key=
"index"
>
{{
item
.
areaName
}}
{{
item
.
areaName
}}
</text>
</text>
</view>
</view>
...
@@ -121,7 +70,7 @@
...
@@ -121,7 +70,7 @@
</text>
</text>
</view>
</view>
</
template
>
</
template
>
<view>
<
!-- <
view>
<text>
<text>
退票规则:
退票规则:
</text>
</text>
...
@@ -129,19 +78,19 @@
...
@@ -129,19 +78,19 @@
<text>
<text>
不可退
不可退
</text>
</text>
</view>
</view>
-->
<view>
<view>
返程时,根据现场情况需重新取号
返程时,根据现场情况需重新取号
</view>
</view>
<view
v-if=
"!sortIfo"
style=
"font-size:32rpx;color:
#ff0000
;"
>
<view
v-if=
"!sortIfo"
style=
"font-size:32rpx;color:
#FC6703
;"
>
未找到本站信息,请根据现场大屏幕信息合理购票
未找到本站信息,请根据现场大屏幕信息合理购票
</view>
</view>
<view
style=
"text-align: center;"
>
<view
style=
"text-align: center;"
>
<text
class=
"
middle-btn"
@
click=
"hidePop()"
style=
"color: #333
;margin-right: 48rpx;"
>
<text
class=
"
btn"
@
click=
"hidePop()"
style=
"color: #555
;margin-right: 48rpx;"
>
取消
取消
</text>
</text>
<text
class=
"
middle-
btn"
@
click=
"sure()"
>
<text
class=
"btn"
@
click=
"sure()"
>
确定
确定
</text>
</text>
</view>
</view>
...
@@ -149,7 +98,56 @@
...
@@ -149,7 +98,56 @@
</view>
</view>
</template>
</template>
<!-- 有默认站点时 -->
<view
v-else
class=
"defaultArea"
>
<view>
<text>
当前站点:
</text>
<text>
{{areaObj.areaName}}
</text>
</view>
<view>
<text>
当前排队人数:
</text>
<text>
{{sortIfo.peopleNumber}}
</text>
</view>
<view>
<text>
预计进入排队等候区时间:
</text>
<text>
{{sortIfo.sortTotalTime}}
</text>
</view>
<!-- <view>
<text>
退票规则:
</text>
<text>
不可退
</text>
</view> -->
<view>
<image
src=
"../static/scenic/chooseArea.jpg"
mode=
"widthFix"
></image>
</view>
<view>
<a
class=
"btn"
@
click=
"closeSon()"
>
确定
</a>
</view>
</view>
</view>
</view>
</template>
</template>
...
@@ -162,7 +160,7 @@ export default {
...
@@ -162,7 +160,7 @@ export default {
showPop
:
false
,
//控制弹窗显示隐藏
showPop
:
false
,
//控制弹窗显示隐藏
distanceIndex
:
0
,
//最小距离下标
distanceIndex
:
0
,
//最小距离下标
distanceList
:
[],
//所有距离列表
distanceList
:
[],
//所有距离列表
sortIfo
:
''
,
//排
队
信息
sortIfo
:
''
,
//排
号
信息
areaObj
:
{
areaObj
:
{
areaCode
:
''
,
//选中的区域编码
areaCode
:
''
,
//选中的区域编码
areaName
:
''
,
//选中的区域名字
areaName
:
''
,
//选中的区域名字
...
@@ -174,18 +172,12 @@ export default {
...
@@ -174,18 +172,12 @@ export default {
created
()
{
created
()
{
//如果有默认站点
//如果有默认站点
if
(
this
.
defaultAreaCode
&&
this
.
sortArr
.
length
>
0
){
if
(
this
.
defaultAreaCode
&&
this
.
sortArr
.
length
>
0
){
this
.
sortArr
.
forEach
(
item
=>
{
this
.
sortArr
.
forEach
(
item
=>
{
if
(
item
.
projectId
==
this
.
defaultAreaCode
){
if
(
item
.
projectId
==
this
.
defaultAreaCode
){
this
.
sortIfo
=
item
this
.
sortIfo
=
item
this
.
sortIfo
.
peopleNumber
=
Math
.
max
(
item
.
sortTotalCapacity
-
item
.
showEnd
,
0
)
this
.
sortIfo
.
peopleNumber
=
Math
.
max
(
item
.
sortTotalCapacity
-
item
.
showEnd
,
0
)
}
}
})
})
this
.
areaList
.
forEach
(
item
=>
{
if
(
item
.
areaCode
==
this
.
defaultAreaCode
){
this
.
areaObj
.
areaCode
=
item
.
areaCode
this
.
areaObj
.
areaName
=
item
.
areaName
}
})
return
return
}
}
uni
.
getLocation
({
uni
.
getLocation
({
...
@@ -198,27 +190,23 @@ export default {
...
@@ -198,27 +190,23 @@ export default {
})
})
},
},
methods
:
{
methods
:
{
//---关闭组件
closeSon
(){
this
.
$parent
.
closeArea
()
},
//---隐藏弹窗
//---隐藏弹窗
hidePop
()
{
hidePop
()
{
this
.
showPop
=
false
this
.
showPop
=
false
},
},
//---返回隐藏该组件
//---确定选择站点
returnClose
()
{
this
.
$parent
.
closeArea
()
},
//---隐藏该组件
sure
()
{
sure
()
{
this
.
showPop
=
false
this
.
showPop
=
false
this
.
$parent
.
closeArea
()
this
.
$parent
.
closeArea
()
this
.
$emit
(
'areaSure'
,
this
.
areaObj
)
this
.
$emit
(
'areaSure'
,
this
.
areaObj
)
},
},
//---获取排号信息
//---
选择站点,
获取排号信息
getSort
(
item
)
{
chooseArea
(
item
)
{
this
.
showPop
=
true
this
.
showPop
=
true
let
data
=
{
areaCode
:
item
.
areaCode
,
merchantCode
:
this
.
merchantCode
,
//商户code
}
this
.
areaObj
.
areaCode
=
item
.
areaCode
//获取选中的站点code,便于找到返回数据的下标
this
.
areaObj
.
areaCode
=
item
.
areaCode
//获取选中的站点code,便于找到返回数据的下标
this
.
areaObj
.
areaName
=
item
.
areaName
this
.
areaObj
.
areaName
=
item
.
areaName
this
.
sortArr
.
forEach
((
item
)
=>
{
this
.
sortArr
.
forEach
((
item
)
=>
{
...
@@ -255,7 +243,7 @@ export default {
...
@@ -255,7 +243,7 @@ export default {
text-align
:
center
;
text-align
:
center
;
}
}
.defaultArea
view
text
:last-child
{
.defaultArea
view
text
:last-child
{
color
:
#e70313
;
color
:
$red
;
font-size
:
32rpx
;
font-size
:
32rpx
;
font-weight
:
bold
;
font-weight
:
bold
;
}
}
...
@@ -266,7 +254,7 @@ export default {
...
@@ -266,7 +254,7 @@ export default {
right
:
0
;
right
:
0
;
bottom
:
0
;
bottom
:
0
;
z-index
:
99
;
z-index
:
99
;
background
:
#
f5f5f5
;
background
:
#
ECF3FE
;
}
}
.top
{
.top
{
display
:
flex
;
display
:
flex
;
...
@@ -288,7 +276,7 @@ export default {
...
@@ -288,7 +276,7 @@ export default {
}
}
.bottom1-choose
{
.bottom1-choose
{
font-size
:
32rpx
;
font-size
:
32rpx
;
color
:
#ff0000
;
color
:
$red
;
text
{
text
{
font-weight
:
bold
;
font-weight
:
bold
;
font-size
:
36rpx
;
font-size
:
36rpx
;
...
@@ -300,12 +288,12 @@ export default {
...
@@ -300,12 +288,12 @@ export default {
.bottom2
{
.bottom2
{
margin-top
:
60rpx
;
margin-top
:
60rpx
;
font-size
:
32rpx
;
font-size
:
32rpx
;
color
:
#ff0000
;
color
:
$red
;
text-align
:
center
;
text-align
:
center
;
}
}
// 弹窗
// 弹窗
.pop-wrap
{
.pop-wrap
{
background
:
rgba
(
0
,
0
,
0
,
0
.
1
);
background
:
rgba
(
0
,
0
,
0
,
0
.
4
);
position
:
fixed
;
position
:
fixed
;
top
:
0
;
top
:
0
;
left
:
0
;
left
:
0
;
...
@@ -328,6 +316,6 @@ export default {
...
@@ -328,6 +316,6 @@ export default {
.pop-content
view
:not
(
:last-child
)
text
:last-child
{
.pop-content
view
:not
(
:last-child
)
text
:last-child
{
font-size
:
36rpx
;
font-size
:
36rpx
;
font-weight
:
bolder
;
font-weight
:
bolder
;
color
:
#f40000
color
:
$red
;
}
}
</
style
>
</
style
>
pages/scenic/scenicComponents/contactList.vue
View file @
3c2a558a
<
template
>
<
template
>
<view
class=
"contact-box
"
>
<view
v-show=
"showPop
"
>
<
u-popup
:show=
"contactsShow"
@
close=
"contactsShow=false
"
>
<
view
class=
"list-box
"
>
<view
class=
"top"
>
<view
class=
"top"
>
<u-icon
name=
"close"
@
click=
"contactsShow=false"
></u-icon>
<view
class=
"top-num"
>
<text>
<text>
需填写
{{
buyNum
}}
位联系人
需填写
{{
contactNum
}}
位联系人
<text
v-if=
"buyNum-chooseContact.length>0"
>
,还需
<text
class=
"top-number"
>
{{
buyNum
-
chooseContact
.
length
}}
</text>
位出行人
</text>
</text>
</text>
<view
class=
"top-icon"
@
click=
"showPop=false"
>
<u-icon
name=
"close"
bold
></u-icon>
<text
@
click=
"config()"
class=
"top-sure"
>
</view>
确定
</view>
</text>
<view
@
click=
"showEdit()"
class=
"top-add"
>
</view>
<view
class=
"bottom"
>
<view
@
click=
"showEdit()"
class=
"bottom-add"
>
<text>
<text>
+添加旅客信息
+添加旅客信息
</text>
</text>
</view>
</view>
</view>
<view
class=
"bottom"
>
<checkbox-group
@
change=
"chooseContactChange"
>
<checkbox-group
@
change=
"chooseContactChange"
>
<view
class=
"bottom-list"
v-for=
"(item,index) of
contactData
"
:key=
"item.id"
>
<view
class=
"bottom-list"
v-for=
"(item,index) of
listTotal
"
:key=
"item.id"
>
<label>
<label>
<checkbox
:value=
"JSON.stringify(item)"
:checked=
"item.ifChoose"
color=
"#3688ff"
/>
<checkbox
class=
"blue"
:value=
"JSON.stringify(item)"
:checked=
"item.ifChoose"
color=
"#3688ff"
/>
<view
class=
"bottom-content"
>
<view
class=
"bottom-content"
>
<view>
<view>
{{
item
.
name
}}
{{
item
.
name
}}
</view>
</view>
<view>
<view>
<text>
<text>
身份证
身份证
</text>
</text>
{{
item
.
credentialNumber
?
item
.
credentialNumber
.
substr
(
0
,
3
)
+
"****"
+
item
.
credentialNumber
.
substr
(
14
,
4
):
"无"
}}
{{
item
.
credentialNumber
?
item
.
credentialNumber
.
substr
(
0
,
3
)
+
"****"
+
item
.
credentialNumber
.
substr
(
14
,
4
):
"无"
}}
</view>
</view>
<view>
<text>
手机号
</text>
{{
item
.
phone
?
item
.
phone
.
substr
(
0
,
3
)
+
"****"
+
item
.
phone
.
substr
(
7
,
4
):
"无"
}}
</view>
</view>
</view>
</label>
</label>
<view
@
click=
"goEdit(item)"
style=
"margin-right:20rpx;"
>
<view
@
click=
"goEdit(item)"
style=
"margin-right:20rpx;"
>
<u-icon
name=
"edit-pen"
color=
"#3688ff"
size=
"
28
"
></u-icon>
<u-icon
name=
"edit-pen"
color=
"#3688ff"
size=
"
56
"
></u-icon>
</view>
</view>
<view
@
click=
"clickDele(item.id)"
>
<view
@
click=
"clickDele(item.id)"
>
<u-icon
name=
"trash-fill"
color=
"#3688ff"
size=
"
28
"
></u-icon>
<u-icon
name=
"trash-fill"
color=
"#3688ff"
size=
"
56
"
></u-icon>
</view>
</view>
</view>
<u-modal
:show=
"showModal"
@
confirm=
"confirmDele"
@
cancel=
"showModal=false"
showCancelButton
title=
"确认删除该联系人"
></u-modal>
<view
style=
"margin: 40rpx 0;text-align: center;"
v-if=
'listTotal&&listTotal.length>0'
>
已展示所有联系人
</view>
</view>
</checkbox-group>
</checkbox-group>
</view>
</u-popup>
<view
class=
"bottom-sure"
@
click=
"config()"
>
确定
</view>
</view>
</view>
<u-modal
:show=
"showModal"
@
confirm=
"confirmDele"
@
cancel=
"showModal=false"
showCancelButton
title=
"确认删除该联系人"
></u-modal>
</view>
</view>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
props
:
[
"contactData"
,
"orderTouristList"
,
"buyNum"
],
props
:
[
'contactTotal'
,
'contactNum'
],
watch
:
{
watch
:
{
orderTouristList
:
{
contactTotal
:
{
handler
(
newValue
,
oldValue
)
{
handler
(
newValue
,
oldValue
)
{
if
(
newValue
)
{
if
(
newValue
)
{
this
.
chooseContact
=
this
.
orderTouristList
this
.
listTotal
=
this
.
contactTotal
}
}
},
},
deep
:
true
,
deep
:
true
,
immediate
:
true
immediate
:
true
}
}
},
},
data
()
{
data
()
{
return
{
return
{
contactsShow
:
false
,
//控制联系人弹窗显示隐藏
showPop
:
false
,
//控制联系人弹窗显示隐藏
chooseContact
:
[],
//选中的
联系人
listTotal
:[],
//所有
联系人
showModal
:
false
,
//确认弹窗显示隐藏
showModal
:
false
,
//确认弹窗显示隐藏
contactId
:
''
,
//删除联系人的Id
contactId
:
''
,
//删除联系人的Id
}
}
},
},
methods
:
{
methods
:
{
//---点击新增,展示编辑联系人弹窗,并传空值给编辑弹窗
//---点击新增,展示编辑联系人弹窗,并传空值给编辑弹窗
showEdit
()
{
showEdit
()
{
this
.
contactsShow
=
false
this
.
$parent
.
showEdit
()
this
.
$parent
.
showEdit
()
this
.
$emit
(
'getEditContact'
,
''
)
this
.
$emit
(
"getEditContact"
,
""
)
},
},
//---展示编辑弹窗,并传值给编辑弹窗
//---展示编辑弹窗,并传值给编辑弹窗
goEdit
(
obj
)
{
goEdit
(
obj
)
{
this
.
$parent
.
showEdit
()
this
.
contactsShow
=
false
this
.
$emit
(
'getEditContact'
,
obj
)
this
.
$parent
.
showEdit
()
},
this
.
$emit
(
"getEditContact"
,
obj
)
//---确定选中的联系人
},
config
()
{
//---确定选中的联系人
this
.
showPop
=
false
config
()
{
//选中的排在前面
this
.
contactsShow
=
false
this
.
listTotal
.
sort
(
function
(
a
,
b
)
{
this
.
$emit
(
"contactListConfig"
,
this
.
chooseContact
)
return
b
.
ifChoose
-
a
.
ifChoose
})
},
this
.
$parent
.
contactTotal
=
this
.
listTotal
//---联系人姓名变化
let
chooseArr
=
[]
chooseContactChange
(
e
){
this
.
listTotal
.
forEach
(
item
=>
{
let
value
=
e
.
detail
.
value
if
(
item
.
ifChoose
){
let
arr
=
[]
chooseArr
.
push
(
item
)
value
.
forEach
(
item
=>
{
}
arr
.
push
(
JSON
.
parse
(
item
))
})
})
this
.
$parent
.
chooseContact
=
chooseArr
this
.
chooseContact
=
arr
},
if
(
arr
.
length
==
this
.
buyNum
)
{
//当选择的人数等于需要填的人数时关闭弹窗
//---联系人姓名变化
this
.
config
()
chooseContactChange
(
e
){
}
let
value
=
e
.
detail
.
value
if
(
arr
.
length
>
this
.
buyNum
)
{
if
(
value
.
length
>
this
.
contactNum
)
{
arr
.
shift
()
let
number
=
value
.
length
-
this
.
contactNum
this
.
config
()
value
=
value
.
slice
(
number
)
}
}
},
let
arr
=
[]
//---点击删除
value
.
forEach
(
item
=>
{
clickDele
(
id
)
{
arr
.
push
(
JSON
.
parse
(
item
))
this
.
showModal
=
true
})
this
.
contactId
=
id
//先全部取消选中,后面根据选中的值来判断谁选中
},
this
.
listTotal
.
forEach
(
item
=>
{
//---确认删除
item
.
ifChoose
=
false
confirmDele
(){
})
let
data
=
{
arr
.
forEach
(
item
=>
{
id
:
this
.
contactId
this
.
listTotal
.
forEach
(
item2
=>
{
}
if
(
item
.
id
==
item2
.
id
){
this
.
$request
(
'wechatUser/contact/deleteContact'
,
data
).
then
((
res
)
=>
{
item2
.
ifChoose
=
true
if
(
res
.
code
==
'00'
)
{
}
uni
.
showToast
({
})
title
:
'删除成功'
,
})
icon
:
'none'
},
})
//---点击删除
this
.
showModal
=
false
clickDele
(
id
)
{
this
.
contactsShow
=
false
this
.
showModal
=
true
this
.
$parent
.
getContactList
()
this
.
contactId
=
id
}
else
{
},
uni
.
showToast
({
//---确认删除
title
:
res
.
message
,
confirmDele
(){
icon
:
'none'
let
data
=
{
})
id
:
this
.
contactId
}
}
}).
catch
(()
=>
{
this
.
$request
(
'wechatUser/contact/deleteContact'
,
data
).
then
((
res
)
=>
{
this
.
showModal
=
false
if
(
res
.
code
==
'00'
)
{
})
uni
.
showToast
({
}
title
:
'删除成功'
,
}
icon
:
'none'
}
})
this
.
showModal
=
false
this
.
$parent
.
getContactList
()
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
}).
catch
(()
=>
{
this
.
showModal
=
false
})
}
}
}
</
script
>
</
script
>
<
style
scoped=
"scoped"
lang=
"scss"
>
<
style
scoped=
"scoped"
lang=
"scss"
>
.top
{
.list-box
{
height
:
100rpx
;
background
:
#F5F5F5
;
position
:
fixed
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
z-index
:
999
;
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
flex-direction
:
column
;
background
:
#f0f0f0
;
align-items
:
center
;
padding
:
0
24rpx
;
}
}
.top-sure
{
.top-num
{
color
:
var
(
--
main-color
);
height
:
100rpx
;
font-size
:
28rpx
;
display
:
flex
;
}
align-items
:
center
;
.top-number
{
background
:
#FFF1E8
;
color
:
#f9690e
;
color
:
#FC771D
;
justify-content
:
center
;
font-weight
:
bold
;
font-size
:
32rpx
;
font-size
:
32rpx
;
font-weight
:bold
;
position
:
relative
;
}
}
.top-icon
{
.bottom
{
position
:
absolute
;
padding
:
0
24rpx
80rpx
24rpx
;
right
:
24rpx
;
}
}
.top-add
{
.bottom-add
{
height
:
150rpx
;
height
:
130rpx
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
border-bottom
:
1px
solid
#e6e6e6
;
width
:
100%
;
justify-content
:
center
;
justify-content
:
center
;
border-bottom
:
1px
solid
#e6e6e6
;
padding
:
0
24rpx
;
background
:
#ECF3FE
;
}
}
.top-add
text
{
.bottom-add
text
{
width
:
280rpx
;
height
:
65rpx
;
text-align
:
center
;
line-height
:
65rpx
;
border
:
1px
solid
var
(
--
main-color
);
color
:var
(
--main-color
)
;
display
:
inline-block
;
display
:
inline-block
;
width
:
100%
;
height
:
76rpx
;
text-align
:
center
;
line-height
:
76rpx
;
border
:
1px
solid
$theme
;
color
:
$theme
;
border-radius
:
5rpx
;
border-radius
:
5rpx
;
box-shadow
:
0px
0px
12px
2px
rgba
(
0
,
0
,
0
,
0
.08
);
}
.bottom
{
padding
:
0
24rpx
100rpx
24rpx
;
flex
:
1
;
overflow-y
:
scroll
;
}
}
.bottom-list
{
.bottom-list
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
...
@@ -198,29 +228,38 @@
...
@@ -198,29 +228,38 @@
border-bottom
:
1px
solid
#E6E6E6
;
border-bottom
:
1px
solid
#E6E6E6
;
padding
:
25rpx
0
;
padding
:
25rpx
0
;
}
}
.bottom-list
label
{
.bottom-list
label
{
display
:
flex
;
display
:
flex
;
flex
:
1
;
flex
:
1
;
align-items
:
center
;
align-items
:
center
;
}
}
.bottom-content
{
.bottom-content
{
flex
:
1
;
flex
:
1
;
margin-left
:
40rpx
;
margin-left
:
40rpx
;
}
}
.bottom-content
view
{
.bottom-content
view
{
font-size
:
28rpx
;
font-size
:
28rpx
;
color
:
#666666
;
color
:
#666666
;
}
}
.bottom-content
view
:not
(
:first-child
)
{
.bottom-content
view
:not
(
:first-child
)
{
margin-top
:
10rpx
;
margin-top
:
10rpx
;
}
}
.bottom-content
view
text
{
.bottom-content
view
text
{
display
:
inline-block
;
display
:
inline-block
;
width
:
100rpx
;
width
:
100rpx
;
}
}
.bottom-sure
{
position
:
fixed
;
bottom
:
0
;
left
:
0
;
width
:
100%
;
height
:
100rpx
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
background
:
$theme
;
font-size
:
32rpx
;
font-weight
:
bold
;
color
:
#ffffff
;
}
</
style
>
</
style
>
pages/scenic/scenicComponents/detail.vue
View file @
3c2a558a
<
template
>
<
template
>
<view>
<u-popup
:show=
"showPop"
:round=
"20"
@
close=
"showPop = false"
closeable
>
<u-popup
:show=
"show"
:round=
"10"
closeable
@
close=
"show=false"
>
<view
class=
"son-wrap"
>
<view
class=
"detail"
>
<view
class=
"detail-title"
>
<view
class=
"detail-title"
>
订单明细
费用明细
</view>
</view>
<view
class=
"detail-content"
>
<view
class=
"content-box"
>
<text>
{{
merchantName
}}
(
{{
name
}}
)
</text>
<view
class=
"content-right"
>
<view
style=
"flex: 1; overflow-y: scroll"
>
<view>
¥
{{
sellingPrice
}}
x
{{
buyNum
}}
份
</view>
<view
class=
"content-box"
>
<view
v-if=
"productDepositTotal"
>
押金:
{{
productDepositTotal
}}
</view>
<text>
{{
merchantName
}}
(
{{
name
}}
)
</text>
</view>
</view>
<!-- ---------------------------------------额外服务------------------------------------------- -->
<view
class=
"content-box"
v-for=
"(item,index) of choooseServiceData"
:key=
"index"
>
<text>
{{
item
.
name
}}
</text>
<view
class=
"content-right"
>
<view
class=
"content-right"
>
<view>
¥
{{
item
.
sellingPrice
}}
x
{{
buyNum
}}
份
</view>
<view>
¥
{{
sellingPrice
}}
x
{{
buyNum
}}
份
</view>
<view
v-if=
"item.depositTotal"
>
押金:
{{
item
.
depositTotal
}}
</view>
<view
v-if=
"productDepositTotal"
>
押金:
{{
productDepositTotal
}}
</view>
</view>
</view>
</view>
<view
class=
"content-box"
v-if=
"chooseCouponObj&&chooseCouponObj.savedMoney>0"
>
</view>
<text>
<!-- ---------------------------------------额外服务------------------------------------------- -->
券
<view
class=
"content-box"
v-for=
"(item, index) of chooseService"
:key=
"index"
>
</text>
<text>
{{
item
.
name
}}
</text>
<text
class=
"content-right"
>
<view
class=
"content-right"
>
-¥
{{
parseFloat
(
chooseCouponObj
.
savedMoney
.
toFixed
(
2
))
}}
<view>
¥
{{
item
.
sellingPrice
}}
x
{{
buyNum
}}
份
</view>
<
/text
>
<
view
v-if=
"item.depositTotal"
>
押金:
{{
item
.
depositTotal
}}
</view
>
</view>
</view>
</view>
<view
class=
"content-box"
v-if=
"chooseCouponObj && chooseCouponObj.savedMoney > 0"
>
<text>
券
</text>
<view
class=
"content-box content-total"
>
<text
class=
"content-right"
>
-¥
{{
parseFloat
(
chooseCouponObj
.
savedMoney
.
toFixed
(
2
))
}}
</text>
<text>
</view>
合计
</text>
<text
class=
"content-right"
>
<view
class=
"content-box content-total"
>
¥
<text
style=
"font-size:36rpx;"
>
{{
sellTotal
}}
</text>
<text>
合计
</text>
</text>
</view>
<text
class=
"content-right"
>
¥
<text
style=
"font-size: 36rpx"
>
{{
sellTotal
}}
</text>
</text>
</view>
</view>
</view>
</view>
</u-popup>
</view>
</view>
</u-popup>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
props
:
[
"merchantName"
,
"name"
,
"buyNum"
,
"sellingPrice"
,
"productDepositTotal"
,
"chooseCouponObj"
,
"choooseService"
],
props
:
[
watch
:
{
'merchantName'
,
choooseService
:
{
'name'
,
handler
(
newValue
,
oldValue
)
{
'buyNum'
,
if
(
newValue
)
{
'sellingPrice'
,
this
.
choooseServiceData
=
this
.
choooseService
'productDepositTotal'
,
'chooseCouponObj'
,
}
'chooseService'
,
},
'sellTotal'
deep
:
false
,
],
immediate
:
false
data
()
{
}
return
{
},
showPop
:
false
,
//控制弹窗显示隐藏
data
()
{
}
return
{
},
show
:
false
,
//控制弹窗显示隐藏
extraPrice
:
0
,
//额外服务价格
depositTotal
:
0
,
//额外服务总押金
choooseServiceData
:
[],
//选中的服务
}
},
computed
:
{
sellTotal
()
{
//卖价总价
let
savedMoney
=
0
if
(
this
.
chooseCouponObj
){
savedMoney
=
this
.
chooseCouponObj
.
savedMoney
}
if
(
this
.
choooseServiceData
.
length
>
0
)
{
//额外服务价格
let
singleMoney
=
0
//单个产品总押金,用于算出总押金
this
.
extraPrice
=
0
this
.
depositTotal
=
0
//总押金
for
(
let
i
=
0
;
i
<
this
.
choooseServiceData
.
length
;
i
++
)
{
this
.
extraPrice
+=
parseFloat
((
this
.
choooseServiceData
[
i
].
sellingPrice
*
this
.
buyNum
).
toFixed
(
2
))
if
(
this
.
choooseServiceData
[
i
].
depositType
==
1
)
{
//---------------------------------------------------------------------------等于1,押金金额跟数量没关系
singleMoney
=
this
.
choooseServiceData
[
i
].
deposit
this
.
choooseServiceData
[
i
].
depositTotal
=
this
.
choooseServiceData
[
i
].
deposit
//单个产品总押金
}
else
if
(
this
.
choooseServiceData
[
i
].
depositType
==
2
)
{
//----------------------------------------------------------------------等于2,押金单价乘购买数量
singleMoney
=
parseFloat
((
this
.
choooseServiceData
[
i
].
deposit
*
this
.
buyNum
).
toFixed
(
2
))
this
.
choooseServiceData
[
i
].
depositTotal
=
parseFloat
((
this
.
choooseServiceData
[
i
].
deposit
*
this
.
buyNum
).
toFixed
(
2
))
//单个产品总押金
}
this
.
depositTotal
+=
singleMoney
}
}
else
{
this
.
extraPrice
=
0
this
.
depositTotal
=
0
}
return
parseFloat
((
this
.
sellingPrice
*
this
.
buyNum
+
this
.
extraPrice
+
this
.
depositTotal
+
this
.
productDepositTotal
-
savedMoney
).
toFixed
(
2
))
}
},
methods
:
{
methods
:
{}
}
}
}
</
script
>
</
script
>
<
style
scoped=
"scoped"
>
<
style
scoped=
"scoped"
>
.detail-title
{
.son-wrap
{
height
:
120
rpx
;
position
:
relative
;
display
:
flex
;
height
:
65vh
;
align-items
:
center
;
display
:
flex
;
justify-content
:
center
;
flex-direction
:
column
;
font-size
:
32
rpx
;
}
border-bottom
:
var
(
--border-bottom
);
.detail-title
{
}
text-align
:
center
;
.content-box
{
font-size
:
32
rpx
;
padding
:
0
30
rpx
;
font-weight
:
bold
;
border-bottom
:
1px
solid
#f0f0f0
;
padding
:
30
rpx
24
rpx
;
height
:
120
rpx
;
border-radius
:
20
rpx
20
rpx
0
0
;
display
:
flex
;
}
justify-content
:
space-between
;
.content-box
{
align-items
:
center
;
padding
:
0
30
rpx
;
font-size
:
28
rpx
;
border-bottom
:
1px
solid
#f0f0f0
;
}
height
:
120
rpx
;
.content-right
{
display
:
flex
;
text-align
:
right
;
justify-content
:
space-between
;
flex-shrink
:
0
;
align-items
:
center
;
margin-left
:
20
rpx
;
font-size
:
28
rpx
;
}
}
.content-total
{
.content-right
{
color
:
#f45803
;
text-align
:
right
;
font-weight
:
bolder
;
flex-shrink
:
0
;
font-size
:
32
rpx
;
margin-left
:
20
rpx
;
}
}
.content-total
{
color
:
#f45803
;
font-weight
:
bolder
;
font-size
:
32
rpx
;
}
</
style
>
</
style
>
pages/scenic/scenicComponents/editContacts.vue
View file @
3c2a558a
<
template
>
<
template
>
<view
class=
"editBox"
v-show=
"showEdit"
>
<view
class=
"editBox"
v-show=
"showEdit"
>
<view
@
click=
"close()"
class=
"return"
>
<view
class=
"return"
>
<u-icon
name=
"close"
></u-icon>
<!-- 新增的时候 -->
<view
v-if=
"!reviseContactId"
>
已新增
{{
contactTotal
.
length
}}
位联系人
</view>
<view
@
click=
"showEdit = false"
class=
"return-icon"
>
<u-icon
name=
"close"
bold
></u-icon>
</view>
</view>
</view>
<view
class=
"editTop"
>
<view
class=
"editTop"
>
</view>
</view>
<view
class=
"editBottom"
>
<view
class=
"editBottom"
>
<view
class=
"bottomContent"
>
<view
class=
"bottomContent"
>
<view>
<view>
<text>
<text>
姓名:
姓名:
</text>
</text>
<input
v-model
.
trim=
"name"
placeholder=
"请输入中文姓名"
/>
<input
v-model
.
trim=
"name"
placeholder=
"请输入中文姓名
,必填
"
/>
</view>
</view>
<view>
<view>
<text>
<text>
身份证:
身份证:
</text>
</text>
<input
v-model
.
trim=
"credentialNumber"
maxlength=
"18"
placeholder=
"请输入身份证号码"
/>
<input
v-model
.
trim=
"credentialNumber"
maxlength=
"18"
placeholder=
"请输入身份证号码
,必填
"
/>
</view>
</view>
<view>
<view>
<!--编辑-->
<text>
<a
class=
"middle-btn"
@
click=
"keepEdit()"
v-if=
"editBtn"
>
完成
</a>
联系电话:
<!--新增-->
</text>
<a
class=
"middle-btn"
@
click=
"keepPlus()"
v-else=
""
>
完成
</a>
<input
v-model
.
trim=
"phone"
maxlength=
"11"
placeholder=
"用于接收行程信息"
/>
</view>
<view>
<a
class=
"complete"
@
click=
"keepSave()"
>
完成
</a>
</view>
</view>
</view>
</view>
...
@@ -37,147 +45,123 @@
...
@@ -37,147 +45,123 @@
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
props
:
[
"editContact"
],
props
:
[
'editContact'
,
'contactTotal'
],
data
()
{
data
()
{
return
{
return
{
showEdit
:
false
,
//控制组件显示隐藏
showEdit
:
false
,
//控制组件显示隐藏
name
:
""
,
//姓名
name
:
''
,
//姓名
credentialNumber
:
""
,
//身份证号
credentialNumber
:
''
,
//身份证号
reviseContactId
:
""
,
//被修改人id
phone
:
''
,
//手机号码
editBtn
:
""
,
//控制编辑完成按钮显示隐藏
reviseContactId
:
''
,
//被修改人id
}
}
},
},
watch
:
{
watch
:
{
editContact
:
{
//
editContact
:
{
handler
(
newValue
,
oldValue
)
{
handler
(
newValue
,
oldValue
)
{
if
(
newValue
)
{
this
.
name
=
newValue
.
name
||
''
this
.
editBtn
=
true
this
.
credentialNumber
=
newValue
.
credentialNumber
||
''
}
else
{
this
.
reviseContactId
=
newValue
.
id
||
''
this
.
editBtn
=
false
this
.
phone
=
newValue
.
phone
||
''
}
},
this
.
name
=
newValue
.
name
||
''
deep
:
true
,
this
.
credentialNumber
=
newValue
.
credentialNumber
||
''
immediate
:
true
this
.
reviseContactId
=
newValue
.
id
||
''
}
},
},
deep
:
false
,
methods
:
{
immediate
:
false
//---保存
}
keepSave
()
{
},
if
(
!
this
.
$commonjs
.
nameReg
().
test
(
this
.
name
))
{
methods
:
{
uni
.
showToast
({
//---关闭弹窗
title
:
'请输入正确的中文名字'
,
close
()
{
icon
:
'none'
this
.
showEdit
=
false
})
},
return
//---新增保存
}
keepPlus
()
{
if
(
!
this
.
$commonjs
.
idReg
().
test
(
this
.
credentialNumber
))
{
if
(
!
this
.
$commonjs
.
nameReg
().
test
(
this
.
name
))
{
uni
.
showToast
({
uni
.
showToast
({
title
:
'请输入正确身份证号'
,
title
:
'请输入正确的中文名字'
,
icon
:
'none'
icon
:
'none'
})
})
return
return
}
}
if
(
this
.
phone
&&!
this
.
$commonjs
.
phoneReg
().
test
(
this
.
phone
))
{
if
(
!
this
.
$commonjs
.
idReg
().
test
(
this
.
credentialNumber
))
{
uni
.
showToast
({
uni
.
showToast
({
title
:
'请输入正确电话号码'
,
title
:
'请输入正确身份证号'
,
icon
:
'none'
icon
:
'none'
})
})
return
return
}
}
let
data
=
{
let
data
=
{
name
:
this
.
name
,
//保存姓名
name
:
this
.
name
,
//保存姓名
phone
:
this
.
phone
,
//电话号码
phone
:
""
,
//电话号码
credentialNumber
:
this
.
credentialNumber
,
//身份证号
credentialNumber
:
this
.
credentialNumber
,
//身份证号
openid
:
uni
.
getStorageSync
(
'openid'
),
//用户Id
category
:
""
,
//成人或者儿童
merchantType
:
1
,
//商户类型,1.景区,2.酒店,3.餐饮
openid
:
uni
.
getStorageSync
(
"openid"
),
//用户Id
id
:
this
.
reviseContactId
,
//被修改人id
credentialsType
:
""
,
//证件类型
category
:
''
,
//成人或者儿童
merchantType
:
1
,
//商户类型,1.景区,2.酒店,3.餐饮
credentialsType
:
''
,
//证件类型
}
}
this
.
$request
(
"wechatUser/contact/saveContact"
,
data
).
then
((
res
)
=>
{
let
queryUrl
=
''
if
(
res
.
code
==
"00"
)
{
if
(
this
.
reviseContactId
){
uni
.
showToast
({
queryUrl
=
'wechatUser/contact/updateContact'
title
:
'保存成功'
,
}
else
{
icon
:
'none'
queryUrl
=
'wechatUser/contact/saveContact'
})
}
this
.
$parent
.
addChoose
()
this
.
$request
(
queryUrl
,
data
).
then
((
res
)
=>
{
this
.
showEdit
=
false
if
(
res
.
code
==
'00'
)
{
this
.
name
=
""
//成功之后清空数据,防止下次新增的时候出现之前的数据
uni
.
showToast
({
this
.
credentialNumber
=
""
title
:
'保存成功'
,
}
else
{
icon
:
'none'
uni
.
showToast
({
})
title
:
res
.
message
,
if
(
!
this
.
reviseContactId
){
icon
:
'none'
//新增的时候
})
this
.
$parent
.
addChoose
()
}
//成功之后清空数据,防止下次新增的时候出现之前的数据
})
this
.
name
=
''
},
this
.
credentialNumber
=
''
//---编辑保存
this
.
phone
=
''
keepEdit
()
{
}
if
(
!
this
.
$commonjs
.
nameReg
().
test
(
this
.
name
))
{
if
(
this
.
reviseContactId
){
uni
.
showToast
({
//修改的时候
title
:
'请输入正确的中文名字'
,
this
.
showEdit
=
false
icon
:
'none'
}
})
}
else
{
return
uni
.
showToast
({
}
title
:
res
.
message
,
if
(
!
this
.
$commonjs
.
idReg
().
test
(
this
.
credentialNumber
))
{
icon
:
'none'
uni
.
showToast
({
})
title
:
'请输入正确身份证号'
,
}
icon
:
'none'
})
})
}
return
}
}
}
let
data
=
{
name
:
this
.
name
,
//保存姓名
phone
:
""
,
//电话号码
credentialNumber
:
this
.
credentialNumber
,
//身份证号
category
:
""
,
//成人或者儿童
openid
:
uni
.
getStorageSync
(
"openid"
),
//用户Id
credentialsType
:
""
,
//证件类型
merchantType
:
1
,
//商户类型,1.景区,2.酒店,3.餐饮
id
:
this
.
reviseContactId
,
//被修改人id
}
this
.
$request
(
"wechatUser/contact/updateContact"
,
data
).
then
((
res
)
=>
{
if
(
res
.
code
==
"00"
)
{
uni
.
showToast
({
title
:
'修改成功'
,
icon
:
'none'
})
this
.
$parent
.
getContactList
()
this
.
showEdit
=
false
}
else
{
uni
.
showToast
({
title
:
res
.
message
,
icon
:
'none'
})
}
})
}
}
}
</
script
>
</
script
>
<
style
scoped=
"scoped"
>
<
style
scoped=
"scoped"
lang=
"scss"
>
.editBox
{
.editBox
{
height
:
100%
;
background
:
#F5F5F5
;
background
:
#F5F5F5
;
position
:
fixed
;
position
:
fixed
;
top
:
0
;
top
:
0
;
left
:
0
;
left
:
0
;
right
:
0
;
right
:
0
;
bottom
:
0
;
bottom
:
0
;
z-index
:
10000
;
z-index
:
1000
;
overflow-y
:
auto
;
font-size
:
28
rpx
;
}
}
.return
{
.return
{
height
:
100
rpx
;
height
:
100rpx
;
padding
:
0
24
rpx
;
background
:
#FFFFFF
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
flex-end
;
background
:
#FFF1E8
;
color
:
#FC771D
;
justify-content
:
center
;
font-weight
:
bold
;
font-size
:
32rpx
;
position
:
relative
;
}
.return-icon
{
position
:
absolute
;
right
:
24rpx
;
}
}
.editTop
{
.editTop
{
height
:
200rpx
;
height
:
200rpx
;
...
@@ -201,7 +185,7 @@
...
@@ -201,7 +185,7 @@
}
}
.bottomContent
view
text
{
.bottomContent
view
text
{
display
:
inline-block
;
display
:
inline-block
;
width
:
1
2
0
rpx
;
width
:
1
4
0rpx
;
text-align-last
:
justify
;
text-align-last
:
justify
;
margin-right
:
20rpx
;
margin-right
:
20rpx
;
}
}
...
@@ -209,10 +193,17 @@
...
@@ -209,10 +193,17 @@
flex
:
1
;
flex
:
1
;
}
}
.bottomContent
view
:last-child
{
.bottomContent
view
:last-child
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
margin-top
:
60rpx
;
margin-top
:
60rpx
;
border
:
none
;
border
:
none
;
}
}
.complete
{
width
:
100%
;
height
:
70rpx
;
border-radius
:
16rpx
;
color
:
#FFFFFF
;
text-align
:
center
;
line-height
:
70rpx
;
background
:
$theme
;
display
:
inline-block
;
}
</
style
>
</
style
>
pages/scenic/scenicComponents/times.vue
View file @
3c2a558a
<
template
>
<
template
>
<u-popup
:show=
"show
"
:round=
"10"
closeable
@
close=
"show=false"
>
<u-popup
:show=
"show
Pop"
:round=
"20"
@
close=
"showPop=false"
closeable
>
<view
class=
"
time
"
>
<view
class=
"
son-wrap
"
>
<view
class=
"time-title"
>
<view
class=
"time-title"
>
时间选择
时间选择
</view>
</view>
<view
class=
"time-content"
v-if=
"chooseTimeList&&chooseTimeList.length>0
"
>
<view
style=
"flex: 1;overflow-y: scroll;padding: 0 30rpx;
"
>
<
!--库存大于零并且当前时间小于班次的开始时间才显示--
>
<
view
class=
"time-content"
v-if=
"chooseTimeList&&chooseTimeList.length>0"
>
<view
<!--库存大于零并且当前时间小于班次的开始时间才显示-->
class=
'time-list'
<view
class=
'time-list'
v-for=
"(item,index) of chooseTimeList"
v-for=
"(item,index) of chooseTimeList"
:class=
"
{on:active==index}"
:class=
"
{on:active==index}"
@click="chooseTime(index)"
@click="chooseTime(index)"
:key="index" v-if="item.last>0"
:key="index" v-if="item.last>0">
>
<view>
<view>
{{
item
.
startPlanTime
?
item
.
startPlanTime
.
substr
(
0
,
5
):
""
}}
{{
item
.
startPlanTime
?
item
.
startPlanTime
.
substr
(
0
,
5
):
""
}}
<text
v-if=
"item.endPlanTime"
>
-
</text>
<text
v-if=
"item.endPlanTime"
>
-
</text>
{{
item
.
endPlanTime
?
item
.
endPlanTime
.
substr
(
0
,
5
):
""
}}
{{
item
.
endPlanTime
?
item
.
endPlanTime
.
substr
(
0
,
5
):
""
}}
</view>
</
view>
<
view>
<view>
剩余:
{{
item
.
last
}}
剩余:
{{
item
.
last
}}
</view>
</view>
</view>
</view>
<view
style=
"padding: 0.5rem 0rem;color: #FF0000;"
v-else
>
空空如也...
</view>
<view
class=
"time-sure"
>
<text
class=
"big-btn"
@
click=
"confirm()"
>
确定
</text>
</view>
</view>
</view>
</view>
<view
style=
"padding: 0.5rem 0rem;color: #FF0000;"
v-else
>
空空如也...
</view>
<view
class=
"time-sure"
>
<text
class=
"big-btn"
@
click=
"confirm()"
>
确定
</text>
</view>
</view>
</view>
</u-popup>
</u-popup>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
props
:
[
"chooseTimeList"
,
"chooseTimeData"
,
"timeActive"
],
props
:
[
'chooseTimeList'
,
'chooseTimeData'
,
'timeActive'
],
watch
:
{
watch
:
{
timeActive
:
{
//父组件选中的下标
timeActive
:
{
//父组件选中的下标
handler
(
newValue
,
oldValue
)
{
handler
(
newValue
,
oldValue
)
{
if
(
newValue
>=
0
)
{
if
(
newValue
>=
0
)
{
this
.
active
=
newValue
this
.
active
=
newValue
}
}
},
},
deep
:
false
,
deep
:
false
,
immediate
:
false
immediate
:
false
},
},
},
},
data
()
{
data
()
{
return
{
return
{
show
:
false
,
//控制该组件显示隐藏
showPop
:
false
,
//控制该组件显示隐藏
active
:
10000
,
//默认不选中
active
:
10000
,
//默认不选中
times
:
""
,
//时间
times
:
''
,
//时间
timeNumber
:
""
,
//当前时间转化为数字
timeNumber
:
''
,
//当前时间转化为数字
}
}
},
},
methods
:
{
methods
:
{
//---时间选择
//---时间选择
chooseTime
(
i
)
{
chooseTime
(
i
)
{
this
.
active
=
i
this
.
active
=
i
this
.
times
=
this
.
chooseTimeList
[
i
].
startPlanTime
this
.
times
=
this
.
chooseTimeList
[
i
].
startPlanTime
},
},
//---时间确认事件
//---时间确认事件
confirm
(
date
)
{
confirm
(
date
)
{
this
.
showPop
=
false
this
.
show
=
false
;
this
.
$emit
(
'timeConfig'
,
this
.
times
)
this
.
$emit
(
"timeConfig"
,
this
.
times
)
},
},
},
},
mounted
()
{
mounted
()
{
let
times
=
new
Date
().
Format
(
'yyyy-MM-dd hh:mm:ss'
)
let
times
=
new
Date
().
Format
(
"yyyy-MM-dd hh:mm:ss"
)
this
.
timeNumber
=
parseInt
(
this
.
$commonjs
.
changeTime
(
times
))
this
.
timeNumber
=
parseInt
(
this
.
$commonjs
.
changeTime
(
times
))
}
}
}
}
</
script
>
</
script
>
<
style
scoped=
"scoped"
>
<
style
scoped=
"scoped"
lang=
"scss"
>
.time
{
.son-wrap
{
padding
:
30
rpx
20
rpx
60
rpx
20
rpx
;
position
:
relative
;
text-align
:
center
;
height
:
65vh
;
display
:
flex
;
flex-direction
:column
;
}
}
.time-title
{
.time-title
{
font-size
:
32
rpx
;
text-align
:
center
;
font-weight
:
bolder
;
font-size
:
32rpx
;
font-weight
:
bold
;
padding
:
30rpx
24rpx
;
border-radius
:
20rpx
20rpx
0
0
;
}
}
.time-content
{
.time-content
{
display
:
flex
;
display
:
flex
;
flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
}
}
.time-list
{
.time-list
{
width
:
30%
;
width
:
30%
;
height
:
80
rpx
;
height
:
90rpx
;
text-align
:
center
;
line-height
:
30rpx
;
line-height
:
30rpx
;
color
:
#666666
;
text-align
:
center
;
background
:
rgb
(
242
,
242
,
242
);
margin-right
:
5%
;
border-radius
:
16
rpx
;
border-radius
:
15rpx
;
margin-right
:
5%
;
display
:
inline-block
;
margin-top
:
30
rpx
;
background
:
#f2f2f2
;
}
position
:
relative
;
padding-bottom
:
8rpx
;
.time-list
view
:first-child
{
margin-top
:
10
rpx
;
}
}
.time-list
view
{
.time-list
view
{
width
:
100%
;
margin-top
:
10rpx
;
text-align
:
center
;
}
}
.time-content
view
:nth-child
(
3n
)
{
.time-content
view
:nth-child
(
3n
)
{
margin-right
:
0
;
margin-right
:
0
;
}
}
.time-list.on
{
.time-list.on
{
background
:
none
;
border
:
1px
solid
$theme
;
color
:
#3dbcff
;
background
:
#DAE6F6
;
border
:
1px
solid
#3dbcff
;
box-sizing
:
border-box
;
}
}
.time-sure
{
.time-sure
{
margin-top
:
30
rpx
;
margin-top
:
60rpx
;
text-align
:
center
;
}
}
</
style
>
</
style
>
pages/scenic/scenicOrder/scenicOrder.vue
View file @
3c2a558a
This diff is collapsed.
Click to expand it.
uni.scss
View file @
3c2a558a
...
@@ -12,74 +12,28 @@
...
@@ -12,74 +12,28 @@
*
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
*/
/*分割线颜色*/
$divider
:
#DBDBDB
;
/*
1.页面背景颜色#f7f7f7
2.分隔线颜色#DBDBDB
3.正常字体颜色#333333
4.灰色字体颜色#666666或者#999999
5.主题颜色#3688FF
6.正常字体大小28rpx,偏小一点的24rpx
8.页面最外层与里面的第一层为padding:0 12px;
9.css单位为rpx
*/
/*主题颜色*/
/*主题颜色*/
$blue
:
#3688FF
;
$theme
:
#3688FF
;
/*红色*/
/*红色*/
$red
:
#FC6703
;
$red
:
#FC6703
;
/*灰色*/
/*灰色*/
$grey
:
#999
;
$grey
:
#999
;
/* 颜色变量 */
// 分割线颜色
$divider
:
#f3f3f3
;
/* 行为相关颜色 */
$uni-color-primary
:
#007aff
;
$uni-color-success
:
#4cd964
;
$uni-color-warning
:
#f0ad4e
;
$uni-color-error
:
#dd524d
;
/* 文字基本颜色 */
$uni-text-color
:
#333
;
//基本色
$uni-text-color-inverse
:
#fff
;
//反色
$text-grey
:
#999
;
//辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder
:
#808080
;
$uni-text-color-disable
:
#c0c0c0
;
/* 背景颜色 */
$uni-bg-color
:
#ffffff
;
$uni-bg-color-grey
:
#f8f8f8
;
$uni-bg-color-hover
:
#f1f1f1
;
//点击状态颜色
$uni-bg-color-mask
:
rgba
(
0
,
0
,
0
,
0
.4
);
//遮罩颜色
/* 边框颜色 */
$border-color
:
#c8c7cc
;
/* 尺寸变量 */
/* 文字尺寸 */
$uni-font-size-sm
:
24rpx
;
$uni-font-size-base
:
28rpx
;
$uni-font-size-lg
:
32rpx
;
/* 图片尺寸 */
$uni-img-size-sm
:
40rpx
;
$uni-img-size-base
:
52rpx
;
$uni-img-size-lg
:
80rpx
;
/* Border Radius */
$uni-border-radius-sm
:
4rpx
;
$uni-border-radius-base
:
6rpx
;
$uni-border-radius-lg
:
12rpx
;
$uni-border-radius-circle
:
50%
;
/* 水平间距 */
$uni-spacing-row-sm
:
10px
;
$uni-spacing-row-base
:
20rpx
;
$uni-spacing-row-lg
:
30rpx
;
/* 垂直间距 */
$uni-spacing-col-sm
:
8rpx
;
$uni-spacing-col-base
:
16rpx
;
$uni-spacing-col-lg
:
24rpx
;
/* 透明度 */
$uni-opacity-disabled
:
0
.3
;
// 组件禁用态的透明度
/* 文章场景相关 */
$uni-color-title
:
#2C405A
;
// 文章标题颜色
$uni-font-size-title
:
40rpx
;
$uni-color-subtitle
:
#555555
;
// 二级标题颜色
$uni-font-size-subtitle
:
36rpx
;
$uni-color-paragraph
:
#3F536E
;
// 文章段落颜色
$uni-font-size-paragraph
:
30rpx
;
\ No newline at end of file
uview-ui/components/u-icon/u-icon.vue
View file @
3c2a558a
...
@@ -35,23 +35,23 @@
...
@@ -35,23 +35,23 @@
</
template
>
</
template
>
<
script
>
<
script
>
// #ifdef APP-NVUE
// #ifdef APP-NVUE
// nvue通过weex的dom模块引入字体,相关文档地址如下:
// nvue通过weex的dom模块引入字体,相关文档地址如下:
// https://weex.apache.org/zh/docs/modules/dom.html#addrule
// https://weex.apache.org/zh/docs/modules/dom.html#addrule
const
fontUrl
=
'https://at.alicdn.com/t/font_2225171_8kdcwk4po24.ttf'
const
fontUrl
=
'https://at.alicdn.com/t/font_2225171_8kdcwk4po24.ttf'
const
domModule
=
weex
.
requireModule
(
'dom'
)
const
domModule
=
weex
.
requireModule
(
'dom'
)
domModule
.
addRule
(
'fontFace'
,
{
domModule
.
addRule
(
'fontFace'
,
{
'fontFamily'
:
"uicon-iconfont"
,
'fontFamily'
:
'uicon-iconfont'
,
'src'
:
`url('
${
fontUrl
}
')`
'src'
:
`url('
${
fontUrl
}
')`
})
})
// #endif
// #endif
// 引入图标名称,已经对应的unicode
// 引入图标名称,已经对应的unicode
import
icons
from
'./icons'
import
icons
from
'./icons'
import
props
from
'./props.js'
;;
import
props
from
'./props.js'
/**
/**
* icon 图标
* icon 图标
* @description 基于字体的图标集,包含了大多数常见场景的图标。
* @description 基于字体的图标集,包含了大多数常见场景的图标。
* @tutorial https://www.uviewui.com/components/icon.html
* @tutorial https://www.uviewui.com/components/icon.html
...
@@ -77,72 +77,72 @@
...
@@ -77,72 +77,72 @@
* @event {Function} touchstart 事件触摸时触发
* @event {Function} touchstart 事件触摸时触发
* @example <u-icon name="photo" color="#2979ff" size="28"></u-icon>
* @example <u-icon name="photo" color="#2979ff" size="28"></u-icon>
*/
*/
export
default
{
export
default
{
name
:
'u-icon'
,
name
:
'u-icon'
,
data
()
{
data
()
{
return
{
return
{
}
}
},
},
mixins
:
[
uni
.
$u
.
mpMixin
,
uni
.
$u
.
mixin
,
props
],
mixins
:
[
uni
.
$u
.
mpMixin
,
uni
.
$u
.
mixin
,
props
],
computed
:
{
computed
:
{
uClasses
()
{
uClasses
()
{
let
classes
=
[]
let
classes
=
[]
classes
.
push
(
this
.
customPrefix
+
'-'
+
this
.
name
)
classes
.
push
(
this
.
customPrefix
+
'-'
+
this
.
name
)
// // uView的自定义图标类名为u-iconfont
// // uView的自定义图标类名为u-iconfont
// if (this.customPrefix == 'uicon') {
// if (this.customPrefix == 'uicon') {
// classes.push('u-iconfont')
// classes.push('u-iconfont')
// } else {
// } else {
// classes.push(this.customPrefix)
// classes.push(this.customPrefix)
// }
// }
// 主题色,通过类配置
// 主题色,通过类配置
if
(
this
.
color
&&
uni
.
$u
.
config
.
type
.
includes
(
this
.
color
))
classes
.
push
(
'u-icon__icon--'
+
this
.
color
)
if
(
this
.
color
&&
uni
.
$u
.
config
.
type
.
includes
(
this
.
color
))
classes
.
push
(
'u-icon__icon--'
+
this
.
color
)
// 阿里,头条,百度小程序通过数组绑定类名时,无法直接使用[a, b, c]的形式,否则无法识别
// 阿里,头条,百度小程序通过数组绑定类名时,无法直接使用[a, b, c]的形式,否则无法识别
// 故需将其拆成一个字符串的形式,通过空格隔开各个类名
// 故需将其拆成一个字符串的形式,通过空格隔开各个类名
//#ifdef MP-ALIPAY || MP-TOUTIAO || MP-BAIDU
//#ifdef MP-ALIPAY || MP-TOUTIAO || MP-BAIDU
classes
=
classes
.
join
(
' '
)
classes
=
classes
.
join
(
' '
)
//#endif
//#endif
return
classes
return
classes
},
},
iconStyle
()
{
iconStyle
()
{
let
style
=
{}
let
style
=
{}
style
=
{
style
=
{
fontSize
:
uni
.
$u
.
addUnit
(
this
.
size
),
fontSize
:
uni
.
$u
.
addUnit
(
this
.
size
),
lineHeight
:
uni
.
$u
.
addUnit
(
this
.
size
),
lineHeight
:
uni
.
$u
.
addUnit
(
this
.
size
),
fontWeight
:
this
.
bold
?
'bold'
:
'normal'
,
fontWeight
:
this
.
bold
?
'bold'
:
'normal'
,
// 某些特殊情况需要设置一个到顶部的距离,才能更好的垂直居中
// 某些特殊情况需要设置一个到顶部的距离,才能更好的垂直居中
top
:
uni
.
$u
.
addUnit
(
this
.
top
)
top
:
uni
.
$u
.
addUnit
(
this
.
top
)
}
}
// 非主题色值时,才当作颜色值
// 非主题色值时,才当作颜色值
if
(
this
.
color
&&
!
uni
.
$u
.
config
.
type
.
includes
(
this
.
color
))
style
.
color
=
this
.
color
if
(
this
.
color
&&
!
uni
.
$u
.
config
.
type
.
includes
(
this
.
color
))
style
.
color
=
this
.
color
return
style
return
style
},
},
// 判断传入的name属性,是否图片路径,只要带有"/"均认为是图片形式
// 判断传入的name属性,是否图片路径,只要带有"/"均认为是图片形式
isImg
()
{
isImg
()
{
return
this
.
name
.
indexOf
(
'/'
)
!==
-
1
return
this
.
name
.
indexOf
(
'/'
)
!==
-
1
},
},
imgStyle
()
{
imgStyle
()
{
let
style
=
{}
let
style
=
{}
// 如果设置width和height属性,则优先使用,否则使用size属性
// 如果设置width和height属性,则优先使用,否则使用size属性
style
.
width
=
this
.
width
?
uni
.
$u
.
addUnit
(
this
.
width
)
:
uni
.
$u
.
addUnit
(
this
.
size
)
style
.
width
=
this
.
width
?
uni
.
$u
.
addUnit
(
this
.
width
)
:
uni
.
$u
.
addUnit
(
this
.
size
)
style
.
height
=
this
.
height
?
uni
.
$u
.
addUnit
(
this
.
height
)
:
uni
.
$u
.
addUnit
(
this
.
size
)
style
.
height
=
this
.
height
?
uni
.
$u
.
addUnit
(
this
.
height
)
:
uni
.
$u
.
addUnit
(
this
.
size
)
return
style
return
style
},
},
// 通过图标名,查找对应的图标
// 通过图标名,查找对应的图标
icon
()
{
icon
()
{
// 如果内置的图标中找不到对应的图标,就直接返回name值,因为用户可能传入的是unicode代码
// 如果内置的图标中找不到对应的图标,就直接返回name值,因为用户可能传入的是unicode代码
return
icons
[
'uicon-'
+
this
.
name
]
||
this
.
name
return
icons
[
'uicon-'
+
this
.
name
]
||
this
.
name
}
}
},
},
methods
:
{
methods
:
{
clickHandler
(
e
)
{
clickHandler
(
e
)
{
this
.
$emit
(
'click'
,
this
.
index
)
this
.
$emit
(
'click'
,
this
.
index
)
// 是否阻止事件冒泡
// 是否阻止事件冒泡
this
.
stop
&&
this
.
preventEvent
(
e
)
this
.
stop
&&
this
.
preventEvent
(
e
)
}
}
}
}
}
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -162,7 +162,6 @@
...
@@ -162,7 +162,6 @@
font-family
:
'uicon-iconfont'
;
font-family
:
'uicon-iconfont'
;
src
:
url('https://at.alicdn.com/t/font_2225171_8kdcwk4po24.ttf')
format
(
'truetype'
);
src
:
url('https://at.alicdn.com/t/font_2225171_8kdcwk4po24.ttf')
format
(
'truetype'
);
}
}
/* #endif */
/* #endif */
.u-icon
{
.u-icon
{
...
...
uview-ui/components/u-popup/u-popup.vue
View file @
3c2a558a
This diff is collapsed.
Click to expand it.
uview-ui/libs/util/dayjs.js
View file @
3c2a558a
This diff is collapsed.
Click to expand it.
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