0de836b9 by zhangmeng

车辆

1 parent edeececc
......@@ -237,6 +237,15 @@ export function getBaseInfoByActiveId(id) {
})
}
export function vehicleConfigList(params) {
return request({
url: `/ota/vehicleConfig/list`,
method: 'get',
params
})
}
export function checkRoomPayByUserId(id) {
return request({
url: `/ota/norder/checkRoomPayByUserId`,
......
......@@ -7,7 +7,7 @@
<div class="box">
<div class="searchBar">
<el-input v-model="query.name" :placeholder="language==0?'请输入关键字搜索':'Search'" class="no-border" />
<el-button class="btn-lineG" icon="search" size="large" type="primary" @click="getList">
<el-button class="btn-lineG" icon="search" size="large" type="primary" @click="getVehicleByCheckIn">
{{ language == 0 ? '搜索' : 'Search' }}
</el-button>
</div>
......@@ -97,7 +97,7 @@ function getList() {
async function getVehicleByCheckIn() {
loading.value = true
const res = await booking.getVehicleByCheckIn(query.value)
list.value = res.rows
list.value = res.data || []
loading.value = false
}
......
......@@ -18,38 +18,51 @@
</div>
</div>
<div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div>
<div class="leftboderTT">
{{ language == 0 ? '预约信息' : 'Reservation information' }}
</div>
<div class="border-rr mt20 pd20">
<el-form ref="formRef" :label-width="language == 0 ?'120':'200'" :model="form" :rules="rules">
<el-form-item :label="language==0?'人数':'Person Count'" required>
<el-form-item :label="language==0?'人数':'Person Count'" prop="pickUpBo.count">
<el-input-number v-model="form.pickUpBo.count" type="text" @change="changecarNum" />
</el-form-item>
<el-form-item :label="language==0?'用车日期':'Date'" required>
<el-form-item :label="language==0?'用车日期':'Date'" prop="date1">
<el-date-picker
v-model="date1" :disabled-date="disabledDate"
v-model="form.date1" :disabled-date="disabledDate"
:placeholder="language==0?'选择日期':'Select date'"
format="YYYY-MM-DD" type="date"
value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'用车时间':'Time'" required>
<el-time-picker v-model="revTime1" format="HH:mm" value-format="HH:mm" @change="bindTimeChange" />
<el-form-item :label="language==0?'用车时间':'Time'" prop="lvcId">
<!-- <el-time-picker v-model="revTime1" format="HH:mm" value-format="HH:mm" @change="bindTimeChange" />-->
<el-select v-model="form.lvcId">
<el-option v-for="v in timeList" :key="v.id" :label="`${v.nameStart}~${v.nameEnd}`" :value="v.id" />
</el-select>
</el-form-item>
<el-form-item :label="language==0?'联系人':'Contacts'" required>
<el-form-item
v-for="(v,i) in form.list" :key="i" :label="`${language==0?`乘坐人${i+1}`:`Contacts${i+1}`}`"
:prop="`list.${i}.name`"
:rules="rules.name"
>
<el-input v-model="v.name" type="text" />
</el-form-item>
<el-form-item :label="language==0?'联系人':'Contacts'" prop="pickUpBo.contacts">
<el-input v-model="form.pickUpBo.contacts" type="text" />
</el-form-item>
<el-form-item :label="language==0?'联系电话':'Phone'" required>
<el-form-item :label="language==0?'联系电话':'Phone'" prop="pickUpBo.phone">
<el-input v-model="form.pickUpBo.phone" type="text" />
</el-form-item>
<el-form-item :label="language==0?'航班/火车班次:':'Flight/Train No'" required>
<el-form-item :label="language==0?'航班/火车班次:':'Flight/Train No'" prop="pickUpBo.no">
<el-input v-model="form.pickUpBo.no" type="text" />
</el-form-item>
<el-form-item :label="language==0?'接机/接站地点':'Pick up/Drop off Address'" required>
<el-input v-model="form.pickUpBo.noAddress" type="text" />
</el-form-item>
<el-form-item :label="language==0?'送达地点':'Delivery Address'" required>
<el-input v-model="form.pickUpBo.deliveryAddress" type="text" />
</el-form-item>
<!-- <el-form-item :label="language==0?'接机/接站地点':'Pick up/Drop off Address'" required>-->
<!-- <el-input v-model="form.pickUpBo.noAddress" type="text" />-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="language==0?'送达地点':'Delivery Address'" required>-->
<!-- <el-input v-model="form.pickUpBo.deliveryAddress" type="text" />-->
<!-- </el-form-item>-->
<el-form-item :label="language==0?'备注':'Remarks'">
<el-input v-model="form.pickUpBo.remarks" rows="3" type="textarea" />
</el-form-item>
......@@ -60,19 +73,22 @@
<div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div>
<div class="border-rr mt20 pd20 ccitemBox">
<label> {{ language == 0 ? '单价' : 'Price' }}
<span class="fr">{{ language == 0 ? '¥' : '€' }}{{
language == 0 ? item.upPrice : item.upPriceEn
}}</span>
<span class="fr">{{ language == 0 ? '¥' : '€' }}
{{ language == 0 ? item.upPrice : item.upPriceEn }}
</span>
</label>
<div class="ccitem">
<span>{{ form.pickUpBo.count }} *{{
language == 0 ? '¥' : '€'
}}{{ language == 0 ? item.upPrice : item.upPriceEn }}</span>
<span>
{{ form.pickUpBo.count }} *{{ language == 0 ? '¥' : '€' }}
{{ language == 0 ? item.upPrice : item.upPriceEn }}
</span>
</div>
<label>{{ language == 0 ? '共计' : 'Total' }}<span
class="fr bigMoney"
>{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label>
<label>{{ language == 0 ? '共计' : 'Total' }}
<span class="fr bigMoney">
{{ language == 0 ? '¥' : '€' }}{{ money }}
</span>
</label>
</div>
</el-col>
......@@ -83,9 +99,12 @@
<el-row align="middle" justify="space-between">
<el-col :span="12">
<label>{{ language == 0 ? '共计金额' : 'Total' }}:
<span class=" text-warning"> {{ language == 0 ? '¥' : '€' }}<span class="bigMoney">{{
money
}}</span></span>
<span class=" text-warning">
{{ language == 0 ? '¥' : '€' }}
<span class="bigMoney">
{{ money }}
</span>
</span>
</label>
</el-col>
<el-col :span="12" class="text-right">
......@@ -105,13 +124,14 @@
<script setup>
import { useRouter, useRoute } from 'vue-router'
import { ref, onMounted, watch } from 'vue'
import { ref, onMounted, getCurrentInstance } from 'vue'
import { useStorage } from '@vueuse/core/index'
import { getBaseInfoByActiveId, submitOrderCar } from '@/apiPc/booking'
import { getBaseInfoByActiveId, submitOrderCar, vehicleConfigList } from '@/apiPc/booking'
import dayjs from 'dayjs'
import { ElMessage, ElMessageBox } from 'element-plus'
import useUserStore from '@/store/modules/user'
const { proxy } = getCurrentInstance()
const payLoading = ref(false)
const user = useUserStore().user
const language = useStorage('language', 0)
......@@ -119,17 +139,58 @@ const router = useRouter()
const route = useRoute()
const item = ref({})
const revTime1 = ref('')
const date1 = ref('')
const form = ref({
pickUpBo: {
count: 1
}
},
list: [{}]
})
const money = ref(0)
const rules = ref({})
const rules = ref({
'pickUpBo.count': {
required: true,
message: language.value == 0 ? '请输入人数' : 'Please enter the number of people',
trigger: 'blur'
},
'pickUpBo.revTime': {
required: true,
message: language.value == 0 ? '请选择时间' : 'Please select time',
trigger: 'blur'
},
'pickUpBo.contacts': {
required: true,
message: language.value == 0 ? '请输入联系人' : 'Please enter contacts',
trigger: 'blur'
},
'pickUpBo.phone': {
required: true,
message: language.value == 0 ? '请输入联系电话' : 'Please enter contact number',
trigger: 'blur'
},
'pickUpBo.no': {
required: true,
message: language.value == 0 ? '请输入航班号' : 'Please enter flight number',
trigger: 'blur'
},
name: {
required: true,
message: language.value == 0 ? '请输入姓名' : 'Please enter name',
trigger: 'blur'
},
date1: {
required: true,
message: language.value == 0 ? '请选择日期' : 'Please select date',
trigger: 'blur'
},
lvcId: {
required: true,
message: language.value == 0 ? '请选择时间' : 'Please select time ',
trigger: 'blur'
}
})
const lform = ref({})
const timeList = ref([])
onMounted(() => {
item.value = JSON.parse(decodeURIComponent(route.query.item))
......@@ -137,14 +198,22 @@ onMounted(() => {
money.value = 0
changecarNum()
initDays()
handleVehicleConfigList()
})
function changecarNum() {
money.value = (form.value.pickUpBo.count * (language.value == 0 ? item.value.upPrice : item.value.upPriceEn)).toFixed(2)
const num = form.value.pickUpBo.count
money.value = (num * (language.value == 0 ? item.value.upPrice : item.value.upPriceEn)).toFixed(2)
if (num) {
const arr = [...new Array(num).fill({})]
form.value.list = JSON.parse(JSON.stringify(arr))
}
}
function bindTimeChange(e) {
revTime1.value = e
async function handleVehicleConfigList() {
const res = await vehicleConfigList({ lavId: item.value.id })
timeList.value = res.rows
}
function initDays() {
......@@ -162,33 +231,57 @@ function disabledDate(date) {
return true
}
function submit() {
async function submit() {
await proxy.$refs['formRef'].validate()
if (!user) {
useUserStore().setReLogin()
return
}
if (money.value <= 0) {
ElMessage.error(language.value == 0 ? '请添加人数' : 'Please add the number of people')
await proxy.$modal.msgError(language.value == 0 ? '请添加人数' : 'Please add the number of people')
return
}
// 提交确认
ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
pushFrom()
})
await proxy.$modal.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?')
await pushFrom()
// await ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', {
// confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
// cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
// type: 'warning'
// }).then(() => {
// pushFrom()
// })
}
function pushFrom() {
payLoading.value = true
form.value.pickUpBo.revTime = date1.value + ' ' + revTime1.value
form.value.activeId = item.value.activityId
form.value.lavId = item.value.id
form.value.checkIn = item.value.checkIn
form.value.checkOut = item.value.checkOut
submitOrderCar(form.value).then(res => {
const checkTime = timeList.value.find(v => v.id == form.value.lvcId)
// const name = form.value.list.map(v => v.name)?.toString()
const obj = {
pickUpBo: {
revTime: form.value.date1 + ' ' + revTime1.value,
contacts: form.value.pickUpBo.contacts,
phone: form.value.pickUpBo.phone,
count: form.value.pickUpBo.count,
no: form.value.pickUpBo.no,
remarks: form.value.remarks,
lvcId: form.value.lvcId,
lvcTimes: checkTime.nameStart + '-' + checkTime.nameEnd,
customers: form.value.list
},
activeId: item.value.activityId,
lavId: item.value.id,
checkIn: item.value.checkIn,
checkOut: item.value.checkOut
}
// form.value.pickUpBo.revTime = form.value.date1 + ' ' + revTime1.value
// form.value.activeId = item.value.activityId
// form.value.lavId = item.value.id
// form.value.checkIn = item.value.checkIn
// form.value.checkOut = item.value.checkOut
submitOrderCar(obj).then(res => {
payLoading.value = false
if (res.data && res.data.total != -100) {
router.push({
......
......@@ -125,8 +125,8 @@
<p>
{{ form?.extJson?.atName }}
{{ form?.extJson?.atsName }}
<span v-if="form?.extJson?.sessionType == '1000'">{{ language==0?'日间场':'Day' }}</span>
<span v-else>{{ language==0?'夜间场':'Night' }}</span>
<span v-if="form?.extJson?.sessionType == '1000'">{{ language == 0 ? '日间场' : 'Day' }}</span>
<span v-else>{{ language == 0 ? '夜间场' : 'Night' }}</span>
{{ form?.extJson?.ticketName }}
{{ form?.num }}{{ language == 0 ? '张' : 'Tickets' }}
</p>
......@@ -161,12 +161,13 @@
language == 0 ? '联系方式' : 'Contact Information'
}}{{ form.phone }}
</el-col>
<el-col :lg="8" :md="12" :sm="12" :xs="24"/>
<el-col :lg="8" :md="12" :sm="12" :xs="24" />
</el-row>
<el-row v-if="type == 'car'">
<el-col :lg="12" :md="12" :sm="12" :xs="24">
<div class="st-info">
<div>{{ language == 0 ? '用车时间' : 'Delivery Time' }}{{ form.pickUpBo?.revTime }}</div>
<div>{{ language == 0 ? '用车日期' : 'Delivery Date' }}{{ form.pickUpBo?.revTime }}</div>
<div>{{ language == 0 ? '用车时间' : 'Delivery Time' }}{{ form.pickUpBo?.lvcTimes }}</div>
<!-- <div v-for="(car,index) in form.pickUpBo.carsList" :key="index" class="carLine">-->
<!-- <div v-if="car.num > 0">-->
<!-- <label>{{ car.name }}</label>-->
......@@ -178,15 +179,20 @@
<!-- language == 0 ? '辆' : 'Cars'-->
<!-- }} * {{ language == 0 ? '¥' : '€' }}{{ car.price }}</span>-->
<!-- </div>-->
<div>{{ language == 0 ? '人数' : 'People' }}{{ form.pickUpBo.count }}</div>
<div>{{ language == 0 ? '航班/火车班次' : 'Flight/Train' }}{{ form.pickUpBo.no }}</div>
<div>{{ language == 0 ? '接机/接站地点' : 'Pick-up/Drop-off Place' }}
{{ form.pickUpBo.noAddress }}
<div>{{ language == 0 ? '乘坐人' : 'Contacts' }}
<span v-for="v in form.pickUpBo.customers" :key="v" style="margin-right: 20px">{{ v.name }}</span>
</div>
<div>{{ language == 0 ? '送达地点' : 'Delivery Place' }}{{ form.pickUpBo.deliveryAddress }}</div>
<div>{{ language == 0 ? '人数' : 'People' }}{{ form.pickUpBo.count }}</div>
<!-- <div>{{ language == 0 ? '接机/接站地点' : 'Pick-up/Drop-off Place' }}:-->
<!-- {{ form.pickUpBo.noAddress }}-->
<!-- </div>-->
<!-- <div>{{ language == 0 ? '送达地点' : 'Delivery Place' }}{{ form.pickUpBo.deliveryAddress }}</div>-->
<div>{{ language == 0 ? '联系人' : 'Contact Person' }}{{ form.pickUpBo.contacts }}</div>
<div>{{ language == 0 ? '联系电话' : 'Contact Phone' }}{{ form.pickUpBo.phone }}</div>
<div>{{ language == 0 ? '航班/火车班次' : 'Flight/Train' }}{{ form.pickUpBo.no }}</div>
<div>{{ language == 0 ? '备注' : 'Remarks' }}{{ form.pickUpBo.remarks || '-' }}</div>
</div>
</el-col>
......@@ -266,7 +272,7 @@
</el-row>
<el-row v-if="type == 'ticket'" style="width: 100%">
<el-col :lg="12">
{{ language == 0 ? '联系人' : 'Contact' }}{{form.contacts}}
{{ language == 0 ? '联系人' : 'Contact' }}{{ form.contacts }}
</el-col>
<el-col :lg="12">
{{ language == 0 ? '联系方式' : 'Contact' }}{{ form.phone }}
......@@ -278,8 +284,8 @@
<span class="text-gray">{{ v.idCard }}</span>
</el-col>
<el-col :lg="12" :md="12" :sm="12" :xs="24" class="text-right">
<span class="text-primary" v-if="language == 0 ">{{ form.price }}</span>
<span v-else>{{ form.priceEn || 0}}</span>
<span v-if="language == 0 " class="text-primary">{{ form.price }}</span>
<span v-else>{{ form.priceEn || 0 }}</span>
</el-col>
</el-row>
<el-row style="width: 100%">
......@@ -290,8 +296,7 @@
}}{{ language == 0 ? '张' : 'Tickets' }}
</div>
</el-col>
<el-col :lg="8" :md="12" :sm="12" :xs="24">
</el-col>
<el-col :lg="8" :md="12" :sm="12" :xs="24" />
<el-col :lg="8" :md="12" :sm="12" :xs="24" class="text-right text-warning">
{{ form.paymentType == '1' ? '共计' : 'total' }}:{{
form.paymentType == '1' ? '¥' : '€'
......@@ -363,13 +368,13 @@
</div>
</el-col>
<el-col :lg="24">
<div class="text-center"/>
<div class="text-center" />
</el-col>
</el-row>
</div>
</div>
<div v-else class="pd20 skeletonBox">
<el-skeleton :rows="8"/>
<el-skeleton :rows="8" />
<el-button
:style="language == 0 ?'width:200px':'width:400px'" class="btn-lineG" round size="large"
type="primary" @click="showLogin"
......@@ -483,7 +488,7 @@
<div v-if="form.payDate&&form.viewStatus=='1'">
<div class="text-center">
<el-icon color="#32B16C" size="80">
<SuccessFilled/>
<SuccessFilled />
</el-icon>
<p class="text-success">{{ language == 0 ? '支付成功' : 'successful!' }}</p>
<h3 class="wePrice">{{ language == 0 ? '¥' : '€' }}{{ totalFee || 0 }}</h3>
......@@ -505,7 +510,7 @@
</template>
</el-result>
</div>
<Dialog ref="DialogRef"/>
<Dialog ref="DialogRef" />
<el-dialog
v-model="showSJDialog" :close-on-click-modal="false" :close-on-press-escape="false"
......@@ -514,7 +519,7 @@
<div class="flex">
<el-form-item :label="language==0?'开票人':'Name'">
<div class="flex">
<el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'"/>
<el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'" />
<el-button type="primary" @click="submitSJ">{{ language == 0 ? '提交并下载' : 'Submit' }}</el-button>
</div>
</el-form-item>
......@@ -530,22 +535,22 @@
</template>
<script setup>
import {getCurrentInstance, ref} from 'vue'
import {onMounted} from '@vue/runtime-core'
import {useRoute, useRouter} from 'vue-router'
import { getCurrentInstance, ref } from 'vue'
import { onMounted } from '@vue/runtime-core'
import { useRoute, useRouter } from 'vue-router'
import * as booking from '@/apiPc/booking'
import Dialog from '@/viewsPc/booking/component/dailog.vue'
const {proxy} = getCurrentInstance()
const { proxy } = getCurrentInstance()
const route = useRoute()
const router = useRouter()
const payType = ref('2')
const orderId = ref(route.query.orderId)
const matchId = ref()
import useUserStore from '@/store/modules/user'
import {useStorage} from '@vueuse/core/index'
import {ElMessage, ElMessageBox} from 'element-plus'
import { useStorage } from '@vueuse/core/index'
import { ElMessage, ElMessageBox } from 'element-plus'
import {
cancelOrder,
cancelOrder2,
......@@ -618,7 +623,7 @@ function getData() {
form.value = {
pickUpBo: {}
}
return booking.getCarBilldetailbyId({orderId: orderId.value}).then(res => {
return booking.getCarBilldetailbyId({ orderId: orderId.value }).then(res => {
form.value = res.data
if (language.value == 0) {
totalFee.value = res.data.total
......@@ -631,7 +636,7 @@ function getData() {
})
}
if (type.value == 'food') {
return booking.getFoodBilldetailbyId({orderId: orderId.value}).then(res => {
return booking.getFoodBilldetailbyId({ orderId: orderId.value }).then(res => {
if (language.value == 0) {
totalFee.value = res.data.total
} else {
......@@ -644,7 +649,7 @@ function getData() {
})
}
if (type.value == 'hotel') {
return booking.getRoomBilldetailbyId({orderId: orderId.value}).then(res => {
return booking.getRoomBilldetailbyId({ orderId: orderId.value }).then(res => {
if (language.value == 0) {
totalFee.value = res.data.total
} else {
......@@ -677,7 +682,7 @@ function getData() {
// 旅游订单详情
const getTravelOrderInfo = () => {
return booking.getScenicOrderInfo({orderId: orderId.value}).then(res => {
return booking.getScenicOrderInfo({ orderId: orderId.value }).then(res => {
form.value = res.data
totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn
matchId.value = form.value.activeId
......@@ -692,7 +697,7 @@ const getTravelOrderInfo = () => {
// 票务订单详情
async function getTicketOrderInfoFN() {
const res = await getTicketOrderInfo({orderId: orderId.value})
const res = await getTicketOrderInfo({ orderId: orderId.value })
form.value = res.data
form.value.extJson = JSON.parse(form.value.extJson)
try {
......@@ -708,7 +713,7 @@ async function getTicketOrderInfoFN() {
}
async function getDetail(activeId) {
const res = await getTicketInfoByActivityId({activityId: activeId})
const res = await getTicketInfoByActivityId({ activityId: activeId })
matchForm.value = res.data
console.log(matchForm.value)
}
......@@ -720,14 +725,14 @@ function goHome() {
function goPay() {
if (payType.value == '2') {
booking.createWePay({orderId: orderId.value}).then(res => {
booking.createWePay({ orderId: orderId.value }).then(res => {
wePayCodeUrl.value = res.data
hideconfirmbtn.value = true
startforGetData()
})
}
if (payType.value == '3') {
booking.createPalPay({orderId: orderId.value}).then(res => {
booking.createPalPay({ orderId: orderId.value }).then(res => {
if (res.data) {
location.href = res.data
}
......@@ -804,7 +809,7 @@ function showLogin() {
function MakeUpOrder() {
return booking.getMealOrderInfo({orderId: orderId.value}).then(res => {
return booking.getMealOrderInfo({ orderId: orderId.value }).then(res => {
form.value = res.data
totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn
matchId.value = form.value.activeId
......@@ -817,7 +822,7 @@ function MakeUpOrder() {
}
function MakeUpIno() {
booking.getMealOrderInfoByLogex({asmId: form.value.asmId}).then(res => {
booking.getMealOrderInfoByLogex({ asmId: form.value.asmId }).then(res => {
formInfo.value = res.data
console.log(res)
})
......@@ -828,7 +833,7 @@ function MakeUpIno() {
}
function ScenicInfo() {
booking.getLogexScenicVoById({id: form.value.asId}).then(res => {
booking.getLogexScenicVoById({ id: form.value.asId }).then(res => {
formInfo.value = res.data
console.log(res)
}).catch((e) => {
......@@ -839,7 +844,7 @@ function ScenicInfo() {
function photographyOrder() {
return booking.getPhotoOrderInfo({orderId: orderId.value}).then(res => {
return booking.getPhotoOrderInfo({ orderId: orderId.value }).then(res => {
form.value = res.data
totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn
photographyInfo()
......@@ -850,7 +855,7 @@ function photographyOrder() {
}
function photographyInfo() {
booking.getPhotoOrderInfoByLogex({aspId: form.value.aspId}).then(res => {
booking.getPhotoOrderInfoByLogex({ aspId: form.value.aspId }).then(res => {
formInfo.value = res.data
})
// .catch((e) => {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!