0e1113e9 by zhangmeng

票务

1 parent 427bbc09
......@@ -512,9 +512,9 @@ export function getTicketTotalApi(data) {
}
// 下单
export function TicketOrderBoApi(data) {
export function submitOrderTicket(data) {
return request({
url: `/ota/orderTicket/TicketOrderBo`,
url: `/ota/norder/submitOrderTicket`,
method: 'POST',
data
})
......
......@@ -21,18 +21,18 @@
</div>
<div class="form">
<el-form label-width="100px">
<el-form ref="formRef" :model="orderForm" :rules="rules" label-width="100px">
<!-- <el-form-item-->
<!-- :label="language == 0 ? '联系人' : 'contact'" prop="contacts"-->
<!-- >-->
<!-- <el-input-->
<!-- v-model="orderForm.contacts"-->
<!-- :placeholder=" language == 0 ? '请输入联系人' : 'Please enter the contact'"-->
<!-- style="width: 320px"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item
:label="language == 0 ? '联系人' : 'contact'"
>
<el-input
v-model="orderForm.contacts"
:placeholder=" language == 0 ? '请输入联系人' : 'Please enter the contact'"
style="width: 320px"
/>
</el-form-item>
<el-form-item
:label="language == 0 ? '联系人电话' : 'contact phone'"
:label="language == 0 ? '联系人电话' : 'contact phone'" prop="phone"
>
<el-input
v-model="orderForm.phone"
......@@ -40,7 +40,7 @@
style="width: 320px"
/>
</el-form-item>
<el-form-item :label="language == 0 ? '观看人' : 'Viewer'">
<el-form-item :label="language == 0 ? '观看人' : 'Viewer'" prop="customerList">
<div class="p_box">
<div class="people">
<el-checkbox-group v-model="orderForm.customerList" @change="changeGroup">
......@@ -75,33 +75,17 @@
<div class="detail">
<div class="detail_top">
<div class="time">
{{ order.data?.dateStr }}
<span v-if="order.data?.ticketType == 1" class="tag_t">
{{ tickType.name }}
<span v-if="tickType.ticketType == 1" class="tag_t">
{{ languageFormat(language, "套票", "Package ticket") }}
</span>
</div>
<div class="ticket">
{{ order?.singlePrice }}<span v-if="language == 0"></span
>{{ languageFormat(language, "票档", "Ticket file") }} x{{
order?.seatInfo?.length
}}{{ languageFormat(language, "张", "tickets") }}
</div>
</div>
<div class="detail_center">
<div
v-for="(it, index) in order.seatInfo"
:key="index"
class="ticket"
>
<span v-if="it.venueId == 1"
>{{ it.area }}{{ languageFormat(language, "区", "Zones") }}
</span>
{{ it.pai }}
{{ languageFormat(language, "排", "Row") }}
{{ it.no }}
{{ languageFormat(language, "座", "Seat") }}
({{ it.venueId == 1 ? "B6" : "B4" }}
{{ languageFormat(language, "馆", "Venue") }})
{{ tickType.price }}
<span> {{ language == 0 ? '元' : 'Euro' }}</span>
{{ languageFormat(language, "票档", "Ticket file") }}
x 1
{{ languageFormat(language, "张", "tickets") }}
</div>
</div>
<div class="detail_b">
......@@ -126,10 +110,10 @@
</span>
<span class="value">
<span>{{ language == 0 ? "¥" : "€" }}</span>
{{ order.data?.paymentAmount }}
{{ language == 0 ? price.total_cn : price.total_en }}
</span>
</div>
<div class="pay" @click="payment.paymentHandle()">
<div class="pay" @click="paymentHandle">
{{ languageFormat(language, "立即支付", "Pay Now") }}
</div>
</div>
......@@ -151,12 +135,14 @@
<script setup>
import {ref} from 'vue'
import {customerListApi, getTicketTotalApi, TicketOrderBoApi, listApi} from '@/apiPc/booking'
import {customerListApi, getTicketTotalApi, submitOrderTicket, listApi} from '@/apiPc/booking'
import {ElMessage} from "element-plus";
import {languageFormat} from "@/viewsPc/seat/utils/language.js";
import {useStorage} from "@vueuse/core/index";
import useUserStore from "/@/store/modules/user";
const language = useStorage("language", 0);
const useStore = useUserStore()
const language = useStore.language;
console.log(language)
const loading = ref(false);
const route = useRoute();
const router = useRouter();
......@@ -173,16 +159,42 @@ const orderForm = ref({
activeId: route.params.activeId,
atId: route.params.latId,
attId: route.params.attId,
orderId: null,
contacts: null,
ticketDate: null,
ticketType: null,
phone: null,
remarks: null,
customerList: [],
num: 0,
total: null
})
const price = ref({})
const price = ref({
total_en: 0,
total_cn: 0
})
const tickType = ref({})
const rules = ref({
contacts: [
{
required: true,
message: languageFormat(language, "请输入联系人", "Please enter the contact person"),
trigger: "blur"
},
],
phone: [
{
required: true,
message: languageFormat(language, "请输入联系电话", "Please enter the contact phone number"),
trigger: "blur"
},
],
customerList: [
{
required: true,
message: languageFormat(language, "请选择观众", "Please select the audience"),
trigger: "blur"
},
],
})
const formRef = ref(null)
let timer = null;
......@@ -300,31 +312,35 @@ function changeGroup() {
async function customerList() {
const res = await customerListApi()
personnelList.value = res.rows
console.log(res)
}
// 获取价格
async function getTicketTotal() {
const res = await getTicketTotalApi(orderForm.value)
price.value = res.data
orderForm.value.total = language == 0 ? price.value.total_cn : price.value.total_en
console.log(orderForm.value)
}
getTicketTotal()
// 获取票档信息
async function getTicketListType() {
const res = await listApi({latId: orderForm.value.latId})
tickType.value = res.rows.find(item => item.id == orderForm.value.attId)
orderForm.value.ticketDate = tickType.value.name
orderForm.value.ticketType = tickType.value.ticketType
}
getTicketListType()
// 下单
async function confirmOrder() {
const res = await TicketOrderBoApi(orderForm.value)
// 提交
async function paymentHandle() {
await formRef.value.validate()
const res = await submitOrderTicket(orderForm.value)
if (res.code == 200) {
ElMessage.success('提交成功')
}
}
</script>
......@@ -496,7 +512,7 @@ div {
.time {
font-weight: 500;
font-size: 18px;
font-size: 20px;
color: #2d373f;
line-height: 25px;
margin-bottom: 8px;
......
......@@ -98,9 +98,11 @@ import {dayjs} from "element-plus";
import {ElMessageBox, ElMessage} from "element-plus";
import {languageFormat, getDayName} from "@/viewsPc/seat/utils/language";
import {fillImgUrl} from "/@/utils/ruoyi";
import {useStorage} from "@vueuse/core/index";
import useUserStore from "/@/store/modules/user";
const language = useStorage("language", 0);
const useStore = useUserStore()
const language = useStore.language;
const user = useStore.user
const route = useRoute();
const router = useRouter();
const activeId = ref(route.params.activeId)
......@@ -152,6 +154,11 @@ function selectTick(v) {
function toSelectSeat() {
if (!selectForm.value.latId) return ElMessage.error(language.value == 0 ? "请选择票档" : 'Please select a ticket file')
if (!selectForm.value.id) return ElMessage.error(language.value == 0 ? "请选择时间" : 'Please select time')
console.log(user)
if (!user) {
useStore().setVisitor()
return
}
router.push({
name: 'confirmOrder',
params: {
......
......@@ -65,9 +65,10 @@ import {ref} from "vue";
import {aadCustomer, customerListApi, delCustomer} from '@/apiPc/booking'
import {ElMessage, ElMessageBox} from "element-plus";
import {languageFormat} from "@/viewsPc/seat/utils/language.js";
import {useStorage} from "@vueuse/core/index";
import useUserStore from "/@/store/modules/user";
const language = useStorage("language", 0);
const useStore = useUserStore()
const language = useStore.language;
const personnelList = ref([])
const show = ref(false)
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!