db50ac0d by 杨炀

no message

1 parent 2bcae8ef
...@@ -41,6 +41,20 @@ export function getRoomBilldetailbyId(params) { ...@@ -41,6 +41,20 @@ export function getRoomBilldetailbyId(params) {
41 params: params 41 params: params
42 }) 42 })
43 } 43 }
44 export function getCarBilldetailbyId(params) {
45 return request({
46 url: `/ota/norder/getOrderByOrderId`,
47 method: 'get',
48 params: params
49 })
50 }
51 export function getFoodBilldetailbyId(params) {
52 return request({
53 url: `/ota/orderFood/getFoodOrderInfoByOrder`,
54 method: 'get',
55 params: params
56 })
57 }
44 export function getActivityCarList(params) { 58 export function getActivityCarList(params) {
45 return request({ 59 return request({
46 url: `/ota/activityVehicle/wxList`, 60 url: `/ota/activityVehicle/wxList`,
...@@ -48,3 +62,45 @@ export function getActivityCarList(params) { ...@@ -48,3 +62,45 @@ export function getActivityCarList(params) {
48 params: params 62 params: params
49 }) 63 })
50 } 64 }
65 export function submitOrderCar(data) {
66 return request({
67 url: `/ota/norder/submitOrderCar`,
68 method: 'post',
69 data: data
70 })
71 }
72 export function getActivityRestaurantList(params) {
73 return request({
74 url: `/ota/activityRestaurant/list`,
75 method: 'get',
76 params: params
77 })
78 }
79 export function getMenuById(params) {
80 return request({
81 url: `/ota/activityFood/list`,
82 method: 'get',
83 params: params
84 })
85 }
86 export function submitOrderFood(form) {
87 return request({
88 url: `/ota/norder/submitOrderFood`,
89 method: 'post',
90 data: form
91 })
92 }
93 export function createWePay(data) {
94 return request({
95 url: `/ota/norder/wxPay`,
96 method: 'post',
97 data:data
98 })
99 }
100 export function createPalPay(data) {
101 return request({
102 url: `/ota/norder/palPay`,
103 method: 'post',
104 data:data
105 })
106 }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 .popo{position: absolute;left: 0;} 7 .popo{position: absolute;left: 0;}
8 .no-pointer { pointer-events: none } 8 .no-pointer { pointer-events: none }
9 .blur20 { filter: blur(20px) } 9 .blur20 { filter: blur(20px) }
10 10 .m0{margin: 0;}
11 .flex{display: flex;} 11 .flex{display: flex;}
12 12
13 .text-gray{color: #999} 13 .text-gray{color: #999}
...@@ -262,7 +262,7 @@ img{display: block;} ...@@ -262,7 +262,7 @@ img{display: block;}
262 } 262 }
263 263
264 .text-warning { 264 .text-warning {
265 color: #f8ac59; 265 color: #FF8124;
266 } 266 }
267 267
268 .text-danger { 268 .text-danger {
...@@ -1488,3 +1488,19 @@ img{display: block;} ...@@ -1488,3 +1488,19 @@ img{display: block;}
1488 transform: translateY(5px) 1488 transform: translateY(5px)
1489 } 1489 }
1490 } 1490 }
1491 .w40px{width: 40px}
1492 .plr20{padding: 0 20px}
1493 .mlr20{margin: 0 20px}
1494 .jcc{justify-content: center!important;}
1495 .jcb{justify-content: space-between!important;}
1496 .aic{align-items: center;}
1497 .br10{border-radius: 10px;overflow: hidden}
1498 .w150px{width: 150px}
1499 h3.afterLine{
1500 color: var(--el-color-primary);position: relative;font-size: 16px;
1501 &::after{
1502 content: '';position: absolute;background: #DCDFE6;
1503 height: 1px;width: calc(100% - 4em - 20px);right: 0px;
1504 top:0;bottom: 0;margin: auto;
1505 }
1506 }
......
...@@ -386,6 +386,18 @@ export const constantRoutes = [ ...@@ -386,6 +386,18 @@ export const constantRoutes = [
386 meta: { title: 'Dining Reservation' } 386 meta: { title: 'Dining Reservation' }
387 }, 387 },
388 { 388 {
389 path: 'dinner/:cptId/:id',
390 component: () => import('@/viewsPc/booking/dinnerDetail'),
391 name: 'dinnerDetail',
392 meta: { title: 'Dining Reservation' }
393 },
394 {
395 path: 'dinner/:cptId/:id/:foodId',
396 component: () => import('@/viewsPc/booking/foodOrder'),
397 name: 'dinnerOrder',
398 meta: { title: 'Dinner Reservation' }
399 },
400 {
389 path: 'makeUp/:cptId', 401 path: 'makeUp/:cptId',
390 component: () => import('@/viewsPc/booking/makeUp'), 402 component: () => import('@/viewsPc/booking/makeUp'),
391 name: 'makeUp', 403 name: 'makeUp',
...@@ -402,6 +414,12 @@ export const constantRoutes = [ ...@@ -402,6 +414,12 @@ export const constantRoutes = [
402 component: () => import('@/viewsPc/booking/pay'), 414 component: () => import('@/viewsPc/booking/pay'),
403 name: 'bookingPay', 415 name: 'bookingPay',
404 meta: { title: 'pay' } 416 meta: { title: 'pay' }
417 },
418 {
419 path: 'payOk',
420 component: () => import('@/viewsPc/booking/payOk'),
421 name: 'bookingPayOk',
422 meta: { title: 'payOk' }
405 } 423 }
406 ] 424 ]
407 }, 425 },
......
...@@ -56,7 +56,19 @@ ...@@ -56,7 +56,19 @@
56 </el-row> 56 </el-row>
57 </el-col> 57 </el-col>
58 <el-col :span="3"> 58 <el-col :span="3">
59 <div class="price">{{ language==0?'¥':'€' }}<span>{{language==0?r.inPrice:r.inPriceEn}}</span></div> 59 <div class="price" v-if="language==0">¥
60 <span v-if="r.outPrice&&r.inPrice">{{Number(r.inPrice) > Number(r.outPrice)?r.outPrice:r.inPrice}}</span>
61 <span v-else-if="r.inPrice>0">{{r.inPrice}}</span>
62 <span v-else>{{r.outPrice}}</span>
63
64 </div>
65 <div class="price" v-else>
66
67 <span v-if="r.outPriceEn&&r.inPriceEn">{{(Number(r.inPriceEn)||0) > Number(r.outPriceEn)?r.outPriceEn:r.inPriceEn}}</span>
68 <span v-else-if="r.inPriceEn>0">{{r.inPriceEn}}</span>
69 <span v-else>{{r.outPriceEn}}</span>
70 </div>
71
60 </el-col> 72 </el-col>
61 <el-col :span="3"> 73 <el-col :span="3">
62 <el-button class="btn-lineG w100" round type="primary" @click="goOrder(h,r)">{{ language==0?'我要预定':'Select' }}</el-button> 74 <el-button class="btn-lineG w100" round type="primary" @click="goOrder(h,r)">{{ language==0?'我要预定':'Select' }}</el-button>
...@@ -64,7 +76,7 @@ ...@@ -64,7 +76,7 @@
64 </el-row> 76 </el-row>
65 </div> 77 </div>
66 78
67 <el-empty v-if="list.length == 0" :image="`/img/order_no.png`" :image-size="228" description=""/> 79 <el-empty v-if="h.carVoList.length == 0" :image="`/img/order_no.png`" :image-size="228" description=""/>
68 </div> 80 </div>
69 81
70 </el-collapse-item> 82 </el-collapse-item>
...@@ -83,7 +95,8 @@ import {onMounted} from "@vue/runtime-core" ...@@ -83,7 +95,8 @@ import {onMounted} from "@vue/runtime-core"
83 import * as booking from "@/apiPc/booking" 95 import * as booking from "@/apiPc/booking"
84 import {useRouter,useRoute} from "vue-router"; 96 import {useRouter,useRoute} from "vue-router";
85 import {useStorage} from "@vueuse/core/index"; 97 import {useStorage} from "@vueuse/core/index";
86 import {getActivityCarList} from "@/apiPc/booking"; 98 import useUserStore from "@/store/modules/user";
99 const user = useUserStore().user
87 const router = useRouter() 100 const router = useRouter()
88 const route = useRoute() 101 const route = useRoute()
89 const language= useStorage('language',0) 102 const language= useStorage('language',0)
...@@ -109,6 +122,10 @@ function getList() { ...@@ -109,6 +122,10 @@ function getList() {
109 }) 122 })
110 } 123 }
111 function goOrder(item,car) { 124 function goOrder(item,car) {
125 if(!user){
126 useUserStore().setReLogin()
127 return
128 }
112 router.push({ 129 router.push({
113 name:'carOrder', 130 name:'carOrder',
114 params:{ 131 params:{
...@@ -123,8 +140,7 @@ function goOrder(item,car) { ...@@ -123,8 +140,7 @@ function goOrder(item,car) {
123 </script> 140 </script>
124 141
125 <style scoped lang="scss"> 142 <style scoped lang="scss">
126 .w40px{width: 40px} 143
127 .plr20{padding: 0 20px}
128 .hotel{margin-bottom: 20px;cursor: pointer; 144 .hotel{margin-bottom: 20px;cursor: pointer;
129 .index{display: flex;font-weight: 500;padding-left: 20px; 145 .index{display: flex;font-weight: 500;padding-left: 20px;
130 font-size: 18px;align-items: center; 146 font-size: 18px;align-items: center;
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
5 </div> 5 </div>
6 <div class="box"> 6 <div class="box">
7 <div class="searchBar"> 7 <div class="searchBar">
8 <el-input placeholder="请输入关键字搜索" v-model="query.name" class="no-border"> 8 <el-input :placeholder="language==0?'请输入关键字搜索':'Search'" v-model="query.name" class="no-border">
9 </el-input> 9 </el-input>
10 <el-button size="large" type="primary" class="btn-lineG" icon="search">搜索</el-button> 10 <el-button size="large" type="primary" class="btn-lineG" icon="search">{{ language==0?'搜索':'Search' }}</el-button>
11 </div> 11 </div>
12 </div> 12 </div>
13 13
...@@ -15,19 +15,19 @@ ...@@ -15,19 +15,19 @@
15 <el-row :gutter="20"> 15 <el-row :gutter="20">
16 <el-col :span="12" v-for="(h,index) in list" class="mb20"> 16 <el-col :span="12" v-for="(h,index) in list" class="mb20">
17 <el-card> 17 <el-card>
18 <!-- 酒店列表--> 18 <el-row class="hotel" align="middle" :gutter="20">
19 <el-row class="hotel" align="middle">
20 <el-col :span="12"> 19 <el-col :span="12">
21 <img/> 20 <img class="w100" :src="fillImgUrl(h.photos?.split(',')[0])"/>
22 </el-col> 21 </el-col>
23 <el-col :span="12"> 22 <el-col :span="12">
24 <h3>{{h.name}}</h3> 23 <h3 class="esp m0">{{h.name}}</h3>
25 <p> 24 <p class="esp_2 addr">
26 <el-icon><LocationFilled /></el-icon> 25 <el-icon color="#929AA0"><LocationFilled /></el-icon>
27 {{h.address}} 26 {{h.addName}}
28 </p> 27 </p>
29 <div class="price">¥<span>450</span><i></i></div> 28 <div class="price mb20" v-if="language==0"><i class="text-warning">¥</i><span class="text-warning">{{ h.price }}</span></div>
30 <el-button class="btn-lineG" round type="primary" size="large">立即预约 ⇀</el-button> 29 <div class="price mb20" v-else><i class="text-warning"></i><span class="text-warning">{{ h.price }}</span>start</div>
30 <el-button class="btn-lineG" round type="primary" size="large" @click="goDetail(h)">{{ language==0?'立即预约':'Select' }}</el-button>
31 31
32 </el-col> 32 </el-col>
33 </el-row> 33 </el-row>
...@@ -43,6 +43,11 @@ ...@@ -43,6 +43,11 @@
43 <script setup> 43 <script setup>
44 import {onMounted} from "@vue/runtime-core" 44 import {onMounted} from "@vue/runtime-core"
45 import * as booking from "@/apiPc/booking" 45 import * as booking from "@/apiPc/booking"
46 const router = useRouter()
47 const language = useStorage('language', 0)
48 import {getActivityRestaurantList} from "@/apiPc/booking";
49 import {useRouter} from "vue-router";
50 import {useStorage} from "@vueuse/core/index";
46 const query = ref({ 51 const query = ref({
47 name:'' 52 name:''
48 }) 53 })
...@@ -52,10 +57,22 @@ onMounted(()=>{ ...@@ -52,10 +57,22 @@ onMounted(()=>{
52 }) 57 })
53 58
54 function getList() { 59 function getList() {
55 booking.getHotelList(query.value).then(res=>{ 60 booking.getActivityRestaurantList(query.value).then(res=>{
56 list.value = res.rows 61 list.value = res.rows
57 }) 62 })
58 } 63 }
64 function goDetail(n) {
65 router.push({
66 name:'dinnerDetail',
67 params:{
68 id:n.id,
69 },
70 query:{
71 detail:encodeURIComponent(JSON.stringify(n))
72 }
73
74 })
75 }
59 </script> 76 </script>
60 77
61 <style scoped lang="scss"> 78 <style scoped lang="scss">
...@@ -71,4 +88,13 @@ function getList() { ...@@ -71,4 +88,13 @@ function getList() {
71 .no-border{border: none;background: #F5F7F9; 88 .no-border{border: none;background: #F5F7F9;
72 :deep(.el-input__wrapper){border: none;box-shadow: none;background: #F5F7F9;} 89 :deep(.el-input__wrapper){border: none;box-shadow: none;background: #F5F7F9;}
73 } 90 }
91 .addr{font-weight: 400;
92 font-size: 16px;
93 color: #929AA0;}
94 .price{font-weight: 400;
95 font-size: 18px;
96 color: #929AA0;
97 i{font-size: 24px;font-style: normal;}
98 span{font-weight: 600;font-size: 36px;font-family: "DIN Alternate";margin:0 6px;}
99 }
74 </style> 100 </style>
......
1 <template>
2 <div>
3 <div class="box">
4 <el-card class="mt30" v-loading="loading">
5 <el-row v-if="form" class="hotel" align="middle" :gutter="20">
6 <!-- <el-col :span="6">-->
7 <!-- <img class="w100" :src="fillImgUrl(form.photos?.split(',')[0])"/>-->
8 <!-- </el-col>-->
9 <el-col :span="16">
10 <h3 class="esp flex">{{ form?.name }}
11 </h3>
12
13
14 <p class="esp addr">
15 <el-icon size="16" style="position: relative;top: 2px" color="#929AA0">
16 <LocationFilled/>
17 </el-icon>
18 {{ form?.addName }}
19 </p>
20 </el-col>
21 </el-row>
22 <el-empty v-else :image="`/img/order_no.png`" :image-size="228" description=""/>
23 </el-card>
24
25 <div class="mt30">
26 <el-row :gutter="20">
27 <el-col v-for="(p,index) in form?.photos?.split(',')" :span="index==0?12:6">
28 <div class="imgbox hotelImg">
29 <img :src="fillImgUrl(p)">
30 </div>
31 </el-col>
32 </el-row>
33 </div>
34
35 <el-card class="mt30 mb60">
36 <div class="lineHead">
37 <ul>
38 <li>{{ language == 0 ? '餐饮选择' : 'Available Set meal' }}</li>
39 </ul>
40 </div>
41 <div>
42 <div v-for="(r,index) in roomList" :key="index" class="room">
43 <el-row :gutter="30" align="middle">
44 <el-col :span="4">
45 <div class="roomImg">
46 <el-image fit="cover" :preview-src-list="r.photosList" :src="fillImgUrl(r.photos?.split(',')[0])"/>
47 </div>
48 </el-col>
49 <el-col :span="14">
50 <h3 class="name">{{ r.name }}<span class="text-primary">({{ r.categoryName }})</span></h3>
51 <el-row :gutter="10">
52 <el-col :span="24">
53 <p>{{ language==0?'配送时间':'Delivery time' }}{{ r.psStart }}~{{ r.psEnd }}</p>
54 <p>{{ language==0?'配送地址':'Delivery address' }}{{ r.address }}</p>
55 </el-col>
56 </el-row>
57 </el-col>
58 <el-col :span="3">
59 <div class="price">{{
60 language == 0 ? '¥' : '€'
61 }}<span>{{ language == 0 ? r.foodPrice : r.foodPriceEn }}</span></div>
62 </el-col>
63 <el-col :span="3">
64 <el-button class="btn-lineG w100" round type="primary" @click="goOrder(r)">
65 {{ language == 0 ? '我要预订' : 'Select' }}
66 </el-button>
67 </el-col>
68 </el-row>
69 </div>
70
71 <el-empty v-if="roomList.length == 0" :image="`/img/order_no.png`" :image-size="228" description=""/>
72 </div>
73 </el-card>
74 </div>
75 </div>
76 </template>
77
78 <script setup>
79 import {useRouter} from "vue-router";
80 import {ref, reactive, onMounted} from "vue";
81 import {useRoute} from "vue-router";
82 import {getHotelById, getMenuById} from "@/apiPc/booking"
83
84 import {useStorage} from "@vueuse/core/index";
85 import useUserStore from "@/store/modules/user";
86 import {fillImgUrl} from "@/utils/ruoyi";
87
88 const user = useUserStore().user
89 const language = useStorage('language', 0)
90 const router = useRouter()
91 const route = useRoute()
92 const form = ref({})
93 const query = ref({
94 larId: route.query.id
95 })
96 const loading = ref(false)
97 const roomList = ref([])
98 const map = ref(null)
99 onMounted(() => {
100 form.value = JSON.parse(decodeURIComponent(route.query.detail))
101 getData()
102 })
103
104 function getData() {
105 loading.value = true
106 query.value.hotelId = route.query.id
107 getMenuById(query.value).then(res => {
108 loading.value = false
109 roomList.value = res.rows
110 for (let m of roomList.value) {
111 var arr = []
112 m.photosList = []
113 arr = m.photos?.split(',')
114 for (var a of arr){
115 m.photosList.push(fillImgUrl(a))
116 }
117 m.num = 0
118 if (m.category == 0) {
119 m.categoryName = language.value == 0 ? '早餐' : 'Breakfast'
120 } else if (m.category == 1) {
121 m.categoryName = language.value == 0 ? '午餐' : 'Lunch'
122 } else {
123 m.categoryName = language.value == 0 ? '晚餐' : 'Dinner'
124 }
125 }
126 })
127 }
128
129 function goOrder(n) {
130 if (!user) {
131 useUserStore().setReLogin()
132 return
133 }
134 router.push({
135 name: 'dinnerOrder',
136 params: {
137 foodId: n.id
138 },
139 query: {
140 food: encodeURIComponent(JSON.stringify(n)),
141 restaurant: encodeURIComponent(JSON.stringify(form.value)),
142 }
143 })
144 }
145 </script>
146
147 <style scoped lang="scss">
148 .room {
149 background: #FAFBFD;
150 margin: 20px 0 0;
151 padding: 20px;
152 border: 1px solid #E5E5E5;
153
154 .name {
155 font-size: 20px;
156 margin: 0 0 10px;
157
158 span {
159 font-weight: 400;
160 padding: 0 10px;
161 font-size: 16px;
162 }
163 }
164
165 .roomImg {
166 aspect-ratio: 16/9;
167 border-radius: 10px;
168 overflow: hidden;
169
170 img {
171 width: 100%;
172 object-fit: cover;
173 object-position: center;
174 height: 100%;
175 }
176 }
177
178 .price {
179 color: #FF8124;
180 font-size: 24px;
181
182 span {
183 font-size: 36px;
184 font-family: "DIN Alternate"
185 }
186 }
187
188 .bg-lineg {
189 margin: auto;
190 border-radius: 10px;
191 text-align: center;
192 padding: 7px 2px 2px;
193 font-size: 24px;
194 width: 66px;
195 cursor: pointer;
196
197 div {
198 background: #fff;
199 font-size: 13px;
200 border-radius: 20px;
201 padding: 0 10px;
202 color: #453DEA;
203 font-weight: 500;
204 }
205 }
206 }
207
208 .hotel {
209 h3 {
210 margin: 0 0 20px;
211 }
212
213 img.w100 {
214 object-fit: cover;
215 aspect-ratio: 16/9
216 }
217
218 .addr {
219 font-size: 16px;
220 color: #929AA0;
221 font-weight: 400;
222 }
223
224 .price {
225 margin: 0 0 25px;
226 color: #FF8124;
227 font-size: 18px;
228
229 span {
230 font-size: 24px;
231 margin: 0 8px;
232 font-family: 'DINAlternate-Bold';
233 font-weight: 600;
234 }
235
236 i {
237 font-style: normal;
238 color: #929AA0;
239 }
240 }
241 }
242
243 .starBox {
244 img {
245 display: inline-block;
246 margin-right: 4px
247 }
248 }
249
250 .tagbox {
251 margin: 15px 0;
252
253 a {
254 color: #AFB5B9;
255 font-size: 12px;
256 }
257
258 span {
259 border-radius: 13px;
260 font-size: 12px;
261 padding: 4px 10px;
262 margin-right: 10px;
263 font-weight: 400;
264 }
265
266 span:nth-child(4n) {
267 background: rgba(50, 177, 108, 0.2);
268 color: rgba(50, 177, 108, 1);
269 }
270
271 span:nth-child(4n+1) {
272 background: rgba(243, 152, 0, 0.2);
273 color: rgba(243, 152, 0, 1);
274 }
275
276 span:nth-child(4n+2) {
277 background: rgba(0, 160, 233, 0.2);
278 color: rgba(0, 160, 233, 1);
279 }
280
281 span:nth-child(4n+3) {
282 background: rgba(247, 64, 166, 0.2);
283 color: rgba(247, 64, 166, 1);
284 }
285 }
286
287 .mapBox {
288 position: relative;
289 overflow: hidden;
290 height: 200px;
291
292 #map {
293 position: relative;
294 left: -70px;
295 width: calc(100% + 160px);
296 }
297 }
298
299 .hotelImg {
300 border-radius: 10px;
301 overflow: hidden;
302 aspect-ratio: 16/9;
303
304 img {
305 object-fit: cover;
306 object-position: center;
307 width: 100%;
308 height: 100%;
309 }
310 }
311 </style>
1 <template>
2 <div>
3 <div class="box">
4 <el-card :body-style="{ padding: '0px' }" class="mt20">
5 <div slot="header">
6 <div class="bg-lineg">{{ language == 0 ? '餐饮预约下单' : 'Food booking order' }}</div>
7 </div>
8 <!-- {{room}}-->
9 <el-row class="pd20" :gutter="20">
10 <el-col :span="14">
11 <div class="border-info">
12 <h3>{{ restaurant.name }}</h3>
13 <div class="room">
14 <span>{{ restaurant.address }}</span>
15 </div>
16 </div>
17
18 <div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div>
19 <div class="border-rr mt20 pd20">
20
21 <el-form :model="form" :label-width="language == 0 ?'100':'150'" :rules="rules" ref="formRef">
22 <el-form-item :label="food.name" required prop="num">
23 <el-input-number v-model="form.num" :min="1" @change="changeNum"/>
24 </el-form-item>
25 <el-form-item :label="language==0?'订餐周期':'Check-in date'" required>
26 <el-date-picker @change="getDaysBetween"
27 v-model="rzRange"
28 type="daterange"
29 :placeholder="language==0?'选择日期':'Select date'" format="YYYY-MM-DD"
30 value-format="YYYY-MM-DD"/>
31 <!-- :picker-options="pickerOptions"-->
32 </el-form-item>
33
34 <el-form-item :label="`联系人`" required>
35 <el-input v-model="form.contacts"/>
36 </el-form-item>
37 <el-form-item :label="language==0?'联系电话':'Contact phone'" required prop="phone">
38 <el-input v-model="form.phone"/>
39 </el-form-item>
40 <el-form-item :label="language==0?'送餐时间':'Contact phone'" required prop="phone">
41 <div style="line-height: 36px;">{{food.psStart}} - {{food.psEnd}}</div>
42 </el-form-item>
43 <el-form-item label="配送地址">
44 <div style="line-height: 36px;">{{food.address}}</div>
45 </el-form-item>
46 <el-form-item>
47 <div class="tip">
48 *如预定多天的餐饮,将分多天进行配送。<br/>
49 *每日送餐时间只配送当日预定的餐饮。
50 </div>
51 </el-form-item>
52 <el-form-item :label="language==0?'备注':'Remarks'">
53 <el-input type="textarea" rows="3" v-model="form.remarks"/>
54 </el-form-item>
55 </el-form>
56 </div>
57 </el-col>
58 <el-col :span="10">
59 <div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div>
60 <div class="border-rr mt20 pd20 ccitemBox">
61 <label> {{food.name }}</label>
62 <div class="ccitem" v-for="(c, index) in choseDays" :key="index">
63 {{ c }}
64 <span>{{ form.num }}*{{ language == 0 ? '¥' : '€' }}{{ language == 0 ?food.foodPrice:food.foodPriceEn }}</span>
65 </div>
66
67 <label>{{ language == 0 ? '共计' : 'Total' }}<span
68 class="fr bigMoney">{{ language == 0 ? '¥' : '€' }}{{ form.total }}</span></label>
69
70 </div>
71 </el-col>
72 </el-row>
73 </el-card>
74
75 <el-card class="mt30">
76 <el-row justify="space-between" align="middle">
77 <el-col :span="12">
78 <label>{{ language == 0 ? '共计金额' : 'Total' }}
79 <span class=" text-warning"> {{ language == 0 ? '¥' : '€' }}<span class="bigMoney">{{ form.total }}</span></span>
80 </label>
81 </el-col>
82 <el-col :span="12" class="text-right">
83 <el-button type="primary" class="btn-lineG" @click="submit">确认付款</el-button>
84 </el-col>
85 </el-row>
86 </el-card>
87 <div style="height: 60px;"></div>
88
89 </div>
90 </div>
91 </template>
92
93 <script setup>
94 import {useRouter, useRoute} from "vue-router";
95 import {ref, reactive, onMounted} from "vue";
96 import {useStorage} from "@vueuse/core/index";
97 import {checkResidueRoom, newsSubmitOrderHotel, submitOrderFood} from "@/apiPc/booking"
98 import dayjs from 'dayjs'
99 import {ElMessage,ElMessageBox} from "element-plus";
100 import useUserStore from "@/store/modules/user";
101 const user = useUserStore().user
102 const language = useStorage('language', 0)
103 const router = useRouter()
104 const route = useRoute()
105 const food = ref({})
106 const restaurant = ref({})
107 const canOrderStart = ref('')
108 const canOrderNum = ref(0)
109 const form = ref({
110 num: 1,
111 phone: user.phonenumber||'',
112 })
113 const rzRange = ref([])
114 const rzUserArr = ref([])
115 const money = ref(0)
116 const choseDays = ref([])
117 const rules = ref({})
118
119 let usedays = 0
120 onMounted(() => {
121 food.value = JSON.parse(decodeURIComponent(route.query.food))
122 restaurant.value = JSON.parse(decodeURIComponent(route.query.restaurant))
123 if(language.value == 0){
124 form.value.total = food.value.foodPrice
125 } else {
126 form.value.total = food.value.foodPriceEn
127 }
128 console.log(food.value,restaurant.value)
129 const today = dayjs()
130 canOrderStart.value = today
131 if (food.value.hqNewStart < canOrderStart.value) {
132 food.value.hqNewStart = canOrderStart.value
133 }
134 })
135
136 function changeNum() {
137 let moneyAll = 0
138 if(language.value == 0){
139 moneyAll = food.value.foodPrice * form.value.num * usedays
140 } else {
141 moneyAll = food.value.foodPriceEn * form.value.num * usedays
142 }
143 form.value.total = moneyAll.toFixed(2)
144 }
145 function getDaysBetween(e) {
146 var d1 = Date.parse(rzRange.value[0])
147 var d2 = Date.parse(rzRange.value[1])
148 if (d1 > d2) {
149 usedays = 1
150 return
151 }
152 if (d1 == d2) {
153 usedays = 1
154 } else {
155 var days = (d2 - d1) / (1 * 24 * 60 * 60 * 1000);
156 usedays = days + 1
157 }
158
159 changeNum()
160
161 var startTime = getDate(rzRange.value[0]);
162 var endTime = getDate(rzRange.value[1]);
163 var dateArr = [];
164 while ((endTime.getTime() - startTime.getTime()) > 0) {
165 var year = startTime.getFullYear();
166 var month = (startTime.getMonth() + 1).toString().length === 1 ? "0" + (parseInt(startTime.getMonth()
167 .toString(), 10) + 1) : (startTime.getMonth() + 1);
168 var day = startTime.getDate().toString().length === 1 ? "0" + startTime.getDate() : startTime.getDate();
169 dateArr.push(year + "-" + month + "-" + day);
170 startTime.setDate(startTime.getDate() + 1);
171 }
172 dateArr.push(rzRange.value[1])
173 choseDays.value = dateArr;
174 }
175
176 function getDate(datestr) {
177 var temp = datestr.split("-");
178 if (temp[1] === '01') {
179 temp[0] = parseInt(temp[0], 10) - 1;
180 temp[1] = '12';
181 } else {
182 temp[1] = parseInt(temp[1], 10) - 1;
183 }
184 //new Date()的月份入参实际都是当前值-1
185 var date = new Date(temp[0], temp[1], temp[2]);
186 return date
187 }
188
189 function submit() {
190 if(!user){
191 useUserStore().setReLogin()
192 return
193 }
194 if(rzRange.value.length>0){
195 form.value.dcStart = rzRange.value[0]
196 form.value.dcEnd = rzRange.value[1]
197 }
198
199 form.value.foodsList = []
200 var obj = {
201 arfId: food.value.id,
202 name: food.value.name,
203 categoryName: food.value.categoryName,
204 category: food.value.category,
205 num: form.value.num,
206 price:food.value.foodPrice
207 }
208 form.value.foodsList.push(obj)
209 form.value.activeId = restaurant.value.activityId
210 form.value.larId = restaurant.value.id
211 // 提交确认
212 ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', {
213 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
214 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
215 type: 'warning'
216 }).then(() => {
217 submitOrderFood(form.value).then(res => {
218 if (res.data) {
219 if (res.data.total == -100) {
220 ElMessage.warning(language.value == 0 ? '挤爆了,请稍后下单' : 'Too many people, please order later')
221 } else {
222 //去付钱
223 router.push({
224 name: 'bookingPay',
225 query: {
226 orderId:res.data.orderId,
227 money:res.data.total,
228 type:'food'
229 }
230 })
231 }
232 } else {
233 ElMessage.warning(language.value == 0 ? '挤爆了,请稍后下单' : 'Too many people, please order later')
234 }
235 })
236 })
237 }
238
239 </script>
240
241 <style scoped lang="scss">
242 .bigMoney {
243 font-size: 36px !important;
244 font-family: 'DIN Alternate';
245 font-weight: bold;
246 }
247
248 .bg-lineg {
249 height: 40px;
250 line-height: 40px;
251 font-size: 18px;
252 text-align: center;
253 }
254
255 .leftboderTT {
256 font-weight: 600;
257 font-size: 16px;
258 color: #453DEA;
259 }
260
261 .border-rr {
262 border-radius: 5px;
263 border: 1px solid #DCDFE6;
264 }
265
266 .room {
267 font-weight: 400;
268 font-size: 14px;
269 color: #929AA0;
270 }
271
272 .ccitemBox {
273 overflow: auto;
274
275 label {
276 margin: 10px 0;
277 display: block;
278 min-height: 30px;
279
280 span {
281 color: #FF8124;
282 font-family: DIN Alternate;
283 font-size: 24px;
284 }
285 }
286 }
287
288 .ccitem {
289 display: flex;
290 justify-content: space-between;
291 font-size: 15px;
292 color: #666;
293 margin: 5px 0 10px;
294
295 label {
296 font-size: 16px;
297 color: #000;
298 }
299
300 span {
301 font-size: 13px;
302 }
303 }
304
305 .red {
306 color: #FF8124;
307 }
308 .tip{font-size: 14px;color: #666;padding: 0 10px;}
309 </style>
...@@ -93,8 +93,8 @@ ...@@ -93,8 +93,8 @@
93 </label> 93 </label>
94 <div class="ccitem" v-for="(c, index) in choseRooms" :key="index"> 94 <div class="ccitem" v-for="(c, index) in choseRooms" :key="index">
95 {{ c }} 95 {{ c }}
96 <text v-if="language==0">{{ form.roomNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.roomPrice }}</text> 96 <span v-if="language==0">{{ form.roomNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.roomPrice }}</span>
97 <text v-else>{{ form.roomNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.roomPriceEn }}</text> 97 <span v-else>{{ form.roomNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.roomPriceEn }}</span>
98 </div> 98 </div>
99 99
100 <label v-if="form.isAddbed=='1'">{{ language == 0 ? '加床费' : 'Extra bed fee' }} 100 <label v-if="form.isAddbed=='1'">{{ language == 0 ? '加床费' : 'Extra bed fee' }}
...@@ -108,11 +108,11 @@ ...@@ -108,11 +108,11 @@
108 108
109 <div v-if="form.isAddbed=='1'" class="ccitem" v-for="(c, index) in choseRooms" :key="index"> 109 <div v-if="form.isAddbed=='1'" class="ccitem" v-for="(c, index) in choseRooms" :key="index">
110 {{ c }} 110 {{ c }}
111 <text v-if="language==0">{{ form.addNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.bedPrice }}</text> 111 <span v-if="language==0">{{ form.addNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.bedPrice }}</span>
112 <text v-else>{{ form.addNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.bedPriceEn }}</text> 112 <span v-else>{{ form.addNum }}*{{ language == 0 ? '¥' : '€' }}{{ room.bedPriceEn }}</span>
113 </div> 113 </div>
114 114
115 <label class="bigMoney">{{ language == 0 ? '共计' : 'Total' }}<span 115 <label>{{ language == 0 ? '共计' : 'Total' }}<span
116 class="fr bigMoney">{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label> 116 class="fr bigMoney">{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label>
117 117
118 </div> 118 </div>
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
124 <el-row justify="space-between" align="middle"> 124 <el-row justify="space-between" align="middle">
125 <el-col :span="12"> 125 <el-col :span="12">
126 <label>{{ language == 0 ? '共计金额' : 'Total' }} 126 <label>{{ language == 0 ? '共计金额' : 'Total' }}
127 {{ language == 0 ? '¥' : '€' }}<span class="bigMoney">{{ money }}</span> 127 <span class=" text-warning"> {{ language == 0 ? '¥' : '€' }}<span class="bigMoney">{{ money }}</span></span>
128 </label> 128 </label>
129 </el-col> 129 </el-col>
130 <el-col :span="12" class="text-right"> 130 <el-col :span="12" class="text-right">
...@@ -392,7 +392,8 @@ function submit() { ...@@ -392,7 +392,8 @@ function submit() {
392 name: 'bookingPay', 392 name: 'bookingPay',
393 query: { 393 query: {
394 orderId:res.data.orderId, 394 orderId:res.data.orderId,
395 money:res.data.total 395 money:res.data.total,
396 type:'hotel'
396 } 397 }
397 }) 398 })
398 } 399 }
......
...@@ -7,12 +7,13 @@ ...@@ -7,12 +7,13 @@
7 </div> 7 </div>
8 <div v-if="isLogin"> 8 <div v-if="isLogin">
9 <div class="pd20"> 9 <div class="pd20">
10 <div class="leftboderTT">{{ language == 0 ? '酒店信息' : 'Hotel Infomation' }}</div> 10 <div v-if="type == 'hotel'">
11 <div class="leftboderTT">{{ language == 0 ? '酒店信息' : 'Hotel Information' }}</div>
11 <div class="border-info mt20"> 12 <div class="border-info mt20">
12 <h3>{{ form.hotelName }}</h3> 13 <h3>{{ form.hotelName }}</h3>
13 <el-row> 14 <el-row>
14 <el-col> 15 <el-col>
15 地址{{ form.provinceName }} {{ form.cityName }} {{ form.areaName }} {{ form.address }} 16 {{ language == 0 ?'地址':'Address' }}{{ form.provinceName }} {{ form.cityName }} {{ form.areaName }} {{ form.address }}
16 </el-col> 17 </el-col>
17 <el-col> 18 <el-col>
18 入住信息:{{ form.messageObj?.roomStayDate }} 19 入住信息:{{ form.messageObj?.roomStayDate }}
...@@ -22,31 +23,71 @@ ...@@ -22,31 +23,71 @@
22 </el-col> 23 </el-col>
23 </el-row> 24 </el-row>
24 </div> 25 </div>
26 </div>
27
28 <div v-if="type == 'car'">
29 <div class="leftboderTT">{{ language == 0 ? '车辆信息' : 'Car Information' }}</div>
25 30
26 <div class="leftboderTT">{{ language == 0 ? '预订信息' : 'Hotel Infomation' }}</div> 31 </div>
32 <div v-if="type == 'food'">
33 <div class="leftboderTT">{{ language == 0 ? '饭店信息' : 'Restaurant Information' }}</div>
27 <div class="border-info mt20"> 34 <div class="border-info mt20">
28 <el-row> 35 <h3>{{ form.name }}</h3>
36 <p>{{ language == 0 ?'地址':'Address' }}{{form.address}}</p>
37 </div>
38 </div>
39
40
41 <div class="leftboderTT">{{ language == 0 ? '预订信息' : 'Booking information' }}</div>
42
43 <div class="border-info mt20">
44 <el-row v-if="type == 'hotel'">
29 <el-col :lg="8" :md="12" :sm="12" :xs="24"> 45 <el-col :lg="8" :md="12" :sm="12" :xs="24">
30 <div>入住人:{{ form.rzUsers }}</div> 46 <div>入住人:{{ form.rzUsers }}</div>
31 </el-col> 47 </el-col>
32 <el-col :lg="8" :md="12" :sm="12" :xs="24">联系方式:{{ form.phone }}</el-col> 48 <el-col :lg="8" :md="12" :sm="12" :xs="24">联系方式:{{ form.phone }}</el-col>
33 <el-col :lg="8" :md="12" :sm="12" :xs="24"></el-col> 49 <el-col :lg="8" :md="12" :sm="12" :xs="24"></el-col>
34 </el-row> 50 </el-row>
35 51 <el-row v-if="type == 'car'">
52 <el-col :lg="12" :md="12" :sm="12" :xs="24">
53 接站信息
54 </el-col>
55 <el-col :lg="12" :md="12" :sm="12" :xs="24">
56 送站信息
57 </el-col>
58 </el-row>
59 <el-row v-if="type == 'food'">
60 <el-col :lg="8" :md="12" :sm="12" :xs="24">
61 <div v-for="f in form.messageObj?.foodsList">
62 <span v-if="f.category==0">{{language==0?'早餐':'Breakfast'}}</span>
63 <span v-if="f.category==1">{{language==0?'午餐':'Lunch'}}</span>
64 <span v-if="f.category==2">{{language==0?'晚餐':'Dinner'}}</span>
65 {{f.name}} * {{f.num}} {{language==0?'份':'box'}}
66 </div>
67 </el-col>
68 <el-col :lg="8" :md="12" :sm="12" :xs="24">
69 <div>{{ language==0?'送餐时间':'Delivery Time' }}{{ form.deliveryTime }}</div>
70 </el-col>
71 <el-col :lg="8" :md="12" :sm="12" :xs="24">
72 <div class="mb10">{{ language==0?'送餐地址':'Delivery Address' }}{{ form.address }}</div>
73 </el-col>
74 <el-col :lg="8" :md="12" :sm="12" :xs="24">
75 <div>{{ language==0?'联系人':'Contact Person' }}{{ form.contacts }}</div>
76 </el-col>
77 <el-col :lg="8" :md="12" :sm="12" :xs="24">{{ language==0?'联系方式':'Contact Phone' }}{{ form.phone }}</el-col>
78 </el-row>
36 </div> 79 </div>
37 80
38 <el-row justify="end"> 81 <el-row justify="end">
39 <el-col :lg="12" :xs="24"> 82 <el-col :lg="12" :xs="24">
40 <div class="text-right"> 83 <div class="text-right">
41 <div class="item"><label>{{ language == 0 ? '费用总计' : 'Total Cost' }}</label> 84 <div class="item"><label>{{ language == 0 ? '费用总计' : 'Total Cost' }}</label>
42 <span class="size26 wePrice">{{ language == 0 ? '¥' : '€' }}{{ form.total }}</span> 85 <span class="size26 wePrice text-warning">{{ language == 0 ? '¥' : '€' }}{{ form.total }}</span>
43 </div> 86 </div>
44 </div> 87 </div>
45 </el-col> 88 </el-col>
46 </el-row> 89 </el-row>
47 </div> 90 </div>
48
49
50 </div> 91 </div>
51 <div v-else class="pd20 skeletonBox"> 92 <div v-else class="pd20 skeletonBox">
52 <el-skeleton :rows="8"/> 93 <el-skeleton :rows="8"/>
...@@ -78,7 +119,7 @@ ...@@ -78,7 +119,7 @@
78 <div class="leftboderTT">{{ language == 0 ? '选择支付方式' : 'Choose payment method' }}</div> 119 <div class="leftboderTT">{{ language == 0 ? '选择支付方式' : 'Choose payment method' }}</div>
79 <div class="mt20"> 120 <div class="mt20">
80 <el-radio-group v-model="payType"> 121 <el-radio-group v-model="payType">
81 <el-radio label="2" v-if="language==0" border> 122 <el-radio value="2" v-if="language==0" border>
82 <!-- 微信--> 123 <!-- 微信-->
83 <svg t="1709002960407" class="icon" viewBox="0 0 3152 1024" version="1.1" 124 <svg t="1709002960407" class="icon" viewBox="0 0 3152 1024" version="1.1"
84 xmlns="http://www.w3.org/2000/svg" p-id="24747" width="94" height="40"> 125 xmlns="http://www.w3.org/2000/svg" p-id="24747" width="94" height="40">
...@@ -90,8 +131,8 @@ ...@@ -90,8 +131,8 @@
90 fill="#595757" p-id="24749"></path> 131 fill="#595757" p-id="24749"></path>
91 </svg> 132 </svg>
92 </el-radio> 133 </el-radio>
93 <el-radio label="3" v-if="language==1" border> 134 <el-radio value="3" v-if="language==1" border>
94 <!-- paypal--> 135 <!--paypal-->
95 <svg t="1709002828937" class="icon" viewBox="0 0 4220 1024" version="1.1" 136 <svg t="1709002828937" class="icon" viewBox="0 0 4220 1024" version="1.1"
96 xmlns="http://www.w3.org/2000/svg" p-id="22654" width="94" height="40"> 137 xmlns="http://www.w3.org/2000/svg" p-id="22654" width="94" height="40">
97 <path 138 <path
...@@ -149,10 +190,10 @@ ...@@ -149,10 +190,10 @@
149 <el-button v-if="!hideconfirmbtn" type="primary" @click="goPay" round class="btn-lineG w200px"> 190 <el-button v-if="!hideconfirmbtn" type="primary" @click="goPay" round class="btn-lineG w200px">
150 {{ language == 0 ? '确定' : 'Submit' }} 191 {{ language == 0 ? '确定' : 'Submit' }}
151 </el-button> 192 </el-button>
152 <el-button round @click="unsubscribe" v-if="form.viewStatus == '5'"> 退订</el-button> 193 <el-button round @click="unsubscribe" v-if="form.viewStatus == '5'">{{ language==0?'退订':'Unsubscribe' }}</el-button>
153 <el-button link class="underline" @click="cancel" v-if="form.viewStatus == '0'" disabled> 取消订单</el-button> 194 <el-button link class="underline" @click="cancel" v-if="form.viewStatus == '0'" disabled>
154 195 {{ language==0?'取消订单':'Cancel Order' }}
155 196 </el-button>
156 </el-col> 197 </el-col>
157 </el-row> 198 </el-row>
158 </div> 199 </div>
...@@ -167,12 +208,8 @@ ...@@ -167,12 +208,8 @@
167 </div> 208 </div>
168 </div> 209 </div>
169 </el-card> 210 </el-card>
170
171
172
173 </div> 211 </div>
174 212
175
176 <div class="box" v-if="errorBox"> 213 <div class="box" v-if="errorBox">
177 <el-result 214 <el-result
178 icon="error" 215 icon="error"
...@@ -195,7 +232,6 @@ import {getCurrentInstance, ref} from 'vue' ...@@ -195,7 +232,6 @@ import {getCurrentInstance, ref} from 'vue'
195 import {onMounted} from "@vue/runtime-core" 232 import {onMounted} from "@vue/runtime-core"
196 import {useRoute, useRouter} from "vue-router" 233 import {useRoute, useRouter} from "vue-router"
197 import * as booking from "@/apiPc/booking" 234 import * as booking from "@/apiPc/booking"
198 import * as match from "@/apiPc/match"
199 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"; 235 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
200 236
201 const {proxy} = getCurrentInstance() 237 const {proxy} = getCurrentInstance()
...@@ -212,19 +248,20 @@ import useUserStore from "@/store/modules/user"; ...@@ -212,19 +248,20 @@ import useUserStore from "@/store/modules/user";
212 import FileUpload from "@/components/FileUpload"; 248 import FileUpload from "@/components/FileUpload";
213 import {useStorage} from "@vueuse/core/index"; 249 import {useStorage} from "@vueuse/core/index";
214 import {ElMessage} from "element-plus"; 250 import {ElMessage} from "element-plus";
251 import {getCarBilldetailbyId, getFoodBilldetailbyId} from "@/apiPc/booking";
215 252
216 const isLogin = ref(false) 253 const isLogin = ref(false)
217 const language = useStorage('language', 0) 254 const language = useStorage('language', 0)
218 const totalFee = ref('') 255 const totalFee = ref('')
219 const wePayCodeUrl = ref('') 256 const wePayCodeUrl = ref('')
220 const form = ref({}) 257 const form = ref({})
258 const type = ref('')
221 const errorBox = ref(false) 259 const errorBox = ref(false)
222 const hideconfirmbtn = ref(false) 260 const hideconfirmbtn = ref(false)
223 261
224 const user = useUserStore().user 262 const user = useUserStore().user
225 console.log(route.query.orderId) 263 console.log(route.query.orderId)
226 // 1763462073870237698 264 // 1763462073870237698
227 getData()
228 if (useUserStore().user) { 265 if (useUserStore().user) {
229 isLogin.value = true 266 isLogin.value = true
230 } 267 }
...@@ -234,10 +271,48 @@ onMounted(() => { ...@@ -234,10 +271,48 @@ onMounted(() => {
234 } else { 271 } else {
235 payType.value = '3' 272 payType.value = '3'
236 } 273 }
274 if(route.query.type){
275 type.value = route.query.type
276 }
277 if(route.query.orderType){
278 switch (route.query.orderType){
279 case '0':
280 type.value = 'hotel'
281 break
282 case '1':
283 type.value = 'car'
284 break
285 case '2':
286 type.value = 'food'
287 break
288 }
289 }
290 getData()
237 }) 291 })
238 292
239 function getData() { 293 function getData() {
240 return booking.getRoomBilldetailbyId({orderId: orderId.value}).then(res => { 294 if(type.value=='car') {
295 booking.getCarBilldetailbyId({orderId: orderId.value}).then(res => {
296 totalFee.value = res.data.total
297 form.value = res.data
298 form.value.messageObj = JSON.parse(form.value.message)
299 form.value.extJsonObj = JSON.parse(form.value.extJson)
300 }).catch(err => {
301 console.log(err)
302 errorBox.value = true
303 })
304 }
305 if(type.value=='food') {
306 booking.getFoodBilldetailbyId({orderId: orderId.value}).then(res => {
307 totalFee.value = res.data.total
308 form.value = res.data
309 form.value.messageObj = JSON.parse(form.value.message)
310 form.value.extJsonObj = JSON.parse(form.value.extJson)
311 console.log(form.value)
312 })
313 }
314 if(type.value=='hotel') {
315 booking.getRoomBilldetailbyId({orderId: orderId.value}).then(res => {
241 totalFee.value = res.data.total 316 totalFee.value = res.data.total
242 form.value = res.data 317 form.value = res.data
243 form.value.messageObj = JSON.parse(form.value.message) 318 form.value.messageObj = JSON.parse(form.value.message)
...@@ -247,6 +322,8 @@ function getData() { ...@@ -247,6 +322,8 @@ function getData() {
247 console.log(err) 322 console.log(err)
248 errorBox.value = true 323 errorBox.value = true
249 }) 324 })
325 }
326
250 } 327 }
251 328
252 function goHome() { 329 function goHome() {
...@@ -255,14 +332,14 @@ function goHome() { ...@@ -255,14 +332,14 @@ function goHome() {
255 332
256 function goPay() { 333 function goPay() {
257 if (payType.value == '2') { 334 if (payType.value == '2') {
258 match.createWePay({orderId: orderId.value}).then(res => { 335 booking.createWePay({orderId: orderId.value}).then(res => {
259 wePayCodeUrl.value = res.data 336 wePayCodeUrl.value = res.data
260 hideconfirmbtn.value = true 337 hideconfirmbtn.value = true
261 startforGetData() 338 startforGetData()
262 }) 339 })
263 } 340 }
264 if (payType.value == '3') { 341 if (payType.value == '3') {
265 match.createPalPay({orderId: orderId.value}).then(res => { 342 booking.createPalPay({orderId: orderId.value}).then(res => {
266 if (res.data) { 343 if (res.data) {
267 location.href = res.data 344 location.href = res.data
268 } 345 }
......
1 <template>
2 <div>
3 <div class="box">
4 <el-card class="mb60 mt30" v-loading="loading">
5 <div class="text-center mt30">
6 <el-icon color="#32B16C" size="80">
7 <SuccessFilled/>
8 </el-icon>
9 <p class="text-success mb20">{{ language == 0 ? '支付成功' : 'successfully!' }}</p>
10
11 <el-button type="primary" class="btn-lineG mb60" @click="goBillDetail" round>
12 {{ language == 0 ? '返回订单详情' : 'Return order details' }}
13 </el-button>
14 </div>
15 </el-card>
16 </div>
17 </div>
18 </template>
19
20 <script setup>
21 import {ref} from "vue";
22 import {useRoute, useRouter} from "vue-router";
23 import {onMounted} from "@vue/runtime-core";
24 import {callbackPalPay} from "@/apiPc/match";
25 import {useStorage} from "@vueuse/core/index";
26
27 const route = useRoute()
28 const router = useRouter()
29 const language= useStorage('language',0)
30 const orderId = ref(route.query.orderId)
31 const loading = ref(false)
32
33 onMounted(() => {
34 var code = decodeURIComponent(orderId.value)
35 console.log(code)
36 loading.value = true
37 callbackPalPay(code).then(res => {
38 loading.value = false
39 })
40 })
41
42 function goBillDetail() {
43 router.push({
44 name: 'bookingPay',
45 query: {
46 orderId: route.query.orderId
47 }
48 })
49 }
50 </script>
51
52 <style scoped lang="scss">
53
54 </style>
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
12 <div v-for="b in list" class="item"> 12 <div v-for="b in list" class="item">
13 <div class="title"> 13 <div class="title">
14 <label class="blueTag" v-if="b.orderType == 0"> {{ language==0?'酒店':'HOTEL' }} </label> 14 <label class="blueTag" v-if="b.orderType == 0"> {{ language==0?'酒店':'HOTEL' }} </label>
15 <label class="blueTag" v-if="b.orderType == 1"> {{ language==0?'车辆':'TRANSPORTATION' }} </label> 15 <label class="purpleTag" v-if="b.orderType == 1"> {{ language==0?'车辆':'TRANSPORTATION' }} </label>
16 <label class="blueTag" v-if="b.orderType == 2"> {{ language==0?'餐饮':'DINING' }} </label> 16 <label class="orangeTag" v-if="b.orderType == 2"> {{ language==0?'餐饮':'DINING' }} </label>
17 {{ language==0?'订单编号:':'No.' }} {{ b.id }} 17 {{ language==0?'订单编号:':'No.' }} {{ b.id }}
18 </div> 18 </div>
19 <div class="status-po"> 19 <div class="status-po">
...@@ -31,6 +31,15 @@ ...@@ -31,6 +31,15 @@
31 <p>{{b.messageObj?.roomName}}</p> 31 <p>{{b.messageObj?.roomName}}</p>
32 <p>{{b.messageObj?.roomInfo}}</p> 32 <p>{{b.messageObj?.roomInfo}}</p>
33 33
34 </div>
35 <div class="bbody" v-if="b.orderType == 1">
36 <h3 class="name">{{b.name}}</h3>
37 <div v-for="(car,index) in b.messageObj.carsList" :key="index">
38 <div v-if="car.num>0">{{car.name}}{{car.num}}</div>
39 </div>
40 <div>{{b.handleDate}}</div>
41
42 </div>
34 <el-row justify="space-between"> 43 <el-row justify="space-between">
35 <el-col :lg="8"> 44 <el-col :lg="8">
36 <span class="bigMoney"> {{ language==0?'¥':'€' }} {{b.total}}</span> 45 <span class="bigMoney"> {{ language==0?'¥':'€' }} {{b.total}}</span>
...@@ -47,8 +56,6 @@ ...@@ -47,8 +56,6 @@
47 </el-col> 56 </el-col>
48 </el-row> 57 </el-row>
49 </div> 58 </div>
50 <!-- {{b}}-->
51 </div>
52 59
53 </div> 60 </div>
54 <div class="pd20"></div> 61 <div class="pd20"></div>
...@@ -79,7 +86,8 @@ function goDetail(b) { ...@@ -79,7 +86,8 @@ function goDetail(b) {
79 router.push({ 86 router.push({
80 name: 'bookingPay', 87 name: 'bookingPay',
81 query: { 88 query: {
82 orderId: b.id 89 orderId: b.id,
90 orderType: b.orderType
83 } 91 }
84 }) 92 })
85 } 93 }
......
...@@ -68,8 +68,8 @@ const props = defineProps({ ...@@ -68,8 +68,8 @@ const props = defineProps({
68 }) 68 })
69 const language= useStorage('language',0) 69 const language= useStorage('language',0)
70 function goBooking(n) { 70 function goBooking(n) {
71 ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!') 71 // ElMessage.warning(language.value==0?'建设中,敬请期待':'Building!')
72 return 72 // return
73 switch (n) { 73 switch (n) {
74 case 0: 74 case 0:
75 // 票务 75 // 票务
...@@ -85,7 +85,7 @@ function goBooking(n) { ...@@ -85,7 +85,7 @@ function goBooking(n) {
85 break; 85 break;
86 case 3: 86 case 3:
87 //餐饮 87 //餐饮
88 router.push({path: `/booking/dining/${props.matchId}`}) 88 router.push({path: `/booking/dinner/${props.matchId}`})
89 break; 89 break;
90 case 4: 90 case 4:
91 //化妆 91 //化妆
......
...@@ -114,7 +114,7 @@ function goBooking(n) { ...@@ -114,7 +114,7 @@ function goBooking(n) {
114 break; 114 break;
115 case 3: 115 case 3:
116 //餐饮 116 //餐饮
117 router.push({path: `/booking/dining/${props.matchId}`}) 117 router.push({path: `/booking/dinner/${props.matchId}`})
118 break; 118 break;
119 case 4: 119 case 4:
120 //化妆 120 //化妆
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!