票务
Showing
3 changed files
with
82 additions
and
31 deletions
| 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">上一步</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)" |
| 52 | style="width: 100%;" | ||
| 53 | /> | ||
| 48 | </el-popover> | 54 | </el-popover> |
| 49 | 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 | ||
| ... | @@ -321,7 +340,7 @@ async function paymentHandle() { | ... | @@ -321,7 +340,7 @@ async function paymentHandle() { |
| 321 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', | 340 | confirmButtonText: language.value == 0 ? '确定' : 'Confirm', |
| 322 | cancelButtonText: language.value == 0 ? '取消' : 'Cancel', | 341 | cancelButtonText: language.value == 0 ? '取消' : 'Cancel', |
| 323 | type: 'warning' | 342 | type: 'warning' |
| 324 | }).then(async () => { | 343 | }).then(async() => { |
| 325 | try { | 344 | try { |
| 326 | const orderCustomerList = [] | 345 | const orderCustomerList = [] |
| 327 | _.each(orderForm.value.customerIds, (id, index) => { | 346 | _.each(orderForm.value.customerIds, (id, index) => { |
| ... | @@ -390,7 +409,7 @@ async function paymentHandle() { | ... | @@ -390,7 +409,7 @@ async function paymentHandle() { |
| 390 | } | 409 | } |
| 391 | 410 | ||
| 392 | async function getDetail() { | 411 | async function getDetail() { |
| 393 | const res = await getTicketInfoByActivityId({activityId: orderForm.value.activeId}) | 412 | const res = await getTicketInfoByActivityId({ activityId: orderForm.value.activeId }) |
| 394 | TickForm.value = res.data | 413 | TickForm.value = res.data |
| 395 | } | 414 | } |
| 396 | 415 | ||
| ... | @@ -404,6 +423,10 @@ function addPeopl() { | ... | @@ -404,6 +423,10 @@ function addPeopl() { |
| 404 | const showImg = () => { | 423 | const showImg = () => { |
| 405 | 424 | ||
| 406 | } | 425 | } |
| 426 | |||
| 427 | function handelUp() { | ||
| 428 | router.go(-1) | ||
| 429 | } | ||
| 407 | </script> | 430 | </script> |
| 408 | 431 | ||
| 409 | 432 | ||
| ... | @@ -677,6 +700,16 @@ div { | ... | @@ -677,6 +700,16 @@ div { |
| 677 | } | 700 | } |
| 678 | } | 701 | } |
| 679 | 702 | ||
| 703 | .father { | ||
| 704 | position: relative; | ||
| 705 | } | ||
| 706 | |||
| 707 | .son { | ||
| 708 | position: absolute; | ||
| 709 | left: 10px; | ||
| 710 | cursor: pointer | ||
| 711 | } | ||
| 712 | |||
| 680 | @media screen and (max-width: 768px) { | 713 | @media screen and (max-width: 768px) { |
| 681 | .container { | 714 | .container { |
| 682 | width: 100%; | 715 | 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) { |
| ... | @@ -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,7 @@ function toSelectClosed() { | ... | @@ -455,8 +474,7 @@ 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; | ||
| 460 | object-fit: fill; | 478 | object-fit: fill; |
| 461 | margin-right: 36px; | 479 | margin-right: 36px; |
| 462 | } | 480 | } | ... | ... |
| ... | @@ -81,8 +81,8 @@ export default defineConfig(({ mode, command }) => { | ... | @@ -81,8 +81,8 @@ export default defineConfig(({ mode, command }) => { |
| 81 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') | 81 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') |
| 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, | ... | ... |
-
Please register or sign in to post a comment