Merge branch 'dev' of https://code.itechtop.cn/yangyang/dance-pc into dev
# Conflicts: # vite.config.js
Showing
15 changed files
with
571 additions
and
131 deletions
| ... | @@ -237,6 +237,15 @@ export function getBaseInfoByActiveId(id) { | ... | @@ -237,6 +237,15 @@ export function getBaseInfoByActiveId(id) { |
| 237 | }) | 237 | }) |
| 238 | } | 238 | } |
| 239 | 239 | ||
| 240 | export function vehicleConfigList(params) { | ||
| 241 | return request({ | ||
| 242 | url: `/ota/vehicleConfig/list`, | ||
| 243 | method: 'get', | ||
| 244 | params | ||
| 245 | }) | ||
| 246 | } | ||
| 247 | |||
| 248 | |||
| 240 | export function checkRoomPayByUserId(id) { | 249 | export function checkRoomPayByUserId(id) { |
| 241 | return request({ | 250 | return request({ |
| 242 | url: `/ota/norder/checkRoomPayByUserId`, | 251 | url: `/ota/norder/checkRoomPayByUserId`, |
| ... | @@ -648,9 +657,9 @@ export function getTicketOrderInfo(params) { | ... | @@ -648,9 +657,9 @@ export function getTicketOrderInfo(params) { |
| 648 | }) | 657 | }) |
| 649 | } | 658 | } |
| 650 | 659 | ||
| 651 | export function getGateListByLasId(params) { | 660 | export function getVehicleByCheckIn(params) { // activityId,category,checkIn |
| 652 | return request({ | 661 | return request({ |
| 653 | url: `/ota/scenicConfig/getGateListByLasId`, | 662 | url: `/ota/activityVehicle/getVehicleByCheckIn`, |
| 654 | method: 'get', | 663 | method: 'get', |
| 655 | params | 664 | params |
| 656 | }) | 665 | }) |
| ... | @@ -670,3 +679,34 @@ export function checkPurchasedCustomers(data) { | ... | @@ -670,3 +679,34 @@ export function checkPurchasedCustomers(data) { |
| 670 | data | 679 | data |
| 671 | }) | 680 | }) |
| 672 | } | 681 | } |
| 682 | |||
| 683 | // 接机 | ||
| 684 | export function getVehicleMap(params) { // activityId | ||
| 685 | return request({ | ||
| 686 | url: `/ota/activityVehicle/getVehicleMap`, | ||
| 687 | method: 'get', | ||
| 688 | params | ||
| 689 | }) | ||
| 690 | } | ||
| 691 | |||
| 692 | export function getVehicleMa1p(params) { // activityId | ||
| 693 | return request({ | ||
| 694 | url: `/ota/activityVehicle/getVehicleMap`, | ||
| 695 | method: 'get', | ||
| 696 | params | ||
| 697 | }) | ||
| 698 | } | ||
| 699 | |||
| 700 | // 旅游 | ||
| 701 | |||
| 702 | export function getGateListByLasId(params) { // scenicDate,lasId | ||
| 703 | return request({ | ||
| 704 | url: `/ota/scenicConfig/getGateListByLasId`, | ||
| 705 | method: 'get', | ||
| 706 | params | ||
| 707 | }) | ||
| 708 | } | ||
| 709 | |||
| 710 | // 旅游 | ||
| 711 | |||
| 712 | ... | ... |
| ... | @@ -404,6 +404,18 @@ export const constantRoutes = [ | ... | @@ -404,6 +404,18 @@ export const constantRoutes = [ |
| 404 | meta: { title: 'Hotel Reservation' } | 404 | meta: { title: 'Hotel Reservation' } |
| 405 | }, | 405 | }, |
| 406 | { | 406 | { |
| 407 | path: 'car/:cptId', | ||
| 408 | component: () => import('@/viewsPc/booking/car'), | ||
| 409 | name: 'car', | ||
| 410 | meta: { title: 'Vehicle Reservation' } | ||
| 411 | }, | ||
| 412 | { | ||
| 413 | path: 'carList/:cptId', | ||
| 414 | component: () => import('@/viewsPc/booking/carList'), | ||
| 415 | name: 'carList', | ||
| 416 | meta: { title: 'carList' } | ||
| 417 | }, | ||
| 418 | { | ||
| 407 | path: 'car/:cptId/:id', | 419 | path: 'car/:cptId/:id', |
| 408 | component: () => import('@/viewsPc/booking/carOrder'), | 420 | component: () => import('@/viewsPc/booking/carOrder'), |
| 409 | name: 'carOrder', | 421 | name: 'carOrder', |
| ... | @@ -416,12 +428,6 @@ export const constantRoutes = [ | ... | @@ -416,12 +428,6 @@ export const constantRoutes = [ |
| 416 | meta: { title: 'Hotel Reservation' } | 428 | meta: { title: 'Hotel Reservation' } |
| 417 | }, | 429 | }, |
| 418 | { | 430 | { |
| 419 | path: 'car/:cptId', | ||
| 420 | component: () => import('@/viewsPc/booking/car'), | ||
| 421 | name: 'car', | ||
| 422 | meta: { title: 'Vehicle Reservation' } | ||
| 423 | }, | ||
| 424 | { | ||
| 425 | path: 'dinner/:cptId', | 431 | path: 'dinner/:cptId', |
| 426 | component: () => import('@/viewsPc/booking/dinner'), | 432 | component: () => import('@/viewsPc/booking/dinner'), |
| 427 | name: 'dinner', | 433 | name: 'dinner', | ... | ... |
This diff is collapsed.
Click to expand it.
src/viewsPc/booking/carList.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="banner"> | ||
| 4 | <img v-if="language==0" src="@/assets/booking/cl_text_c.png"> | ||
| 5 | <img v-else src="@/assets/booking/cl_text_e.png"> | ||
| 6 | </div> | ||
| 7 | <div class="box"> | ||
| 8 | <div class="searchBar"> | ||
| 9 | <el-input v-model="query.name" :placeholder="language==0?'请输入关键字搜索':'Search'" class="no-border" /> | ||
| 10 | <el-button class="btn-lineG" icon="search" size="large" type="primary" @click="getVehicleByCheckIn"> | ||
| 11 | {{ language == 0 ? '搜索' : 'Search' }} | ||
| 12 | </el-button> | ||
| 13 | </div> | ||
| 14 | </div> | ||
| 15 | <div v-loading="loading" class="box"> | ||
| 16 | <div v-for="(h,index) in list" :key="index" class="routeItem"> | ||
| 17 | <el-row :gutter="20" align="middle" class="w100"> | ||
| 18 | <el-col :lg="2" :sm="6"> | ||
| 19 | <div class="index">{{ language == 0 ? '路线' : 'Route' }}{{ index + 1 }} | ||
| 20 | </div> | ||
| 21 | </el-col> | ||
| 22 | <el-col :lg="6"> | ||
| 23 | <p class="esp text-center">{{ h.checkIn }}</p> | ||
| 24 | </el-col> | ||
| 25 | <el-col :lg="4" :sm="6" class="text-center"> | ||
| 26 | <img class="mauto w40px" src="@/assets/booking/wf.png"> | ||
| 27 | </el-col> | ||
| 28 | <el-col :lg="6"> | ||
| 29 | <p class="esp text-center">{{ h.checkOut }}</p> | ||
| 30 | </el-col> | ||
| 31 | <el-col :lg="3" :sm="12"> | ||
| 32 | <div v-if="language==0" class="price"> | ||
| 33 | ¥ | ||
| 34 | <span>{{ h.upPrice }}</span> | ||
| 35 | </div> | ||
| 36 | <div v-else class="price"> | ||
| 37 | € | ||
| 38 | <span>{{ h.upPriceEn }}</span> | ||
| 39 | </div> | ||
| 40 | |||
| 41 | </el-col> | ||
| 42 | <el-col :lg="3" :sm="12"> | ||
| 43 | <el-button class="btn-lineG w100" round type="primary" @click="goOrder(h)"> | ||
| 44 | {{ language == 0 ? '我要预订' : 'Select' }} | ||
| 45 | </el-button> | ||
| 46 | </el-col> | ||
| 47 | </el-row> | ||
| 48 | </div> | ||
| 49 | |||
| 50 | <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description="" /> | ||
| 51 | <div style="height: 50px" /> | ||
| 52 | </div> | ||
| 53 | |||
| 54 | </div> | ||
| 55 | </template> | ||
| 56 | |||
| 57 | <script setup> | ||
| 58 | import { onMounted, ref } from '@vue/runtime-core' | ||
| 59 | import * as booking from '@/apiPc/booking' | ||
| 60 | import { useRouter, useRoute } from 'vue-router' | ||
| 61 | import { useStorage } from '@vueuse/core/index' | ||
| 62 | import useUserStore from '@/store/modules/user' | ||
| 63 | |||
| 64 | const user = useUserStore().user | ||
| 65 | const router = useRouter() | ||
| 66 | const route = useRoute() | ||
| 67 | const language = useStorage('language', 0) | ||
| 68 | const query = ref({}) | ||
| 69 | const activeName = ref(0) | ||
| 70 | const cptId = ref('') | ||
| 71 | const list = ref([]) | ||
| 72 | const loading = ref(false) | ||
| 73 | |||
| 74 | |||
| 75 | onMounted(() => { | ||
| 76 | query.value.activityId = route.query.activityId | ||
| 77 | query.value.checkIn = route.query.checkIn | ||
| 78 | query.value.checkOut = route.query.checkOut | ||
| 79 | query.value.category = route.query.category | ||
| 80 | // if (language.value==0) | ||
| 81 | // getList() | ||
| 82 | getVehicleByCheckIn() | ||
| 83 | }) | ||
| 84 | |||
| 85 | |||
| 86 | function getList() { | ||
| 87 | // if (language.value!=0)return | ||
| 88 | loading.value = true | ||
| 89 | booking.getActivityCarList(query.value).then(res => { | ||
| 90 | list.value = res.rows | ||
| 91 | loading.value = false | ||
| 92 | }).catch(e => { | ||
| 93 | loading.value = false | ||
| 94 | }) | ||
| 95 | } | ||
| 96 | |||
| 97 | async function getVehicleByCheckIn() { | ||
| 98 | loading.value = true | ||
| 99 | const res = await booking.getVehicleByCheckIn(query.value) | ||
| 100 | list.value = res.data || [] | ||
| 101 | loading.value = false | ||
| 102 | } | ||
| 103 | |||
| 104 | function goOrder(item, car) { | ||
| 105 | if (!user) { | ||
| 106 | useUserStore().setReLogin() | ||
| 107 | return | ||
| 108 | } | ||
| 109 | router.push({ | ||
| 110 | name: 'carOrder', | ||
| 111 | params: { | ||
| 112 | id: item.id | ||
| 113 | }, | ||
| 114 | query: { | ||
| 115 | item: encodeURIComponent(JSON.stringify(item)) | ||
| 116 | } | ||
| 117 | }) | ||
| 118 | } | ||
| 119 | </script> | ||
| 120 | |||
| 121 | <style lang="scss" scoped> | ||
| 122 | |||
| 123 | .hotel { | ||
| 124 | margin-bottom: 20px; | ||
| 125 | cursor: pointer; | ||
| 126 | |||
| 127 | .index { | ||
| 128 | display: flex; | ||
| 129 | font-weight: 500; | ||
| 130 | padding-left: 20px; | ||
| 131 | font-size: 18px; | ||
| 132 | align-items: center; | ||
| 133 | |||
| 134 | img { | ||
| 135 | margin-left: 15px; | ||
| 136 | } | ||
| 137 | } | ||
| 138 | |||
| 139 | p { | ||
| 140 | font-weight: 500; | ||
| 141 | font-size: 24px; | ||
| 142 | color: #000000; | ||
| 143 | } | ||
| 144 | |||
| 145 | &:hover .el-card { | ||
| 146 | box-shadow: 0 0 10px #aaa; | ||
| 147 | } | ||
| 148 | } | ||
| 149 | |||
| 150 | .hotel:nth-child(7n) .index { | ||
| 151 | color: #009E96; | ||
| 152 | } | ||
| 153 | |||
| 154 | .hotel:nth-child(7n+1) .index { | ||
| 155 | color: #FF8124; | ||
| 156 | } | ||
| 157 | |||
| 158 | .hotel:nth-child(7n+2) .index { | ||
| 159 | color: #E4007F; | ||
| 160 | } | ||
| 161 | |||
| 162 | .hotel:nth-child(7n+3) .index { | ||
| 163 | color: #0068B7; | ||
| 164 | } | ||
| 165 | |||
| 166 | .hotel:nth-child(7n+4) .index { | ||
| 167 | color: #32B16C; | ||
| 168 | } | ||
| 169 | |||
| 170 | .hotel:nth-child(7n+5) .index { | ||
| 171 | color: #920783; | ||
| 172 | } | ||
| 173 | |||
| 174 | .hotel:nth-child(7n+6) .index { | ||
| 175 | color: #00B7EE; | ||
| 176 | } | ||
| 177 | |||
| 178 | .banner { | ||
| 179 | height: 140px; | ||
| 180 | background-size: cover; | ||
| 181 | text-align: center; | ||
| 182 | background: url("@/assets/booking/cl_bg.png") center; | ||
| 183 | display: flex; | ||
| 184 | align-items: center; | ||
| 185 | justify-content: center; | ||
| 186 | |||
| 187 | img { | ||
| 188 | display: block; | ||
| 189 | margin: -30px auto 0; | ||
| 190 | width: auto; | ||
| 191 | } | ||
| 192 | } | ||
| 193 | |||
| 194 | .searchBar { | ||
| 195 | position: relative; | ||
| 196 | top: -30px; | ||
| 197 | background: #FFFFFF; | ||
| 198 | display: flex; | ||
| 199 | padding: 20px; | ||
| 200 | border-radius: 10px; | ||
| 201 | } | ||
| 202 | |||
| 203 | .no-border { | ||
| 204 | border: none; | ||
| 205 | background: #F5F7F9; | ||
| 206 | |||
| 207 | :deep(.el-input__wrapper) { | ||
| 208 | border: none; | ||
| 209 | box-shadow: none; | ||
| 210 | background: #F5F7F9; | ||
| 211 | } | ||
| 212 | } | ||
| 213 | |||
| 214 | .starBox { | ||
| 215 | img { | ||
| 216 | display: inline-block; | ||
| 217 | margin-right: 4px | ||
| 218 | } | ||
| 219 | } | ||
| 220 | |||
| 221 | .tagbox { | ||
| 222 | margin: 15px 0; | ||
| 223 | |||
| 224 | a { | ||
| 225 | color: #AFB5B9; | ||
| 226 | font-size: 12px; | ||
| 227 | } | ||
| 228 | |||
| 229 | span { | ||
| 230 | border-radius: 13px; | ||
| 231 | font-size: 12px; | ||
| 232 | padding: 4px 10px; | ||
| 233 | margin-right: 10px; | ||
| 234 | font-weight: 400; | ||
| 235 | } | ||
| 236 | |||
| 237 | span:nth-child(4n) { | ||
| 238 | background: rgba(50, 177, 108, 0.2); | ||
| 239 | color: rgba(50, 177, 108, 1); | ||
| 240 | } | ||
| 241 | |||
| 242 | span:nth-child(4n+1) { | ||
| 243 | background: rgba(243, 152, 0, 0.2); | ||
| 244 | color: rgba(243, 152, 0, 1); | ||
| 245 | } | ||
| 246 | |||
| 247 | span:nth-child(4n+2) { | ||
| 248 | background: rgba(0, 160, 233, 0.2); | ||
| 249 | color: rgba(0, 160, 233, 1); | ||
| 250 | } | ||
| 251 | |||
| 252 | span:nth-child(4n+3) { | ||
| 253 | background: rgba(247, 64, 166, 0.2); | ||
| 254 | color: rgba(247, 64, 166, 1); | ||
| 255 | } | ||
| 256 | } | ||
| 257 | |||
| 258 | .name.flex { | ||
| 259 | align-items: center; | ||
| 260 | } | ||
| 261 | |||
| 262 | .name .tagbox { | ||
| 263 | margin: 0 0 0 15px; | ||
| 264 | } | ||
| 265 | |||
| 266 | .room { | ||
| 267 | background: #FAFBFD; | ||
| 268 | margin: 20px 0 0; | ||
| 269 | padding: 20px; | ||
| 270 | border: 1px solid #E5E5E5; | ||
| 271 | |||
| 272 | .name { | ||
| 273 | font-size: 20px; | ||
| 274 | margin: 0 0 10px; | ||
| 275 | } | ||
| 276 | |||
| 277 | .roomImg { | ||
| 278 | aspect-ratio: 16/9; | ||
| 279 | border-radius: 10px; | ||
| 280 | overflow: hidden; | ||
| 281 | |||
| 282 | img { | ||
| 283 | width: 100%; | ||
| 284 | object-fit: cover; | ||
| 285 | object-position: center; | ||
| 286 | height: 100%; | ||
| 287 | } | ||
| 288 | } | ||
| 289 | |||
| 290 | |||
| 291 | .bg-lineg { | ||
| 292 | margin: auto; | ||
| 293 | border-radius: 10px; | ||
| 294 | text-align: center; | ||
| 295 | padding: 7px 2px 2px; | ||
| 296 | font-size: 24px; | ||
| 297 | width: 66px; | ||
| 298 | cursor: pointer; | ||
| 299 | |||
| 300 | div { | ||
| 301 | background: #fff; | ||
| 302 | font-size: 13px; | ||
| 303 | border-radius: 20px; | ||
| 304 | padding: 0 10px; | ||
| 305 | color: #453DEA; | ||
| 306 | font-weight: 500; | ||
| 307 | } | ||
| 308 | } | ||
| 309 | } | ||
| 310 | |||
| 311 | .routeItem { | ||
| 312 | background: #fff; | ||
| 313 | border-radius: 10px; | ||
| 314 | margin: 0 0 20px; | ||
| 315 | padding: 10px 20px; | ||
| 316 | box-shadow: 0 0 6px #eee; | ||
| 317 | |||
| 318 | .price { | ||
| 319 | color: #FF8124; | ||
| 320 | font-size: 24px; | ||
| 321 | |||
| 322 | span { | ||
| 323 | font-size: 36px; | ||
| 324 | font-family: "DIN Alternate" | ||
| 325 | } | ||
| 326 | } | ||
| 327 | } | ||
| 328 | </style> |
This diff is collapsed.
Click to expand it.
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog v-model="show" width="500" :title="languageFormat(language, '出行人信息', 'Travelers')" center | 2 | <el-dialog |
| 3 | append-to-body> | 3 | v-model="show" :title="languageFormat(language, '出行人信息', 'Travelers')" append-to-body center |
| 4 | <el-button type="primary" plain @click="addPeopl">{{ languageFormat(language, "新增", "Add") }}</el-button> | 4 | width="500" |
| 5 | > | ||
| 6 | <el-button plain type="primary" @click="addPeopl">{{ languageFormat(language, "新增", "Add") }}</el-button> | ||
| 5 | <el-radio-group v-model="personId"> | 7 | <el-radio-group v-model="personId"> |
| 6 | <div v-for="(it, index) in personList" :key="index" class="e_item"> | 8 | <div v-for="(it, index) in personList" :key="index" class="e_item"> |
| 7 | <el-radio border :value="it.id" :disabled="hasPersonIds?.indexOf(it.id)!=-1"> | 9 | <el-radio :disabled="hasPersonIds?.indexOf(it.id)!=-1" :value="it.id" border> |
| 8 | 10 | ||
| 9 | <div class="name">{{ it.name }}</div> | 11 | <div class="name">{{ it.name }}</div> |
| 10 | <div class="code"> | 12 | <div class="code"> |
| ... | @@ -27,23 +29,23 @@ | ... | @@ -27,23 +29,23 @@ |
| 27 | </el-dialog> | 29 | </el-dialog> |
| 28 | 30 | ||
| 29 | 31 | ||
| 30 | <el-dialog v-model="showAdd" :title="language ==0?'新增出行人':'Add traveler'" center append-to-body> | 32 | <el-dialog v-model="showAdd" :title="language ==0?'新增出行人':'Add traveler'" append-to-body center> |
| 31 | <el-form | 33 | <el-form |
| 32 | ref="formRef" :model="form" label-width="100px" size="large" | 34 | ref="formRef" :model="form" label-width="100px" size="large" |
| 33 | style="margin: 80px" | 35 | style="margin: 80px" |
| 34 | > | 36 | > |
| 35 | <el-form-item :label="language==0?'姓名':'name'" prop="name" required :show-message="false"> | 37 | <el-form-item :label="language==0?'姓名':'name'" :show-message="false" prop="name" required> |
| 36 | <el-input v-model="form.name" :placeholder="language==0?'请输入':'Please input'"/> | 38 | <el-input v-model="form.name" :placeholder="language==0?'请输入':'Please input'" /> |
| 37 | </el-form-item> | 39 | </el-form-item> |
| 38 | <el-form-item :label="language==0?'证件类型':'ID Type'" prop="idcType" required :show-message="false"> | 40 | <el-form-item :label="language==0?'证件类型':'ID Type'" :show-message="false" prop="idcType" required> |
| 39 | <el-select v-model="form.idcType" :placeholder="language==0?'请选择':'Please choose'"> | 41 | <el-select v-model="form.idcType" :placeholder="language==0?'请选择':'Please choose'"> |
| 40 | <el-option :label="language==0?'身份证':'Identity card'" value="0"/> | 42 | <el-option :label="language==0?'身份证':'Identity card'" value="0" /> |
| 41 | <el-option :label="language==0?'护照':'Passport'" value="1"/> | 43 | <el-option :label="language==0?'护照':'Passport'" value="1" /> |
| 42 | <el-option :label="language==0?'其他':'Other'" value="2"/> | 44 | <el-option :label="language==0?'其他':'Other'" value="2" /> |
| 43 | </el-select> | 45 | </el-select> |
| 44 | </el-form-item> | 46 | </el-form-item> |
| 45 | <el-form-item :label="language==0?'证件号':'ID number'" prop="idCard" required :show-message="false"> | 47 | <el-form-item :label="language==0?'证件号':'ID number'" :show-message="false" prop="idCard" required> |
| 46 | <el-input v-model="form.idCard" :placeholder="language==0?'请输入证件号':'Please enter the ID after ah'"/> | 48 | <el-input v-model="form.idCard" :placeholder="language==0?'请输入证件号':'Please enter the ID after ah'" /> |
| 47 | </el-form-item> | 49 | </el-form-item> |
| 48 | </el-form> | 50 | </el-form> |
| 49 | 51 | ||
| ... | @@ -58,15 +60,15 @@ | ... | @@ -58,15 +60,15 @@ |
| 58 | </template> | 60 | </template> |
| 59 | 61 | ||
| 60 | <script setup> | 62 | <script setup> |
| 61 | import {aadSceneCustomer, checkSceneCustomer, getMyFriends} from '/@/apiPc/booking' | 63 | import { aadSceneCustomer, checkSceneCustomer, getMyFriends } from '/@/apiPc/booking' |
| 62 | import {languageFormat} from '/@/viewsPc/seat/utils/language' | 64 | import { languageFormat } from '/@/viewsPc/seat/utils/language' |
| 63 | import {onMounted, ref} from 'vue' | 65 | import { onMounted, ref } from 'vue' |
| 64 | import {useStorage} from '@vueuse/core/index' | 66 | import { useStorage } from '@vueuse/core/index' |
| 65 | import _ from 'lodash' | 67 | import _ from 'lodash' |
| 66 | import {getCurrentInstance} from '@vue/runtime-core' | 68 | import { getCurrentInstance } from '@vue/runtime-core' |
| 67 | 69 | ||
| 68 | const emit = defineEmits(['addPerson']) | 70 | const emit = defineEmits(['addPerson']) |
| 69 | const {proxy} = getCurrentInstance() | 71 | const { proxy } = getCurrentInstance() |
| 70 | 72 | ||
| 71 | const show = ref(false) | 73 | const show = ref(false) |
| 72 | const showAdd = ref(false) | 74 | const showAdd = ref(false) |
| ... | @@ -96,17 +98,6 @@ const addPeopl = () => { | ... | @@ -96,17 +98,6 @@ const addPeopl = () => { |
| 96 | const addPerson = () => { | 98 | const addPerson = () => { |
| 97 | const person = _.find(personList.value, (it) => it.id == personId.value) | 99 | const person = _.find(personList.value, (it) => it.id == personId.value) |
| 98 | 100 | ||
| 99 | checkSceneCustomer({ | ||
| 100 | customerId: person.id, | ||
| 101 | gateType: currParams.gateType | ||
| 102 | }).then((res) => { | ||
| 103 | if (res.data == 201) { | ||
| 104 | proxy.$modal.msgError(language.value == 0 ? '护照只能购买成人票' : 'Passport can only buy adult tickets') | ||
| 105 | } else if (res.data == 202) { | ||
| 106 | proxy.$modal.msgError(language.value == 0 ? '此身份证不能购买老人票' : 'This ID cannot buy senior tickets') | ||
| 107 | } else if (res.data == 203) { | ||
| 108 | proxy.$modal.msgError(language.value == 0 ? '此身份证不能购买儿童票' : 'This ID cannot buy child tickets') | ||
| 109 | } else { | ||
| 110 | show.value = false | 101 | show.value = false |
| 111 | emit('addPerson', Object.assign(currParams, { | 102 | emit('addPerson', Object.assign(currParams, { |
| 112 | customerId: person.id, | 103 | customerId: person.id, |
| ... | @@ -114,8 +105,26 @@ const addPerson = () => { | ... | @@ -114,8 +105,26 @@ const addPerson = () => { |
| 114 | idcType: person.idcType, | 105 | idcType: person.idcType, |
| 115 | idCard: person.idCard | 106 | idCard: person.idCard |
| 116 | })) | 107 | })) |
| 117 | } | 108 | // checkSceneCustomer({ |
| 118 | }) | 109 | // customerId: person.id, |
| 110 | // gateType: currParams.gateType | ||
| 111 | // }).then((res) => { | ||
| 112 | // if (res.data == 201) { | ||
| 113 | // proxy.$modal.msgError(language.value == 0 ? '护照只能购买成人票' : 'Passport can only buy adult tickets') | ||
| 114 | // } else if (res.data == 202) { | ||
| 115 | // proxy.$modal.msgError(language.value == 0 ? '此身份证不能购买老人票' : 'This ID cannot buy senior tickets') | ||
| 116 | // } else if (res.data == 203) { | ||
| 117 | // proxy.$modal.msgError(language.value == 0 ? '此身份证不能购买儿童票' : 'This ID cannot buy child tickets') | ||
| 118 | // } else { | ||
| 119 | // show.value = false | ||
| 120 | // emit('addPerson', Object.assign(currParams, { | ||
| 121 | // customerId: person.id, | ||
| 122 | // name: person.name, | ||
| 123 | // idcType: person.idcType, | ||
| 124 | // idCard: person.idCard | ||
| 125 | // })) | ||
| 126 | // } | ||
| 127 | // }) | ||
| 119 | } | 128 | } |
| 120 | 129 | ||
| 121 | const submit = () => { | 130 | const submit = () => { |
| ... | @@ -151,7 +160,7 @@ defineExpose({ | ... | @@ -151,7 +160,7 @@ defineExpose({ |
| 151 | 160 | ||
| 152 | </script> | 161 | </script> |
| 153 | 162 | ||
| 154 | <style scoped lang="scss"> | 163 | <style lang="scss" scoped> |
| 155 | .el-radio-group { | 164 | .el-radio-group { |
| 156 | display: block; | 165 | display: block; |
| 157 | } | 166 | } | ... | ... |
This diff is collapsed.
Click to expand it.
| 1 | <template> | 1 | <template> |
| 2 | <el-card class="container"> | 2 | <el-card class="container"> |
| 3 | <div v-loading="loading"> | 3 | <div v-loading="loading"> |
| 4 | <div class="title"> | 4 | <div class="title father"> |
| 5 | {{ languageFormat(language, "订单确认", "Order confirmation") }} | 5 | {{ languageFormat(language, "订单确认", "Order confirmation") }} |
| 6 | <span class="son" @click="handelUp">{{ language == 0 ? '上一步' : 'Go back' }}</span> | ||
| 6 | </div> | 7 | </div> |
| 7 | <div class="content pd20"> | 8 | <div class="content pd20"> |
| 8 | <el-row gutter="20"> | 9 | <el-row gutter="20"> |
| ... | @@ -21,12 +22,15 @@ | ... | @@ -21,12 +22,15 @@ |
| 21 | | {{ TickForm2.ticketName }} | 22 | | {{ TickForm2.ticketName }} |
| 22 | </div> | 23 | </div> |
| 23 | 24 | ||
| 24 | <div v-if="TickForm2.ticketType=='0'" class="address">{{ language==0?'剩余数量':'Remaining Quantity' }}: {{ leftCount }}</div> | 25 | <div v-if="TickForm2.ticketType=='0'" class="address">{{ |
| 26 | language == 0 ? '剩余数量' : 'Remaining Quantity' | ||
| 27 | }}: {{ leftCount }} | ||
| 28 | </div> | ||
| 25 | </div> | 29 | </div> |
| 26 | 30 | ||
| 27 | <div class="ticket_info mb20"> | 31 | <div class="ticket_info mb20"> |
| 28 | <div class="tit_box"> | 32 | <div class="tit_box"> |
| 29 | <div class="line"/> | 33 | <div class="line" /> |
| 30 | <div class="txt"> | 34 | <div class="txt"> |
| 31 | {{ languageFormat(language, "订票信息", "Ticket Info") }} | 35 | {{ languageFormat(language, "订票信息", "Ticket Info") }} |
| 32 | </div> | 36 | </div> |
| ... | @@ -37,30 +41,36 @@ | ... | @@ -37,30 +41,36 @@ |
| 37 | <div v-if="TickForm2.ticketType == '1'"> | 41 | <div v-if="TickForm2.ticketType == '1'"> |
| 38 | <el-form-item :label="language == 0 ? '桌号' : 'Table'"> | 42 | <el-form-item :label="language == 0 ? '桌号' : 'Table'"> |
| 39 | 43 | ||
| 40 | <el-popover placement="right" :width="400" trigger="hover"> | 44 | <!-- <el-popover :width="400" placement="right" trigger="hover">--> |
| 41 | <template #reference> | 45 | <!-- <template #reference>--> |
| 42 | <div class="text-primary underline pointer" @click="showImg"> | 46 | <!-- <div class="text-primary underline pointer" @click="showImg">--> |
| 43 | {{ language == 0 ? '查看区域布局' : ' View Area Layout' }} | 47 | <!-- {{ language == 0 ? '查看区域布局' : ' View Area Layout' }}--> |
| 44 | </div> | 48 | <!-- </div>--> |
| 45 | </template> | 49 | <!-- </template>--> |
| 46 | <el-image :src="fillImgUrl(tickImg)" style="width: 100%;" | 50 | <!-- <el-image--> |
| 47 | :preview-src-list="[fillImgUrl(tickImg)]"/> | 51 | <!-- :preview-src-list="[fillImgUrl(tickImg)]" :src="fillImgUrl(tickImg)"--> |
| 48 | </el-popover> | 52 | <!-- style="width: 100%;"--> |
| 49 | 53 | <!-- />--> | |
| 54 | <!-- </el-popover>--> | ||
| 55 | <!-- --> | ||
| 50 | 56 | ||
| 51 | <el-radio-group v-model="currDesk"> | 57 | <el-radio-group v-model="currDesk"> |
| 52 | <el-radio-button v-for="(it, index) in deskList" :key="index" :label="it.deskNo" :value="it" | 58 | <el-radio-button |
| 53 | :disabled="it.status!=0"/> | 59 | v-for="(it, index) in deskList" :key="index" :disabled="it.status!=0" :label="it.deskNo" |
| 60 | :value="it" | ||
| 61 | /> | ||
| 54 | </el-radio-group> | 62 | </el-radio-group> |
| 55 | </el-form-item> | 63 | </el-form-item> |
| 56 | <el-form-item :label="language == 0 ? '座位号' : 'Seat'"> | 64 | <el-form-item :label="language == 0 ? '座位号' : 'Seat'"> |
| 57 | <el-checkbox-group v-model="currSeat"> | 65 | <el-checkbox-group v-model="currSeat"> |
| 58 | <el-checkbox-button v-for="(it, index) in currDesk?.seatList" :key="index" :label="it.seatNo" | 66 | <el-checkbox-button |
| 59 | :value="it" :disabled="it.status!=0"/> | 67 | v-for="(it, index) in currDesk?.seatList" :key="index" :disabled="it.status!=0" |
| 68 | :label="it.seatNo" :value="it" | ||
| 69 | /> | ||
| 60 | </el-checkbox-group> | 70 | </el-checkbox-group> |
| 61 | </el-form-item> | 71 | </el-form-item> |
| 62 | <el-form-item :label="language == 0 ?'已选座位号':'Selected Seat'"> | 72 | <el-form-item :label="language == 0 ?'已选座位号':'Selected Seat'"> |
| 63 | <el-tag class="mr10" v-for="(s,index) in currSeat" :key="s.id" closable @close="delSeat(s,index)"> | 73 | <el-tag v-for="(s,index) in currSeat" :key="s.id" class="mr10" closable @close="delSeat(s,index)"> |
| 64 | {{ s.deskNo }} - {{ s.seatNo }} | 74 | {{ s.deskNo }} - {{ s.seatNo }} |
| 65 | </el-tag> | 75 | </el-tag> |
| 66 | </el-form-item> | 76 | </el-form-item> |
| ... | @@ -96,7 +106,7 @@ | ... | @@ -96,7 +106,7 @@ |
| 96 | </div> | 106 | </div> |
| 97 | <div class="idcard">{{ it.idCard }}</div> | 107 | <div class="idcard">{{ it.idCard }}</div> |
| 98 | </div> | 108 | </div> |
| 99 | <el-checkbox :value="it.id" :disabled="!!it.disabled"/> | 109 | <el-checkbox :disabled="!!it.disabled" :value="it.id" /> |
| 100 | </div> | 110 | </div> |
| 101 | </el-checkbox-group> | 111 | </el-checkbox-group> |
| 102 | </div> | 112 | </div> |
| ... | @@ -112,7 +122,7 @@ | ... | @@ -112,7 +122,7 @@ |
| 112 | 122 | ||
| 113 | <el-col :lg="8" class="right"> | 123 | <el-col :lg="8" class="right"> |
| 114 | <div class="tit_box"> | 124 | <div class="tit_box"> |
| 115 | <div class="line"/> | 125 | <div class="line" /> |
| 116 | <div class="txt"> | 126 | <div class="txt"> |
| 117 | {{ languageFormat(language, "订单明细", "Order summary") }} | 127 | {{ languageFormat(language, "订单明细", "Order summary") }} |
| 118 | </div> | 128 | </div> |
| ... | @@ -123,7 +133,7 @@ | ... | @@ -123,7 +133,7 @@ |
| 123 | <div class="time"> | 133 | <div class="time"> |
| 124 | {{ language == 0 ? '票价' : 'Cost Ticket' }} | 134 | {{ language == 0 ? '票价' : 'Cost Ticket' }} |
| 125 | </div> | 135 | </div> |
| 126 | <p/> | 136 | <p /> |
| 127 | <div class="ticket"> | 137 | <div class="ticket"> |
| 128 | {{ language == 0 ? TickForm2.price : TickForm2.priceEn }} | 138 | {{ language == 0 ? TickForm2.price : TickForm2.priceEn }} |
| 129 | <span> {{ language == 0 ? '元' : 'Euro' }}</span> | 139 | <span> {{ language == 0 ? '元' : 'Euro' }}</span> |
| ... | @@ -143,6 +153,15 @@ | ... | @@ -143,6 +153,15 @@ |
| 143 | </div> | 153 | </div> |
| 144 | </div> | 154 | </div> |
| 145 | </div> | 155 | </div> |
| 156 | <!-- 场馆布局图--> | ||
| 157 | |||
| 158 | <div style="margin-top: 95px"> | ||
| 159 | <el-image | ||
| 160 | :preview-src-list="[fillImgUrl(tickImg)]" | ||
| 161 | :src="fillImgUrl(tickImg)" | ||
| 162 | style="width: 100%;" | ||
| 163 | /> | ||
| 164 | </div> | ||
| 146 | </el-col> | 165 | </el-col> |
| 147 | </el-row> | 166 | </el-row> |
| 148 | </div> | 167 | </div> |
| ... | @@ -166,7 +185,7 @@ | ... | @@ -166,7 +185,7 @@ |
| 166 | </template> | 185 | </template> |
| 167 | 186 | ||
| 168 | <script setup> | 187 | <script setup> |
| 169 | import {ref, computed, onMounted} from 'vue' | 188 | import { ref, computed, onMounted } from 'vue' |
| 170 | import { | 189 | import { |
| 171 | customerListApi, | 190 | customerListApi, |
| 172 | submitOrderTicket, | 191 | submitOrderTicket, |
| ... | @@ -176,12 +195,12 @@ import { | ... | @@ -176,12 +195,12 @@ import { |
| 176 | checkPurchasedCustomers, | 195 | checkPurchasedCustomers, |
| 177 | getDeskInfo | 196 | getDeskInfo |
| 178 | } from '@/apiPc/booking' | 197 | } from '@/apiPc/booking' |
| 179 | import {ElMessage, ElMessageBox} from 'element-plus' | 198 | import { ElMessage, ElMessageBox } from 'element-plus' |
| 180 | import {languageFormat} from '@/viewsPc/seat/utils/language.js' | 199 | import { languageFormat } from '@/viewsPc/seat/utils/language.js' |
| 181 | import useUserStore from '/@/store/modules/user' | 200 | import useUserStore from '/@/store/modules/user' |
| 182 | import {useStorage} from '@vueuse/core/index' | 201 | import { useStorage } from '@vueuse/core/index' |
| 183 | import _ from 'lodash' | 202 | import _ from 'lodash' |
| 184 | import {useRoute, useRouter} from 'vue-router' | 203 | import { useRoute, useRouter } from 'vue-router' |
| 185 | 204 | ||
| 186 | const useStore = useUserStore() | 205 | const useStore = useUserStore() |
| 187 | 206 | ||
| ... | @@ -243,12 +262,10 @@ onMounted(() => { | ... | @@ -243,12 +262,10 @@ onMounted(() => { |
| 243 | getDeskInfo({ | 262 | getDeskInfo({ |
| 244 | atstId: route.params.latstId | 263 | atstId: route.params.latstId |
| 245 | }).then(res => { | 264 | }).then(res => { |
| 246 | deskList.value = res.data | 265 | deskList.value = res.data?.sort((a, b) => a.deskNo - b.deskNo) |
| 247 | currDesk.value = res.data[0] | 266 | currDesk.value = res.data[0] |
| 248 | }) | 267 | }) |
| 249 | } | 268 | } else { // 普通票 |
| 250 | // 普通票 | ||
| 251 | else { | ||
| 252 | getListByAtstId({ | 269 | getListByAtstId({ |
| 253 | atstId: route.params.latstId | 270 | atstId: route.params.latstId |
| 254 | }).then(res => { | 271 | }).then(res => { |
| ... | @@ -321,7 +338,7 @@ async function paymentHandle() { | ... | @@ -321,7 +338,7 @@ async function paymentHandle() { |
| 321 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', | 338 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', |
| 322 | cancelButtonText: language.value == 0 ? '取消' : 'Cancel', | 339 | cancelButtonText: language.value == 0 ? '取消' : 'Cancel', |
| 323 | type: 'warning' | 340 | type: 'warning' |
| 324 | }).then(async () => { | 341 | }).then(async() => { |
| 325 | try { | 342 | try { |
| 326 | const orderCustomerList = [] | 343 | const orderCustomerList = [] |
| 327 | _.each(orderForm.value.customerIds, (id, index) => { | 344 | _.each(orderForm.value.customerIds, (id, index) => { |
| ... | @@ -390,7 +407,7 @@ async function paymentHandle() { | ... | @@ -390,7 +407,7 @@ async function paymentHandle() { |
| 390 | } | 407 | } |
| 391 | 408 | ||
| 392 | async function getDetail() { | 409 | async function getDetail() { |
| 393 | const res = await getTicketInfoByActivityId({activityId: orderForm.value.activeId}) | 410 | const res = await getTicketInfoByActivityId({ activityId: orderForm.value.activeId }) |
| 394 | TickForm.value = res.data | 411 | TickForm.value = res.data |
| 395 | } | 412 | } |
| 396 | 413 | ||
| ... | @@ -401,8 +418,8 @@ function addPeopl() { | ... | @@ -401,8 +418,8 @@ function addPeopl() { |
| 401 | }) | 418 | }) |
| 402 | } | 419 | } |
| 403 | 420 | ||
| 404 | const showImg = () => { | 421 | function handelUp() { |
| 405 | 422 | router.go(-1) | |
| 406 | } | 423 | } |
| 407 | </script> | 424 | </script> |
| 408 | 425 | ||
| ... | @@ -677,6 +694,16 @@ div { | ... | @@ -677,6 +694,16 @@ div { |
| 677 | } | 694 | } |
| 678 | } | 695 | } |
| 679 | 696 | ||
| 697 | .father { | ||
| 698 | position: relative; | ||
| 699 | } | ||
| 700 | |||
| 701 | .son { | ||
| 702 | position: absolute; | ||
| 703 | left: 10px; | ||
| 704 | cursor: pointer | ||
| 705 | } | ||
| 706 | |||
| 680 | @media screen and (max-width: 768px) { | 707 | @media screen and (max-width: 768px) { |
| 681 | .container { | 708 | .container { |
| 682 | width: 100%; | 709 | width: 100%; | ... | ... |
| ... | @@ -2,7 +2,7 @@ | ... | @@ -2,7 +2,7 @@ |
| 2 | <div> | 2 | <div> |
| 3 | <!-- top --> | 3 | <!-- top --> |
| 4 | <div class="container top"> | 4 | <div class="container top"> |
| 5 | <img :src="fillImgUrl(matchForm.ticketImg)" class="cover_img"> | 5 | <img :src="fillImgUrl(matchForm.ticketImg)" alt="" class="cover_img"> |
| 6 | <div class="info"> | 6 | <div class="info"> |
| 7 | <div class="title">{{ matchForm.name }}</div> | 7 | <div class="title">{{ matchForm.name }}</div> |
| 8 | <div class="time"> | 8 | <div class="time"> |
| ... | @@ -93,7 +93,7 @@ | ... | @@ -93,7 +93,7 @@ |
| 93 | <span | 93 | <span |
| 94 | v-if="currVenue?.images" | 94 | v-if="currVenue?.images" |
| 95 | style="color: #493ceb;cursor:pointer;font-weight:600;font-size: 14px" | 95 | style="color: #493ceb;cursor:pointer;font-weight:600;font-size: 14px" |
| 96 | @click="showUrl=currVenue.images; show=true" | 96 | @click="handleImage" |
| 97 | > <span style="color: red;font-size: 18px">*</span> | 97 | > <span style="color: red;font-size: 18px">*</span> |
| 98 | {{ | 98 | {{ |
| 99 | language == 0 ? '点击查看场馆布局' : 'View Venue Layout' | 99 | language == 0 ? '点击查看场馆布局' : 'View Venue Layout' |
| ... | @@ -140,7 +140,7 @@ | ... | @@ -140,7 +140,7 @@ |
| 140 | <span v-else>{{ | 140 | <span v-else>{{ |
| 141 | language == 0 ? '夜间场' : 'Night' | 141 | language == 0 ? '夜间场' : 'Night' |
| 142 | }}</span> | 142 | }}</span> |
| 143 | <!-- {{ key=='1000'?'日间场':'夜间场' }}--> | 143 | <!-- {{ key=='1000'?'日间场':'夜间场' }}--> |
| 144 | </div> | 144 | </div> |
| 145 | </div> | 145 | </div> |
| 146 | </div> | 146 | </div> |
| ... | @@ -227,8 +227,11 @@ | ... | @@ -227,8 +227,11 @@ |
| 227 | 227 | ||
| 228 | <div class="container bottom"> | 228 | <div class="container bottom"> |
| 229 | <div style="display: flex"> | 229 | <div style="display: flex"> |
| 230 | <div :class="{'bg':active==1}" class="buBg" @click="active=1">{{ language==0?'购票说明':'Notice' }}</div> | 230 | <div :class="{'bg':active==1}" class="buBg" @click="active=1">{{ language == 0 ? '购票说明' : 'Notice' }}</div> |
| 231 | <div :class="{'bg' :active==2}" class="buBg" @click="active=2">{{ language==0?'购票须知':'Instructions' }}</div> | 231 | <div :class="{'bg' :active==2}" class="buBg" @click="active=2">{{ |
| 232 | language == 0 ? '购票须知' : 'Instructions' | ||
| 233 | }} | ||
| 234 | </div> | ||
| 232 | </div> | 235 | </div> |
| 233 | <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes" /> | 236 | <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes" /> |
| 234 | <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice" /> | 237 | <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice" /> |
| ... | @@ -250,7 +253,8 @@ import { | ... | @@ -250,7 +253,8 @@ import { |
| 250 | getTicketListApi, | 253 | getTicketListApi, |
| 251 | checkNonPayment, | 254 | checkNonPayment, |
| 252 | getStadiumList, | 255 | getStadiumList, |
| 253 | getActivityTypeVoListByLatsId | 256 | getActivityTypeVoListByLatsId, |
| 257 | getBaseInfoByActiveId | ||
| 254 | } from '@/apiPc/booking' | 258 | } from '@/apiPc/booking' |
| 255 | 259 | ||
| 256 | import { dayjs } from 'element-plus' | 260 | import { dayjs } from 'element-plus' |
| ... | @@ -290,6 +294,7 @@ const venueList = ref([]) | ... | @@ -290,6 +294,7 @@ const venueList = ref([]) |
| 290 | const tickList = ref([]) | 294 | const tickList = ref([]) |
| 291 | const currVenue = ref(null) | 295 | const currVenue = ref(null) |
| 292 | const currTick = ref(null) | 296 | const currTick = ref(null) |
| 297 | const matchData = ref({}) | ||
| 293 | 298 | ||
| 294 | watch(show, (val) => { | 299 | watch(show, (val) => { |
| 295 | if (!val) { | 300 | if (!val) { |
| ... | @@ -316,7 +321,7 @@ getTicketList() | ... | @@ -316,7 +321,7 @@ getTicketList() |
| 316 | 321 | ||
| 317 | async function getTicketList() { | 322 | async function getTicketList() { |
| 318 | const res = await getTicketListApi({ | 323 | const res = await getTicketListApi({ |
| 319 | activityId: activeId.value, isView: 1 | 324 | activityId: activeId.value, status: 1 |
| 320 | }) | 325 | }) |
| 321 | tickClass.value = res.rows | 326 | tickClass.value = res.rows |
| 322 | if (tickClass.value.length > 0) { | 327 | if (tickClass.value.length > 0) { |
| ... | @@ -418,6 +423,20 @@ function toSelectClosed() { | ... | @@ -418,6 +423,20 @@ function toSelectClosed() { |
| 418 | type: 'warning' | 423 | type: 'warning' |
| 419 | }) | 424 | }) |
| 420 | } | 425 | } |
| 426 | |||
| 427 | async function getmatchData() { | ||
| 428 | const res = await getBaseInfoByActiveId(route.params.activeId) | ||
| 429 | matchData.value = res.data | ||
| 430 | console.log(res) | ||
| 431 | } | ||
| 432 | |||
| 433 | function handleImage() { | ||
| 434 | // ticketImg | ||
| 435 | showUrl.value = matchData.value.ticketLayout | ||
| 436 | show.value = true | ||
| 437 | } | ||
| 438 | |||
| 439 | getmatchData() | ||
| 421 | </script> | 440 | </script> |
| 422 | 441 | ||
| 423 | <style lang="scss" scoped> | 442 | <style lang="scss" scoped> |
| ... | @@ -455,8 +474,8 @@ function toSelectClosed() { | ... | @@ -455,8 +474,8 @@ function toSelectClosed() { |
| 455 | margin-top: 26px; | 474 | margin-top: 26px; |
| 456 | 475 | ||
| 457 | .cover_img { | 476 | .cover_img { |
| 458 | width: 390px; | 477 | width: 500px; |
| 459 | height: 517px; | 478 | height: 667px; |
| 460 | object-fit: fill; | 479 | object-fit: fill; |
| 461 | margin-right: 36px; | 480 | margin-right: 36px; |
| 462 | } | 481 | } | ... | ... |
This diff is collapsed.
Click to expand it.
src/viewsPc/booking/travelDetailOld.vue
0 → 100644
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
| 1 | <template> | 1 | <template> |
| 2 | <div v-if="language == 0" class="itemBox"> | 2 | <div v-if="language == 0" class="itemBox"> |
| 3 | <el-row :gutter="20"> | 3 | <el-row :gutter="20"> |
| 4 | <el-col :sm="12" :lg="8" :xs="12"> | 4 | <el-col :lg="8" :sm="12" :xs="12"> |
| 5 | <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn01.png">酒店预订</div> | 5 | <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn01.png">酒店预订</div> |
| 6 | </el-col> | 6 | </el-col> |
| 7 | <el-col :sm="12" :lg="8" :xs="12"> | 7 | <el-col :lg="8" :sm="12" :xs="12"> |
| 8 | <div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn02.png">车辆预订</div> | 8 | <div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn02.png">车辆预订</div> |
| 9 | </el-col> | 9 | </el-col> |
| 10 | <!-- <el-col :sm="12" :lg="8" :xs="12">--> | 10 | <!-- <el-col :sm="12" :lg="8" :xs="12">--> |
| 11 | <!-- <div class="item" @click="popRemark(3)"><img src="@/assets/dance/btn03.png">餐饮预订</div>--> | 11 | <!-- <div class="item" @click="popRemark(3)"><img src="@/assets/dance/btn03.png">餐饮预订</div>--> |
| 12 | <!-- </el-col>--> | 12 | <!-- </el-col>--> |
| 13 | <el-col :sm="12" :lg="8" :xs="12"> | 13 | <el-col :lg="8" :sm="12" :xs="12"> |
| 14 | <div class="item" @click="popRemark(8)"><img src="@/assets/dance/btn08.png">旅游服务</div> | 14 | <div class="item" @click="popRemark(8)"><img src="@/assets/dance/btn08.png">旅游服务</div> |
| 15 | </el-col> | 15 | </el-col> |
| 16 | <el-col :sm="12" :lg="8" :xs="12"> | 16 | <el-col :lg="8" :sm="12" :xs="12"> |
| 17 | <div class="item" @click="popRemark(0)"><img src="@/assets/dance/btn04.png">票务预订</div> | 17 | <div class="item" @click="popRemark(0)"><img src="@/assets/dance/btn04.png">票务预订</div> |
| 18 | </el-col> | 18 | </el-col> |
| 19 | <el-col :sm="12" :lg="8" :xs="12"> | 19 | <el-col :lg="8" :sm="12" :xs="12"> |
| 20 | <div class="item" @click="popRemark(4)"><img src="@/assets/dance/btn05.png">化妆预约</div> | 20 | <div class="item" @click="popRemark(4)"><img src="@/assets/dance/btn05.png">化妆预约</div> |
| 21 | </el-col> | 21 | </el-col> |
| 22 | <el-col :sm="12" :lg="8" :xs="12"> | 22 | <el-col :lg="8" :sm="12" :xs="12"> |
| 23 | <div class="item" @click="popRemark(5)"><img src="@/assets/dance/btn06.png">拍照预约</div> | 23 | <div class="item" @click="popRemark(5)"><img src="@/assets/dance/btn06.png">拍照预约</div> |
| 24 | </el-col> | 24 | </el-col> |
| 25 | </el-row> | 25 | </el-row> |
| 26 | </div> | 26 | </div> |
| 27 | <div v-else class="itemBox_en"> | 27 | <div v-else class="itemBox_en"> |
| 28 | <el-row :gutter="20"> | 28 | <el-row :gutter="20"> |
| 29 | <el-col :sm="12" :lg="8" :xs="12"> | 29 | <el-col :lg="8" :sm="12" :xs="12"> |
| 30 | <div class="item_en" @click="popRemark(1)"><img src="@/assets/dance/btn01.png"> | 30 | <div class="item_en" @click="popRemark(1)"><img src="@/assets/dance/btn01.png"> |
| 31 | <p>HOTEL RESERVATION</p> | 31 | <p>HOTEL RESERVATION</p> |
| 32 | </div> | 32 | </div> |
| 33 | </el-col> | 33 | </el-col> |
| 34 | <el-col :sm="12" :lg="8" :xs="12"> | 34 | <el-col :lg="8" :sm="12" :xs="12"> |
| 35 | <div class="item_en" @click="popRemark(2)"><img src="@/assets/dance/btn02.png"> | 35 | <div class="item_en" @click="popRemark(2)"><img src="@/assets/dance/btn02.png"> |
| 36 | <p>TRANSPORTATION RESERVATION</p> | 36 | <p>TRANSPORTATION RESERVATION</p> |
| 37 | </div> | 37 | </div> |
| 38 | </el-col> | 38 | </el-col> |
| 39 | <!-- <el-col :sm="12" :lg="8" :xs="12">--> | 39 | <!-- <el-col :sm="12" :lg="8" :xs="12">--> |
| 40 | <!-- <div class="item_en" @click="popRemark(3)"><img src="@/assets/dance/btn03.png">--> | 40 | <!-- <div class="item_en" @click="popRemark(3)"><img src="@/assets/dance/btn03.png">--> |
| 41 | <!-- <p>DINING RESERVATION</p>--> | 41 | <!-- <p>DINING RESERVATION</p>--> |
| 42 | <!-- </div>--> | 42 | <!-- </div>--> |
| 43 | <!-- </el-col>--> | 43 | <!-- </el-col>--> |
| 44 | <el-col :sm="12" :lg="8" :xs="12"> | 44 | <el-col :lg="8" :sm="12" :xs="12"> |
| 45 | <div class="item_en" @click="popRemark(8)"><img src="@/assets/dance/btn08.png"> | 45 | <div class="item_en" @click="popRemark(8)"><img src="@/assets/dance/btn08.png"> |
| 46 | <p>TRAVEL SERVICE</p> | 46 | <p>TRAVEL SERVICE</p> |
| 47 | </div> | 47 | </div> |
| 48 | </el-col> | 48 | </el-col> |
| 49 | <el-col :sm="12" :lg="8" :xs="12"> | 49 | <el-col :lg="8" :sm="12" :xs="12"> |
| 50 | <div class="item_en" @click="popRemark(0)"> | 50 | <div class="item_en" @click="popRemark(0)"> |
| 51 | <img src="@/assets/dance/btn04.png"> | 51 | <img src="@/assets/dance/btn04.png"> |
| 52 | <p>TICKET BOOKING</p> | 52 | <p>TICKET BOOKING</p> |
| 53 | </div> | 53 | </div> |
| 54 | </el-col> | 54 | </el-col> |
| 55 | <el-col :sm="12" :lg="8" :xs="12"> | 55 | <el-col :lg="8" :sm="12" :xs="12"> |
| 56 | <div class="item_en" @click="popRemark(4)"><img src="@/assets/dance/btn05.png"> | 56 | <div class="item_en" @click="popRemark(4)"><img src="@/assets/dance/btn05.png"> |
| 57 | <p>MAKEUP APPOINTMENT</p> | 57 | <p>MAKEUP APPOINTMENT</p> |
| 58 | </div> | 58 | </div> |
| 59 | </el-col> | 59 | </el-col> |
| 60 | <el-col :sm="12" :lg="8" :xs="12"> | 60 | <el-col :lg="8" :sm="12" :xs="12"> |
| 61 | <div class="item_en" @click="popRemark(5)"><img src="@/assets/dance/btn06.png"> | 61 | <div class="item_en" @click="popRemark(5)"><img src="@/assets/dance/btn06.png"> |
| 62 | <p>PHOTOGRAPHY APPOINTMENT</p> | 62 | <p>PHOTOGRAPHY APPOINTMENT</p> |
| 63 | </div> | 63 | </div> |
| ... | @@ -114,7 +114,6 @@ onMounted(() => { | ... | @@ -114,7 +114,6 @@ onMounted(() => { |
| 114 | 114 | ||
| 115 | function building() { | 115 | function building() { |
| 116 | ElMessage.warning(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') | 116 | ElMessage.warning(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') |
| 117 | return | ||
| 118 | } | 117 | } |
| 119 | 118 | ||
| 120 | function popRemark(type) { | 119 | function popRemark(type) { |
| ... | @@ -173,14 +172,14 @@ function goBooking(n) { | ... | @@ -173,14 +172,14 @@ function goBooking(n) { |
| 173 | router.push({ path: `/booking/photography/${props.matchId}` }) | 172 | router.push({ path: `/booking/photography/${props.matchId}` }) |
| 174 | break | 173 | break |
| 175 | case 8: | 174 | case 8: |
| 176 | // 酒店 | 175 | // 旅游 |
| 177 | router.push({ path: `/booking/travel/${props.matchId}` }) | 176 | router.push({ path: `/booking/travel/${props.matchId}` }) |
| 178 | break | 177 | break |
| 179 | } | 178 | } |
| 180 | } | 179 | } |
| 181 | </script> | 180 | </script> |
| 182 | 181 | ||
| 183 | <style scoped lang="scss"> | 182 | <style lang="scss" scoped> |
| 184 | .itemBox { | 183 | .itemBox { |
| 185 | padding: 20px 40px; | 184 | padding: 20px 40px; |
| 186 | } | 185 | } |
| ... | @@ -248,9 +247,16 @@ function goBooking(n) { | ... | @@ -248,9 +247,16 @@ function goBooking(n) { |
| 248 | } | 247 | } |
| 249 | 248 | ||
| 250 | @media screen and (max-width: 768px) { | 249 | @media screen and (max-width: 768px) { |
| 251 | .itemBox,.itemBox_en{padding: 0 20px 20px} | 250 | .itemBox, .itemBox_en { |
| 252 | .item{font-size: 16px; | 251 | padding: 0 20px 20px |
| 253 | img{width: 50px;height: 50px} | 252 | } |
| 253 | .item { | ||
| 254 | font-size: 16px; | ||
| 255 | |||
| 256 | img { | ||
| 257 | width: 50px; | ||
| 258 | height: 50px | ||
| 259 | } | ||
| 254 | } | 260 | } |
| 255 | } | 261 | } |
| 256 | </style> | 262 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog :title="title" v-model="show" width="400px" @close="close"> | 2 | <el-dialog v-model="show" :title="title" destroy-on-close width="400px" @close="close"> |
| 3 | <div> | 3 | <div> |
| 4 | <h2 class="text-warning text-center" v-if="cptName">{{cptName}}</h2> | 4 | <h2 v-if="cptName" class="text-warning text-center">{{ cptName }}</h2> |
| 5 | 5 | ||
| 6 | <div v-if="type==1" class="plr20" v-html="form.reserveDes"></div> | 6 | <div v-if="type==1" class="plr20" v-html="form.reserveDes" /> |
| 7 | <div v-if="type==2" class="plr20" v-html="form.reserveDesCar"></div> | 7 | <div v-if="type==2" class="plr20" v-html="form.reserveDesCar" /> |
| 8 | <div v-if="type==3" class="plr20" v-html="form.reserveDesFood"></div> | 8 | <div v-if="type==3" class="plr20" v-html="form.reserveDesFood" /> |
| 9 | <div v-if="type==4" class="plr20" v-html="form.reserveDesMeal"></div> | 9 | <div v-if="type==4" class="plr20" v-html="form.reserveDesMeal" /> |
| 10 | <div v-if="type==5" class="plr20" v-html="form.reserveDesPhoto"></div> | 10 | <div v-if="type==5" class="plr20" v-html="form.reserveDesPhoto" /> |
| 11 | <div v-if="type==0" class="plr20" v-html="form.reserveDesTitck"></div> | 11 | <div v-if="type==0" class="plr20" v-html="form.reserveDesTitck" /> |
| 12 | <div v-if="type==8" class="plr20" v-html="form.reserveDesTravel"></div> | 12 | <div v-if="type==8" class="plr20" v-html="form.reserveDesScenic" /> |
| 13 | </div> | 13 | </div> |
| 14 | <template #footer> | 14 | <template #footer> |
| 15 | <div class="dialog-footer text-center"> | 15 | <div class="dialog-footer text-center"> |
| 16 | <el-button type="primary" class="btn-lineG w200px" round @click="ok">{{language==0?'确定':'Confirm'}}</el-button> | 16 | <el-button class="btn-lineG w200px" round type="primary" @click="ok">{{ language == 0 ? '确定' : 'Confirm' }} |
| 17 | </el-button> | ||
| 17 | </div> | 18 | </div> |
| 18 | </template> | 19 | </template> |
| 19 | </el-dialog> | 20 | </el-dialog> |
| 20 | </template> | 21 | </template> |
| 21 | 22 | ||
| 22 | <script setup> | 23 | <script setup> |
| 23 | import {getBaseInfoByActiveId} from "@/apiPc/booking"; | 24 | import { getBaseInfoByActiveId } from '@/apiPc/booking' |
| 24 | import {getCurrentInstance} from "@vue/runtime-core"; | 25 | import { getCurrentInstance } from '@vue/runtime-core' |
| 25 | import {useStorage} from "@vueuse/core/index"; | 26 | import { useStorage } from '@vueuse/core/index' |
| 26 | const emit = defineEmits([ 'submit']) | 27 | |
| 27 | const {proxy} = getCurrentInstance() | 28 | const emit = defineEmits(['submit']) |
| 28 | const language= useStorage('language',0) | 29 | const { proxy } = getCurrentInstance() |
| 29 | import useUserStore from "@/store/modules/user"; | 30 | const language = useStorage('language', 0) |
| 31 | import useUserStore from '@/store/modules/user' | ||
| 32 | |||
| 30 | const user = useUserStore().user | 33 | const user = useUserStore().user |
| 31 | const title = ref('') | 34 | const title = ref('') |
| 32 | const cptName = ref('') | 35 | const cptName = ref('') |
| ... | @@ -48,16 +51,18 @@ defineExpose({ | ... | @@ -48,16 +51,18 @@ defineExpose({ |
| 48 | 51 | ||
| 49 | function getData() { | 52 | function getData() { |
| 50 | console.log(matchId) | 53 | console.log(matchId) |
| 51 | getBaseInfoByActiveId(matchId).then(res=>{ | 54 | getBaseInfoByActiveId(matchId).then(res => { |
| 52 | form.value = res.data || {} | 55 | form.value = res.data || {} |
| 53 | console.log(form.value) | 56 | console.log(form.value) |
| 54 | }).catch(err=>{ | 57 | }).catch(err => { |
| 55 | console.log(err) | 58 | console.log(err) |
| 56 | }) | 59 | }) |
| 57 | } | 60 | } |
| 61 | |||
| 58 | function close() { | 62 | function close() { |
| 59 | show.value = false | 63 | show.value = false |
| 60 | } | 64 | } |
| 65 | |||
| 61 | function ok() { | 66 | function ok() { |
| 62 | // type | 67 | // type |
| 63 | show.value = false | 68 | show.value = false |
| ... | @@ -70,6 +75,6 @@ function ok() { | ... | @@ -70,6 +75,6 @@ function ok() { |
| 70 | } | 75 | } |
| 71 | </script> | 76 | </script> |
| 72 | 77 | ||
| 73 | <style scoped lang="scss"> | 78 | <style lang="scss" scoped> |
| 74 | 79 | ||
| 75 | </style> | 80 | </style> | ... | ... |
| ... | @@ -70,8 +70,8 @@ export default defineConfig(({ mode, command }) => { | ... | @@ -70,8 +70,8 @@ export default defineConfig(({ mode, command }) => { |
| 70 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '') | 70 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '') |
| 71 | }, | 71 | }, |
| 72 | '/dev-api/ztx-match': { | 72 | '/dev-api/ztx-match': { |
| 73 | // target: 'http://192.168.1.118:8081', | 73 | target: 'http://192.168.1.118:8081', |
| 74 | target: 'https://wdsfwuxicenter.com/stage-api/', | 74 | // target: 'https://wdsfwuxicenter.com/stage-api/', |
| 75 | changeOrigin: true, | 75 | changeOrigin: true, |
| 76 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '') | 76 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '') |
| 77 | }, | 77 | }, |
| ... | @@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => { | ... | @@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => { |
| 82 | }, | 82 | }, |
| 83 | '/dev-api': { | 83 | '/dev-api': { |
| 84 | // target: 'http://192.168.1.118:8081/', | 84 | // target: 'http://192.168.1.118:8081/', |
| 85 | // target: 'http://192.168.1.130:8081', | 85 | target: 'http://192.168.1.118:8081', |
| 86 | target: 'https://jijin.wtwuxicenter.com/stage-api', | 86 | // target: 'https://jijin.wtwuxicenter.com/stage-api', |
| 87 | // target: 'https://wdsfwuxicenter.com/stage-api/', | 87 | // target: 'https://wdsfwuxicenter.com/stage-api/', |
| 88 | changeOrigin: true, | 88 | changeOrigin: true, |
| 89 | rewrite: (p) => p.replace(/^\/dev-api/, '') | 89 | rewrite: (p) => p.replace(/^\/dev-api/, '') | ... | ... |
-
Please register or sign in to post a comment