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"
>
<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>
<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>
<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)"/>
<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>
<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>
<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)" />
</div>
</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" />
</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" />
</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.
......@@ -414,7 +414,7 @@ export default {
date: '2022/11/29',
content: ''
},
Listofquotation:{
Listofquotation: {
pageTitle: '見積書です',
baojiadan: '見積書です',
dindanbaojia: 'ホテルを註文します',
......@@ -439,14 +439,14 @@ export default {
t8: '番号を変えます',
t9: '日本の口座を送金した後に直ちに情報を知らせてください、日本の旅行社の問い合わせを便利にしてくださいありがとうございます思いやり',
},
btn:{
btn: {
dayin: '印刷 です',
xiaza: '下載 です',
cjfaipiao: 'インボイスを作成します',
bjd: '見積書です'
}
},
scattered:{
scattered: {
kefang: '客室です',
chengren: '大人です',
ertong: '子供です',
......@@ -556,13 +556,13 @@ export default {
qi: 'からです',
ziying: '自営業です',
jalan: 'jalan',
zhutifea1:'駅から歩いて5分です',
zhutifea1: '駅から歩いて5分です',
zhutifea2: '温泉があります',
zhutifea3: 'ビーチまで5分です',
zhutifea4: 'チェックアウト11時以降です',
xiangqing: '詳細を見ます'
},
scatteredDetails:{
scatteredDetails: {
xiangqing: 'ホテルの詳細です',
jiudianxinxi: 'ホテル情報です',
miaoshu: 'です',
......@@ -686,7 +686,7 @@ export default {
renju: '一人当たりです',
yuyue: '予约',
},
scatteredOrder:{
scatteredOrder: {
prompt1: '13歳以上は成人扱いです',
prompt2: '成功を予約した後に部屋はあなたのために一晩中保留します',
fangxing: '部屋型です',
......@@ -766,7 +766,7 @@ export default {
notiaojian: 'このクーポンは利用条件を満たしていません!',
dindanhao: '註文番号です',
},
scatteredOrderList:{
scatteredOrderList: {
state1: '待ちます',
state2: '取引成立です',
state3: 'キャンセルしました',
......@@ -786,102 +786,136 @@ export default {
},
//#endregion
//#region v1.0.2
v102:{
ticket:{
v102: {
ticket: {
nobj: '見積もりがまだないので註文できません',
d:'入場券期日です',
d: '入場券期日です',
jq: '景観区の名称です',
hn:'チケットの名前です',
sl:'数',
starttime:'入場券の時間です',
pageTitle:'チケット検索',
name:'名前を入力してくださいです',
toggleListType1:'リストモードです',
toggleListType2:'カードモードです',
Japan:'日本です',
stoppage:'場のように停止します',
recommendTime:'お勧めします',
hn: 'チケットの名前です',
sl: '数',
starttime: '入場券の時間です',
pageTitle: 'チケット検索',
name: '名前を入力してくださいです',
toggleListType1: 'リストモードです',
toggleListType2: 'カードモードです',
Japan: '日本です',
stoppage: '場のように停止します',
recommendTime: 'お勧めします',
hour: '時間です',
minutes:'分です',
load:'画像の読み込みに失敗しました',
showtt:{
t1:'計',
t2:'種票型です'
minutes: '分です',
load: '画像の読み込みに失敗しました',
showtt: {
t1: '計',
t2: '種票型です'
},
buy:'今すぐチケットを予約します',
shortBuy:'予約です',
addr:'アドレスです',
map:'地図です',
jing:'スポットです',
detail:'景区詳細です',
d1:'オープン時間です',
d2:'景勝地の特色',
d3:'交通の説明です',
d4:'暖かい注意です',
d5:'予約事項です',
preview:{
pageTitle:'註文プレビューです'
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:'女'
ordertip: '前日の23:00までに予約をお願いします',
pt: '遊びの日です',
tt: '選択票型です',
ti: 'チケット情報です',
bc: '購入枚数ですが',
gi: 'チケットを取ります',
zq: '切符は自分で受け取ります',
yj: 'チケットを送ります',
zqs: '自己取票説明します',
zqd: '自分で指定の位置に行ってチケットを取ります、あなたが支払いを完了した後に私達はメールを通じてチケットの情報を取ることをお知らせします',
sj: 'ゲストメッセージです',
youji: 'メッセージを送ります',
unit: '枚',
sex: {
man: '男',
women: '女'
},
sjc:{
c1:'中国語の名前です',
c2:'英語の名前です',
c3:'性別です',
c4:'連絡します',
c5:'宛先です'
sjc: {
c1: '中国語の名前です',
c2: '英語の名前です',
c3: '性別です',
c4: '連絡します',
c5: '宛先です'
},
sjcp:{
c1:'中国語の名前を入力してくださいです',
c2:'英語の名前を入力してくださいです',
c4:'連絡先を入力します',
c5:'宛先を入力します'
sjcp: {
c1: '中国語の名前を入力してくださいです',
c2: '英語の名前を入力してくださいです',
c4: '連絡先を入力します',
c5: '宛先を入力します'
},
st:'勘定書を決済します',
rtt:'チケットの払い戻し制限です',
rtc:'未消費はいつでも払い戻し可能で、復数のチケットの註文は一部払い戻しをサポートしません',
ms:'チケット予約です',
nt:'選択券はありません',
ds:'総受注額です',
sb:'注文書を提出します',
or:'注文書です',
zqa:'自分でアドレスを取ります',
nzqa:'お客様サービスのご確認後、ご住所が分かりますので、至急メールにてお知らせいたします'
st: '勘定書を決済します',
rtt: 'チケットの払い戻し制限です',
rtc: '未消費はいつでも払い戻し可能で、復数のチケットの註文は一部払い戻しをサポートしません',
ms: 'チケット予約です',
nt: '選択券はありません',
ds: '総受注額です',
sb: '注文書を提出します',
or: '注文書です',
zqa: '自分でアドレスを取ります',
nzqa: 'お客様サービスのご確認後、ご住所が分かりますので、至急メールにてお知らせいたします'
},
to:{
pageTitle:'チケット註文リストです',
ticketName:'チケットネームです',
to: {
pageTitle: 'チケット註文リストです',
ticketName: 'チケットネームです',
Name: 'お客様の名前です',
qj:'チケットを取ります',
qjc:'依頼人の名前(日/英)です',
qjp:'受取人電話です',
ps:{
p1:'配送待ちです',
p2:'配達しました'
qj: 'チケットを取ります',
qjc: '依頼人の名前(日/英)です',
qjp: '受取人電話です',
ps: {
p1: '配送待ちです',
p2: '配達しました'
},
m:{
t:'受け取り方を修正します',
c:'修正を取り消します',
s:'修正を保存します'
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.
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:'種票型'
load: '圖片加載失敗',
showtt: {
t1: '共',
t2: '種票型'
},
buy:'立即订票',
shortBuy:'預訂',
addr:'地址',
map:'地圖',
jing:'景點',
detail:'景區詳情',
d1:'開放時間',
d2:'景區特色',
d3:'交通說明',
d4:'溫馨提醒',
d5:'預訂須知',
preview:{
pageTitle:'订单预览'
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:'女'
ordertip: '請在遊玩前一天的23:00前完成預訂',
pt: '遊玩日期',
tt: '選擇票型',
ti: '票券信息',
bc: '購買張數',
gi: '取票方式',
zq: '自行取票',
yj: '郵寄票券',
zqs: '自行取票說明',
zqd: '自行前往指定位置取票,當您完成付款後我們將通過郵件通知您取票的門票訊息',
sj: '客人訊息',
youji: '郵寄訊息',
unit: '張',
sex: {
man: '男',
women: '女'
},
sjc:{
c1:'中文姓名',
c2:'英文姓名',
c3:'性別',
c4:'聯絡電話',
c5:'收件地址'
sjc: {
c1: '中文姓名',
c2: '英文姓名',
c3: '性別',
c4: '聯絡電話',
c5: '收件地址'
},
sjcp:{
c1:'請輸入中文姓名',
c2:'請輸入英文姓名',
c4:'請輸入聯絡電話',
c5:'請輸入收件地址'
sjcp: {
c1: '請輸入中文姓名',
c2: '請輸入英文姓名',
c4: '請輸入聯絡電話',
c5: '請輸入收件地址'
},
st:'結算帳單',
rtt:'退票限制',
rtc:'未消費隨時可退,多張票訂單不支持部分退款',
ms:'訂票明細',
nt:'沒有選擇票券',
ds:'訂單總額',
sb:'提交訂單',
or:'訂單備註',
zqa:'自取地址',
nzqa:'等待客服確認後,才能看到自取地址,我們將會第一時間通過郵件告知您'
st: '結算帳單',
rtt: '退票限制',
rtc: '未消費隨時可退,多張票訂單不支持部分退款',
ms: '訂票明細',
nt: '沒有選擇票券',
ds: '訂單總額',
sb: '提交訂單',
or: '訂單備註',
zqa: '自取地址',
nzqa: '等待客服確認後,才能看到自取地址,我們將會第一時間通過郵件告知您'
},
to:{
pageTitle:'票券訂單列表',
ticketName:'景點名稱',
to: {
pageTitle: '票券訂單列表',
ticketName: '景點名稱',
Name: '客人名稱',
qj:'取券方式',
qjc:'取件人姓名(中/英)',
qjp:'取件人電話',
ps:{
p1:'等待配送',
p2:'已配送'
qj: '取券方式',
qjc: '取件人姓名(中/英)',
qjp: '取件人電話',
ps: {
p1: '等待配送',
p2: '已配送'
},
m:{
t:'修改取件方式',
c:'取消修改',
s:'保存修改'
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.second'),
url: '/ticket/list',
id: 8,
parentId: 7,
},
{
name: t('menu.ticket.three'),
url: '/ticket/order',
id: 9,
parentId: 7,
}
]
})
menus.push({
name:t('menu.ticket.first'),
url:'',
id:7,
parentId:0,
icon:'Shopping/Ticket.svg',
childs:[
name: t('menu.finance.first'),
url: '',
id: 10,
parentId: 0,
icon: 'Shopping/Money.svg',
childs: [
{
name:t('menu.ticket.second'),
url:'/ticket/list',
id:8,
parentId:7,
name: t('menu.finance.second'),
url: '/comingsoon',
id: 11,
parentId: 10,
},
{
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.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