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;
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4 <el-card class="mt30"> 4 <el-card :body-style="{ padding: '0px' }" class="mt20">
5 <div class="flex"> 5 <div slot="header">
6 <p class="esp">{{car.checkIn}}</p> 6 <div class="bg-lineg uppercase">{{
7 <img src="@/assets/booking/wf.png"/> 7 language == 0 ? '车辆预约下单' : 'TRANSPORTATION RESERVATION order'
8 <p class="esp text-right">{{car.checkOut}}</p> 8 }}
9 </div> 9 </div>
10 </el-card> 10 </div>
11 <el-card class="mt30 mb60"> 11 <el-row class="pd20" :gutter="20">
12 <div class="lineHead"> 12 <el-col :span="14">
13 <ul> 13 <div class="border-info">
14 <li>{{ language == 0 ? '车型选择' : 'Available Cars' }}</li> 14 <div class="flex aic">
15 </ul> 15 <h3 class="esp">{{ item.checkIn }}</h3>
16 </div> 16 <img class="w40px mlr20 " style="height: 40px;" src="@/assets/booking/wf.png"/>
17 17 <h3 class="esp">{{ item.checkOut }}</h3>
18 <div> 18 </div>
19 <div v-for="(r,index) in list" :key="index" class="room"> 19 <div class="flex">
20 <el-row :gutter="30" align="middle"> 20 <img class="w150px br10 as16_9" :src="fillImgUrl(car.photos?.split(',')[0])"/>
21 <el-col :span="4"> 21 <div class="ml20">
22 <div class="roomImg"> 22 <div class="roomType">{{ car.carType }}</div>
23 <img :src="fillImgUrl(r.photo?.split(',')[0])"> 23 <div class="tagbox">
24 </div> 24 <span class="tag">{{ car.carColor }}</span>
25 </el-col> 25 <span class="tag" v-show="car.checkOut==1">可送车</span>
26 <el-col :span="14"> 26 <span class="tag" v-show="car.checkIn==1">可接车</span>
27 <h3 class="name">{{ r.roomType }}</h3>
28 <el-row :gutter="10">
29 <el-col :span="8">{{ r.area }}</el-col>
30 <el-col :span="8" v-show="r.windowFlag==1"> {{ language==0?'有窗':'With windows' }}</el-col>
31 <el-col :span="8" v-show="r.windowFlag==0"> {{ language==0?'无窗':'Windowless' }}</el-col>
32 <el-col :span="8" v-show="r.bathroomFlag==1"> {{ language==0?'热水洗浴':'Shower' }}</el-col>
33 <!-- <text v-show="r.bathroomFlag==0"> </text> -->
34 <el-col :span="8" v-show="r.addBedFlag==1"> {{ language==0?'允许加床':'Extra bed' }} </el-col>
35 <el-col :span="8" v-if="r.breakfastNum&&r.breakfastNum > '0'">
36 {{ r.breakfastNum }}{{ language==0?'份早餐':' breakfasts' }}
37 </el-col>
38 <el-col :span="8" v-else>{{ language==0?'无早餐':'No breakfast' }}</el-col>
39 </el-row>
40 </el-col>
41 <el-col :span="3">
42 <div class="price">{{ language==0?'¥':'€' }}<span>{{language==0?r.roomPrice:r.roomPriceEn}}</span></div>
43 </el-col>
44 <el-col :span="3">
45 <div class="bg-lineg" v-if="language==0" @click="goOrder(r)">
46
47 <div>{{ language==0?'在线付':'Online' }}</div>
48 </div> 27 </div>
49 <el-button v-else class="btn-lineG w100" round type="primary" @click="goOrder(r)">Select</el-button> 28 <div class="room">
50 <div class="text-center text-primary mt10 fontsize14 pointer" v-if="language == 0"> 29 <span>{{ language == 0 ? '座位数' : 'Seats' }}: {{ car.carSeat }}</span>
51 剩余 {{(r.roomCount - (r.useCount||0)).toFixed()}} 30 <span> | {{
31 language == 0 ? '运营时间' : 'Servers Time'
32 }}: {{ car.operStart }} ~ {{ car.operEnd }}</span>
52 </div> 33 </div>
53 <div class="text-center text-primary mt10 fontsize14" v-else> 34 </div>
54 {{(r.roomCount - (r.useCount||0)).toFixed()}} Remaining rooms 35 </div>
55 </div> 36
56 </el-col>
57 </el-row>
58 </div> 37 </div>
59 38
60 <el-empty v-if="list.length == 0" :image="`/img/order_no.png`" :image-size="228" description=""/> 39 <div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div>
61 </div> 40 <div class="border-rr mt20 pd20">
62 </el-card> 41 <el-form :model="form" :label-width="language == 0 ?'120':'150'" :rules="rules" ref="formRef">
63 </div> 42 <el-form-item :label="language==0?'车辆数量':'cars'" required prop="num">
43 <el-input-number v-model="form.num" :min="1" @change="changecarNum"/>
44 </el-form-item>
45 <el-form-item :label="language==0?'是否接送':'use Type'" required prop="useType">
46 <el-checkbox-group v-model="form.useType" @change="changeUseType">
47 <el-checkbox value="0" v-if="car.checkIn == 1">
48 {{ language == 0 ? '接站' : 'Pick up' }}
49 </el-checkbox>
50 <el-checkbox value="1" v-if="car.checkOut == 1">{{ language == 0 ? '送站' : 'Drop off' }}
51 </el-checkbox>
52 </el-checkbox-group>
53 </el-form-item>
54
55 <div v-show="form.useType?.indexOf('0')> -1">
56 <h3 class="afterLine">接站信息</h3>
57 <el-form-item :label="language==0?'用车日期':'Date'" required>
58 <el-date-picker v-model="date1"
59 type="date"
60 :placeholder="language==0?'选择日期':'Select date'" format="YYYY-MM-DD"
61 value-format="YYYY-MM-DD"/>
62 <!-- :picker-options="pickerOptions"-->
63 </el-form-item>
64 <el-form-item :label="language==0?'用车时间':'Time'" required>
65 <el-time-picker
66 v-model="revTime1" :start="car.operStart" :end="car.operEnd"
67 placeholder="Arbitrary time" format="HH:mm" value-format="HH:mm" @change="bindTimeChange"
68 />
69 </el-form-item>
70 <el-form-item :label="language==0?'联系人':'Contacts'" required>
71 <el-input type="text" v-model="form.pickUpBo.contacts"/>
72 </el-form-item>
73 <el-form-item :label="language==0?'联系电话':'Phone'" required>
74 <el-input type="text" v-model="form.pickUpBo.phone"/>
75 </el-form-item>
76 <el-form-item label="人数" required>
77 <el-input type="text" v-model="form.pickUpBo.count"/>
78 </el-form-item>
79 <el-form-item label="航班/火车班次" required>
80 <el-input type="text" v-model="form.pickUpBo.no"/>
81 </el-form-item>
82 <el-form-item label="接机/接站地点" required>
83 <el-input type="text" v-model="form.pickUpBo.noAddress"/>
84 </el-form-item>
85 <el-form-item label="送达地点" required>
86 <el-input type="text" v-model="form.pickUpBo.deliveryAddress"/>
87 </el-form-item>
88 <el-form-item :label="language==0?'备注':'Remarks'">
89 <el-input type="textarea" rows="3" v-model="form.pickUpBo.remarks"/>
90 </el-form-item>
91 </div>
92 <div v-show="form.useType?.indexOf('1')> -1">
93 <h3 class="afterLine">送站信息</h3>
94 <el-form-item :label="language==0?'用车日期':'Date'" required>
95 <el-date-picker v-model="date2"
96 type="date"
97 :placeholder="language==0?'选择日期':'Select date'" format="YYYY-MM-DD"
98 value-format="YYYY-MM-DD"/>
99 <!-- :picker-options="pickerOptions"-->
100 </el-form-item>
101 <el-form-item :label="language==0?'用车时间':'Time'" required>
102 <el-time-picker
103 v-model="revTime2" :start="car.operStart" :end="car.operEnd"
104 placeholder="Arbitrary time" format="HH:mm" value-format="HH:mm" @change="bindTimeChange2"
105 />
106 </el-form-item>
107 <el-form-item :label="language==0?'联系人':'Contacts'" required>
108 <el-input type="text" v-model="form.dropOffBo.contacts"/>
109 </el-form-item>
110 <el-form-item :label="language==0?'联系电话':'Phone'" required>
111 <el-input type="text" v-model="form.dropOffBo.phone"/>
112 </el-form-item>
113 <el-form-item label="人数" required>
114 <el-input type="text" v-model="form.dropOffBo.count"/>
115 </el-form-item>
116 <el-form-item label="送达地点" required>
117 <el-input type="text" v-model="form.dropOffBo.deliveryAddress"/>
118 </el-form-item>
119 <el-form-item :label="language==0?'备注':'Remarks'">
120 <el-input type="textarea" rows="3" v-model="form.dropOffBo.remarks"/>
121 </el-form-item>
122 </div>
123 </el-form>
124 </div>
125 </el-col>
126 <el-col :span="10">
127 <div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div>
128 <div class="border-rr mt20 pd20 ccitemBox">
129 <label v-show="form.useType.indexOf('0')>-1"> {{ language == 0 ? '接站车辆费' : 'Room fee' }}
130 <span class="fr">{{language == 0 ? '¥' : '€'}}{{form.pickUpBo.total}}</span>
131 </label>
132 <div v-show="form.useType.indexOf('0')>-1" class="ccitem">
133 {{ car.name }}
134 <span >{{form.num}} *{{ language == 0 ? '¥' : '€' }}{{ car.inPrice }}</span>
135 </div>
136 <label v-show="form.useType.indexOf('1')>-1">{{ language == 0 ? '送站车辆费' : 'Extra bed fee' }}
137 <span class="fr">{{language == 0 ? '¥' : '€'}}{{ form.dropOffBo.total }}</span>
138 </label>
139
140 <div v-show="form.useType.indexOf('1')>-1" class="ccitem">
141 {{ car.name }}
142 <span>{{ form.num }}*{{ language == 0 ? '¥' : '€' }}{{ car.outPrice }}</span>
143 </div>
144
145 <label>{{ language == 0 ? '共计' : 'Total' }}<span
146 class="fr bigMoney">{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label>
147
148 </div>
149 </el-col>
150 </el-row>
151 </el-card>
152
153 <el-card class="mt30">
154 <el-row justify="space-between" align="middle">
155 <el-col :span="12">
156 <label>{{ language == 0 ? '共计金额' : 'Total' }}
157 <span class=" text-warning"> {{ language == 0 ? '¥' : '€' }}<span class="bigMoney">{{ money }}</span></span>
158 </label>
159 </el-col>
160 <el-col :span="12" class="text-right">
161 <el-button type="primary" class="btn-lineG" @click="submit" round :loading="payLoading">确认付款</el-button>
162 </el-col>
163 </el-row>
164 </el-card>
165 <div style="height: 60px;"></div>
166
64 </div> 167 </div>
168 </div>
65 </template> 169 </template>
66 170
67 <script setup> 171 <script setup>
68 import {useRouter} from "vue-router"; 172 import {useRouter, useRoute} from "vue-router";
69 import {ref, reactive, onMounted} from "vue"; 173 import {ref, reactive, onMounted} from "vue";
70 import {useRoute} from "vue-router";
71
72 import {useStorage} from "@vueuse/core/index"; 174 import {useStorage} from "@vueuse/core/index";
175 import {checkResidueRoom, newsSubmitOrderHotel, submitOrderCar} from "@/apiPc/booking"
176 import dayjs from 'dayjs'
177 import {ElMessage, ElMessageBox} from "element-plus";
73 import useUserStore from "@/store/modules/user"; 178 import useUserStore from "@/store/modules/user";
179 const payLoading = ref(false)
74 const user = useUserStore().user 180 const user = useUserStore().user
75 const language = useStorage('language', 0) 181 const language = useStorage('language', 0)
76 const router = useRouter() 182 const router = useRouter()
77 const route = useRoute() 183 const route = useRoute()
78 const form = ref({}) 184 const item = ref({})
79 const car = ref({}) 185 const car = ref({})
80 const query = ref({ 186 const revTime1 = ref('')
81 id: route.query.id 187 const revTime2 = ref('')
188 const date1 = ref('')
189 const date2 = ref('')
190 const form = ref({
191 num: 1,
192 pickUpBo: {
193 carsList:[],
194 total: 0
195 },
196 dropOffBo: {
197 carsList:[],
198 total: 0
199 },
200 useType: []
82 }) 201 })
83 const loading = ref(false) 202 const rzRange = ref([])
84 const list = ref([]) 203 const rzUserArr = ref([])
85 onMounted(()=>{ 204 const money = ref(0)
86 car.value = JSON.parse(decodeURIComponent(route.query.detail)) 205 const choseRooms = ref([])
87 list.value = car.value.carVoList 206 const rules = ref({})
207
208
209 onMounted(() => {
210 item.value = JSON.parse(decodeURIComponent(route.query.item))
211 car.value = JSON.parse(decodeURIComponent(route.query.car))
212 money.value = 0
213 console.log(item.value, car.value)
88 }) 214 })
89 215
216 function changeUseType(e) {
217 console.log(form.value.useType)
218 changecarNum()
219 }
220
221 function changecarNum(e) {
222 var m1 = 0
223 var m2 = 0
224 if (form.value.useType.indexOf('0') > -1) {
225 m1 = form.value.num * car.value.inPrice
226 }
227 if (form.value.useType.indexOf('1') > -1) {
228 m2 = form.value.num * car.value.outPrice
229 }
230 form.value.pickUpBo.total = m1.toFixed(2)
231 form.value.dropOffBo.total = m2.toFixed(2)
232 console.log(form.value.num, m1, m2)
233 money.value = (m1 + m2).toFixed(2)
234 }
235
236 function bindTimeChange(e) {
237 revTime1.value = e
238 console.log(e)
239 }
90 240
241 function bindTimeChange2(e) {
242 revTime2.value = e
243 }
244 function submit() {
245 if (!user) {
246 useUserStore().setReLogin()
247 return
248 }
249 if (money.value == 0) {
250 ElMessage.error(language.value == 0 ? '请选择接站/送站' : 'Please select pickup/drop off')
251 return
252 }
253 // 提交确认
254 ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', {
255 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
256 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
257 type: 'warning'
258 }).then(() => {
259 pushFrom()
260 })
261 }
262 function pushFrom() {
263 payLoading.value = true
264 var obj = {
265 avcId: car.value.id,
266 num: form.value.num,
267 price: car.value.inPrice,
268 carSeat: car.value.carSeat,
269 carColor: car.value.carColor,
270 typeName: "接站",
271 name: car.value.carType,
272 checkIn: car.value.checkIn,
273 checkOut: car.value.checkOut,
274 total: (form.value.num * car.value.inPrice).toFixed(2)
275 }
276 var obj2 = {
277 avcId: car.value.id,
278 num: form.value.num,
279 price: car.value.outPrice,
280 carSeat: car.value.carSeat,
281 carColor: car.value.carColor,
282 typeName: "送站",
283 name: car.value.carType,
284 checkIn: car.value.checkIn,
285 checkOut: car.value.checkOut,
286 total: (form.value.num * car.value.outPrice).toFixed(2)
287 }
288 if (form.value.useType.indexOf('0') > -1) {
289 form.value.pickUpBo.carsList.push(obj)
290 form.value.pickUpBo.revTime = date1.value + ' ' + revTime1.value
291 }
292 if (form.value.useType.indexOf('1') > -1) {
293 form.value.dropOffBo.carsList.push(obj2)
294 form.value.dropOffBo.revTime = date2.value + ' ' + revTime2.value
295 }
296 form.value.activeId = item.value.activityId
297 form.value.lavId = item.value.id
298 form.value.checkIn = item.value.checkIn
299 form.value.checkOut = item.value.checkOut
300 submitOrderCar(form.value).then(res=>{
301 payLoading.value = false
302 if (res.data && res.data.total != -100) {
303 router.push({
304 name: 'bookingPay',
305 query: {
306 orderId:res.data.orderId,
307 money:res.data.total,
308 type:'car'
309 }
310 })
311 } else {
312 ElMessage.warning(language.value == 0 ? '下单失败,稍后重试' : 'Order failed, please try again later')
313 }
314 })
315 }
91 </script> 316 </script>
92 317
93 <style scoped> 318 <style scoped lang="scss">
319 .bigMoney {
320 font-size: 36px !important;
321 font-family: 'DIN Alternate';
322 font-weight: bold;
323 }
324
325 .bg-lineg {
326 height: 40px;
327 line-height: 40px;
328 font-size: 18px;
329 text-align: center;
330 }
331
332 .leftboderTT {
333 font-weight: 600;
334 font-size: 16px;
335 color: #453DEA;
336 }
337
338 .border-rr {
339 border-radius: 5px;
340 border: 1px solid #DCDFE6;
341 }
342
343 .room {
344 font-weight: 400;
345 font-size: 14px;
346 color: #929AA0;
347 }
348
349 .ccitemBox {
350 overflow: auto;
351
352 label {
353 margin: 10px 0;
354 display: block;
355 font-weight: 600;
356 min-height: 30px;
357
358 span {
359 color: #FF8124;
360 font-family: DIN Alternate;
361 font-size: 24px;
362 }
363 }
364 }
365
366 .ccitem {
367 display: flex;
368 justify-content: space-between;
369 font-size: 15px;
370 color: #666;
371 margin: 5px 0 10px;
372
373 label {
374 font-size: 16px;
375 color: #000;
376 }
377
378 span {
379 font-size: 13px;
380 }
381 }
382
383 .red {
384 color: #FF8124;
385 }
386
387 .tip {
388 font-size: 14px;
389 color: #666;
390 padding: 0 10px;
391 }
392
393 .tagbox {
394 margin: 15px 0;
395
396 a {
397 color: #AFB5B9;
398 font-size: 12px;
399 }
400
401 span {
402 border-radius: 13px;
403 font-size: 12px;
404 padding: 4px 10px;
405 margin-right: 10px;
406 font-weight: 400;
407 }
408
409 span:nth-child(4n) {
410 background: rgba(50, 177, 108, 0.2);
411 color: rgba(50, 177, 108, 1);
412 }
413
414 span:nth-child(4n+1) {
415 background: rgba(243, 152, 0, 0.2);
416 color: rgba(243, 152, 0, 1);
417 }
418
419 span:nth-child(4n+2) {
420 background: rgba(0, 160, 233, 0.2);
421 color: rgba(0, 160, 233, 1);
422 }
94 423
424 span:nth-child(4n+3) {
425 background: rgba(247, 64, 166, 0.2);
426 color: rgba(247, 64, 166, 1);
427 }
428 }
95 </style> 429 </style>
......
...@@ -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,46 +7,87 @@ ...@@ -7,46 +7,87 @@
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="border-info mt20"> 11 <div class="leftboderTT">{{ language == 0 ? '酒店信息' : 'Hotel Information' }}</div>
12 <h3>{{ form.hotelName }}</h3> 12 <div class="border-info mt20">
13 <el-row> 13 <h3>{{ form.hotelName }}</h3>
14 <el-col> 14 <el-row>
15 地址:{{ form.provinceName }} {{ form.cityName }} {{ form.areaName }} {{ form.address }} 15 <el-col>
16 </el-col> 16 {{ language == 0 ?'地址':'Address' }}{{ form.provinceName }} {{ form.cityName }} {{ form.areaName }} {{ form.address }}
17 <el-col> 17 </el-col>
18 入住信息:{{ form.messageObj?.roomStayDate }} 18 <el-col>
19 </el-col> 19 入住信息:{{ form.messageObj?.roomStayDate }}
20 <el-col> 20 </el-col>
21 房间信息:{{ form.messageObj?.roomName }}{{ form.roomNum }} 21 <el-col>
22 </el-col> 22 房间信息:{{ form.messageObj?.roomName }}{{ form.roomNum }}
23 </el-row> 23 </el-col>
24 </el-row>
25 </div>
24 </div> 26 </div>
25 27
26 <div class="leftboderTT">{{ language == 0 ? '预订信息' : 'Hotel Infomation' }}</div> 28 <div v-if="type == 'car'">
29 <div class="leftboderTT">{{ language == 0 ? '车辆信息' : 'Car Information' }}</div>
30
31 </div>
32 <div v-if="type == 'food'">
33 <div class="leftboderTT">{{ language == 0 ? '饭店信息' : 'Restaurant Information' }}</div>
34 <div class="border-info mt20">
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
27 <div class="border-info mt20"> 43 <div class="border-info mt20">
28 <el-row> 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,19 +271,59 @@ onMounted(() => { ...@@ -234,19 +271,59 @@ 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') {
241 totalFee.value = res.data.total 295 booking.getCarBilldetailbyId({orderId: orderId.value}).then(res => {
242 form.value = res.data 296 totalFee.value = res.data.total
243 form.value.messageObj = JSON.parse(form.value.message) 297 form.value = res.data
244 form.value.extJsonObj = JSON.parse(form.value.extJson) 298 form.value.messageObj = JSON.parse(form.value.message)
245 matchId.value = form.value.extJsonObj?.activeId 299 form.value.extJsonObj = JSON.parse(form.value.extJson)
246 }).catch(err => { 300 }).catch(err => {
247 console.log(err) 301 console.log(err)
248 errorBox.value = true 302 errorBox.value = true
249 }) 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 => {
316 totalFee.value = res.data.total
317 form.value = res.data
318 form.value.messageObj = JSON.parse(form.value.message)
319 form.value.extJsonObj = JSON.parse(form.value.extJson)
320 matchId.value = form.value.extJsonObj?.activeId
321 }).catch(err => {
322 console.log(err)
323 errorBox.value = true
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,23 +31,30 @@ ...@@ -31,23 +31,30 @@
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 <el-row justify="space-between">
35 <el-col :lg="8">
36 <span class="bigMoney"> {{ language==0?'¥':'€' }} {{b.total}}</span>
37 </el-col>
38
39 <el-col :lg="8">
40 <div class="text-right">
41 <el-button class="mb10" plain round type="primary" @click="goDetail(b)">
42 {{ language==0?'详情':'Detail' }}</el-button>
43 <el-button v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')" @click="goDetail(b)"
44 class="mb10" plain round type="primary" >
45 {{ language==0?'支付':'Pay' }}</el-button>
46 </div>
47 </el-col>
48 </el-row>
49 </div> 34 </div>
50 <!-- {{b}}--> 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>
43 <el-row justify="space-between">
44 <el-col :lg="8">
45 <span class="bigMoney"> {{ language==0?'¥':'€' }} {{b.total}}</span>
46 </el-col>
47
48 <el-col :lg="8">
49 <div class="text-right">
50 <el-button class="mb10" plain round type="primary" @click="goDetail(b)">
51 {{ language==0?'详情':'Detail' }}</el-button>
52 <el-button v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')" @click="goDetail(b)"
53 class="mb10" plain round type="primary" >
54 {{ language==0?'支付':'Pay' }}</el-button>
55 </div>
56 </el-col>
57 </el-row>
51 </div> 58 </div>
52 59
53 </div> 60 </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!