Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
jz_Travel
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
zhengke
jz_Travel
Commits
281db386
Commit
281db386
authored
Sep 30, 2021
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
f6129446
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
741 additions
and
682 deletions
+741
-682
jz_LineDetail.vue
pages/jiuzhai/jz_LineDetail.vue
+31
-22
buyNotice.vue
pages/restaurant/components/buyNotice.vue
+170
-166
order.vue
pages/restaurant/order.vue
+530
-491
api.js
plugin/api.js
+10
-3
No files found.
pages/jiuzhai/jz_LineDetail.vue
View file @
281db386
...
...
@@ -981,7 +981,7 @@ export default {
that
.
titleStyle
=
{
height
:
"45px"
,
paddingTop
:
`
${
res
.
statusBarHeight
}
px`
,
opacity
:
"0
%
"
,
opacity
:
"0"
,
};
},
});
...
...
@@ -1042,11 +1042,13 @@ export default {
},
scroll
(
e
)
{
this
.
boxOption
=
Math
.
floor
((
e
.
detail
.
scrollTop
-
50
)
/
1.5
);
this
.
titleStyle
.
opacity
=
(
e
.
detail
.
scrollTop
-
100
<
0
e
.
detail
.
scrollTop
-
100
<
0
?
0
:
Math
.
floor
(
e
.
detail
.
scrollTop
-
100
))
+
"%"
;
:
Math
.
floor
(
e
.
detail
.
scrollTop
-
100
)
/
100
>
1
?
1
:
Math
.
floor
(
e
.
detail
.
scrollTop
-
100
)
/
100
;
console
.
log
(
"1051"
,
this
.
titleStyle
.
opacity
);
this
.
$forceUpdate
();
},
//获取详情
...
...
@@ -1055,14 +1057,11 @@ export default {
"b2b_get_GetB2BTravelInfoNoDesV1"
,
this
.
delMsg
,
(
res
)
=>
{
console
.
log
(
res
,
"详情"
);
if
(
res
.
resultCode
==
1
)
{
res
.
data
.
tempImgCover
=
JSON
.
parse
(
res
.
data
.
imgCover
);
// let tempPrice= res.data.priceList.filter(x=>x.remainNum>0)
// res.data.priceList=tempPrice
this
.
dataList
=
res
.
data
;
this
.
scenicNum
=
0
;
this
.
dataList
.
dayList
.
forEach
((
x
)
=>
{
x
.
dayArray
.
forEach
((
y
)
=>
{
...
...
@@ -1098,21 +1097,31 @@ export default {
this
.
finishFirstLoad
=
true
;
// #ifdef MP-ALIPAY
this
.
dataList
.
feature
.
feeInclude
=
parseHtml
(
this
.
dataList
.
feature
.
feeInclude
);
this
.
dataList
.
feature
.
feeNonInclude
=
parseHtml
(
this
.
dataList
.
feature
.
feeNonInclude
);
this
.
dataList
.
feature
.
importantTip
=
parseHtml
(
this
.
dataList
.
feature
.
importantTip
);
this
.
dataList
.
feature
.
warmTip
=
parseHtml
(
this
.
dataList
.
feature
.
warmTip
);
this
.
dataList
.
feature
.
visaRemark
=
parseHtml
(
this
.
dataList
.
feature
.
visaRemark
);
if
(
this
.
dataList
.
feature
.
feeInclude
)
{
this
.
dataList
.
feature
.
feeInclude
=
parseHtml
(
this
.
dataList
.
feature
.
feeInclude
);
}
if
(
this
.
dataList
.
feature
.
feeNonInclude
)
{
this
.
dataList
.
feature
.
feeNonInclude
=
parseHtml
(
this
.
dataList
.
feature
.
feeNonInclude
);
}
if
(
this
.
dataList
.
feature
.
importantTip
)
{
this
.
dataList
.
feature
.
importantTip
=
parseHtml
(
this
.
dataList
.
feature
.
importantTip
);
}
if
(
this
.
dataList
.
feature
.
warmTip
)
{
this
.
dataList
.
feature
.
warmTip
=
parseHtml
(
this
.
dataList
.
feature
.
warmTip
);
}
if
(
this
.
dataList
.
feature
.
visaRemark
)
{
this
.
dataList
.
feature
.
visaRemark
=
parseHtml
(
this
.
dataList
.
feature
.
visaRemark
);
}
// #endif
}
else
{
}
...
...
pages/restaurant/components/buyNotice.vue
View file @
281db386
<
template
>
<view
class=
"buy-notice-restaurant"
>
<view
class=
"meal-info"
>
<image
:src=
"mealData.MealPic"
mode=
"aspectFit"
class=
"MealPic"
></image>
<view
class=
"right"
>
<view
class=
"name"
>
{{
mealData
.
MealName
}}
</view>
<view
class=
"sale"
>
已售
{{
mealData
.
SaleCount
}}
</view>
</view>
</view>
<view
class=
"ticket-title"
>
套餐内容
<text
class=
"ticket-title-bg"
></text>
</view>
<view
class=
"meal-con"
>
<text
v-if=
"mealData.MealDesc"
>
{{
mealData
.
MealDesc
}}
</text>
<text
v-else
class=
"zanwu"
>
暂无
</text>
</view>
<view
class=
"ticket-title"
>
购买须知
<text
class=
"ticket-title-bg"
></text>
</view>
<view
class=
"buy-notice-con"
>
<rich-text
:nodes=
"mealData.OtherTag"
v-if=
"mealData.OtherTag"
></rich-text>
<text
v-else
class=
"zanwu"
>
暂无
</text>
</view>
<view
class=
"btn-box"
>
<view
class=
"price"
>
<text
class=
"price-pre"
>
¥
</text>
{{
$utils
.
getretailer
()
==
true
?
mealData
.
LPriceB
:
mealData
.
LPriceC
}}
</view>
<view
class=
"btn"
@
click=
"subscribe"
>
立即预订
</view>
</view>
</view>
<view
class=
"buy-notice-restaurant"
>
<view
class=
"meal-info"
>
<image
:src=
"mealData.MealPic"
mode=
"aspectFit"
class=
"MealPic"
></image>
<view
class=
"right"
>
<view
class=
"name"
>
{{
mealData
.
MealName
}}
</view>
<view
class=
"sale"
>
已售
{{
mealData
.
SaleCount
}}
</view>
</view>
</view>
<view
class=
"ticket-title"
>
套餐内容
<text
class=
"ticket-title-bg"
></text>
</view>
<view
class=
"meal-con"
>
<text
v-if=
"mealData.MealDesc"
>
{{
mealData
.
MealDesc
}}
</text>
<text
v-else
class=
"zanwu"
>
暂无
</text>
</view>
<view
class=
"ticket-title"
>
购买须知
<text
class=
"ticket-title-bg"
></text>
</view>
<view
class=
"buy-notice-con"
>
<rich-text
:nodes=
"mealData.OtherTag"
v-if=
"mealData.OtherTag"
></rich-text>
<text
v-else
class=
"zanwu"
>
暂无
</text>
</view>
<view
class=
"btn-box"
>
<view
class=
"price"
>
<text
class=
"price-pre"
>
¥
</text>
{{
$utils
.
getretailer
()
==
true
?
mealData
.
LPriceB
:
mealData
.
LPriceC
}}
</view>
<view
class=
"btn"
@
click=
"subscribe"
>
立即预订
</view>
</view>
</view>
</
template
>
<
script
>
export
default
{
props
:{
mealData
:{
type
:
Object
,
default
:{}
}
},
data
(){
return
{
}
},
methods
:{
subscribe
(){
this
.
$emit
(
"success"
)
}
}
}
// #ifdef MP-ALIPAY
import
parseHtml
from
"../../../plugin/htmlparse.js"
;
// #endif
export
default
{
props
:
{
mealData
:
{
type
:
Object
,
default
:
{},
},
},
mounted
()
{
// #ifdef MP-ALIPAY
this
.
mealData
.
OtherTag
=
parseHtml
(
this
.
mealData
.
OtherTag
);
// #endif
},
methods
:
{
subscribe
()
{
this
.
$emit
(
"success"
);
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.buy-notice-restaurant
{
height
:
70vh
;
padding
:
45rpx
45rpx
120rpx
45rpx
;
overflow-y
:
scroll
;
overflow-x
:
hidden
;
.meal-info
{
display
:
flex
;
padding-bottom
:
50rpx
;
border-bottom
:
1rpx
solid
#E7E7E
7
;
.MealPic
{
width
:
129rpx
;
height
:
129rpx
;
background-color
:
#DFBE6E
;
border-radius
:
20rpx
;
}
.right
{
flex-grow
:
5
;
margin-left
:
35rpx
;
.name
{
font-size
:
34rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#1B1D1E
;
}
.sale
{
width
:
120rpx
;
height
:
40rpx
;
background-color
:
#ECF1F
4
;
border-radius
:
4rpx
;
font-size
:
22rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
text-align
:
center
;
line-height
:
38rpx
;
margin-top
:
20rpx
;
}
}
}
.ticket-title
{
// width: 70rpx;
height
:
50rpx
;
font-size
:
34rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#1F1F1F
;
background-color
:
transparent
;
// line-height: 44rpx;
position
:
relative
;
margin
:
40rpx
0
;
.ticket-title-bg
{
width
:
70rpx
;
height
:
10rpx
;
background-color
:
#DFBE6E
;
border-radius
:
4px
;
position
:
absolute
;
left
:
0
;
bottom
:
6rpx
;
z-index
:
1
;
opacity
:
0
.6
;
}
}
.meal-con
{
white-space
:
pre-wrap
;
font-size
:
28rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
}
.buy-notice-con
{
font-size
:
28rpx
;
font-family
:
PingFang
SC
;
font-weight
:
600
;
color
:
#111111
;
}
.btn-box
{
position
:
fixed
;
right
:
55rpx
;
bottom
:
100rpx
;
display
:
flex
;
justify-content
:
flex-end
;
align-items
:
center
;
.price
{
font-size
:
40rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#D
91818
;
// line-height: 38rpx;
.price-pre
{
font-size
:
22rpx
;
}
}
.btn
{
width
:
300rpx
;
height
:
80rpx
;
background-color
:
#111111
;
border-radius
:
20rpx
;
font-size
:
28rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#FFFFFF
;
text-align
:
center
;
line-height
:
78rpx
;
margin-left
:
45rpx
;
}
}
}
.zanwu
{
font-size
:
28rpx
;
font-family
:
PingFang
SC
;
font-weight
:
400
;
color
:
#999999
;
}
.buy-notice-restaurant
{
height
:
70vh
;
padding
:
45rpx
45rpx
120rpx
45rpx
;
overflow-y
:
scroll
;
overflow-x
:
hidden
;
.meal-info
{
display
:
flex
;
padding-bottom
:
50rpx
;
border-bottom
:
1rpx
solid
#e7e7e
7
;
.MealPic
{
width
:
129rpx
;
height
:
129rpx
;
background-color
:
#dfbe6e
;
border-radius
:
20rpx
;
}
.right
{
flex-grow
:
5
;
margin-left
:
35rpx
;
.name
{
font-size
:
34rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#1b1d1e
;
}
.sale
{
width
:
120rpx
;
height
:
40rpx
;
background-color
:
#ecf1f
4
;
border-radius
:
4rpx
;
font-size
:
22rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
text-align
:
center
;
line-height
:
38rpx
;
margin-top
:
20rpx
;
}
}
}
.ticket-title
{
// width: 70rpx;
height
:
50rpx
;
font-size
:
34rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#1f1f1f
;
background-color
:
transparent
;
// line-height: 44rpx;
position
:
relative
;
margin
:
40rpx
0
;
.ticket-title-bg
{
width
:
70rpx
;
height
:
10rpx
;
background-color
:
#dfbe6e
;
border-radius
:
4px
;
position
:
absolute
;
left
:
0
;
bottom
:
6rpx
;
z-index
:
1
;
opacity
:
0
.6
;
}
}
.meal-con
{
white-space
:
pre-wrap
;
font-size
:
28rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
}
.buy-notice-con
{
font-size
:
28rpx
;
font-family
:
PingFang
SC
;
font-weight
:
600
;
color
:
#111111
;
}
.btn-box
{
position
:
fixed
;
right
:
55rpx
;
bottom
:
100rpx
;
display
:
flex
;
justify-content
:
flex-end
;
align-items
:
center
;
.price
{
font-size
:
40rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#d
91818
;
// line-height: 38rpx;
.price-pre
{
font-size
:
22rpx
;
}
}
.btn
{
width
:
300rpx
;
height
:
80rpx
;
background-color
:
#111111
;
border-radius
:
20rpx
;
font-size
:
28rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#ffffff
;
text-align
:
center
;
line-height
:
78rpx
;
margin-left
:
45rpx
;
}
}
}
.zanwu
{
font-size
:
28rpx
;
font-family
:
PingFang
SC
;
font-weight
:
400
;
color
:
#999999
;
}
</
style
>
pages/restaurant/order.vue
View file @
281db386
<
template
>
<view>
<view
class=
"hotel-order"
>
<view
class=
"o-head"
>
<view
class=
"room-name"
>
{{
orderData
.
MealName
}}
</view>
<view
class=
"Meal-date"
>
{{
orderData
.
date
}}
</view>
<view
class=
"room-remark"
>
<text
v-if=
"orderData.MakeDay===0"
>
可预约当天
</text>
<text
v-if=
"orderData.MakeDay>0"
>
提前
{{
orderData
.
MakeDay
}}
天预约
</text>
</view>
<view
class=
"big-title"
>
<text
class=
" f12"
>
订餐必知
</text>
</view>
<view
class=
"rule"
>
<text
class=
"king"
v-if=
"orderData.IsHoliday===0"
>
此套餐节假日不可用
</text>
<!--
<text>
需要提前预约,餐厅营业时间为:周一至周日 09:00-21:00,请您提前安排好行程时间
</text>
-->
<rich-text
:nodes=
"orderData.OtherTag"
></rich-text>
</view>
</view>
<view
class=
"form"
>
<view
class=
"form-items"
>
<view
class=
"label"
>
就餐人数
</view>
<view
class=
"val"
>
<u-number-box
size=
"28"
:min=
"1"
:max=
"100"
v-model=
"order.PeopleNumber"
@
change=
"PeopleNumberChange"
></u-number-box>
</view>
</view>
<view
class=
"form-items"
>
<view
class=
"label"
>
套餐份数
</view>
<view
class=
"val"
>
<u-number-box
size=
"28"
:min=
"1"
:max=
"100"
v-model=
"order.BuyNum"
@
change=
"BuyNumChange"
></u-number-box>
</view>
</view>
<view
class=
"form-items"
>
<view
class=
"label"
>
联系人
</view>
<view
class=
"val"
>
<input
type=
"text"
v-model=
"order.Consignee"
placeholder=
"若是多人,输入代表人员即可"
/>
</view>
</view>
<view
class=
"form-items"
>
<view
class=
"label"
>
联系电话
</view>
<view
class=
"val"
>
<input
type=
"number"
v-model=
"order.ConsigneeMobile"
placeholder=
"输入电话号码"
/>
</view>
</view>
<view
class=
"form-items"
>
<view
class=
"label"
>
备注
</view>
<view
class=
"val"
>
<input
type=
"text"
v-model=
"order.BuyerMessage"
placeholder=
"您的特殊要求,我们会尽量安排"
/>
</view>
</view>
</view>
<view
class=
"empty-block"
></view>
<view
style=
"padding:50rpx 40rpx"
>
<view
class=
"big-title"
>
<text>
费用明细
</text>
</view>
<view
class=
"form"
style=
"margin:40rpx 0;padding: 0;"
>
<view
class=
"form-items"
>
<view
class=
"label"
>
在线支付
</view>
<view
class=
"val f14 regular"
style=
"text-align: right;"
>
<text
style=
"margin-right: 30rpx;"
>
{{
order
.
BuyNum
}}
份套餐
</text>
<text
class=
"red"
>
¥
{{
orderData
.
Unit_Price
*
order
.
BuyNum
}}
</text>
</view>
</view>
<view
class=
"form-items"
style=
"border-bottom: none;"
>
<view
class=
"label"
>
套餐明细
</view>
</view>
<view
class=
"flex f12 grey"
>
<view
style=
"flex:1"
>
<text
style=
"margin-right: 30rpx;"
>
{{
orderData
.
MealName
}}
</text>
</view>
<view
style=
"text-align: right;"
>
{{
order
.
BuyNum
}}
份 × ¥
{{
orderData
.
Unit_Price
}}
</view>
</view>
</view>
</view>
<view
class=
"empty-block"
></view>
</view>
<view
class=
"opera-box"
>
<view
class=
"box flex"
>
<view
class=
"price"
>
<text
class=
"f11"
>
¥
</text>
<text>
{{
orderData
.
Unit_Price
*
order
.
BuyNum
}}
</text>
</view>
<view
class=
"sum-detail"
>
共计
{{
order
.
BuyNum
}}
份
</view>
<u-button
:ripple=
"true"
:hair-line=
"false"
:custom-style=
"btnStyle"
@
click=
"buy"
>
立即购买
</u-button>
</view>
</view>
</view>
<view>
<view
class=
"hotel-order"
>
<view
class=
"o-head"
>
<view
class=
"room-name"
>
{{
orderData
.
MealName
}}
</view>
<view
class=
"Meal-date"
>
{{
orderData
.
date
}}
</view>
<view
class=
"room-remark"
>
<text
v-if=
"orderData.MakeDay === 0"
>
可预约当天
</text>
<text
v-if=
"orderData.MakeDay > 0"
>
提前
{{
orderData
.
MakeDay
}}
天预约
</text
>
</view>
<view
class=
"big-title"
>
<text
class=
"f12"
>
订餐必知
</text>
</view>
<view
class=
"rule"
>
<text
class=
"king"
v-if=
"orderData.IsHoliday === 0"
>
此套餐节假日不可用
</text
>
<!--
<text>
需要提前预约,餐厅营业时间为:周一至周日 09:00-21:00,请您提前安排好行程时间
</text>
-->
<rich-text
:nodes=
"orderData.OtherTag"
></rich-text>
</view>
</view>
<view
class=
"form"
>
<view
class=
"form-items"
>
<view
class=
"label"
>
就餐人数
</view>
<view
class=
"val"
>
<u-number-box
size=
"28"
:min=
"1"
:max=
"100"
v-model=
"order.PeopleNumber"
@
change=
"PeopleNumberChange"
></u-number-box>
</view>
</view>
<view
class=
"form-items"
>
<view
class=
"label"
>
套餐份数
</view>
<view
class=
"val"
>
<u-number-box
size=
"28"
:min=
"1"
:max=
"100"
v-model=
"order.BuyNum"
@
change=
"BuyNumChange"
></u-number-box>
</view>
</view>
<view
class=
"form-items"
>
<view
class=
"label"
>
联系人
</view>
<view
class=
"val"
>
<input
type=
"text"
v-model=
"order.Consignee"
placeholder=
"若是多人,输入代表人员即可"
/>
</view>
</view>
<view
class=
"form-items"
>
<view
class=
"label"
>
联系电话
</view>
<view
class=
"val"
>
<input
type=
"number"
v-model=
"order.ConsigneeMobile"
placeholder=
"输入电话号码"
/>
</view>
</view>
<view
class=
"form-items"
>
<view
class=
"label"
>
备注
</view>
<view
class=
"val"
>
<input
type=
"text"
v-model=
"order.BuyerMessage"
placeholder=
"您的特殊要求,我们会尽量安排"
/>
</view>
</view>
</view>
<view
class=
"empty-block"
></view>
<view
style=
"padding: 50rpx 40rpx"
>
<view
class=
"big-title"
>
<text>
费用明细
</text>
</view>
<view
class=
"form"
style=
"margin: 40rpx 0; padding: 0"
>
<view
class=
"form-items"
>
<view
class=
"label"
>
在线支付
</view>
<view
class=
"val f14 regular"
style=
"text-align: right"
>
<text
style=
"margin-right: 30rpx"
>
{{
order
.
BuyNum
}}
份套餐
</text>
<text
class=
"red"
>
¥
{{
orderData
.
Unit_Price
*
order
.
BuyNum
}}
</text
>
</view>
</view>
<view
class=
"form-items"
style=
"border-bottom: none"
>
<view
class=
"label"
>
套餐明细
</view>
</view>
<view
class=
"flex f12 grey"
>
<view
style=
"flex: 1"
>
<text
style=
"margin-right: 30rpx"
>
{{
orderData
.
MealName
}}
</text>
</view>
<view
style=
"text-align: right"
>
{{
order
.
BuyNum
}}
份 × ¥
{{
orderData
.
Unit_Price
}}
</view
>
</view>
</view>
</view>
<view
class=
"empty-block"
></view>
</view>
<view
class=
"opera-box"
>
<view
class=
"box flex"
>
<view
class=
"price"
>
<text
class=
"f11"
>
¥
</text>
<text>
{{
orderData
.
Unit_Price
*
order
.
BuyNum
}}
</text>
</view>
<view
class=
"sum-detail"
>
共计
{{
order
.
BuyNum
}}
份
</view>
<u-button
:ripple=
"true"
:hair-line=
"false"
:custom-style=
"btnStyle"
@
click=
"buy"
>
立即购买
</u-button
>
</view>
</view>
</view>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
order
:
{
PeopleNumber
:
1
,
BuyNum
:
1
,
Consignee
:
""
,
ConsigneeMobile
:
""
,
BuyerMessage
:
""
,
Sex
:
1
,
},
btnStyle
:
{
height
:
"80rpx"
,
lineHeight
:
"80rpx"
,
borderRadius
:
"16rpx"
,
background
:
"#111"
,
color
:
"#FFF"
,
fontSize
:
"28rpx"
,
fontWeight
:
"600"
,
width
:
'193rpx'
,
},
orderData
:
{},
orderInfo
:{}
}
},
created
()
{
uni
.
setNavigationBarTitle
({
title
:
"订单填写"
,
});
},
methods
:{
PeopleNumberChange
(
val
){
this
.
order
.
PeopleNumber
=
val
.
value
},
BuyNumChange
(
val
){
this
.
order
.
BuyNum
=
val
.
value
},
buy
(){
if
(
!
this
.
order
.
Consignee
){
uni
.
showToast
({
title
:
"请填写联系人"
,
icon
:
"none"
,
});
return
}
if
(
!
this
.
order
.
ConsigneeMobile
){
uni
.
showToast
({
title
:
"请填写联系人电话"
,
icon
:
"none"
,
});
return
}
let
data
=
{
MealId
:
this
.
orderData
.
MealId
,
DiningId
:
this
.
orderData
.
DiningId
,
Unit_Price
:
this
.
orderData
.
Unit_Price
,
Date
:
this
.
orderData
.
date
,
PeopleNumber
:
this
.
order
.
PeopleNumber
,
Final_Price
:
this
.
orderData
.
Unit_Price
*
this
.
order
.
BuyNum
,
BuyerMessage
:
this
.
order
.
BuyerMessage
,
Consignee
:
this
.
order
.
Consignee
,
ConsigneeMobile
:
this
.
order
.
ConsigneeMobile
,
Sex
:
this
.
order
.
Sex
,
BuyNum
:
this
.
order
.
BuyNum
,
}
uni
.
showLoading
({
title
:
'支付中...'
});
this
.
request2
({
url
:
'/api/AppletDining/SetAppletDiningOrderInfo'
,
data
:
data
},
res
=>
{
uni
.
hideLoading
();
if
(
res
.
resultCode
===
1
){
let
that
=
this
uni
.
requestSubscribeMessage
({
tmplIds
:
res
.
data
.
template_message_list
,
success
:
res
=>
{
console
.
log
(
'订阅成功'
,
res
)
},
fail
:
err
=>
{
console
.
log
(
'订阅失败'
,
err
)
},
complete
(
_res
)
{
if
(
data
.
Final_Price
===
0
){
uni
.
redirectTo
({
url
:
'/pages/jiuzhai/allorderList'
});
return
}
that
.
queren
(
res
.
data
.
OrderId
)
}
});
}
},
err
=>
{
uni
.
hideLoading
();
}
);
},
queren
(
OrderId
){
let
url
=
'/api/WeChatPay/GetDmcPayInfo'
let
GoodsName
=
this
.
orderData
.
MealName
GoodsName
=
GoodsName
.
slice
(
0
,
10
)
this
.
request2
({
url
:
url
,
data
:
{
OrderId
:
OrderId
,
GoodsName
:
GoodsName
,
OrderPayType
:
1
,
OpenId
:
uni
.
getStorageSync
(
'mall_UserInfo'
).
OpenId
,
}
},
res
=>
{
this
.
orderInfo
=
JSON
.
parse
(
res
.
data
);
this
.
Pay
()
}
);
},
Pay
(){
let
that
=
this
;
uni
.
requestPayment
({
provider
:
'wxpay'
,
timeStamp
:
this
.
orderInfo
.
timeStamp
,
nonceStr
:
this
.
orderInfo
.
nonceStr
,
package
:
this
.
orderInfo
.
package
,
signType
:
this
.
orderInfo
.
signType
,
paySign
:
this
.
orderInfo
.
sign
,
success
:
function
(
res
)
{
console
.
log
(
'success'
,
res
);
uni
.
showToast
({
title
:
"支付成功"
})
setTimeout
(()
=>
{
let
total
=
that
.
orderData
.
Unit_Price
*
that
.
order
.
BuyNum
uni
.
redirectTo
({
url
:
'/pages/jiuzhai/paysuccess?PreferPrice='
+
total
});
},
100
)
},
fail
:
function
(
err
)
{
console
.
log
(
'fail:'
,
err
);
uni
.
showToast
({
title
:
"支付失败"
,
icon
:
'none'
})
// setTimeout(()=>{
// uni.redirectTo({
// url: '/pages/jiuzhai/allorderList'
// });
// }, 100 )
}
});
},
},
onLoad
(
options
)
{
let
obj
=
JSON
.
parse
(
decodeURIComponent
(
options
.
data
))
this
.
orderData
=
obj
console
.
log
(
"order"
,
this
.
orderData
)
// this.Final_Price=this.ticketdData.PeopleNumber*this.ticketdData.Unit_Price
},
}
// #ifdef MP-ALIPAY
import
parseHtml
from
"../../../plugin/htmlparse.js"
;
// #endif
export
default
{
data
()
{
return
{
order
:
{
PeopleNumber
:
1
,
BuyNum
:
1
,
Consignee
:
""
,
ConsigneeMobile
:
""
,
BuyerMessage
:
""
,
Sex
:
1
,
},
btnStyle
:
{
height
:
"80rpx"
,
lineHeight
:
"80rpx"
,
borderRadius
:
"16rpx"
,
background
:
"#111"
,
color
:
"#FFF"
,
fontSize
:
"28rpx"
,
fontWeight
:
"600"
,
width
:
"193rpx"
,
},
orderData
:
{},
orderInfo
:
{},
};
},
created
()
{
uni
.
setNavigationBarTitle
({
title
:
"订单填写"
,
});
},
methods
:
{
PeopleNumberChange
(
val
)
{
this
.
order
.
PeopleNumber
=
val
.
value
;
},
BuyNumChange
(
val
)
{
this
.
order
.
BuyNum
=
val
.
value
;
},
buy
()
{
if
(
!
this
.
order
.
Consignee
)
{
uni
.
showToast
({
title
:
"请填写联系人"
,
icon
:
"none"
,
});
return
;
}
if
(
!
this
.
order
.
ConsigneeMobile
)
{
uni
.
showToast
({
title
:
"请填写联系人电话"
,
icon
:
"none"
,
});
return
;
}
let
data
=
{
MealId
:
this
.
orderData
.
MealId
,
DiningId
:
this
.
orderData
.
DiningId
,
Unit_Price
:
this
.
orderData
.
Unit_Price
,
Date
:
this
.
orderData
.
date
,
PeopleNumber
:
this
.
order
.
PeopleNumber
,
Final_Price
:
this
.
orderData
.
Unit_Price
*
this
.
order
.
BuyNum
,
BuyerMessage
:
this
.
order
.
BuyerMessage
,
Consignee
:
this
.
order
.
Consignee
,
ConsigneeMobile
:
this
.
order
.
ConsigneeMobile
,
Sex
:
this
.
order
.
Sex
,
BuyNum
:
this
.
order
.
BuyNum
,
};
uni
.
showLoading
({
title
:
"支付中..."
,
});
this
.
request2
(
{
url
:
"/api/AppletDining/SetAppletDiningOrderInfo"
,
data
:
data
,
},
(
res
)
=>
{
uni
.
hideLoading
();
if
(
res
.
resultCode
===
1
)
{
let
that
=
this
;
uni
.
requestSubscribeMessage
({
tmplIds
:
res
.
data
.
template_message_list
,
success
:
(
res
)
=>
{
console
.
log
(
"订阅成功"
,
res
);
},
fail
:
(
err
)
=>
{
console
.
log
(
"订阅失败"
,
err
);
},
complete
(
_res
)
{
if
(
data
.
Final_Price
===
0
)
{
uni
.
redirectTo
({
url
:
"/pages/jiuzhai/allorderList"
,
});
return
;
}
that
.
queren
(
res
.
data
.
OrderId
);
},
});
}
},
(
err
)
=>
{
uni
.
hideLoading
();
}
);
},
queren
(
OrderId
)
{
let
url
=
"/api/WeChatPay/GetDmcPayInfo"
;
let
GoodsName
=
this
.
orderData
.
MealName
;
GoodsName
=
GoodsName
.
slice
(
0
,
10
);
this
.
request2
(
{
url
:
url
,
data
:
{
OrderId
:
OrderId
,
GoodsName
:
GoodsName
,
OrderPayType
:
1
,
OpenId
:
uni
.
getStorageSync
(
"mall_UserInfo"
).
OpenId
,
},
},
(
res
)
=>
{
this
.
orderInfo
=
JSON
.
parse
(
res
.
data
);
this
.
Pay
();
}
);
},
Pay
()
{
let
that
=
this
;
uni
.
requestPayment
({
provider
:
"wxpay"
,
timeStamp
:
this
.
orderInfo
.
timeStamp
,
nonceStr
:
this
.
orderInfo
.
nonceStr
,
package
:
this
.
orderInfo
.
package
,
signType
:
this
.
orderInfo
.
signType
,
paySign
:
this
.
orderInfo
.
sign
,
success
:
function
(
res
)
{
console
.
log
(
"success"
,
res
);
uni
.
showToast
({
title
:
"支付成功"
,
});
setTimeout
(()
=>
{
let
total
=
that
.
orderData
.
Unit_Price
*
that
.
order
.
BuyNum
;
uni
.
redirectTo
({
url
:
"/pages/jiuzhai/paysuccess?PreferPrice="
+
total
,
});
},
100
);
},
fail
:
function
(
err
)
{
console
.
log
(
"fail:"
,
err
);
uni
.
showToast
({
title
:
"支付失败"
,
icon
:
"none"
,
});
// setTimeout(()=>{
// uni.redirectTo({
// url: '/pages/jiuzhai/allorderList'
// });
// }, 100 )
},
});
},
},
onLoad
(
options
)
{
let
obj
=
JSON
.
parse
(
decodeURIComponent
(
options
.
data
));
this
.
orderData
=
obj
;
// #ifdef MP-ALIPAY
this
.
orderData
.
OtherTag
=
parseHtml
(
this
.
orderData
.
OtherTag
);
//#endif
console
.
log
(
"order"
,
this
.
orderData
);
// this.Final_Price=this.ticketdData.PeopleNumber*this.ticketdData.Unit_Price
},
};
</
script
>
<
style
>
.hotel-order
{
color
:
#111111
;
margin-bottom
:
160
rpx
;
}
.opera-box
{
background-color
:
#FFF
;
padding
:
20
rpx
45
rpx
40
rpx
45
rpx
;
position
:
fixed
;
bottom
:
0
;
left
:
0
;
right
:
0
;
z-index
:
5
;
}
.opera-box
.box
{
height
:
100
rpx
;
background
:
#FFFFFF
;
box-shadow
:
0px
10
rpx
30
rpx
0px
rgba
(
36
,
36
,
36
,
0.2
);
border-radius
:
16
rpx
;
display
:
flex
;
align-items
:
center
;
padding
:
0
10
rpx
0
36
rpx
;
}
.opera-box
.box
.price
{
font-size
:
40
rpx
;
font-weight
:
500
;
color
:
#D91818
;
margin-right
:
20
rpx
;
line-height
:
86
rpx
;
height
:
100%
;
}
.opera-box
.box
.sum-detail
{
font-size
:
24
rpx
;
flex
:
1
;
font-weight
:
500
;
color
:
#6E6E6E
;
}
.hotel-order
.red
{
color
:
#D91818
!important
}
.hotel-order
.grey
{
color
:
#6E6E6E
!important
}
.hotel-order
.form
{
margin-top
:
60
rpx
;
padding
:
0
45
rpx
;
}
.hotel-order
.form
.form-items
{
margin-bottom
:
40
rpx
;
display
:
flex
;
align-items
:
center
;
padding-bottom
:
36
rpx
;
border-bottom
:
1px
solid
#f5f5f5
;
font-size
:
28px
;
font-weight
:
500
;
}
.hotel-order
.form
.form-items
:last-child
{
border-bottom
:
none
;
}
.hotel-order
.form
.form-items
.label
{
white-space
:
nowrap
;
text-align
:
justify
;
text-align-last
:
justify
;
width
:
115
rpx
;
font-size
:
28
rpx
;
font-weight
:
600
;
margin-right
:
20
rpx
;
/* flex-shrink: 0; */
}
.hotel-order
.form
.form-items
.val
{
flex
:
1
;
}
.hotel-order
.sheshi
{
margin-top
:
50
rpx
;
}
.hotel-order
.sheshi
.she-title
{
font-size
:
28
rpx
;
font-weight
:
800
;
}
.hotel-order
.sheshi
.she-content
{
margin-top
:
24
rpx
;
}
.hotel-order
.sheshi
.she-content
text
{
font-size
:
24
rpx
;
font-weight
:
500
;
color
:
#4A4A4A
;
line-height
:
40
rpx
;
margin-right
:
24
rpx
;
}
.hotel-order
.form
.form-items
.val
input
{
border
:
none
;
padding
:
0
;
margin
:
0
;
outline
:
none
;
height
:
38
rpx
;
line-height
:
38
rpx
;
font-size
:
28
rpx
;
font-weight
:
500
;
width
:
100%
;
}
.hotel-order
.king
{
color
:
#DFBE6E
!important
;
}
.hotel-order
.f12
{
font-size
:
24
rpx
!important
;
}
.f11
{
font-size
:
22
rpx
!important
;
}
.hotel-order
.f14
{
font-size
:
28
rpx
!important
;
}
.hotel-order
.regular
{
font-weight
:
500
!important
;
}
.hotel-order
.flex
{
display
:
flex
;
align-items
:
center
;
}
.hotel-order
.empty-block
{
height
:
20
rpx
;
background
:
#ECF1F4
;
}
.hotel-order
.flex-wrap
{
flex-wrap
:
wrap
;
}
.hotel-order
.o-head
{
padding
:
45
rpx
;
background
:
#FFFFFF
;
box-shadow
:
0px
2
rpx
15
rpx
0px
rgba
(
76
,
76
,
76
,
0.13
);
border-radius
:
0px
0px
60
rpx
60
rpx
;
}
.hotel-order
.o-head
.o-timer
{
height
:
100
rpx
;
background
:
#ECF1F4
;
border-radius
:
20
rpx
;
padding
:
0
40
rpx
;
}
.hotel-order
.o-head
.o-timer
.time-item
{
font-size
:
32
rpx
;
font-weight
:
800
;
flex
:
1
;
}
.hotel-order
.o-head
.o-timer
.time-item
:last-child
{
text-align
:
right
;
}
.hotel-order
.o-head
.o-timer
.time-split
{
font-size
:
24
rpx
;
font-weight
:
400
;
text-align
:
center
;
}
.hotel-order
.o-head
.room-name
{
font-size
:
32
rpx
;
font-weight
:
bold
;
margin-top
:
40
rpx
;
margin-bottom
:
10
rpx
;
}
.hotel-order
.o-head
.room-remark
{
font-size
:
28
rpx
;
font-weight
:
500
;
padding-bottom
:
30
rpx
;
margin-bottom
:
30
rpx
;
border-bottom
:
1px
solid
#E7E7E7
;
}
.hotel-order
.o-head
.rule
{
font-size
:
22
rpx
;
font-weight
:
500
;
color
:
#6E6E6E
;
margin-top
:
18
rpx
;
}
.hotel-order
.big-title
{
position
:
relative
;
}
.hotel-order
.big-title
::before
{
display
:
block
;
width
:
71
rpx
;
height
:
12
rpx
;
background
:
#DFBE6E
;
border-radius
:
4
rpx
;
content
:
' '
;
position
:
absolute
;
left
:
0
;
bottom
:
6
rpx
;
z-index
:
1
;
}
.hotel-order
.big-title
text
{
font-size
:
34
rpx
;
font-weight
:
bold
;
color
:
#1F1F1F
;
position
:
relative
;
z-index
:
2
;
}
.Meal-date
{
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
color
:
#999999
;
}
.hotel-order
{
color
:
#111111
;
margin-bottom
:
160
rpx
;
}
.opera-box
{
background-color
:
#fff
;
padding
:
20
rpx
45
rpx
40
rpx
45
rpx
;
position
:
fixed
;
bottom
:
0
;
left
:
0
;
right
:
0
;
z-index
:
5
;
}
.opera-box
.box
{
height
:
100
rpx
;
background
:
#ffffff
;
box-shadow
:
0px
10
rpx
30
rpx
0px
rgba
(
36
,
36
,
36
,
0.2
);
border-radius
:
16
rpx
;
display
:
flex
;
align-items
:
center
;
padding
:
0
10
rpx
0
36
rpx
;
}
.opera-box
.box
.price
{
font-size
:
40
rpx
;
font-weight
:
500
;
color
:
#d91818
;
margin-right
:
20
rpx
;
line-height
:
86
rpx
;
height
:
100%
;
}
.opera-box
.box
.sum-detail
{
font-size
:
24
rpx
;
flex
:
1
;
font-weight
:
500
;
color
:
#6e6e6e
;
}
.hotel-order
.red
{
color
:
#d91818
!important
;
}
.hotel-order
.grey
{
color
:
#6e6e6e
!important
;
}
.hotel-order
.form
{
margin-top
:
60
rpx
;
padding
:
0
45
rpx
;
}
.hotel-order
.form
.form-items
{
margin-bottom
:
40
rpx
;
display
:
flex
;
align-items
:
center
;
padding-bottom
:
36
rpx
;
border-bottom
:
1px
solid
#f5f5f5
;
font-size
:
28px
;
font-weight
:
500
;
}
.hotel-order
.form
.form-items
:last-child
{
border-bottom
:
none
;
}
.hotel-order
.form
.form-items
.label
{
white-space
:
nowrap
;
text-align
:
justify
;
text-align-last
:
justify
;
width
:
115
rpx
;
font-size
:
28
rpx
;
font-weight
:
600
;
margin-right
:
20
rpx
;
/* flex-shrink: 0; */
}
.hotel-order
.form
.form-items
.val
{
flex
:
1
;
}
.hotel-order
.sheshi
{
margin-top
:
50
rpx
;
}
.hotel-order
.sheshi
.she-title
{
font-size
:
28
rpx
;
font-weight
:
800
;
}
.hotel-order
.sheshi
.she-content
{
margin-top
:
24
rpx
;
}
.hotel-order
.sheshi
.she-content
text
{
font-size
:
24
rpx
;
font-weight
:
500
;
color
:
#4a4a4a
;
line-height
:
40
rpx
;
margin-right
:
24
rpx
;
}
.hotel-order
.form
.form-items
.val
input
{
border
:
none
;
padding
:
0
;
margin
:
0
;
outline
:
none
;
height
:
38
rpx
;
line-height
:
38
rpx
;
font-size
:
28
rpx
;
font-weight
:
500
;
width
:
100%
;
}
.hotel-order
.king
{
color
:
#dfbe6e
!important
;
}
.hotel-order
.f12
{
font-size
:
24
rpx
!important
;
}
.f11
{
font-size
:
22
rpx
!important
;
}
.hotel-order
.f14
{
font-size
:
28
rpx
!important
;
}
.hotel-order
.regular
{
font-weight
:
500
!important
;
}
.hotel-order
.flex
{
display
:
flex
;
align-items
:
center
;
}
.hotel-order
.empty-block
{
height
:
20
rpx
;
background
:
#ecf1f4
;
}
.hotel-order
.flex-wrap
{
flex-wrap
:
wrap
;
}
.hotel-order
.o-head
{
padding
:
45
rpx
;
background
:
#ffffff
;
box-shadow
:
0px
2
rpx
15
rpx
0px
rgba
(
76
,
76
,
76
,
0.13
);
border-radius
:
0px
0px
60
rpx
60
rpx
;
}
.hotel-order
.o-head
.o-timer
{
height
:
100
rpx
;
background
:
#ecf1f4
;
border-radius
:
20
rpx
;
padding
:
0
40
rpx
;
}
.hotel-order
.o-head
.o-timer
.time-item
{
font-size
:
32
rpx
;
font-weight
:
800
;
flex
:
1
;
}
.hotel-order
.o-head
.o-timer
.time-item
:last-child
{
text-align
:
right
;
}
.hotel-order
.o-head
.o-timer
.time-split
{
font-size
:
24
rpx
;
font-weight
:
400
;
text-align
:
center
;
}
.hotel-order
.o-head
.room-name
{
font-size
:
32
rpx
;
font-weight
:
bold
;
margin-top
:
40
rpx
;
margin-bottom
:
10
rpx
;
}
.hotel-order
.o-head
.room-remark
{
font-size
:
28
rpx
;
font-weight
:
500
;
padding-bottom
:
30
rpx
;
margin-bottom
:
30
rpx
;
border-bottom
:
1px
solid
#e7e7e7
;
}
.hotel-order
.o-head
.rule
{
font-size
:
22
rpx
;
font-weight
:
500
;
color
:
#6e6e6e
;
margin-top
:
18
rpx
;
}
.hotel-order
.big-title
{
position
:
relative
;
}
.hotel-order
.big-title
::before
{
display
:
block
;
width
:
71
rpx
;
height
:
12
rpx
;
background
:
#dfbe6e
;
border-radius
:
4
rpx
;
content
:
" "
;
position
:
absolute
;
left
:
0
;
bottom
:
6
rpx
;
z-index
:
1
;
}
.hotel-order
.big-title
text
{
font-size
:
34
rpx
;
font-weight
:
bold
;
color
:
#1f1f1f
;
position
:
relative
;
z-index
:
2
;
}
.Meal-date
{
font-size
:
24
rpx
;
font-family
:
PingFang
SC
;
color
:
#999999
;
}
</
style
>
plugin/api.js
View file @
281db386
...
...
@@ -2,8 +2,8 @@ export default {
install
(
Vue
,
options
)
{
Vue
.
prototype
.
host
=
"https://wx.weibaoge.cn/web/index.php?_mall_id=1285"
Vue
.
prototype
.
host2
=
"http://192.168.20.17:8020"
//
Vue.prototype.host2 = "https://erpmallapi.oytour.com"
//
Vue.prototype.host2 = "http://192.168.20.17:8020"
Vue
.
prototype
.
host2
=
"https://erpmallapi.oytour.com"
//Vue.prototype.host3 = "http://192.168.20.24"
Vue
.
prototype
.
host3
=
"https://reborn.oytour.com"
...
...
@@ -182,7 +182,14 @@ export default {
let
appObj
=
{};
let
appType
=
2
;
switch
(
appType
)
{
case
2
:
//旅小友
case
1
:
//旅小友-支付宝
appObj
=
{
AppId
:
'2021002181604459'
,
TenantId
:
12
,
MallBaseId
:
2
,
};
break
;
case
2
:
//旅小友-微信
appObj
=
{
AppId
:
'wxcf0727a7c78b501e'
,
TenantId
:
12
,
...
...
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