Commit 488bbe9a authored by 黄奎's avatar 黄奎

车辆

parent 41ccdbfe
import { HttpResponse } from '../@types'
import request from './request'
class HotelService {
/**
* 查詢當前登入用戶的酒店訂單信息
* @param param
* @returns
*/
static async vehicletripbus(param: any): Promise<HttpResponse> {
return request('tripbus_SetTripBus', param)
}
/**
* 查詢用车类型上面
* @param param
* @returns
*/
static async TypeVehicle(param: any): Promise<HttpResponse> {
return request('tripbus_GetBusTypeList', param)
}
/**
* 查詢用车类型列表下面
* @param param
* @returns
*/
static async listTypeVehicle(param: any): Promise<HttpResponse> {
return request('tripbus_GetTripBusUseType', param)
}
/**
* 查詢用车类预定列表
* @param param
* @returns
*/
static async vehicleList(param: any): Promise<HttpResponse> {
return request('tripbus_GetTripBusPage', param)
}
/**
* 修改查詢用车类详情
* @param param
* @returns
*/
static async VehicleDetails(Id: number): Promise<HttpResponse> {
return request('tripbus_GetTripBusInfo', { Id })
}
/**
* 取消用车
* @param param
* @returns
*/
static async cancellation(Id: number, CancelRemark: any): Promise<HttpResponse> {
return request('tripbus_CancelBusTrip', { Id, CancelRemark })
}
}
export default HotelService
\ No newline at end of file
<template>
<div class="full-height column hotel-list">
<q-table v-if="$q.platform.is.desktop" :loading="loading" :rows="hotels" :loading-label="$t('loading')" class="sticky-column-table col sticky-header-column-table hotel-table" flat :pagination="pages" :no-data-label="$t('noneData')">
<q-table v-if="$q.platform.is.desktop" :loading="loading" :rows="hotels" :loading-label="$t('loading')"
class="sticky-column-table col sticky-header-column-table hotel-table" flat :pagination="pages"
:no-data-label="$t('noneData')">
<template v-slot:top>
<div class="row full-width">
<div class="col"></div>
......@@ -17,13 +19,15 @@
<q-th v-for="(x, i) in cols">
{{ x }}
</q-th>
<q-th>{{$t('hotel.addRoomBtn')}}</q-th>
<q-th>{{ $t('hotel.addRoomBtn') }}</q-th>
</q-tr>
</template>
<template v-slot:body="props">
<q-tr :props="props">
<q-td style="width:200px">
<div class="ellipsis-3-lines" style="padding: 7px 16px;width: 200px;white-space: break-spaces;">{{ props.row.HotelName }}</div>
<div class="ellipsis-3-lines" style="padding: 7px 16px;width: 200px;white-space: break-spaces;">{{
props.row.HotelName
}}</div>
</q-td>
<q-td>
<div class="td-item">{{ $t('hotel.table.price') }}</div>
......@@ -50,47 +54,44 @@
</div>
</q-td>
<q-td class="text-center" style="border-left:1px solid #eee;">
<q-btn color="primary" :label="$t('hotel.addRoom')" size="sm" outline @click="finishHanler(props.row)"/>
<q-btn color="primary" :label="$t('hotel.addRoom')" size="sm" outline @click="finishHanler(props.row)" />
</q-td>
</q-tr>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="pages.pageIndex" color="primary" :max="pages.pageCount" :input="true" @update:model-value="changePageHandler" />
<q-pagination class="full-width justify-end" v-model="pages.pageIndex" color="primary" :max="pages.pageCount"
:input="true" @update:model-value="changePageHandler" />
</template>
</q-table>
<q-table
hide-header
v-else
:rows="hotels"
grid
:columns="mobileCols"
row-key="name"
card-class="no-shadow bg-primary text-white col"
:pagination="pages"
:loading="loading"
>
<q-table hide-header v-else :rows="hotels" grid :columns="mobileCols" row-key="name"
card-class="no-shadow bg-primary text-white col" :pagination="pages" :loading="loading">
<template v-slot:item="props">
<div @click="viewHotelPriceListHandler(props.row)" class="rounded-borders bg-primary text-white col-12 q-mb-sm" style="padding: 12px;margin-left: 12px;margin-right: 12px; width: calc(100% - 24px);">
<div @click="viewHotelPriceListHandler(props.row)" class="rounded-borders bg-primary text-white col-12 q-mb-sm"
style="padding: 12px;margin-left: 12px;margin-right: 12px; width: calc(100% - 24px);">
<div>
<div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{$t('hotel.col.first')}}</div>
<div style="font-size: 13px;">{{props.row.HotelName}}</div>
<div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{ $t('hotel.col.first') }}
</div>
<div style="font-size: 13px;">{{ props.row.HotelName }}</div>
</div>
<div class="q-my-md">
<div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{$t('hotel.col.three')}}</div>
<div style="font-size: 13px;">{{props.row.TotalInventory}}</div>
<div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{ $t('hotel.col.three') }}
</div>
<div style="font-size: 13px;">{{ props.row.TotalInventory }}</div>
</div>
<div>
<div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{$t('hotel.col.four')}}</div>
<div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{ $t('hotel.col.four') }}
</div>
<div class="row items-center justify-between">
<span>{{props.row.LowerPrice.toFixed(2)}}{{$t('unit.jp')}} {{$t('hotel.col.low')}}</span>
<q-btn color="grey-3" :label="$t('hotel.addRoom')" size="sm" outline @click="finishHanler(props.row)"/>
<span>{{ props.row.LowerPrice.toFixed(2) }}{{ $t('unit.jp') }} {{ $t('hotel.col.low') }}</span>
<q-btn color="grey-3" :label="$t('hotel.addRoom')" size="sm" outline @click="finishHanler(props.row)" />
</div>
</div>
</div>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="pages.pageIndex" color="primary" :max="pages.pageCount" :input="true" @update:model-value="changePageHandler" />
<q-pagination class="full-width justify-end" v-model="pages.pageIndex" color="primary" :max="pages.pageCount"
:input="true" @update:model-value="changePageHandler" />
</template>
</q-table>
<q-dialog v-model="showPriceList">
......@@ -105,7 +106,7 @@ import HotelService from '../../../api/hotel'
import { DirtionmaryHelper } from '../../../config/dictionary'
import message from '../../../utils/message'
import { defineComponent, inject, reactive, toRefs, watch } from 'vue'
import { date,useQuasar } from 'quasar'
import { date, useQuasar } from 'quasar'
import { DateType, getDateType, getDayOfWeek } from '../../../utils/tools'
import { useI18n } from 'vue-i18n'
import HotelPriceList from '../list/HotelPriceList.vue'
......@@ -113,9 +114,9 @@ import SamplePriceList from '../list/SamplePriceList.vue'
export default defineComponent({
components: { HotelPriceList, SamplePriceList },
name: 'list-table',
emits:['finish'],
setup(props,context) {
const $q=useQuasar()
emits: ['finish'],
setup(props, context) {
const $q = useQuasar()
const { t } = useI18n()
const search = inject(DirtionmaryHelper.HOTEL_QUERY_PARAM) as any
watch(search, (n, o) => {
......@@ -137,13 +138,13 @@ export default defineComponent({
},
pageTitle: '' as (string | undefined),
dateTypes: [] as Array<DateType>,
mobileCols:[
{name:'HotelName',label:t('hotel.col.first'),field:(row:any)=>row.HotelName},
{name:'TotalInventory',label:t('hotel.col.three'),field:(row:any)=>row.TotalInventory},
{name:'LowerPrice',label:t('hotel.col.four'),field:(row:any)=>row.LowerPrice}
mobileCols: [
{ name: 'HotelName', label: t('hotel.col.first'), field: (row: any) => row.HotelName },
{ name: 'TotalInventory', label: t('hotel.col.three'), field: (row: any) => row.TotalInventory },
{ name: 'LowerPrice', label: t('hotel.col.four'), field: (row: any) => row.LowerPrice }
],
showPriceList:false,
queryHotelObj:{}
showPriceList: false,
queryHotelObj: {}
})
......@@ -164,11 +165,11 @@ export default defineComponent({
y.PriceList.forEach((z: any) => {
z.ins = methods.getDateTypeById(z.InventoryType)
})
let cd=new Date(y.DateStr)
y.FormatDate=`${date.formatDate(cd, 'MM/DD')} (${getDayOfWeek(date.getDayOfWeek(cd))})`
let cd = new Date(y.DateStr)
y.FormatDate = `${date.formatDate(cd, 'MM/DD')} (${getDayOfWeek(date.getDayOfWeek(cd))})`
})
if($q.platform.is.mobile){
x.LowerPrice=methods.calcLowerPrice(x)
if ($q.platform.is.mobile) {
x.LowerPrice = methods.calcLowerPrice(x)
}
})
......@@ -202,28 +203,28 @@ export default defineComponent({
getDateTypeById(id: number) {
return data.dateTypes.find(x => x.id == id)
},
calcLowerPrice(hotel:any){
let lower=0
hotel.subList.forEach((x:any)=>{
if(x.PriceList &&x.PriceList.length>0){
x.PriceList.forEach((y:any)=>{
if(y.CostPrice>lower) lower= y.CostPrice
calcLowerPrice(hotel: any) {
let lower = 0
hotel.subList.forEach((x: any) => {
if (x.PriceList && x.PriceList.length > 0) {
x.PriceList.forEach((y: any) => {
if (y.CostPrice > lower) lower = y.CostPrice
})
}
})
return lower
},
viewHotelPriceListHandler(row:any){
viewHotelPriceListHandler(row: any) {
data.queryHotelObj = row
data.showPriceList = true
},
finishHanler(hotel:any){
context.emit('finish',hotel)
finishHanler(hotel: any) {
context.emit('finish', hotel)
}
}
methods.calcDateRangeCols()
methods.initHotels()
return { ...toRefs(data), ...methods,search }
return { ...toRefs(data), ...methods, search }
}
})
</script>
......@@ -234,6 +235,7 @@ export default defineComponent({
height: 14px;
border-radius: 4px;
}
.td-item {
width: 100%;
height: 35px;
......@@ -244,12 +246,15 @@ export default defineComponent({
text-align: center;
border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}
.td-item:last-child {
border-bottom: none;
}
.hotel-table .q-table td {
padding: 0 !important;
}
/* .td-item.cursor-pointer:hover{
color: var(--q-primary) !important;
} */
......
......@@ -2,16 +2,20 @@
<q-card flat class="light-shadow rounded-border window-width q-pa-none">
<q-card-section class="q-pa-sm">
<div class="text-h6">{{ h.HotelName }}</div>
<div class="f12 text-grey-5">{{ `${search.StartDate} ${$t('hotel.col.zhi')} ${search.EndDate}` }} {{ $t('hotel.pricetips') }}</div>
<div class="f12 text-grey-5">{{ `${search.StartDate} ${$t('hotel.col.zhi')} ${search.EndDate}` }} {{
$t('hotel.pricetips')
}}</div>
</q-card-section>
<div style="max-height: 60vh; overflow-y: auto" class="q-pa-sm">
<template v-for="x in h.subList">
<div class="rounded-borders q-pa-sm q-mt-md" v-if="x.PriceList && x.PriceList.length > 0" :class="[x.PriceList[0].ins.bg, x.PriceList[0].ins.color]">
<div class="rounded-borders q-pa-sm q-mt-md" v-if="x.PriceList && x.PriceList.length > 0"
:class="[x.PriceList[0].ins.bg, x.PriceList[0].ins.color]">
<div class="row items-center">
<div class="text-subtitle2 col">
{{ x.FormatDate }}
</div>
<div class="f12" style="opacity: 0.5" :class="[x.PriceList[0].ins.color]">{{ x.PriceList[0].ins.text }}</div>
<div class="f12" style="opacity: 0.5" :class="[x.PriceList[0].ins.color]">{{ x.PriceList[0].ins.text }}
</div>
</div>
<!-- <q-separator color="white" style="opacity: .3;"/> -->
<div class="row justify-between q-pb-sm" style="border-bottom: 1px dashed rgba(255, 255, 255, 0.2)">
......@@ -36,13 +40,15 @@
<div class="price-item">
<div class="label">{{ $t('hotel.col.five') }}</div>
<div class="row items-center">
<div class="din">{{ x.PriceList[0].CostPrice.toFixed(2) }}{{$t('unit.jp')}}</div>
<div class="din">{{ x.PriceList[0].CostPrice.toFixed(2) }}{{ $t('unit.jp') }}</div>
<!-- <div class="q-ml-md" style="font-size: 12px; opacity: 0.5">{{ $t('hotel.col.more') }}</div> -->
</div>
</div>
<q-btn color="color" v-if="!search.SearchByUpdate" :label="$t('hotel.buy')" class="q-pa-none q-px-md" dense outline style="opacity: 0.5" @click="showOrderSubmitHandler(h,x)"/>
<q-btn color="color" v-if="!search.SearchByUpdate" :label="$t('hotel.buy')" class="q-pa-none q-px-md" dense
outline style="opacity: 0.5" @click="showOrderSubmitHandler(h, x)" />
</div>
<div class="row justify-between q-mt-md q-pa-sm rounded-borders" style="background:rgba(255,255,255,.3)" v-if="x.PriceList[0].room.length>0">
<div class="row justify-between q-mt-md q-pa-sm rounded-borders" style="background:rgba(255,255,255,.3)"
v-if="x.PriceList[0].room.length > 0">
<div class="price-item q-ma-none" v-for="y in x.PriceList[0].room">
<div class="label">{{ y.name }}</div>
<div class="f12">{{ y.price.toFixed(2) }}</div>
......@@ -85,10 +91,10 @@ export default defineComponent({
const search = inject(DirtionmaryHelper.HOTEL_QUERY_PARAM) as any
const methods = {
showOrderSubmitHandler(row:any,col:any){
context.emit('update:modelValue',row,col)
showOrderSubmitHandler(row: any, col: any) {
context.emit('update:modelValue', row, col)
},
setCurrentHotel(hotel:any) {
setCurrentHotel(hotel: any) {
hotel.subList.forEach((x: any) => {
x.ShowMorePrice = false
if (x.PriceList && x.PriceList.length > 0) {
......@@ -136,6 +142,7 @@ export default defineComponent({
.price-item {
margin-top: 8px;
}
.price-item .label {
opacity: 0.5;
font-size: 12px;
......
This diff is collapsed.
<template>
<div class="rounded-borders bg-white row items-center q-pa-md">
<q-select v-if="$q.platform.is.desktop" class="q-mr-md" v-model="search.OrderStatus" @update:model-value="setOrderStatus" dense :options="status" emit-value option-label="StatusName" option-value="StatusId" map-options :label="$t('hotelorder.search.status')" standout />
<q-input v-if="$q.platform.is.desktop" class="q-mr-md" v-model="search.OrderNo" dense standout :label="$t('hotelorder.search.orderNum')" />
<q-field v-if="$q.platform.is.desktop" clearable v-model="dateRangeFormat" :label="$t('hotelorder.search.daterange')" standout class="col-2" style="min-width: 190px" dense>
<q-select v-if="$q.platform.is.desktop" class="q-mr-md" v-model="search.OrderStatus"
@update:model-value="setOrderStatus" dense :options="status" emit-value option-label="StatusName"
option-value="StatusId" map-options :label="$t('hotelorder.search.status')" standout />
<q-input v-if="$q.platform.is.desktop" class="q-mr-md" v-model="search.OrderNo" dense standout
:label="$t('hotelorder.search.orderNum')" />
<q-field v-if="$q.platform.is.desktop" clearable v-model="dateRangeFormat"
:label="$t('hotelorder.search.daterange')" standout class="col-2" style="min-width: 190px" dense>
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" landscape @range-end="dateRangeHandler"></q-date>
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" landscape
@range-end="dateRangeHandler"></q-date>
</q-popup-proxy>
</q-field>
<div class="col"></div>
<q-btn unelevated class="bg-grey-3 hover q-mr-md" :title="$t('morequery')">
<q-badge rounded class="din bg-red-2 text-red-14 text-weight-bold" floating :label="searchCnt" v-if="searchCnt > 0" />
<q-badge rounded class="din bg-red-2 text-red-14 text-weight-bold" floating :label="searchCnt"
v-if="searchCnt > 0" />
<svg-icon color="dark" icon="Text/Filter.svg" :tips="$t('morequery')" :size="20"></svg-icon>
<q-tooltip>{{ $t('morequery') }}</q-tooltip>
<q-popup-proxy class="no-shadow" style="box-shadow: 0 0 50px #ddd !important" :offset="[0, 20]" :model-value="canHide">
<q-popup-proxy class="no-shadow" style="box-shadow: 0 0 50px #ddd !important" :offset="[0, 20]"
:model-value="canHide">
<q-card class="q-pa-md rounded-borders" style="width: 300px">
<div class="q-mb-md text-subtitle2">{{ $t('morequery') }}</div>
<div class="q-mt-md row">
<q-input v-model="search.OrderNo" dense standout :label="$t('hotelorder.search.orderNum')" class="mobile-only col q-mr-md" />
<q-input v-model="search.OrderNo" dense standout :label="$t('hotelorder.search.orderNum')"
class="mobile-only col q-mr-md" />
<q-input v-model="search.OrderId" dense standout :label="$t('hotelorder.search.orderId')" class="col" />
</div>
<div class="mobile-only q-mt-md">
<q-field clearable v-model="dateRangeFormat" :label="$t('hotelorder.search.daterange')" standout style="min-width: 190px" dense>
<q-field clearable v-model="dateRangeFormat" :label="$t('hotelorder.search.daterange')" standout
style="min-width: 190px" dense>
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" @range-end="dateRangeHandler"></q-date>
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD"
@range-end="dateRangeHandler"></q-date>
</q-popup-proxy>
</q-field>
</div>
<q-select class="q-mt-md" v-model="search.RoomType" dense :options="rooms" emit-value option-label="TypeName" option-value="TypeId" map-options :label="$t('hotelorder.search.roomType')" standout />
<q-select class="q-mt-md" v-model="search.OrderType" dense :options="orderTypes" emit-value option-label="TypeName" option-value="TypeId" map-options :label="$t('hotelorder.search.orderType')" standout />
<q-input v-model="search.TCNum" dense standout :label="$t('hotelorder.search.tcNum')" class="q-mt-md" v-if="search.OrderType==2"/>
<q-input v-model="search.ContactName" :placeholder="$t('hotelorder.search.contactInfoHolder')" dense standout :label="$t('hotelorder.search.contactInfo')" class="q-mt-md" v-if="search.OrderType==1"/>
<q-select class="q-mt-md" v-model="search.RoomType" dense :options="rooms" emit-value option-label="TypeName"
option-value="TypeId" map-options :label="$t('hotelorder.search.roomType')" standout />
<q-select class="q-mt-md" v-model="search.OrderType" dense :options="orderTypes" emit-value
option-label="TypeName" option-value="TypeId" map-options :label="$t('hotelorder.search.orderType')"
standout />
<q-input v-model="search.TCNum" dense standout :label="$t('hotelorder.search.tcNum')" class="q-mt-md"
v-if="search.OrderType == 2" />
<q-input v-model="search.ContactName" :placeholder="$t('hotelorder.search.contactInfoHolder')" dense standout
:label="$t('hotelorder.search.contactInfo')" class="q-mt-md" v-if="search.OrderType == 1" />
</q-card>
</q-popup-proxy>
</q-btn>
<q-btn unelevated class="bg-blue-1 text-primary hover q-mr-md" :label="$t('hotelorder.recovery')" />
<q-btn color="primary" unelevated :label="$t('query')" @click="setQueryHandler"/>
<q-btn color="primary" unelevated :label="$t('query')" @click="setQueryHandler" />
</div>
<div class="rounded-borders bg-white q-pa-sm q-mt-md mobile-only">
<q-tabs v-model="search.OrderStatus" class="text-cyan" dense>
<q-tab :name="x.StatusId" :label="x.StatusName" v-for="x in status" @click="setOrderStatus(x.StatusId)"/>
<q-tab :name="x.StatusId" :label="x.StatusName" v-for="x in status" @click="setOrderStatus(x.StatusId)" />
</q-tabs>
</div>
</template>
......@@ -50,7 +65,7 @@ import { DirtionmaryHelper } from '../../../../config/dictionary'
import { computed, defineComponent, inject, reactive, ref, toRefs } from 'vue'
import { OrderType, RoomType, StandardStatus } from '../../../../@types'
import { getHotelOrderStatus, getHotelOrderType, getHotelRoomType } from '../../../../utils/tools'
import { date,useQuasar } from 'quasar'
import { date, useQuasar } from 'quasar'
import svgIcon from '../../../global/svg-icon.vue'
export default defineComponent({
......@@ -91,21 +106,21 @@ export default defineComponent({
data.dateRangeFormat = `${search.StartTime} - ${search.EndTime} `
if (qDateProxy.value) qDateProxy.value.hide()
},
setQueryHandler(){
realSearch.OrderId=search.OrderId
realSearch.RoomType=search.RoomType
realSearch.StartTime=search.StartTime
realSearch.EndTime=search.EndTime
realSearch.OrderStatus=search.OrderStatus
realSearch.OrderNo=search.OrderNo
realSearch.OrderType=search.OrderType
realSearch.TCNum=search.TCNum
realSearch.ContactName=search.ContactName
realSearch.ContactNumber=search.ContactName
setQueryHandler() {
realSearch.OrderId = search.OrderId
realSearch.RoomType = search.RoomType
realSearch.StartTime = search.StartTime
realSearch.EndTime = search.EndTime
realSearch.OrderStatus = search.OrderStatus
realSearch.OrderNo = search.OrderNo
realSearch.OrderType = search.OrderType
realSearch.TCNum = search.TCNum
realSearch.ContactName = search.ContactName
realSearch.ContactNumber = search.ContactName
console.log(realSearch)
},
setOrderStatus(statusId:number){
realSearch.OrderStatus=statusId
setOrderStatus(statusId: number) {
realSearch.OrderStatus = statusId
}
}
......@@ -116,11 +131,11 @@ export default defineComponent({
if (search.StartTime.length > 0) setCnt++
if (search.OrderNo > 0) setCnt++
}
if (search.OrderId.length>0) setCnt++
if (search.OrderId.length > 0) setCnt++
if (search.RoomType > 0) setCnt++
if (search.OrderType > 0) setCnt++
if (search.OrderType == 1 && search.ContactName.length>0) setCnt++
if (search.OrderType == 2 && search.TCNum.length>0) setCnt++
if (search.OrderType == 1 && search.ContactName.length > 0) setCnt++
if (search.OrderType == 2 && search.TCNum.length > 0) setCnt++
return setCnt
})
......@@ -135,4 +150,6 @@ export default defineComponent({
})
</script>
<style></style>
<style>
</style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
export default {
//#region ending v1.0.0
failed: '執行失敗',
......@@ -399,7 +400,7 @@ export default {
//eg:
//#region v1.0.1
v101:{
v101: {
downloadHands: '下載手佩書',
noneHands: '手佩書未生成',
hotelTips: '酒店溫馨提醒',
......@@ -410,11 +411,11 @@ export default {
hotelRemark: '備註',
cancelRemark: '取消備註',
selfCancle: '客戶自己取消了訂單',
versonDetails:{
versonDetails: {
date: '2022/11/29',
content: ''
},
Listofquotation:{
Listofquotation: {
pageTitle: '報價單',
baojiadan: '報價單',
dindanbaojia: '酒店訂單報價',
......@@ -439,14 +440,14 @@ export default {
t8: '重新番号',
t9: '汇款日本账户后请及时告知信息,方便日本旅行社查询谢谢体谅',
},
btn:{
btn: {
dayin: '打印',
xiaza: '下載',
cjfaipiao: '創建發票',
bjd: '報價單'
}
},
scattered:{
scattered: {
kefang: '客房',
chengren: '成人',
ertong: '兒童',
......@@ -562,7 +563,7 @@ export default {
zhutifea4: '退房11點以後',
xiangqing: '查看詳情'
},
scatteredDetails:{
scatteredDetails: {
xiangqing: '酒店詳情',
jiudianxinxi: '酒店信息',
miaoshu: '描述',
......@@ -686,7 +687,7 @@ export default {
renju: '人均',
yuyue: '預約',
},
scatteredOrder:{
scatteredOrder: {
prompt1: '超過13歲視為成人處理',
prompt2: '預定成功後房間將為您整晚保留',
fangxing: '房型',
......@@ -766,7 +767,7 @@ export default {
notiaojian: '該優惠券不滿足使用條件!',
dindanhao: '訂單號',
},
scatteredOrderList:{
scatteredOrderList: {
state1: '待付款',
state2: '交易成功',
state3: '已取消',
......@@ -786,102 +787,136 @@ export default {
},
//#endregion
//#region v1.0.2
v102:{
ticket:{
v102: {
ticket: {
nobj: '暫無報價,不能下單',
d: '日期',
jq: '景區名稱',
hn: '票券名稱',
sl: '数量',
starttime:'门票時間',
pageTitle:"票券檢索",
name:'請輸入景點名稱',
toggleListType1:"列表模式",
toggleListType2:"卡片模式",
starttime: '门票時間',
pageTitle: "票券檢索",
name: '請輸入景點名稱',
toggleListType1: "列表模式",
toggleListType2: "卡片模式",
Japan: '日本',
stoppage:'停止如場',
stoppage: '停止如場',
recommendTime: '推薦遊玩',
hour: '小時',
minutes: '分鐘',
load:'圖片加載失敗',
showtt:{
t1:'共',
t2:'種票型'
},
buy:'立即订票',
shortBuy:'預訂',
addr:'地址',
map:'地圖',
jing:'景點',
detail:'景區詳情',
d1:'開放時間',
d2:'景區特色',
d3:'交通說明',
d4:'溫馨提醒',
d5:'預訂須知',
preview:{
pageTitle:'订单预览'
},
ordertip:'請在遊玩前一天的23:00前完成預訂',
pt:'遊玩日期',
tt:'選擇票型',
ti:'票券信息',
bc:'購買張數',
gi:'取票方式',
zq:'自行取票',
yj:'郵寄票券',
zqs:'自行取票說明',
zqd:'自行前往指定位置取票,當您完成付款後我們將通過郵件通知您取票的門票訊息',
sj:'客人訊息',
youji:'郵寄訊息',
unit:'張',
sex:{
man:'男',
women:'女'
},
sjc:{
c1:'中文姓名',
c2:'英文姓名',
c3:'性別',
c4:'聯絡電話',
c5:'收件地址'
},
sjcp:{
c1:'請輸入中文姓名',
c2:'請輸入英文姓名',
c4:'請輸入聯絡電話',
c5:'請輸入收件地址'
},
st:'結算帳單',
rtt:'退票限制',
rtc:'未消費隨時可退,多張票訂單不支持部分退款',
ms:'訂票明細',
nt:'沒有選擇票券',
ds:'訂單總額',
sb:'提交訂單',
or:'訂單備註',
zqa:'自取地址',
nzqa:'等待客服確認後,才能看到自取地址,我們將會第一時間通過郵件告知您'
},
to:{
pageTitle:'票券訂單列表',
ticketName:'景點名稱',
load: '圖片加載失敗',
showtt: {
t1: '共',
t2: '種票型'
},
buy: '立即订票',
shortBuy: '預訂',
addr: '地址',
map: '地圖',
jing: '景點',
detail: '景區詳情',
d1: '開放時間',
d2: '景區特色',
d3: '交通說明',
d4: '溫馨提醒',
d5: '預訂須知',
preview: {
pageTitle: '订单预览'
},
ordertip: '請在遊玩前一天的23:00前完成預訂',
pt: '遊玩日期',
tt: '選擇票型',
ti: '票券信息',
bc: '購買張數',
gi: '取票方式',
zq: '自行取票',
yj: '郵寄票券',
zqs: '自行取票說明',
zqd: '自行前往指定位置取票,當您完成付款後我們將通過郵件通知您取票的門票訊息',
sj: '客人訊息',
youji: '郵寄訊息',
unit: '張',
sex: {
man: '男',
women: '女'
},
sjc: {
c1: '中文姓名',
c2: '英文姓名',
c3: '性別',
c4: '聯絡電話',
c5: '收件地址'
},
sjcp: {
c1: '請輸入中文姓名',
c2: '請輸入英文姓名',
c4: '請輸入聯絡電話',
c5: '請輸入收件地址'
},
st: '結算帳單',
rtt: '退票限制',
rtc: '未消費隨時可退,多張票訂單不支持部分退款',
ms: '訂票明細',
nt: '沒有選擇票券',
ds: '訂單總額',
sb: '提交訂單',
or: '訂單備註',
zqa: '自取地址',
nzqa: '等待客服確認後,才能看到自取地址,我們將會第一時間通過郵件告知您'
},
to: {
pageTitle: '票券訂單列表',
ticketName: '景點名稱',
Name: '客人名稱',
qj:'取券方式',
qjc:'取件人姓名(中/英)',
qjp:'取件人電話',
ps:{
p1:'等待配送',
p2:'已配送'
},
m:{
t:'修改取件方式',
c:'取消修改',
s:'保存修改'
qj: '取券方式',
qjc: '取件人姓名(中/英)',
qjp: '取件人電話',
ps: {
p1: '等待配送',
p2: '已配送'
},
m: {
t: '修改取件方式',
c: '取消修改',
s: '保存修改'
},
},
vehicle: {
title: '客戶訂車確認單(小車)',
title1: "訂車單位",
title2: "訂車人",
title3: "接機信息",
title4: "去程航班",
title5: "回程航班",
title6: "用車人數",
title7: "開始日期",
title8: "行程天數",
title9: "用車類型",
title10: "導遊信息",
title11: "团队信息",
title12: "創建時間",
title13: "車型選擇",
title14: "接送機時間",
tatle: {
th1: '日期',
th2: '第幾天',
th3: '用車類型',
th4: '行程信息',
},
add: '添加',
add2: '修改',
add3: '取消用車',
add4: '原因',
add5: '確定',
list: {
s1: '用車公司',
s2: '用車人',
s3: '團隊名稱',
s4: '請選擇預定日期',
s5: '编辑',
}
}
},
//#endregion
}
This diff is collapsed.
......@@ -17,8 +17,9 @@ const routes: RouteRecordRaw[] = [
{ path: '/scattered/HotelOrder', component: () => import('pages/scattered/HotelOrder.vue') },
{ path: '/comingsoon', component: () => import('pages/ComingSoon.vue') },
{ path: '/ticket/list', component: () => import('pages/ticket/TicketList.vue') },
{path: '/ticket/preview/:ticketId/:Time', component: () => import('pages/ticket/TicketOrderPreview.vue')},
{path: '/ticket/order', component: () => import('pages/ticket/TicketOrder.vue')}
{ path: '/ticket/preview/:ticketId/:Time', component: () => import('pages/ticket/TicketOrderPreview.vue') },
{ path: '/ticket/order', component: () => import('pages/ticket/TicketOrder.vue') },
{ path: '/vehicle/index', component: () => import('pages/vehicle/index.vue') }//车辆
]
},
{
......
import { i18n } from '../boot/i18n'
interface Menu {
name:string,
url:string,
id:number,
parentId:number,
icon?:string,
childs?:Menu []
name: string,
url: string,
id: number,
parentId: number,
icon?: string,
childs?: Menu[]
}
const {t} =i18n.global
const useMenus={
getMenus():Menu[]{
let menus=[] as Menu[]
const { t } = i18n.global
const useMenus = {
getMenus(): Menu[] {
let menus = [] as Menu[]
menus.push({
name:t('menu.hotel.first'),
url:'',
id:1,
parentId:0,
icon:'Home/Building.svg',
childs:[
name: t('menu.hotel.first'),
url: '',
id: 1,
parentId: 0,
icon: 'Home/Building.svg',
childs: [
{
name:t('menu.hotel.second'),
url:'/hotel',
id:2,
parentId:1,
name: t('menu.hotel.second'),
url: '/hotel',
id: 2,
parentId: 1,
},
{
name:t('menu.hotel.three'),
url:'/hotel/order',
id:3,
parentId:1,
name: t('menu.hotel.three'),
url: '/hotel/order',
id: 3,
parentId: 1,
}
]
})
menus.push({
name:t('menu.scattered.first'),
url:'',
id:13,
parentId:0,
icon:'scattered/The.svg',
childs:[
name: t('menu.scattered.first'),
url: '',
id: 13,
parentId: 0,
icon: 'scattered/The.svg',
childs: [
{
name:t('menu.scattered.second'),
url:'/scattered',
id:14,
parentId:13,
name: t('menu.scattered.second'),
url: '/scattered',
id: 14,
parentId: 13,
},
{
name:t('menu.scattered.three'),
url:'/scattered/HotelOrder',
id:15,
parentId:13,
name: t('menu.scattered.three'),
url: '/scattered/HotelOrder',
id: 15,
parentId: 13,
}
]
})
menus.push({
name:t('menu.car.first'),
url:'',
id:4,
parentId:0,
icon:'Electric/Iron.svg',
childs:[
name: t('menu.car.first'),
url: '',
id: 4,
parentId: 0,
icon: 'Electric/Iron.svg',
childs: [
{
name:t('menu.car.second'),
url:'/comingsoon',
id:5,
parentId:4,
name: t('menu.car.second'),
url: '/vehicle/index',
id: 5,
parentId: 4,
},
{
name:t('menu.car.three'),
url:'/comingsoon',
id:6,
parentId:4,
name: t('menu.car.three'),
url: '/comingsoon',
id: 6,
parentId: 4,
}
]
}),
menus.push({
name:t('menu.ticket.first'),
url:'',
id:7,
parentId:0,
icon:'Shopping/Ticket.svg',
childs:[
name: t('menu.ticket.first'),
url: '',
id: 7,
parentId: 0,
icon: 'Shopping/Ticket.svg',
childs: [
{
name:t('menu.ticket.second'),
url:'/ticket/list',
id:8,
parentId:7,
name: t('menu.ticket.second'),
url: '/ticket/list',
id: 8,
parentId: 7,
},
{
name:t('menu.ticket.three'),
url:'/ticket/order',
id:9,
parentId:7,
name: t('menu.ticket.three'),
url: '/ticket/order',
id: 9,
parentId: 7,
}
]
})
menus.push({
name:t('menu.finance.first'),
url:'',
id:10,
parentId:0,
icon:'Shopping/Money.svg',
childs:[
name: t('menu.finance.first'),
url: '',
id: 10,
parentId: 0,
icon: 'Shopping/Money.svg',
childs: [
{
name:t('menu.finance.second'),
url:'/comingsoon',
id:11,
parentId:10,
name: t('menu.finance.second'),
url: '/comingsoon',
id: 11,
parentId: 10,
},
{
name:t('menu.finance.three'),
url:'/comingsoon',
id:12,
parentId:10,
name: t('menu.finance.three'),
url: '/comingsoon',
id: 12,
parentId: 10,
}
]
})
return menus
}
}
export {useMenus, type Menu}
export { useMenus, type Menu }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment