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> <template>
<div class="full-height column hotel-list"> <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> <template v-slot:top>
<div class="row full-width"> <div class="row full-width">
<div class="col"></div> <div class="col"></div>
...@@ -17,13 +19,15 @@ ...@@ -17,13 +19,15 @@
<q-th v-for="(x, i) in cols"> <q-th v-for="(x, i) in cols">
{{ x }} {{ x }}
</q-th> </q-th>
<q-th>{{$t('hotel.addRoomBtn')}}</q-th> <q-th>{{ $t('hotel.addRoomBtn') }}</q-th>
</q-tr> </q-tr>
</template> </template>
<template v-slot:body="props"> <template v-slot:body="props">
<q-tr :props="props"> <q-tr :props="props">
<q-td style="width:200px"> <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>
<q-td> <q-td>
<div class="td-item">{{ $t('hotel.table.price') }}</div> <div class="td-item">{{ $t('hotel.table.price') }}</div>
...@@ -50,47 +54,44 @@ ...@@ -50,47 +54,44 @@
</div> </div>
</q-td> </q-td>
<q-td class="text-center" style="border-left:1px solid #eee;"> <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-td>
</q-tr> </q-tr>
</template> </template>
<template v-slot:bottom> <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> </template>
</q-table> </q-table>
<q-table <q-table hide-header v-else :rows="hotels" grid :columns="mobileCols" row-key="name"
hide-header card-class="no-shadow bg-primary text-white col" :pagination="pages" :loading="loading">
v-else <template v-slot:item="props">
:rows="hotels" <div @click="viewHotelPriceListHandler(props.row)" class="rounded-borders bg-primary text-white col-12 q-mb-sm"
grid style="padding: 12px;margin-left: 12px;margin-right: 12px; width: calc(100% - 24px);">
:columns="mobileCols" <div>
row-key="name" <div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{ $t('hotel.col.first') }}
card-class="no-shadow bg-primary text-white col" </div>
:pagination="pages" <div style="font-size: 13px;">{{ props.row.HotelName }}</div>
:loading="loading" </div>
> <div class="q-my-md">
<template v-slot:item="props"> <div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{ $t('hotel.col.three') }}
<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> <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.first')}}</div> </div>
<div style="font-size: 13px;">{{props.row.HotelName}}</div> <div>
</div> <div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{ $t('hotel.col.four') }}
<div class="q-my-md"> </div>
<div style="opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;">{{$t('hotel.col.three')}}</div> <div class="row items-center justify-between">
<div style="font-size: 13px;">{{props.row.TotalInventory}}</div> <span>{{ props.row.LowerPrice.toFixed(2) }}{{ $t('unit.jp') }} {{ $t('hotel.col.low') }}</span>
</div> <q-btn color="grey-3" :label="$t('hotel.addRoom')" size="sm" outline @click="finishHanler(props.row)" />
<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>
</div> </template>
</template> <template v-slot:bottom>
<template v-slot:bottom> <q-pagination class="full-width justify-end" v-model="pages.pageIndex" color="primary" :max="pages.pageCount"
<q-pagination class="full-width justify-end" v-model="pages.pageIndex" color="primary" :max="pages.pageCount" :input="true" @update:model-value="changePageHandler" /> :input="true" @update:model-value="changePageHandler" />
</template> </template>
</q-table> </q-table>
<q-dialog v-model="showPriceList"> <q-dialog v-model="showPriceList">
...@@ -105,7 +106,7 @@ import HotelService from '../../../api/hotel' ...@@ -105,7 +106,7 @@ import HotelService from '../../../api/hotel'
import { DirtionmaryHelper } from '../../../config/dictionary' import { DirtionmaryHelper } from '../../../config/dictionary'
import message from '../../../utils/message' import message from '../../../utils/message'
import { defineComponent, inject, reactive, toRefs, watch } from 'vue' 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 { DateType, getDateType, getDayOfWeek } from '../../../utils/tools'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import HotelPriceList from '../list/HotelPriceList.vue' import HotelPriceList from '../list/HotelPriceList.vue'
...@@ -113,9 +114,9 @@ import SamplePriceList from '../list/SamplePriceList.vue' ...@@ -113,9 +114,9 @@ import SamplePriceList from '../list/SamplePriceList.vue'
export default defineComponent({ export default defineComponent({
components: { HotelPriceList, SamplePriceList }, components: { HotelPriceList, SamplePriceList },
name: 'list-table', name: 'list-table',
emits:['finish'], emits: ['finish'],
setup(props,context) { setup(props, context) {
const $q=useQuasar() const $q = useQuasar()
const { t } = useI18n() const { t } = useI18n()
const search = inject(DirtionmaryHelper.HOTEL_QUERY_PARAM) as any const search = inject(DirtionmaryHelper.HOTEL_QUERY_PARAM) as any
watch(search, (n, o) => { watch(search, (n, o) => {
...@@ -137,13 +138,13 @@ export default defineComponent({ ...@@ -137,13 +138,13 @@ export default defineComponent({
}, },
pageTitle: '' as (string | undefined), pageTitle: '' as (string | undefined),
dateTypes: [] as Array<DateType>, dateTypes: [] as Array<DateType>,
mobileCols:[ mobileCols: [
{name:'HotelName',label:t('hotel.col.first'),field:(row:any)=>row.HotelName}, { 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: 'TotalInventory', label: t('hotel.col.three'), field: (row: any) => row.TotalInventory },
{name:'LowerPrice',label:t('hotel.col.four'),field:(row:any)=>row.LowerPrice} { name: 'LowerPrice', label: t('hotel.col.four'), field: (row: any) => row.LowerPrice }
], ],
showPriceList:false, showPriceList: false,
queryHotelObj:{} queryHotelObj: {}
}) })
...@@ -164,11 +165,11 @@ export default defineComponent({ ...@@ -164,11 +165,11 @@ export default defineComponent({
y.PriceList.forEach((z: any) => { y.PriceList.forEach((z: any) => {
z.ins = methods.getDateTypeById(z.InventoryType) z.ins = methods.getDateTypeById(z.InventoryType)
}) })
let cd=new Date(y.DateStr) let cd = new Date(y.DateStr)
y.FormatDate=`${date.formatDate(cd, 'MM/DD')} (${getDayOfWeek(date.getDayOfWeek(cd))})` y.FormatDate = `${date.formatDate(cd, 'MM/DD')} (${getDayOfWeek(date.getDayOfWeek(cd))})`
}) })
if($q.platform.is.mobile){ if ($q.platform.is.mobile) {
x.LowerPrice=methods.calcLowerPrice(x) x.LowerPrice = methods.calcLowerPrice(x)
} }
}) })
...@@ -202,28 +203,28 @@ export default defineComponent({ ...@@ -202,28 +203,28 @@ export default defineComponent({
getDateTypeById(id: number) { getDateTypeById(id: number) {
return data.dateTypes.find(x => x.id == id) return data.dateTypes.find(x => x.id == id)
}, },
calcLowerPrice(hotel:any){ calcLowerPrice(hotel: any) {
let lower=0 let lower = 0
hotel.subList.forEach((x:any)=>{ hotel.subList.forEach((x: any) => {
if(x.PriceList &&x.PriceList.length>0){ if (x.PriceList && x.PriceList.length > 0) {
x.PriceList.forEach((y:any)=>{ x.PriceList.forEach((y: any) => {
if(y.CostPrice>lower) lower= y.CostPrice if (y.CostPrice > lower) lower = y.CostPrice
}) })
} }
}) })
return lower return lower
}, },
viewHotelPriceListHandler(row:any){ viewHotelPriceListHandler(row: any) {
data.queryHotelObj = row data.queryHotelObj = row
data.showPriceList = true data.showPriceList = true
}, },
finishHanler(hotel:any){ finishHanler(hotel: any) {
context.emit('finish',hotel) context.emit('finish', hotel)
} }
} }
methods.calcDateRangeCols() methods.calcDateRangeCols()
methods.initHotels() methods.initHotels()
return { ...toRefs(data), ...methods,search } return { ...toRefs(data), ...methods, search }
} }
}) })
</script> </script>
...@@ -234,6 +235,7 @@ export default defineComponent({ ...@@ -234,6 +235,7 @@ export default defineComponent({
height: 14px; height: 14px;
border-radius: 4px; border-radius: 4px;
} }
.td-item { .td-item {
width: 100%; width: 100%;
height: 35px; height: 35px;
...@@ -244,12 +246,15 @@ export default defineComponent({ ...@@ -244,12 +246,15 @@ export default defineComponent({
text-align: center; text-align: center;
border-bottom: 1px solid rgba(0, 0, 0, 0.12); border-bottom: 1px solid rgba(0, 0, 0, 0.12);
} }
.td-item:last-child { .td-item:last-child {
border-bottom: none; border-bottom: none;
} }
.hotel-table .q-table td { .hotel-table .q-table td {
padding: 0 !important; padding: 0 !important;
} }
/* .td-item.cursor-pointer:hover{ /* .td-item.cursor-pointer:hover{
color: var(--q-primary) !important; color: var(--q-primary) !important;
} */ } */
......
...@@ -2,16 +2,20 @@ ...@@ -2,16 +2,20 @@
<q-card flat class="light-shadow rounded-border window-width q-pa-none"> <q-card flat class="light-shadow rounded-border window-width q-pa-none">
<q-card-section class="q-pa-sm"> <q-card-section class="q-pa-sm">
<div class="text-h6">{{ h.HotelName }}</div> <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> </q-card-section>
<div style="max-height: 60vh; overflow-y: auto" class="q-pa-sm"> <div style="max-height: 60vh; overflow-y: auto" class="q-pa-sm">
<template v-for="x in h.subList"> <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="row items-center">
<div class="text-subtitle2 col"> <div class="text-subtitle2 col">
{{ x.FormatDate }} {{ x.FormatDate }}
</div> </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> </div>
<!-- <q-separator color="white" style="opacity: .3;"/> --> <!-- <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)"> <div class="row justify-between q-pb-sm" style="border-bottom: 1px dashed rgba(255, 255, 255, 0.2)">
...@@ -36,13 +40,15 @@ ...@@ -36,13 +40,15 @@
<div class="price-item"> <div class="price-item">
<div class="label">{{ $t('hotel.col.five') }}</div> <div class="label">{{ $t('hotel.col.five') }}</div>
<div class="row items-center"> <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 class="q-ml-md" style="font-size: 12px; opacity: 0.5">{{ $t('hotel.col.more') }}</div> -->
</div> </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>
<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="price-item q-ma-none" v-for="y in x.PriceList[0].room">
<div class="label">{{ y.name }}</div> <div class="label">{{ y.name }}</div>
<div class="f12">{{ y.price.toFixed(2) }}</div> <div class="f12">{{ y.price.toFixed(2) }}</div>
...@@ -85,10 +91,10 @@ export default defineComponent({ ...@@ -85,10 +91,10 @@ export default defineComponent({
const search = inject(DirtionmaryHelper.HOTEL_QUERY_PARAM) as any const search = inject(DirtionmaryHelper.HOTEL_QUERY_PARAM) as any
const methods = { const methods = {
showOrderSubmitHandler(row:any,col:any){ showOrderSubmitHandler(row: any, col: any) {
context.emit('update:modelValue',row,col) context.emit('update:modelValue', row, col)
}, },
setCurrentHotel(hotel:any) { setCurrentHotel(hotel: any) {
hotel.subList.forEach((x: any) => { hotel.subList.forEach((x: any) => {
x.ShowMorePrice = false x.ShowMorePrice = false
if (x.PriceList && x.PriceList.length > 0) { if (x.PriceList && x.PriceList.length > 0) {
...@@ -136,6 +142,7 @@ export default defineComponent({ ...@@ -136,6 +142,7 @@ export default defineComponent({
.price-item { .price-item {
margin-top: 8px; margin-top: 8px;
} }
.price-item .label { .price-item .label {
opacity: 0.5; opacity: 0.5;
font-size: 12px; font-size: 12px;
......
This diff is collapsed.
<template> <template>
<div class="rounded-borders bg-white row items-center q-pa-md"> <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-select v-if="$q.platform.is.desktop" class="q-mr-md" v-model="search.OrderStatus"
<q-input v-if="$q.platform.is.desktop" class="q-mr-md" v-model="search.OrderNo" dense standout :label="$t('hotelorder.search.orderNum')" /> @update:model-value="setOrderStatus" dense :options="status" emit-value option-label="StatusName"
<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> 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> <div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy"> <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-popup-proxy>
</q-field> </q-field>
<div class="col"></div> <div class="col"></div>
<q-btn unelevated class="bg-grey-3 hover q-mr-md" :title="$t('morequery')"> <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> <svg-icon color="dark" icon="Text/Filter.svg" :tips="$t('morequery')" :size="20"></svg-icon>
<q-tooltip>{{ $t('morequery') }}</q-tooltip> <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"> <q-card class="q-pa-md rounded-borders" style="width: 300px">
<div class="q-mb-md text-subtitle2">{{ $t('morequery') }}</div> <div class="q-mb-md text-subtitle2">{{ $t('morequery') }}</div>
<div class="q-mt-md row"> <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" /> <q-input v-model="search.OrderId" dense standout :label="$t('hotelorder.search.orderId')" class="col" />
</div> </div>
<div class="mobile-only q-mt-md"> <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> <div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy"> <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-popup-proxy>
</q-field> </q-field>
</div> </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.RoomType" dense :options="rooms" emit-value option-label="TypeName"
<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 /> option-value="TypeId" map-options :label="$t('hotelorder.search.roomType')" standout />
<q-input v-model="search.TCNum" dense standout :label="$t('hotelorder.search.tcNum')" class="q-mt-md" v-if="search.OrderType==2"/> <q-select class="q-mt-md" v-model="search.OrderType" dense :options="orderTypes" emit-value
<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"/> 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-card>
</q-popup-proxy> </q-popup-proxy>
</q-btn> </q-btn>
<q-btn unelevated class="bg-blue-1 text-primary hover q-mr-md" :label="$t('hotelorder.recovery')" /> <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>
<div class="rounded-borders bg-white q-pa-sm q-mt-md mobile-only"> <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-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> </q-tabs>
</div> </div>
</template> </template>
...@@ -50,7 +65,7 @@ import { DirtionmaryHelper } from '../../../../config/dictionary' ...@@ -50,7 +65,7 @@ import { DirtionmaryHelper } from '../../../../config/dictionary'
import { computed, defineComponent, inject, reactive, ref, toRefs } from 'vue' import { computed, defineComponent, inject, reactive, ref, toRefs } from 'vue'
import { OrderType, RoomType, StandardStatus } from '../../../../@types' import { OrderType, RoomType, StandardStatus } from '../../../../@types'
import { getHotelOrderStatus, getHotelOrderType, getHotelRoomType } from '../../../../utils/tools' import { getHotelOrderStatus, getHotelOrderType, getHotelRoomType } from '../../../../utils/tools'
import { date,useQuasar } from 'quasar' import { date, useQuasar } from 'quasar'
import svgIcon from '../../../global/svg-icon.vue' import svgIcon from '../../../global/svg-icon.vue'
export default defineComponent({ export default defineComponent({
...@@ -91,21 +106,21 @@ export default defineComponent({ ...@@ -91,21 +106,21 @@ export default defineComponent({
data.dateRangeFormat = `${search.StartTime} - ${search.EndTime} ` data.dateRangeFormat = `${search.StartTime} - ${search.EndTime} `
if (qDateProxy.value) qDateProxy.value.hide() if (qDateProxy.value) qDateProxy.value.hide()
}, },
setQueryHandler(){ setQueryHandler() {
realSearch.OrderId=search.OrderId realSearch.OrderId = search.OrderId
realSearch.RoomType=search.RoomType realSearch.RoomType = search.RoomType
realSearch.StartTime=search.StartTime realSearch.StartTime = search.StartTime
realSearch.EndTime=search.EndTime realSearch.EndTime = search.EndTime
realSearch.OrderStatus=search.OrderStatus realSearch.OrderStatus = search.OrderStatus
realSearch.OrderNo=search.OrderNo realSearch.OrderNo = search.OrderNo
realSearch.OrderType=search.OrderType realSearch.OrderType = search.OrderType
realSearch.TCNum=search.TCNum realSearch.TCNum = search.TCNum
realSearch.ContactName=search.ContactName realSearch.ContactName = search.ContactName
realSearch.ContactNumber=search.ContactName realSearch.ContactNumber = search.ContactName
console.log(realSearch) console.log(realSearch)
}, },
setOrderStatus(statusId:number){ setOrderStatus(statusId: number) {
realSearch.OrderStatus=statusId realSearch.OrderStatus = statusId
} }
} }
...@@ -116,11 +131,11 @@ export default defineComponent({ ...@@ -116,11 +131,11 @@ export default defineComponent({
if (search.StartTime.length > 0) setCnt++ if (search.StartTime.length > 0) setCnt++
if (search.OrderNo > 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.RoomType > 0) setCnt++
if (search.OrderType > 0) setCnt++ if (search.OrderType > 0) setCnt++
if (search.OrderType == 1 && search.ContactName.length>0) setCnt++ if (search.OrderType == 1 && search.ContactName.length > 0) setCnt++
if (search.OrderType == 2 && search.TCNum.length>0) setCnt++ if (search.OrderType == 2 && search.TCNum.length > 0) setCnt++
return setCnt return setCnt
}) })
...@@ -135,4 +150,6 @@ export default defineComponent({ ...@@ -135,4 +150,6 @@ export default defineComponent({
}) })
</script> </script>
<style></style> <style>
</style>
This diff is collapsed.
...@@ -414,7 +414,7 @@ export default { ...@@ -414,7 +414,7 @@ export default {
date: '2022/11/29', date: '2022/11/29',
content: '' content: ''
}, },
Listofquotation:{ Listofquotation: {
pageTitle: '見積書です', pageTitle: '見積書です',
baojiadan: '見積書です', baojiadan: '見積書です',
dindanbaojia: 'ホテルを註文します', dindanbaojia: 'ホテルを註文します',
...@@ -439,14 +439,14 @@ export default { ...@@ -439,14 +439,14 @@ export default {
t8: '番号を変えます', t8: '番号を変えます',
t9: '日本の口座を送金した後に直ちに情報を知らせてください、日本の旅行社の問い合わせを便利にしてくださいありがとうございます思いやり', t9: '日本の口座を送金した後に直ちに情報を知らせてください、日本の旅行社の問い合わせを便利にしてくださいありがとうございます思いやり',
}, },
btn:{ btn: {
dayin: '印刷 です', dayin: '印刷 です',
xiaza: '下載 です', xiaza: '下載 です',
cjfaipiao: 'インボイスを作成します', cjfaipiao: 'インボイスを作成します',
bjd: '見積書です' bjd: '見積書です'
} }
}, },
scattered:{ scattered: {
kefang: '客室です', kefang: '客室です',
chengren: '大人です', chengren: '大人です',
ertong: '子供です', ertong: '子供です',
...@@ -556,13 +556,13 @@ export default { ...@@ -556,13 +556,13 @@ export default {
qi: 'からです', qi: 'からです',
ziying: '自営業です', ziying: '自営業です',
jalan: 'jalan', jalan: 'jalan',
zhutifea1:'駅から歩いて5分です', zhutifea1: '駅から歩いて5分です',
zhutifea2: '温泉があります', zhutifea2: '温泉があります',
zhutifea3: 'ビーチまで5分です', zhutifea3: 'ビーチまで5分です',
zhutifea4: 'チェックアウト11時以降です', zhutifea4: 'チェックアウト11時以降です',
xiangqing: '詳細を見ます' xiangqing: '詳細を見ます'
}, },
scatteredDetails:{ scatteredDetails: {
xiangqing: 'ホテルの詳細です', xiangqing: 'ホテルの詳細です',
jiudianxinxi: 'ホテル情報です', jiudianxinxi: 'ホテル情報です',
miaoshu: 'です', miaoshu: 'です',
...@@ -686,7 +686,7 @@ export default { ...@@ -686,7 +686,7 @@ export default {
renju: '一人当たりです', renju: '一人当たりです',
yuyue: '予约', yuyue: '予约',
}, },
scatteredOrder:{ scatteredOrder: {
prompt1: '13歳以上は成人扱いです', prompt1: '13歳以上は成人扱いです',
prompt2: '成功を予約した後に部屋はあなたのために一晩中保留します', prompt2: '成功を予約した後に部屋はあなたのために一晩中保留します',
fangxing: '部屋型です', fangxing: '部屋型です',
...@@ -766,7 +766,7 @@ export default { ...@@ -766,7 +766,7 @@ export default {
notiaojian: 'このクーポンは利用条件を満たしていません!', notiaojian: 'このクーポンは利用条件を満たしていません!',
dindanhao: '註文番号です', dindanhao: '註文番号です',
}, },
scatteredOrderList:{ scatteredOrderList: {
state1: '待ちます', state1: '待ちます',
state2: '取引成立です', state2: '取引成立です',
state3: 'キャンセルしました', state3: 'キャンセルしました',
...@@ -786,102 +786,136 @@ export default { ...@@ -786,102 +786,136 @@ export default {
}, },
//#endregion //#endregion
//#region v1.0.2 //#region v1.0.2
v102:{ v102: {
ticket:{ ticket: {
nobj: '見積もりがまだないので註文できません', nobj: '見積もりがまだないので註文できません',
d:'入場券期日です', d: '入場券期日です',
jq: '景観区の名称です', jq: '景観区の名称です',
hn:'チケットの名前です', hn: 'チケットの名前です',
sl:'数', sl: '数',
starttime:'入場券の時間です', starttime: '入場券の時間です',
pageTitle:'チケット検索', pageTitle: 'チケット検索',
name:'名前を入力してくださいです', name: '名前を入力してくださいです',
toggleListType1:'リストモードです', toggleListType1: 'リストモードです',
toggleListType2:'カードモードです', toggleListType2: 'カードモードです',
Japan:'日本です', Japan: '日本です',
stoppage:'場のように停止します', stoppage: '場のように停止します',
recommendTime:'お勧めします', recommendTime: 'お勧めします',
hour: '時間です', hour: '時間です',
minutes:'分です', minutes: '分です',
load:'画像の読み込みに失敗しました', load: '画像の読み込みに失敗しました',
showtt:{ showtt: {
t1:'計', t1: '計',
t2:'種票型です' t2: '種票型です'
}, },
buy:'今すぐチケットを予約します', buy: '今すぐチケットを予約します',
shortBuy:'予約です', shortBuy: '予約です',
addr:'アドレスです', addr: 'アドレスです',
map:'地図です', map: '地図です',
jing:'スポットです', jing: 'スポットです',
detail:'景区詳細です', detail: '景区詳細です',
d1:'オープン時間です', d1: 'オープン時間です',
d2:'景勝地の特色', d2: '景勝地の特色',
d3:'交通の説明です', d3: '交通の説明です',
d4:'暖かい注意です', d4: '暖かい注意です',
d5:'予約事項です', d5: '予約事項です',
preview:{ preview: {
pageTitle:'註文プレビューです' pageTitle: '註文プレビューです'
}, },
ordertip:'前日の23:00までに予約をお願いします', ordertip: '前日の23:00までに予約をお願いします',
pt:'遊びの日です', pt: '遊びの日です',
tt:'選択票型です', tt: '選択票型です',
ti:'チケット情報です', ti: 'チケット情報です',
bc:'購入枚数ですが', bc: '購入枚数ですが',
gi:'チケットを取ります', gi: 'チケットを取ります',
zq:'切符は自分で受け取ります', zq: '切符は自分で受け取ります',
yj:'チケットを送ります', yj: 'チケットを送ります',
zqs:'自己取票説明します', zqs: '自己取票説明します',
zqd:'自分で指定の位置に行ってチケットを取ります、あなたが支払いを完了した後に私達はメールを通じてチケットの情報を取ることをお知らせします', zqd: '自分で指定の位置に行ってチケットを取ります、あなたが支払いを完了した後に私達はメールを通じてチケットの情報を取ることをお知らせします',
sj:'ゲストメッセージです', sj: 'ゲストメッセージです',
youji:'メッセージを送ります', youji: 'メッセージを送ります',
unit:'枚', unit: '枚',
sex:{ sex: {
man:'男', man: '男',
women:'女' women: '女'
}, },
sjc:{ sjc: {
c1:'中国語の名前です', c1: '中国語の名前です',
c2:'英語の名前です', c2: '英語の名前です',
c3:'性別です', c3: '性別です',
c4:'連絡します', c4: '連絡します',
c5:'宛先です' c5: '宛先です'
}, },
sjcp:{ sjcp: {
c1:'中国語の名前を入力してくださいです', c1: '中国語の名前を入力してくださいです',
c2:'英語の名前を入力してくださいです', c2: '英語の名前を入力してくださいです',
c4:'連絡先を入力します', c4: '連絡先を入力します',
c5:'宛先を入力します' c5: '宛先を入力します'
}, },
st:'勘定書を決済します', st: '勘定書を決済します',
rtt:'チケットの払い戻し制限です', rtt: 'チケットの払い戻し制限です',
rtc:'未消費はいつでも払い戻し可能で、復数のチケットの註文は一部払い戻しをサポートしません', rtc: '未消費はいつでも払い戻し可能で、復数のチケットの註文は一部払い戻しをサポートしません',
ms:'チケット予約です', ms: 'チケット予約です',
nt:'選択券はありません', nt: '選択券はありません',
ds:'総受注額です', ds: '総受注額です',
sb:'注文書を提出します', sb: '注文書を提出します',
or:'注文書です', or: '注文書です',
zqa:'自分でアドレスを取ります', zqa: '自分でアドレスを取ります',
nzqa:'お客様サービスのご確認後、ご住所が分かりますので、至急メールにてお知らせいたします' nzqa: 'お客様サービスのご確認後、ご住所が分かりますので、至急メールにてお知らせいたします'
}, },
to:{ to: {
pageTitle:'チケット註文リストです', pageTitle: 'チケット註文リストです',
ticketName:'チケットネームです', ticketName: 'チケットネームです',
Name: 'お客様の名前です', Name: 'お客様の名前です',
qj:'チケットを取ります', qj: 'チケットを取ります',
qjc:'依頼人の名前(日/英)です', qjc: '依頼人の名前(日/英)です',
qjp:'受取人電話です', qjp: '受取人電話です',
ps:{ ps: {
p1:'配送待ちです', p1: '配送待ちです',
p2:'配達しました' p2: '配達しました'
}, },
m:{ m: {
t:'受け取り方を修正します', t: '受け取り方を修正します',
c:'修正を取り消します', c: '修正を取り消します',
s:'修正を保存します' 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 //#endregion
} }
This diff is collapsed.
export default { export default {
//#region ending v1.0.0 //#region ending v1.0.0
failed: '執行失敗', failed: '執行失敗',
...@@ -399,7 +400,7 @@ export default { ...@@ -399,7 +400,7 @@ export default {
//eg: //eg:
//#region v1.0.1 //#region v1.0.1
v101:{ v101: {
downloadHands: '下載手佩書', downloadHands: '下載手佩書',
noneHands: '手佩書未生成', noneHands: '手佩書未生成',
hotelTips: '酒店溫馨提醒', hotelTips: '酒店溫馨提醒',
...@@ -410,11 +411,11 @@ export default { ...@@ -410,11 +411,11 @@ export default {
hotelRemark: '備註', hotelRemark: '備註',
cancelRemark: '取消備註', cancelRemark: '取消備註',
selfCancle: '客戶自己取消了訂單', selfCancle: '客戶自己取消了訂單',
versonDetails:{ versonDetails: {
date: '2022/11/29', date: '2022/11/29',
content: '' content: ''
}, },
Listofquotation:{ Listofquotation: {
pageTitle: '報價單', pageTitle: '報價單',
baojiadan: '報價單', baojiadan: '報價單',
dindanbaojia: '酒店訂單報價', dindanbaojia: '酒店訂單報價',
...@@ -439,14 +440,14 @@ export default { ...@@ -439,14 +440,14 @@ export default {
t8: '重新番号', t8: '重新番号',
t9: '汇款日本账户后请及时告知信息,方便日本旅行社查询谢谢体谅', t9: '汇款日本账户后请及时告知信息,方便日本旅行社查询谢谢体谅',
}, },
btn:{ btn: {
dayin: '打印', dayin: '打印',
xiaza: '下載', xiaza: '下載',
cjfaipiao: '創建發票', cjfaipiao: '創建發票',
bjd: '報價單' bjd: '報價單'
} }
}, },
scattered:{ scattered: {
kefang: '客房', kefang: '客房',
chengren: '成人', chengren: '成人',
ertong: '兒童', ertong: '兒童',
...@@ -562,7 +563,7 @@ export default { ...@@ -562,7 +563,7 @@ export default {
zhutifea4: '退房11點以後', zhutifea4: '退房11點以後',
xiangqing: '查看詳情' xiangqing: '查看詳情'
}, },
scatteredDetails:{ scatteredDetails: {
xiangqing: '酒店詳情', xiangqing: '酒店詳情',
jiudianxinxi: '酒店信息', jiudianxinxi: '酒店信息',
miaoshu: '描述', miaoshu: '描述',
...@@ -686,7 +687,7 @@ export default { ...@@ -686,7 +687,7 @@ export default {
renju: '人均', renju: '人均',
yuyue: '預約', yuyue: '預約',
}, },
scatteredOrder:{ scatteredOrder: {
prompt1: '超過13歲視為成人處理', prompt1: '超過13歲視為成人處理',
prompt2: '預定成功後房間將為您整晚保留', prompt2: '預定成功後房間將為您整晚保留',
fangxing: '房型', fangxing: '房型',
...@@ -766,7 +767,7 @@ export default { ...@@ -766,7 +767,7 @@ export default {
notiaojian: '該優惠券不滿足使用條件!', notiaojian: '該優惠券不滿足使用條件!',
dindanhao: '訂單號', dindanhao: '訂單號',
}, },
scatteredOrderList:{ scatteredOrderList: {
state1: '待付款', state1: '待付款',
state2: '交易成功', state2: '交易成功',
state3: '已取消', state3: '已取消',
...@@ -786,102 +787,136 @@ export default { ...@@ -786,102 +787,136 @@ export default {
}, },
//#endregion //#endregion
//#region v1.0.2 //#region v1.0.2
v102:{ v102: {
ticket:{ ticket: {
nobj: '暫無報價,不能下單', nobj: '暫無報價,不能下單',
d: '日期', d: '日期',
jq: '景區名稱', jq: '景區名稱',
hn: '票券名稱', hn: '票券名稱',
sl: '数量', sl: '数量',
starttime:'门票時間', starttime: '门票時間',
pageTitle:"票券檢索", pageTitle: "票券檢索",
name:'請輸入景點名稱', name: '請輸入景點名稱',
toggleListType1:"列表模式", toggleListType1: "列表模式",
toggleListType2:"卡片模式", toggleListType2: "卡片模式",
Japan: '日本', Japan: '日本',
stoppage:'停止如場', stoppage: '停止如場',
recommendTime: '推薦遊玩', recommendTime: '推薦遊玩',
hour: '小時', hour: '小時',
minutes: '分鐘', minutes: '分鐘',
load:'圖片加載失敗', load: '圖片加載失敗',
showtt:{ showtt: {
t1:'共', t1: '共',
t2:'種票型' t2: '種票型'
}, },
buy:'立即订票', buy: '立即订票',
shortBuy:'預訂', shortBuy: '預訂',
addr:'地址', addr: '地址',
map:'地圖', map: '地圖',
jing:'景點', jing: '景點',
detail:'景區詳情', detail: '景區詳情',
d1:'開放時間', d1: '開放時間',
d2:'景區特色', d2: '景區特色',
d3:'交通說明', d3: '交通說明',
d4:'溫馨提醒', d4: '溫馨提醒',
d5:'預訂須知', d5: '預訂須知',
preview:{ preview: {
pageTitle:'订单预览' pageTitle: '订单预览'
}, },
ordertip:'請在遊玩前一天的23:00前完成預訂', ordertip: '請在遊玩前一天的23:00前完成預訂',
pt:'遊玩日期', pt: '遊玩日期',
tt:'選擇票型', tt: '選擇票型',
ti:'票券信息', ti: '票券信息',
bc:'購買張數', bc: '購買張數',
gi:'取票方式', gi: '取票方式',
zq:'自行取票', zq: '自行取票',
yj:'郵寄票券', yj: '郵寄票券',
zqs:'自行取票說明', zqs: '自行取票說明',
zqd:'自行前往指定位置取票,當您完成付款後我們將通過郵件通知您取票的門票訊息', zqd: '自行前往指定位置取票,當您完成付款後我們將通過郵件通知您取票的門票訊息',
sj:'客人訊息', sj: '客人訊息',
youji:'郵寄訊息', youji: '郵寄訊息',
unit:'張', unit: '張',
sex:{ sex: {
man:'男', man: '男',
women:'女' women: '女'
}, },
sjc:{ sjc: {
c1:'中文姓名', c1: '中文姓名',
c2:'英文姓名', c2: '英文姓名',
c3:'性別', c3: '性別',
c4:'聯絡電話', c4: '聯絡電話',
c5:'收件地址' c5: '收件地址'
}, },
sjcp:{ sjcp: {
c1:'請輸入中文姓名', c1: '請輸入中文姓名',
c2:'請輸入英文姓名', c2: '請輸入英文姓名',
c4:'請輸入聯絡電話', c4: '請輸入聯絡電話',
c5:'請輸入收件地址' c5: '請輸入收件地址'
}, },
st:'結算帳單', st: '結算帳單',
rtt:'退票限制', rtt: '退票限制',
rtc:'未消費隨時可退,多張票訂單不支持部分退款', rtc: '未消費隨時可退,多張票訂單不支持部分退款',
ms:'訂票明細', ms: '訂票明細',
nt:'沒有選擇票券', nt: '沒有選擇票券',
ds:'訂單總額', ds: '訂單總額',
sb:'提交訂單', sb: '提交訂單',
or:'訂單備註', or: '訂單備註',
zqa:'自取地址', zqa: '自取地址',
nzqa:'等待客服確認後,才能看到自取地址,我們將會第一時間通過郵件告知您' nzqa: '等待客服確認後,才能看到自取地址,我們將會第一時間通過郵件告知您'
}, },
to:{ to: {
pageTitle:'票券訂單列表', pageTitle: '票券訂單列表',
ticketName:'景點名稱', ticketName: '景點名稱',
Name: '客人名稱', Name: '客人名稱',
qj:'取券方式', qj: '取券方式',
qjc:'取件人姓名(中/英)', qjc: '取件人姓名(中/英)',
qjp:'取件人電話', qjp: '取件人電話',
ps:{ ps: {
p1:'等待配送', p1: '等待配送',
p2:'已配送' p2: '已配送'
}, },
m:{ m: {
t:'修改取件方式', t: '修改取件方式',
c:'取消修改', c: '取消修改',
s:'保存修改' 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 //#endregion
} }
This diff is collapsed.
...@@ -17,8 +17,9 @@ const routes: RouteRecordRaw[] = [ ...@@ -17,8 +17,9 @@ const routes: RouteRecordRaw[] = [
{ path: '/scattered/HotelOrder', component: () => import('pages/scattered/HotelOrder.vue') }, { path: '/scattered/HotelOrder', component: () => import('pages/scattered/HotelOrder.vue') },
{ path: '/comingsoon', component: () => import('pages/ComingSoon.vue') }, { path: '/comingsoon', component: () => import('pages/ComingSoon.vue') },
{ path: '/ticket/list', component: () => import('pages/ticket/TicketList.vue') }, { path: '/ticket/list', component: () => import('pages/ticket/TicketList.vue') },
{path: '/ticket/preview/:ticketId/:Time', component: () => import('pages/ticket/TicketOrderPreview.vue')}, { path: '/ticket/preview/:ticketId/:Time', component: () => import('pages/ticket/TicketOrderPreview.vue') },
{path: '/ticket/order', component: () => import('pages/ticket/TicketOrder.vue')} { path: '/ticket/order', component: () => import('pages/ticket/TicketOrder.vue') },
{ path: '/vehicle/index', component: () => import('pages/vehicle/index.vue') }//车辆
] ]
}, },
{ {
......
import { i18n } from '../boot/i18n' import { i18n } from '../boot/i18n'
interface Menu { interface Menu {
name:string, name: string,
url:string, url: string,
id:number, id: number,
parentId:number, parentId: number,
icon?:string, icon?: string,
childs?:Menu [] childs?: Menu[]
} }
const {t} =i18n.global const { t } = i18n.global
const useMenus={ const useMenus = {
getMenus():Menu[]{ getMenus(): Menu[] {
let menus=[] as Menu[] let menus = [] as Menu[]
menus.push({ menus.push({
name:t('menu.hotel.first'), name: t('menu.hotel.first'),
url:'', url: '',
id:1, id: 1,
parentId:0, parentId: 0,
icon:'Home/Building.svg', icon: 'Home/Building.svg',
childs:[ childs: [
{ {
name:t('menu.hotel.second'), name: t('menu.hotel.second'),
url:'/hotel', url: '/hotel',
id:2, id: 2,
parentId:1, parentId: 1,
}, },
{ {
name:t('menu.hotel.three'), name: t('menu.hotel.three'),
url:'/hotel/order', url: '/hotel/order',
id:3, id: 3,
parentId:1, parentId: 1,
} }
] ]
}) })
menus.push({ menus.push({
name:t('menu.scattered.first'), name: t('menu.scattered.first'),
url:'', url: '',
id:13, id: 13,
parentId:0, parentId: 0,
icon:'scattered/The.svg', icon: 'scattered/The.svg',
childs:[ childs: [
{ {
name:t('menu.scattered.second'), name: t('menu.scattered.second'),
url:'/scattered', url: '/scattered',
id:14, id: 14,
parentId:13, parentId: 13,
}, },
{ {
name:t('menu.scattered.three'), name: t('menu.scattered.three'),
url:'/scattered/HotelOrder', url: '/scattered/HotelOrder',
id:15, id: 15,
parentId:13, parentId: 13,
} }
] ]
}) })
menus.push({ menus.push({
name:t('menu.car.first'), name: t('menu.car.first'),
url:'', url: '',
id:4, id: 4,
parentId:0, parentId: 0,
icon:'Electric/Iron.svg', icon: 'Electric/Iron.svg',
childs:[ childs: [
{ {
name:t('menu.car.second'), name: t('menu.car.second'),
url:'/comingsoon', url: '/vehicle/index',
id:5, id: 5,
parentId:4, parentId: 4,
}, },
{ {
name:t('menu.car.three'), name: t('menu.car.three'),
url:'/comingsoon', url: '/comingsoon',
id:6, id: 6,
parentId:4, 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({ menus.push({
name:t('menu.ticket.first'), name: t('menu.finance.first'),
url:'', url: '',
id:7, id: 10,
parentId:0, parentId: 0,
icon:'Shopping/Ticket.svg', icon: 'Shopping/Money.svg',
childs:[ childs: [
{ {
name:t('menu.ticket.second'), name: t('menu.finance.second'),
url:'/ticket/list', url: '/comingsoon',
id:8, id: 11,
parentId:7, parentId: 10,
}, },
{ {
name:t('menu.ticket.three'), name: t('menu.finance.three'),
url:'/ticket/order', url: '/comingsoon',
id:9, id: 12,
parentId:7, parentId: 10,
}
]
})
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,
} }
] ]
}) })
return menus 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