票务
Showing
4 changed files
with
85 additions
and
61 deletions
| ... | @@ -512,9 +512,9 @@ export function getTicketTotalApi(data) { | ... | @@ -512,9 +512,9 @@ export function getTicketTotalApi(data) { |
| 512 | } | 512 | } |
| 513 | 513 | ||
| 514 | // 下单 | 514 | // 下单 |
| 515 | export function TicketOrderBoApi(data) { | 515 | export function submitOrderTicket(data) { |
| 516 | return request({ | 516 | return request({ |
| 517 | url: `/ota/orderTicket/TicketOrderBo`, | 517 | url: `/ota/norder/submitOrderTicket`, |
| 518 | method: 'POST', | 518 | method: 'POST', |
| 519 | data | 519 | data |
| 520 | }) | 520 | }) | ... | ... |
| ... | @@ -21,18 +21,18 @@ | ... | @@ -21,18 +21,18 @@ |
| 21 | </div> | 21 | </div> |
| 22 | 22 | ||
| 23 | <div class="form"> | 23 | <div class="form"> |
| 24 | <el-form label-width="100px"> | 24 | <el-form ref="formRef" :model="orderForm" :rules="rules" label-width="100px"> |
| 25 | <!-- <el-form-item--> | ||
| 26 | <!-- :label="language == 0 ? '联系人' : 'contact'" prop="contacts"--> | ||
| 27 | <!-- >--> | ||
| 28 | <!-- <el-input--> | ||
| 29 | <!-- v-model="orderForm.contacts"--> | ||
| 30 | <!-- :placeholder=" language == 0 ? '请输入联系人' : 'Please enter the contact'"--> | ||
| 31 | <!-- style="width: 320px"--> | ||
| 32 | <!-- />--> | ||
| 33 | <!-- </el-form-item>--> | ||
| 25 | <el-form-item | 34 | <el-form-item |
| 26 | :label="language == 0 ? '联系人' : 'contact'" | 35 | :label="language == 0 ? '联系人电话' : 'contact phone'" prop="phone" |
| 27 | > | ||
| 28 | <el-input | ||
| 29 | v-model="orderForm.contacts" | ||
| 30 | :placeholder=" language == 0 ? '请输入联系人' : 'Please enter the contact'" | ||
| 31 | style="width: 320px" | ||
| 32 | /> | ||
| 33 | </el-form-item> | ||
| 34 | <el-form-item | ||
| 35 | :label="language == 0 ? '联系人电话' : 'contact phone'" | ||
| 36 | > | 36 | > |
| 37 | <el-input | 37 | <el-input |
| 38 | v-model="orderForm.phone" | 38 | v-model="orderForm.phone" |
| ... | @@ -40,7 +40,7 @@ | ... | @@ -40,7 +40,7 @@ |
| 40 | style="width: 320px" | 40 | style="width: 320px" |
| 41 | /> | 41 | /> |
| 42 | </el-form-item> | 42 | </el-form-item> |
| 43 | <el-form-item :label="language == 0 ? '观看人' : 'Viewer'"> | 43 | <el-form-item :label="language == 0 ? '观看人' : 'Viewer'" prop="customerList"> |
| 44 | <div class="p_box"> | 44 | <div class="p_box"> |
| 45 | <div class="people"> | 45 | <div class="people"> |
| 46 | <el-checkbox-group v-model="orderForm.customerList" @change="changeGroup"> | 46 | <el-checkbox-group v-model="orderForm.customerList" @change="changeGroup"> |
| ... | @@ -75,33 +75,17 @@ | ... | @@ -75,33 +75,17 @@ |
| 75 | <div class="detail"> | 75 | <div class="detail"> |
| 76 | <div class="detail_top"> | 76 | <div class="detail_top"> |
| 77 | <div class="time"> | 77 | <div class="time"> |
| 78 | {{ order.data?.dateStr }} | 78 | {{ tickType.name }} |
| 79 | <span v-if="order.data?.ticketType == 1" class="tag_t"> | 79 | <span v-if="tickType.ticketType == 1" class="tag_t"> |
| 80 | {{ languageFormat(language, "套票", "Package ticket") }} | 80 | {{ languageFormat(language, "套票", "Package ticket") }} |
| 81 | </span> | 81 | </span> |
| 82 | </div> | 82 | </div> |
| 83 | <div class="ticket"> | 83 | <div class="ticket"> |
| 84 | {{ order?.singlePrice }}<span v-if="language == 0">元</span | 84 | {{ tickType.price }} |
| 85 | >{{ languageFormat(language, "票档", "Ticket file") }} x{{ | 85 | <span> {{ language == 0 ? '元' : 'Euro' }}</span> |
| 86 | order?.seatInfo?.length | 86 | {{ languageFormat(language, "票档", "Ticket file") }} |
| 87 | }}{{ languageFormat(language, "张", "tickets") }} | 87 | x 1 |
| 88 | </div> | 88 | {{ languageFormat(language, "张", "tickets") }} |
| 89 | </div> | ||
| 90 | <div class="detail_center"> | ||
| 91 | <div | ||
| 92 | v-for="(it, index) in order.seatInfo" | ||
| 93 | :key="index" | ||
| 94 | class="ticket" | ||
| 95 | > | ||
| 96 | <span v-if="it.venueId == 1" | ||
| 97 | >{{ it.area }}{{ languageFormat(language, "区", "Zones") }} | ||
| 98 | </span> | ||
| 99 | {{ it.pai }} | ||
| 100 | {{ languageFormat(language, "排", "Row") }} | ||
| 101 | {{ it.no }} | ||
| 102 | {{ languageFormat(language, "座", "Seat") }} | ||
| 103 | ({{ it.venueId == 1 ? "B6" : "B4" }} | ||
| 104 | {{ languageFormat(language, "馆", "Venue") }}) | ||
| 105 | </div> | 89 | </div> |
| 106 | </div> | 90 | </div> |
| 107 | <div class="detail_b"> | 91 | <div class="detail_b"> |
| ... | @@ -126,10 +110,10 @@ | ... | @@ -126,10 +110,10 @@ |
| 126 | </span> | 110 | </span> |
| 127 | <span class="value"> | 111 | <span class="value"> |
| 128 | <span>{{ language == 0 ? "¥" : "€" }}</span> | 112 | <span>{{ language == 0 ? "¥" : "€" }}</span> |
| 129 | {{ order.data?.paymentAmount }} | 113 | {{ language == 0 ? price.total_cn : price.total_en }} |
| 130 | </span> | 114 | </span> |
| 131 | </div> | 115 | </div> |
| 132 | <div class="pay" @click="payment.paymentHandle()"> | 116 | <div class="pay" @click="paymentHandle"> |
| 133 | {{ languageFormat(language, "立即支付", "Pay Now") }} | 117 | {{ languageFormat(language, "立即支付", "Pay Now") }} |
| 134 | </div> | 118 | </div> |
| 135 | </div> | 119 | </div> |
| ... | @@ -151,12 +135,14 @@ | ... | @@ -151,12 +135,14 @@ |
| 151 | 135 | ||
| 152 | <script setup> | 136 | <script setup> |
| 153 | import {ref} from 'vue' | 137 | import {ref} from 'vue' |
| 154 | import {customerListApi, getTicketTotalApi, TicketOrderBoApi, listApi} from '@/apiPc/booking' | 138 | import {customerListApi, getTicketTotalApi, submitOrderTicket, listApi} from '@/apiPc/booking' |
| 155 | import {ElMessage} from "element-plus"; | 139 | import {ElMessage} from "element-plus"; |
| 156 | import {languageFormat} from "@/viewsPc/seat/utils/language.js"; | 140 | import {languageFormat} from "@/viewsPc/seat/utils/language.js"; |
| 157 | import {useStorage} from "@vueuse/core/index"; | 141 | import useUserStore from "/@/store/modules/user"; |
| 158 | 142 | ||
| 159 | const language = useStorage("language", 0); | 143 | const useStore = useUserStore() |
| 144 | const language = useStore.language; | ||
| 145 | console.log(language) | ||
| 160 | const loading = ref(false); | 146 | const loading = ref(false); |
| 161 | const route = useRoute(); | 147 | const route = useRoute(); |
| 162 | const router = useRouter(); | 148 | const router = useRouter(); |
| ... | @@ -173,16 +159,42 @@ const orderForm = ref({ | ... | @@ -173,16 +159,42 @@ const orderForm = ref({ |
| 173 | activeId: route.params.activeId, | 159 | activeId: route.params.activeId, |
| 174 | atId: route.params.latId, | 160 | atId: route.params.latId, |
| 175 | attId: route.params.attId, | 161 | attId: route.params.attId, |
| 176 | orderId: null, | 162 | ticketDate: null, |
| 177 | contacts: null, | 163 | ticketType: null, |
| 178 | phone: null, | 164 | phone: null, |
| 179 | remarks: null, | ||
| 180 | customerList: [], | 165 | customerList: [], |
| 181 | num: 0, | 166 | num: 0, |
| 182 | total: null | 167 | total: null |
| 183 | }) | 168 | }) |
| 184 | const price = ref({}) | 169 | const price = ref({ |
| 170 | total_en: 0, | ||
| 171 | total_cn: 0 | ||
| 172 | }) | ||
| 185 | const tickType = ref({}) | 173 | const tickType = ref({}) |
| 174 | const rules = ref({ | ||
| 175 | contacts: [ | ||
| 176 | { | ||
| 177 | required: true, | ||
| 178 | message: languageFormat(language, "请输入联系人", "Please enter the contact person"), | ||
| 179 | trigger: "blur" | ||
| 180 | }, | ||
| 181 | ], | ||
| 182 | phone: [ | ||
| 183 | { | ||
| 184 | required: true, | ||
| 185 | message: languageFormat(language, "请输入联系电话", "Please enter the contact phone number"), | ||
| 186 | trigger: "blur" | ||
| 187 | }, | ||
| 188 | ], | ||
| 189 | customerList: [ | ||
| 190 | { | ||
| 191 | required: true, | ||
| 192 | message: languageFormat(language, "请选择观众", "Please select the audience"), | ||
| 193 | trigger: "blur" | ||
| 194 | }, | ||
| 195 | ], | ||
| 196 | }) | ||
| 197 | const formRef = ref(null) | ||
| 186 | let timer = null; | 198 | let timer = null; |
| 187 | 199 | ||
| 188 | 200 | ||
| ... | @@ -300,31 +312,35 @@ function changeGroup() { | ... | @@ -300,31 +312,35 @@ function changeGroup() { |
| 300 | async function customerList() { | 312 | async function customerList() { |
| 301 | const res = await customerListApi() | 313 | const res = await customerListApi() |
| 302 | personnelList.value = res.rows | 314 | personnelList.value = res.rows |
| 303 | console.log(res) | ||
| 304 | } | 315 | } |
| 305 | 316 | ||
| 306 | |||
| 307 | // 获取价格 | 317 | // 获取价格 |
| 308 | async function getTicketTotal() { | 318 | async function getTicketTotal() { |
| 309 | const res = await getTicketTotalApi(orderForm.value) | 319 | const res = await getTicketTotalApi(orderForm.value) |
| 310 | price.value = res.data | 320 | price.value = res.data |
| 321 | orderForm.value.total = language == 0 ? price.value.total_cn : price.value.total_en | ||
| 322 | console.log(orderForm.value) | ||
| 311 | } | 323 | } |
| 312 | 324 | ||
| 313 | getTicketTotal() | ||
| 314 | |||
| 315 | // 获取票档信息 | 325 | // 获取票档信息 |
| 316 | async function getTicketListType() { | 326 | async function getTicketListType() { |
| 317 | const res = await listApi({latId: orderForm.value.latId}) | 327 | const res = await listApi({latId: orderForm.value.latId}) |
| 318 | tickType.value = res.rows.find(item => item.id == orderForm.value.attId) | 328 | tickType.value = res.rows.find(item => item.id == orderForm.value.attId) |
| 329 | orderForm.value.ticketDate = tickType.value.name | ||
| 330 | orderForm.value.ticketType = tickType.value.ticketType | ||
| 319 | } | 331 | } |
| 320 | 332 | ||
| 321 | getTicketListType() | 333 | getTicketListType() |
| 322 | 334 | ||
| 323 | 335 | // 提交 | |
| 324 | // 下单 | 336 | async function paymentHandle() { |
| 325 | async function confirmOrder() { | 337 | await formRef.value.validate() |
| 326 | const res = await TicketOrderBoApi(orderForm.value) | 338 | const res = await submitOrderTicket(orderForm.value) |
| 339 | if (res.code == 200) { | ||
| 340 | ElMessage.success('提交成功') | ||
| 341 | } | ||
| 327 | } | 342 | } |
| 343 | |||
| 328 | </script> | 344 | </script> |
| 329 | 345 | ||
| 330 | 346 | ||
| ... | @@ -496,7 +512,7 @@ div { | ... | @@ -496,7 +512,7 @@ div { |
| 496 | 512 | ||
| 497 | .time { | 513 | .time { |
| 498 | font-weight: 500; | 514 | font-weight: 500; |
| 499 | font-size: 18px; | 515 | font-size: 20px; |
| 500 | color: #2d373f; | 516 | color: #2d373f; |
| 501 | line-height: 25px; | 517 | line-height: 25px; |
| 502 | margin-bottom: 8px; | 518 | margin-bottom: 8px; | ... | ... |
| ... | @@ -98,9 +98,11 @@ import {dayjs} from "element-plus"; | ... | @@ -98,9 +98,11 @@ import {dayjs} from "element-plus"; |
| 98 | import {ElMessageBox, ElMessage} from "element-plus"; | 98 | import {ElMessageBox, ElMessage} from "element-plus"; |
| 99 | import {languageFormat, getDayName} from "@/viewsPc/seat/utils/language"; | 99 | import {languageFormat, getDayName} from "@/viewsPc/seat/utils/language"; |
| 100 | import {fillImgUrl} from "/@/utils/ruoyi"; | 100 | import {fillImgUrl} from "/@/utils/ruoyi"; |
| 101 | import {useStorage} from "@vueuse/core/index"; | 101 | import useUserStore from "/@/store/modules/user"; |
| 102 | 102 | ||
| 103 | const language = useStorage("language", 0); | 103 | const useStore = useUserStore() |
| 104 | const language = useStore.language; | ||
| 105 | const user = useStore.user | ||
| 104 | const route = useRoute(); | 106 | const route = useRoute(); |
| 105 | const router = useRouter(); | 107 | const router = useRouter(); |
| 106 | const activeId = ref(route.params.activeId) | 108 | const activeId = ref(route.params.activeId) |
| ... | @@ -152,6 +154,11 @@ function selectTick(v) { | ... | @@ -152,6 +154,11 @@ function selectTick(v) { |
| 152 | function toSelectSeat() { | 154 | function toSelectSeat() { |
| 153 | if (!selectForm.value.latId) return ElMessage.error(language.value == 0 ? "请选择票档" : 'Please select a ticket file') | 155 | if (!selectForm.value.latId) return ElMessage.error(language.value == 0 ? "请选择票档" : 'Please select a ticket file') |
| 154 | if (!selectForm.value.id) return ElMessage.error(language.value == 0 ? "请选择时间" : 'Please select time') | 156 | if (!selectForm.value.id) return ElMessage.error(language.value == 0 ? "请选择时间" : 'Please select time') |
| 157 | console.log(user) | ||
| 158 | if (!user) { | ||
| 159 | useStore().setVisitor() | ||
| 160 | return | ||
| 161 | } | ||
| 155 | router.push({ | 162 | router.push({ |
| 156 | name: 'confirmOrder', | 163 | name: 'confirmOrder', |
| 157 | params: { | 164 | params: { | ... | ... |
| ... | @@ -65,9 +65,10 @@ import {ref} from "vue"; | ... | @@ -65,9 +65,10 @@ import {ref} from "vue"; |
| 65 | import {aadCustomer, customerListApi, delCustomer} from '@/apiPc/booking' | 65 | import {aadCustomer, customerListApi, delCustomer} from '@/apiPc/booking' |
| 66 | import {ElMessage, ElMessageBox} from "element-plus"; | 66 | import {ElMessage, ElMessageBox} from "element-plus"; |
| 67 | import {languageFormat} from "@/viewsPc/seat/utils/language.js"; | 67 | import {languageFormat} from "@/viewsPc/seat/utils/language.js"; |
| 68 | import {useStorage} from "@vueuse/core/index"; | 68 | import useUserStore from "/@/store/modules/user"; |
| 69 | 69 | ||
| 70 | const language = useStorage("language", 0); | 70 | const useStore = useUserStore() |
| 71 | const language = useStore.language; | ||
| 71 | 72 | ||
| 72 | const personnelList = ref([]) | 73 | const personnelList = ref([]) |
| 73 | const show = ref(false) | 74 | const show = ref(false) | ... | ... |
-
Please register or sign in to post a comment