Commit 3bd3782f authored by youjie's avatar youjie

Merge branch 'master' of http://gitlab.oytour.com/luochao/bigwood

parents eef91431 a788314c
...@@ -68,5 +68,13 @@ class HotelService { ...@@ -68,5 +68,13 @@ class HotelService {
static async sureBusPricelation(Id: number): Promise<HttpResponse> { static async sureBusPricelation(Id: number): Promise<HttpResponse> {
return request('tripbus_SureBusTripOffer', { Id }) return request('tripbus_SureBusTripOffer', { Id })
} }
/**
* 获取报价详情
* @param param
* @returns
*/
static async DetailsQuotation(Id: number): Promise<HttpResponse> {
return request('tripbus_GetTripBusInfo', { Id })
}
} }
export default HotelService export default HotelService
\ No newline at end of file
<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">
<n-cascader v-if="$q.platform.is.desktop" class="col-2 no-border" @update:value="changearea" v-model:value="cascader.addressValue" size="large" :placeholder="$t('hotel.area')" clearable check-strategy="all" :options="provinces" value-field="ID" label-field="Name" remote :on-load="loadChilds" cascade /> <n-cascader v-if="$q.platform.is.desktop" class="col-2 no-border" @update:value="changearea"
<q-field v-if="$q.platform.is.desktop" stack-label :label="$t('daterange')" standout class="q-ml-lg col-2" style="min-width: 190px" dense> v-model:value="cascader.addressValue" size="large" :placeholder="$t('hotel.area')" clearable check-strategy="all"
:options="provinces" value-field="ID" label-field="Name" remote :on-load="loadChilds" cascade />
<q-field v-if="$q.platform.is.desktop" stack-label :label="$t('daterange')" standout class="q-ml-lg 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>
<n-select v-if="$q.platform.is.desktop" filterable @update:value="changeHotel" class="q-ml-lg col-2" style="min-width: 190px" clearable v-model:value="search.HotelChooseArray" :placeholder="$t('hotel.searchName')" multiple :options="cacheHotels" max-tag-count="responsive" size="large" value-field="ID" label-field="Name" /> <n-select v-if="$q.platform.is.desktop" filterable @update:value="changeHotel" class="q-ml-lg col-2"
style="min-width: 190px" clearable v-model:value="search.HotelChooseArray" :placeholder="$t('hotel.searchName')"
multiple :options="cacheHotels" max-tag-count="responsive" size="large" value-field="ID" label-field="Name" />
<div class="col"></div> <div class="col"></div>
<q-btn unelevated class="bg-grey-3 hover q-mr-md" icon="shopping_cart" :title="$t('hotel.car.shoppingTitle')" @click="rightCarOpen=true"> <q-btn unelevated class="bg-grey-3 hover q-mr-md" icon="shopping_cart" :title="$t('hotel.car.shoppingTitle')"
<q-badge color="red" rounded floating>{{HotelLength}}</q-badge> @click="rightCarOpen = true">
<q-badge color="red" rounded floating>{{ HotelLength }}</q-badge>
</q-btn> </q-btn>
<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 v-if="$q.platform.is.mobile"> <div v-if="$q.platform.is.mobile">
<n-cascader @update:value="changearea" v-model:value="cascader.addressValue" size="large" :placeholder="$t('hotel.area')" clearable check-strategy="all" :options="provinces" value-field="ID" label-field="Name" remote :on-load="loadChilds" cascade /> <n-cascader @update:value="changearea" v-model:value="cascader.addressValue" size="large"
:placeholder="$t('hotel.area')" clearable check-strategy="all" :options="provinces" value-field="ID"
label-field="Name" remote :on-load="loadChilds" cascade />
</div> </div>
<div class="q-my-md" v-if="$q.platform.is.mobile"> <div class="q-my-md" v-if="$q.platform.is.mobile">
<q-field stack-label :label="$t('daterange')" outlined style="min-width: 190px" dense> <q-field stack-label :label="$t('daterange')" outlined 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> </div>
<div v-if="$q.platform.is.mobile"> <div v-if="$q.platform.is.mobile">
<n-select filterable style="min-width: 190px" clearable v-model:value="search.HotelChooseArray" :placeholder="$t('hotel.searchName')" multiple :options="cacheHotels" max-tag-count="responsive" size="large" value-field="ID" label-field="Name" /> <n-select filterable style="min-width: 190px" clearable v-model:value="search.HotelChooseArray"
:placeholder="$t('hotel.searchName')" multiple :options="cacheHotels" max-tag-count="responsive"
size="large" value-field="ID" label-field="Name" />
</div> </div>
<div class="q-my-md"> <div class="q-my-md">
<q-select v-model="search.Star" dense :options="hotelsRates" emit-value option-label="name" option-value="id" map-options clearable :label="$t('hotel.hotelRate')" standout /> <q-select v-model="search.Star" dense :options="hotelsRates" emit-value option-label="name"
option-value="id" map-options clearable :label="$t('hotel.hotelRate')" standout />
</div> </div>
<div class="row items-center"> <div class="row items-center">
<q-input v-model="search.MinPrice" class="col q-mr-md" mask="#.##" reverse-fill-mask dense type="text" standout :label="$t('hotel.minPrice')" /> <q-input v-model="search.MinPrice" class="col q-mr-md" mask="#.##" reverse-fill-mask dense type="text"
<q-input v-model="search.MaxPrice" class="col" dense mask="#.##" reverse-fill-mask ftype="text" standout :label="$t('hotel.maxPrice')" /> standout :label="$t('hotel.minPrice')" />
<q-input v-model="search.MaxPrice" class="col" dense mask="#.##" reverse-fill-mask ftype="text" standout
:label="$t('hotel.maxPrice')" />
</div> </div>
</q-card> </q-card>
</q-popup-proxy> </q-popup-proxy>
...@@ -58,7 +75,7 @@ import { computed, inject, provide, reactive, ref, toRefs, defineComponent, onMo ...@@ -58,7 +75,7 @@ import { computed, inject, provide, reactive, ref, toRefs, defineComponent, onMo
import HotelService from '../../../api/hotel' import HotelService from '../../../api/hotel'
import message from '../../../utils/message' import message from '../../../utils/message'
import { ApiResult } from '../../../@types/enumHelper' import { ApiResult } from '../../../@types/enumHelper'
import { CascaderOption,NCascader,NSelect } from 'naive-ui' import { CascaderOption, NCascader, NSelect } from 'naive-ui'
import { date } from 'quasar' import { date } from 'quasar'
import { HotelRate, useHotel } from '../../../utils/hotelRate' import { HotelRate, useHotel } from '../../../utils/hotelRate'
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar'
...@@ -174,7 +191,7 @@ export default defineComponent({ ...@@ -174,7 +191,7 @@ export default defineComponent({
changearea(e: number, option: any, pathValues: Array<any>) { changearea(e: number, option: any, pathValues: Array<any>) {
search.Province = 0 search.Province = 0
search.City = 0 search.City = 0
if(pathValues){ if (pathValues) {
if (pathValues.length > 0) { if (pathValues.length > 0) {
search.Province = pathValues[0].ID search.Province = pathValues[0].ID
} }
...@@ -188,10 +205,10 @@ export default defineComponent({ ...@@ -188,10 +205,10 @@ export default defineComponent({
console.log(search.HotelChooseArray) console.log(search.HotelChooseArray)
}, 1000) }, 1000)
}, },
close(){ close() {
data.rightCarOpen = false data.rightCarOpen = false
}, },
setSuccess(){ setSuccess() {
data.rightCarOpen = false data.rightCarOpen = false
}, },
} }
...@@ -210,13 +227,13 @@ export default defineComponent({ ...@@ -210,13 +227,13 @@ export default defineComponent({
methods.initAddress() methods.initAddress()
methods.initHotels() methods.initHotels()
watch(cars.value, (n, o) => { watch(cars.value, (n, o) => {
localStorage.setItem(DirtionmaryHelper.HOTEL_HOTELCARS_CACHE,JSON.stringify(cars.value)) localStorage.setItem(DirtionmaryHelper.HOTEL_HOTELCARS_CACHE, JSON.stringify(cars.value))
}) })
watch(HotelLength, (n, o) => { watch(HotelLength, (n, o) => {
HotelLength.value = n HotelLength.value = n
}) })
onMounted(()=>{ onMounted(() => {
HotelLength.value = cars.value.length HotelLength.value = cars.value.length
}) })
return { return {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<q-icon class="text-grey-13 cursor-pointer text-right q-ml-sm" name="close" size="md" v-close-popup></q-icon> <q-icon class="text-grey-13 cursor-pointer text-right q-ml-sm" name="close" size="md" v-close-popup></q-icon>
</div> </div>
<div class="text-weight-bold fz20 ellipsis desktop-only">{{ h.Name }}</div> <div class="text-weight-bold fz20 ellipsis desktop-only">{{ h.Name }}</div>
<div :class="{'q-ml-md':$q.platform.is.desktop}"> <div :class="{ 'q-ml-md': $q.platform.is.desktop }">
<q-rating v-model="h.Star" size="1.5em" color="orange" :max="h.Star" readonly /> <q-rating v-model="h.Star" size="1.5em" color="orange" :max="h.Star" readonly />
</div> </div>
</div> </div>
...@@ -39,22 +39,33 @@ ...@@ -39,22 +39,33 @@
</div> </div>
</div> </div>
<div class="q-py-lg no-wrap col" :class="{ row: $q.platform.is.desktop, column: $q.platform.is.mobile }"> <div class="q-py-lg no-wrap col" :class="{ row: $q.platform.is.desktop, column: $q.platform.is.mobile }">
<div class="row rounded-borders relative-position" :class="{ 'col-6': $q.platform.is.desktop, 'height-320': $q.platform.is.mobile }" style="overflow: hidden" v-if="h.List"> <div class="row rounded-borders relative-position"
<div v-if="h.ChainBrand" class="f12 absolute-left bg-white" style="padding: 5px; bottom: unset; z-index: 1; border-bottom-right-radius: 4px"> :class="{ 'col-6': $q.platform.is.desktop, 'height-320': $q.platform.is.mobile }" style="overflow: hidden"
v-if="h.List">
<div v-if="h.ChainBrand" class="f12 absolute-left bg-white"
style="padding: 5px; bottom: unset; z-index: 1; border-bottom-right-radius: 4px">
<div class="row items-center rounded-borders" style="overflow: hidden"> <div class="row items-center rounded-borders" style="overflow: hidden">
<div class="bg-dark text-white" style="padding: 0 4px; font-size: 12px">品牌</div> <div class="bg-dark text-white" style="padding: 0 4px; font-size: 12px">品牌</div>
<div class="text-dark" style="padding: 0 4px; font-size: 12px; background: #f0bd86">{{ h.ChainBrand }}</div> <div class="text-dark" style="padding: 0 4px; font-size: 12px; background: #f0bd86">{{ h.ChainBrand }}
</div>
</div> </div>
</div> </div>
<div class="col-7" :class="{ 'col-7': h.List.length >= 3, 'col-6': h.List.length == 2, 'col-12': h.List.length == 1 }"> <div class="col-7"
<q-img @click="showImageHandler(`http://imgfile.oytour.com${h.List[0].Path}`)" :src="`http://imgfile.oytour.com${h.List[0].Path}`" spinner-color="drk" spinner-size="20px" height="100%" mode="cover" /> :class="{ 'col-7': h.List.length >= 3, 'col-6': h.List.length == 2, 'col-12': h.List.length == 1 }">
<q-img @click="showImageHandler(`http://imgfile.oytour.com${h.List[0].Path}`)"
:src="`http://imgfile.oytour.com${h.List[0].Path}`" spinner-color="drk" spinner-size="20px" height="100%"
mode="cover" />
</div> </div>
<div class="col q-pl-sm" v-if="h.List.length > 1"> <div class="col q-pl-sm" v-if="h.List.length > 1">
<div :style="{ height: h.List.length > 2 ? '50%' : '100%' }"> <div :style="{ height: h.List.length > 2 ? '50%' : '100%' }">
<q-img @click="showImageHandler(`http://imgfile.oytour.com${h.List[1].Path}`)" :src="`http://imgfile.oytour.com${h.List[1].Path}`" spinner-color="drk" spinner-size="20px" height="100%" mode="cover" /> <q-img @click="showImageHandler(`http://imgfile.oytour.com${h.List[1].Path}`)"
:src="`http://imgfile.oytour.com${h.List[1].Path}`" spinner-color="drk" spinner-size="20px"
height="100%" mode="cover" />
</div> </div>
<div class="row items-end q-pt-sm" style="height: 50%" v-if="h.List.length > 2"> <div class="row items-end q-pt-sm" style="height: 50%" v-if="h.List.length > 2">
<q-img @click="showImageHandler(`http://imgfile.oytour.com${h.List[2].Path}`)" :src="`http://imgfile.oytour.com${h.List[2].Path}`" spinner-color="drk" spinner-size="20px" height="100%" mode="cover"> <q-img @click="showImageHandler(`http://imgfile.oytour.com${h.List[2].Path}`)"
:src="`http://imgfile.oytour.com${h.List[2].Path}`" spinner-color="drk" spinner-size="20px"
height="100%" mode="cover">
<div class="absolute-full text-subtitle2 flex flex-center" v-if="h.List.length > 3"> <div class="absolute-full text-subtitle2 flex flex-center" v-if="h.List.length > 3">
<span class="fz20 text-weight-bold">+</span> <span class="fz20 text-weight-bold">+</span>
<span class="text-h5 text-weight-bold">{{ h.List.length - 3 }}</span> <span class="text-h5 text-weight-bold">{{ h.List.length - 3 }}</span>
...@@ -63,8 +74,11 @@ ...@@ -63,8 +74,11 @@
</div> </div>
</div> </div>
</div> </div>
<div class="rounded-borders" :class="{ 'q-ml-sm col': $q.platform.is.desktop, 'q-mt-sm height-320': $q.platform.is.mobile }" style="overflow: hidden" id="baiduMap"> <div class="rounded-borders"
<GoogleMap api-key="AIzaSyCvRZN9lGl3y3EsM0A0sWPf1pZ2olGsyNg" style="width: 100%; height: 100%" :center="center" :zoom="15" v-if="center"> :class="{ 'q-ml-sm col': $q.platform.is.desktop, 'q-mt-sm height-320': $q.platform.is.mobile }"
style="overflow: hidden" id="baiduMap">
<GoogleMap api-key="AIzaSyCvRZN9lGl3y3EsM0A0sWPf1pZ2olGsyNg" style="width: 100%; height: 100%"
:center="center" :zoom="15" v-if="center">
<Marker :options="{ position: center }" /> <Marker :options="{ position: center }" />
</GoogleMap> </GoogleMap>
</div> </div>
...@@ -90,7 +104,10 @@ ...@@ -90,7 +104,10 @@
<div class="col-3 f12 text-grey-500">{{ $t('hd.item.c') }}</div> <div class="col-3 f12 text-grey-500">{{ $t('hd.item.c') }}</div>
<div class="col text-subtitle2 text-weight-bolder"> <div class="col text-subtitle2 text-weight-bolder">
{{ h.IsHavearking == 0 ? $t('none') : $t('have') }} {{ h.IsHavearking == 0 ? $t('none') : $t('have') }}
<span class="q-ml-md hotel-info-item" v-if="h.IsHavearking == 1">{{ h.ParkFee == 0 ? $t('free') : moneyFormat(h.ParkFee) + $t('unit.jp') }}</span> <span class="q-ml-md hotel-info-item" v-if="h.IsHavearking == 1">{{
h.ParkFee == 0 ? $t('free') :
moneyFormat(h.ParkFee) + $t('unit.jp')
}}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -187,10 +204,10 @@ export default defineComponent({ ...@@ -187,10 +204,10 @@ export default defineComponent({
const methods = { const methods = {
initMap(lat: any, lng: any) { initMap(lat: any, lng: any) {
let country=localStorage.getItem(DirtionmaryHelper.USER_IN_COUNTRY) ?? 'GW' let country = localStorage.getItem(DirtionmaryHelper.USER_IN_COUNTRY) ?? 'GW'
if(country!='CN'){ if (country != 'CN') {
data.center = { lat: parseFloat(lng), lng: parseFloat(lat) } data.center = { lat: parseFloat(lng), lng: parseFloat(lat) }
}else{ } else {
let Bmap = window.BMapGL // 注意要带window,不然会报错(注意官方api,会有改动,之前是Bmap,后面3.0版本改为了BMap,最好查文档或者打印一下window) let Bmap = window.BMapGL // 注意要带window,不然会报错(注意官方api,会有改动,之前是Bmap,后面3.0版本改为了BMap,最好查文档或者打印一下window)
var b = new Bmap.Map('baiduMap') var b = new Bmap.Map('baiduMap')
b.centerAndZoom(new Bmap.Point(lat, lng), 15) b.centerAndZoom(new Bmap.Point(lat, lng), 15)
...@@ -250,18 +267,21 @@ export default defineComponent({ ...@@ -250,18 +267,21 @@ export default defineComponent({
height: 162px; height: 162px;
overflow: hidden; overflow: hidden;
} }
.hotelCard-title { .hotelCard-title {
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.hotel-info-item::before { .hotel-info-item::before {
display: inline; display: inline;
content: '·'; content: '·';
font-weight: bolder; font-weight: bolder;
margin-right: 4px; margin-right: 4px;
} }
.height-320 { .height-320 {
height: 250px; height: 250px;
} }
......
<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">
<n-cascader v-if="$q.platform.is.desktop" class="col-2 no-border" @update:value="changearea" v-model:value="cascader.addressValue" size="large" :placeholder="$t('hotel.area')" clearable check-strategy="all" :options="provinces" value-field="ID" label-field="Name" remote :on-load="loadChilds" cascade /> <n-cascader v-if="$q.platform.is.desktop" class="col-2 no-border" @update:value="changearea"
<q-field v-if="$q.platform.is.desktop" stack-label :label="$t('daterange')" standout class="q-ml-lg col-2" style="min-width: 190px" dense> v-model:value="cascader.addressValue" size="large" :placeholder="$t('hotel.area')" clearable check-strategy="all"
:options="provinces" value-field="ID" label-field="Name" remote :on-load="loadChilds" cascade />
<q-field v-if="$q.platform.is.desktop" stack-label :label="$t('daterange')" standout class="q-ml-lg col-2"
style="min-width: 190px" dense>
<div class="self-center full-width no-outline" tabindex="0">{{ searchClone.OpenTime }}</div> <div class="self-center full-width no-outline" tabindex="0">{{ searchClone.OpenTime }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="searchClone.OpenTime" :options="optionsFn" mask="YYYY/MM/DD" @update:model-value="dateRangeHandler"></q-date> <q-date v-model="searchClone.OpenTime" :options="optionsFn" mask="YYYY/MM/DD"
@update:model-value="dateRangeHandler"></q-date>
</q-popup-proxy> </q-popup-proxy>
</q-field> </q-field>
<q-input v-model="searchClone.Name" standout :class="{'q-ml-lg':$q.platform.is.desktop,'col':$q.platform.is.mobile}" style="min-width:150px;" dense :label="$t('v102.ticket.name')" /> <q-input v-model="searchClone.Name" standout
:class="{ 'q-ml-lg': $q.platform.is.desktop, 'col': $q.platform.is.mobile }" style="min-width:150px;" dense
:label="$t('v102.ticket.name')" />
<div class="col" v-if="$q.platform.is.desktop"></div> <div class="col" v-if="$q.platform.is.desktop"></div>
<q-btn v-if="searchClone.ViewType==1" :round="$q.platform.is.mobile" :dense="$q.platform.is.mobile" flat :icon="$q.platform.is.desktop?'view_list':'view_stream'" class="bg-grey-3 hover q-mr-md q-ml-md" color="dark" @click="changeViewHandler(2)"> <q-btn v-if="searchClone.ViewType == 1" :round="$q.platform.is.mobile" :dense="$q.platform.is.mobile" flat
:icon="$q.platform.is.desktop ? 'view_list' : 'view_stream'" class="bg-grey-3 hover q-mr-md q-ml-md" color="dark"
@click="changeViewHandler(2)">
<q-tooltip class="bg-dark">{{ $t('v102.ticket.toggleListType1') }}</q-tooltip> <q-tooltip class="bg-dark">{{ $t('v102.ticket.toggleListType1') }}</q-tooltip>
</q-btn> </q-btn>
<q-btn v-if="searchClone.ViewType==2" :round="$q.platform.is.mobile" :dense="$q.platform.is.mobile" flat icon="grid_view" class="bg-grey-3 hover q-mr-md q-ml-md" color="dark" @click="changeViewHandler(1)"> <q-btn v-if="searchClone.ViewType == 2" :round="$q.platform.is.mobile" :dense="$q.platform.is.mobile" flat
icon="grid_view" class="bg-grey-3 hover q-mr-md q-ml-md" color="dark" @click="changeViewHandler(1)">
<q-tooltip class="bg-dark">{{ $t('v102.ticket.toggleListType2') }}</q-tooltip> <q-tooltip class="bg-dark">{{ $t('v102.ticket.toggleListType2') }}</q-tooltip>
</q-btn> </q-btn>
<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"
<svg-icon color="dark" icon="Text/Filter.svg" :tips="$t('morequery')" :size="20"></svg-icon> v-if="searchCnt > 0" />
<q-tooltip>{{ $t('morequery') }}</q-tooltip> <svg-icon color="dark" icon="Text/Filter.svg" :tips="$t('morequery')" :size="20"></svg-icon>
<q-popup-proxy class="no-shadow" style="box-shadow: 0 0 50px #ddd !important" :offset="[0, 20]" :model-value="canHide"> <q-tooltip>{{ $t('morequery') }}</q-tooltip>
<q-card class="q-pa-md rounded-borders" style="width: 300px"> <q-popup-proxy class="no-shadow" style="box-shadow: 0 0 50px #ddd !important" :offset="[0, 20]"
<div class="q-mb-md text-subtitle2">{{ $t('morequery') }}</div> :model-value="canHide">
<div class="q-my-md" v-if="$q.platform.is.mobile"> <q-card class="q-pa-md rounded-borders" style="width: 300px">
<n-cascader class="col-2 no-border" @update:value="changearea" v-model:value="cascader.addressValue" size="large" :placeholder="$t('hotel.area')" clearable check-strategy="all" :options="provinces" value-field="ID" label-field="Name" remote :on-load="loadChilds" cascade /> <div class="q-mb-md text-subtitle2">{{ $t('morequery') }}</div>
</div> <div class="q-my-md" v-if="$q.platform.is.mobile">
<div class="q-my-md" v-if="$q.platform.is.mobile"> <n-cascader class="col-2 no-border" @update:value="changearea" v-model:value="cascader.addressValue"
<q-field stack-label :label="$t('daterange')" standout class="col-2" style="min-width: 190px" dense> size="large" :placeholder="$t('hotel.area')" clearable check-strategy="all" :options="provinces"
<div class="self-center full-width no-outline" tabindex="0">{{ searchClone.OpenTime }}</div> value-field="ID" label-field="Name" remote :on-load="loadChilds" cascade />
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy"> </div>
<q-date v-model="searchClone.OpenTime" :options="optionsFn" mask="YYYY/MM/DD" @update:model-value="dateRangeHandler"></q-date> <div class="q-my-md" v-if="$q.platform.is.mobile">
</q-popup-proxy> <q-field stack-label :label="$t('daterange')" standout class="col-2" style="min-width: 190px" dense>
</q-field> <div class="self-center full-width no-outline" tabindex="0">{{ searchClone.OpenTime }}</div>
</div> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<div class="row items-center"> <q-date v-model="searchClone.OpenTime" :options="optionsFn" mask="YYYY/MM/DD"
<q-input v-model="searchClone.StartPrice" class="col q-mr-md" mask="#.##" reverse-fill-mask dense type="text" standout :label="$t('hotel.minPrice')" /> @update:model-value="dateRangeHandler"></q-date>
<q-input v-model="searchClone.EndPrice" class="col" dense mask="#.##" reverse-fill-mask ftype="text" standout :label="$t('hotel.maxPrice')" /> </q-popup-proxy>
</div> </q-field>
</div>
</q-card> <div class="row items-center">
</q-popup-proxy> <q-input v-model="searchClone.StartPrice" class="col q-mr-md" mask="#.##" reverse-fill-mask dense
type="text" standout :label="$t('hotel.minPrice')" />
<q-input v-model="searchClone.EndPrice" class="col" dense mask="#.##" reverse-fill-mask ftype="text"
standout :label="$t('hotel.maxPrice')" />
</div>
</q-card>
</q-popup-proxy>
</q-btn> </q-btn>
<q-btn v-if="$q.platform.is.desktop" color="primary" unelevated :label="$t('query')" @click="setSearchHandler"/> <q-btn v-if="$q.platform.is.desktop" color="primary" unelevated :label="$t('query')" @click="setSearchHandler" />
<q-btn v-else color="primary" :round="$q.platform.is.mobile" :dense="$q.platform.is.mobile" :icon="$q.platform.is.mobile?'search':''" unelevated :label="$q.platform.is.mobile?'':$t('query')" @click="setSearchHandler"/> <q-btn v-else color="primary" :round="$q.platform.is.mobile" :dense="$q.platform.is.mobile"
:icon="$q.platform.is.mobile ? 'search' : ''" unelevated :label="$q.platform.is.mobile ? '' : $t('query')"
@click="setSearchHandler" />
<!-- view_list grid_view --> <!-- view_list grid_view -->
</div> </div>
</template> </template>
...@@ -71,7 +88,7 @@ export default { ...@@ -71,7 +88,7 @@ export default {
cascader: { cascader: {
addressValue: null addressValue: null
} as any, } as any,
searchClone:{} as any, searchClone: {} as any,
canHide: false, canHide: false,
}) })
const search = inject(DirtionmaryHelper.TICKET_QUERY_PARAM) as any const search = inject(DirtionmaryHelper.TICKET_QUERY_PARAM) as any
...@@ -128,11 +145,11 @@ export default { ...@@ -128,11 +145,11 @@ export default {
} }
} }
}, },
setSearchHandler(){ setSearchHandler() {
search.msg = JSON.parse(JSON.stringify(data.searchClone)) search.msg = JSON.parse(JSON.stringify(data.searchClone))
}, },
changeViewHandler(t:number){ changeViewHandler(t: number) {
data.searchClone.ViewType=t data.searchClone.ViewType = t
methods.setSearchHandler() methods.setSearchHandler()
}, },
dateRangeHandler(e: any) { dateRangeHandler(e: any) {
...@@ -148,8 +165,8 @@ export default { ...@@ -148,8 +165,8 @@ export default {
if (data.searchClone.QProvince > 0) setCnt++ if (data.searchClone.QProvince > 0) setCnt++
if (data.searchClone.OpenTime) setCnt++ if (data.searchClone.OpenTime) setCnt++
} }
if (data.searchClone.StartPrice>0) setCnt++ if (data.searchClone.StartPrice > 0) setCnt++
if (data.searchClone.EndPrice>0) setCnt++ if (data.searchClone.EndPrice > 0) setCnt++
return setCnt return setCnt
}) })
methods.initAddress() methods.initAddress()
...@@ -163,4 +180,6 @@ export default { ...@@ -163,4 +180,6 @@ export default {
} }
</script> </script>
<style></style> <style>
</style>
...@@ -20,19 +20,17 @@ ...@@ -20,19 +20,17 @@
<q-input class="q-mr-md" style='' v-model="search.GoFlightInfo" dense standout <q-input class="q-mr-md" style='' v-model="search.GoFlightInfo" dense standout
:label="$t('v102.vehicle.title4')" /> :label="$t('v102.vehicle.title4')" />
</div> </div>
</div>
<div class="flex2" style="margin-top: 20px;">
<div class="flex2"> <div class="flex2">
<q-input class="q-mr-md" style='' v-model="search.BackFlightInfo" dense standout <q-input class="q-mr-md" style='' v-model="search.BackFlightInfo" dense standout
:label="$t('v102.vehicle.title5')" /> :label="$t('v102.vehicle.title5')" />
</div> </div>
<div class="flex2"> <div class="flex2">
 <q-input v-model="search.PeopleNum" class="q-mr-md" dense mask="#.##" reverse-fill-mask <q-input v-model="search.PeopleNum" style="width: 172px" class="q-mr-md" dense mask="#.##"
ftype="text" standout :label="$t('v102.vehicle.title6')" /> reverse-fill-mask ftype="text" standout :label="$t('v102.vehicle.title6')" />
</div> </div>
<div class="q-my-md" style="margin-right: 15px;"> <div class="q-my-md" style="margin-right: 10px;">
<q-field stack-label :label="$t('v102.vehicle.title7')" standout class="col-2" <q-field stack-label :label="$t('v102.vehicle.title7')" standout class="col-2"
style="min-width: 180px" dense> style="min-width: 177px" dense>
<div class="self-center full-width no-outline" tabindex="0">{{ search.StartDate }}</div> <div class="self-center full-width no-outline" tabindex="0">{{ search.StartDate }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="search.StartDate" :options="optionsFn" mask="YYYY-MM-DD" <q-date v-model="search.StartDate" :options="optionsFn" mask="YYYY-MM-DD"
...@@ -41,22 +39,20 @@ ...@@ -41,22 +39,20 @@
</q-popup-proxy> </q-popup-proxy>
</q-field> </q-field>
</div> </div>
 <q-input @blur="checkInteger()" v-model="search.UseDayNum" class="q-mr-md" dense mask="#.##" <q-input @blur="checkInteger()" v-model="search.UseDayNum" class="q-mr-md" dense mask="#.##"
reverse-fill-mask ftype="text" standout :label="$t('v102.vehicle.title8')" /> reverse-fill-mask ftype="text" standout :label="$t('v102.vehicle.title8')" />
</div>
<div class="flex2">
<q-input class="q-mr-md" style='' v-model="search.GuideInfo" dense standout <q-input class="q-mr-md" style='' v-model="search.GuideInfo" dense standout
:label="$t('v102.vehicle.title10')" /> :label="$t('v102.vehicle.title10')" />
<q-input class="q-mr-md" style='' v-model="search.TeamName" dense standout <q-input class="q-mr-md" style='' v-model="search.TeamName" dense standout
:label="$t('v102.vehicle.title11')" /> :label="$t('v102.vehicle.title11')" />
<div class="q-my-md"> <div class="q-my-md">
<q-select style="width: 180px;" v-model="search.BusType" dense :options="vehicletop" emit-value <q-select style="width: 170px;" v-model="search.BusType" dense :options="vehicletop" emit-value
option-label="Name" option-value="Id" map-options clearable :label="$t('v102.vehicle.title13')" option-label="Name" option-value="Id" map-options clearable :label="$t('v102.vehicle.title13')"
standout /> standout />
</div> </div>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<table width="100%" border="1" style="text-align:left;border-collapse:collapse;table-layout:fixed;word-break:break-all;max-width: 800px;border: 1px solid rgba(0, 0, 0, 0.12); <table width="100%" border="1" style="text-align:left;border-collapse:collapse;table-layout:fixed;word-break:break-all;border: 1px solid rgba(0, 0, 0, 0.12);
margin: auto;"> margin: auto;">
<tr> <tr>
<th width="15%" align="center" class="td-title">{{ $t('v102.vehicle.tatle.th1') }}</th> <th width="15%" align="center" class="td-title">{{ $t('v102.vehicle.tatle.th1') }}</th>
...@@ -71,7 +67,6 @@ ...@@ -71,7 +67,6 @@
</td> </td>
<td> <td>
DAY{{ item.DayNum }} DAY{{ item.DayNum }}
</td> </td>
<td> <td>
<div class="q-my-md"> <div class="q-my-md">
...@@ -157,7 +152,7 @@ export default defineComponent({ ...@@ -157,7 +152,7 @@ export default defineComponent({
// UseType: null,//用车类型(接口返下拉列表) // UseType: null,//用车类型(接口返下拉列表)
// TripInfo: "",//行程信息 // TripInfo: "",//行程信息
// } // }
] ] as Array<any>
}, },
vehicletop: [],//上面车辆 vehicletop: [],//上面车辆
listvehicle: [],//车辆类型 listvehicle: [],//车辆类型
...@@ -276,7 +271,6 @@ export default defineComponent({ ...@@ -276,7 +271,6 @@ export default defineComponent({
}, },
// 点击时间选项 // 点击时间选项
dateRangeHandler(e: any) { dateRangeHandler(e: any) {
// data.search.StartDate = data.search.StartDate
if (qDateProxy.value) { if (qDateProxy.value) {
qDateProxy.value.hide() qDateProxy.value.hide()
methods.checkInteger() methods.checkInteger()
...@@ -340,6 +334,7 @@ export default defineComponent({ ...@@ -340,6 +334,7 @@ export default defineComponent({
.flex2 { .flex2 {
display: flex; display: flex;
align-items: center; align-items: center;
flex-wrap: wrap;
} }
......
...@@ -919,6 +919,39 @@ export default { ...@@ -919,6 +919,39 @@ export default {
s8: '見積もりの申請', s8: '見積もりの申請',
s9: '見積もり詳細', s9: '見積もり詳細',
s10: '見積もりの確認', s10: '見積もりの確認',
},
list2: {
s1: '発注者:',
s2: '注文時間:',
s3: '車の予約会社:',
s4: '車の予約人:',
s5: 'コミュニティ名:',
s6: '人数:',
s7: '日付:',
s8: '日数:',
s9: '往路便:',
s10: '帰りのフライト:',
s11: '車タイプ:',
s12: 'ガイド情報:',
s13: 'ステータスの確認:',
s14: '受信情報:',
s15: 'ステータスの確認:',
s16: '確認:',
s17: '確認済み:',
s18: '確認者:',
s19: '確認時間:',
s20: 'トリップ情報',
s21: '価格:',
s22: '駐車料金:',
s23: '運転手の宿泊費:',
s24: '小計:',
s25: '合計#ゴウケイ#:',
s26: 'コメント:',
s27: '注意事項:',
s28: 'ステータス:',
s29: '手渡し料:',
s30: '運転手:',
s31: 'ナンバープレート:',
} }
} }
}, },
......
...@@ -919,6 +919,39 @@ export default { ...@@ -919,6 +919,39 @@ export default {
s8: '신청 가격', s8: '신청 가격',
s9: '오퍼 상세정보', s9: '오퍼 상세정보',
s10: '오퍼를 확인하다', s10: '오퍼를 확인하다',
},
list2: {
s1: '다음 사람:',
s2: '주문 발주 시간:',
s3: '차량 주문 회사:',
s4: '자동차 예약자:',
s5: '단체명:',
s6: '수가:',
s7: '날짜:',
s8: '일수:',
s9: '출발 항공편:',
s10: '돌아오는 항공편:',
s11: '차량 종류:',
s12: '가이드 정보:',
s13: '상태 확인:',
s14: '공항 정보:',
s15: '상태 확인:',
s16: '확인:',
s17: '확인됨:',
s18: '확인인:',
s19: '시간을 확인하다:',
s20: '스트로크 정보',
s21: '가격:',
s22: '주차료:',
s23: '운전기사숙비:',
s24: '소 계:',
s25: '합계:',
s26: '비고:',
s27: '주의 사항:',
s28: '상태:',
s29: '손수 배합비:',
s30: '기사:',
s31: '자동차 번호판:',
} }
} }
}, },
......
...@@ -5,97 +5,97 @@ export default { ...@@ -5,97 +5,97 @@ export default {
failed: '执行失败', failed: '执行失败',
success: '执行成功', success: '执行成功',
appsuffix: "PIC同业预定系统", appsuffix: "PIC同业预定系统",
siteName:"同业预定系统", siteName: "同业预定系统",
lanuage:"系统语言", lanuage: "系统语言",
loginout:'登录信息失效,请重新登录', loginout: '登录信息失效,请重新登录',
timeout:'当前网络环境异常,请求超时', timeout: '当前网络环境异常,请求超时',
syslog:'系统升級告示', syslog: '系统升級告示',
sysmsg:'系统通知', sysmsg: '系统通知',
daterange:'请选择检索日期', daterange: '请选择检索日期',
morequery:'更多筛选项', morequery: '更多筛选项',
query:'检索', query: '检索',
Notifications:{ Notifications: {
title:'通知', title: '通知',
subtitle:'条新消息', subtitle: '条新消息',
more:'更多', more: '更多',
time:'h' time: 'h'
}, },
hotel:{ hotel: {
pageTitle:"酒店检索", pageTitle: "酒店检索",
area:"检索区域", area: "检索区域",
searchName:'酒店名称' searchName: '酒店名称'
}, },
userMenu:{ userMenu: {
mypro:'个人档案', mypro: '个人档案',
myfinace:'请求书', myfinace: '请求书',
fapiao:'索取发票', fapiao: '索取发票',
lang:'系统语言', lang: '系统语言',
signOut:'登出' signOut: '登出'
}, },
menu:{ menu: {
hotel:{ hotel: {
first:'酒店预定', first: '酒店预定',
second:'酒店检索', second: '酒店检索',
three:'酒店订单' three: '酒店订单'
}, },
car:{ car: {
first:'车辆预定', first: '车辆预定',
second:'车辆预定', second: '车辆预定',
three:'用车订单' three: '用车订单'
}, },
ticket:{ ticket: {
first:'门票预定', first: '门票预定',
second:'门票检索', second: '门票检索',
three:'门票订单' three: '门票订单'
}, },
finance:{ finance: {
first:'账单', first: '账单',
second:'月度请求书', second: '月度请求书',
three:'汇款说明' three: '汇款说明'
} }
}, },
login:{ login: {
notaccess:"沒有同业会员账户?", notaccess: "沒有同业会员账户?",
registlink:"申请注册", registlink: "申请注册",
title:"登入", title: "登入",
subTitle:"欢迎您的到来,开放急速采购", subTitle: "欢迎您的到来,开放急速采购",
account:"账户(EMail)", account: "账户(EMail)",
password:"密码", password: "密码",
forgot:"忘记密码?", forgot: "忘记密码?",
signin:"登入", signin: "登入",
pageTitle:"登入", pageTitle: "登入",
ruleTipsAccount:"请填写正确的邮箱账号", ruleTipsAccount: "请填写正确的邮箱账号",
ruleTipsPwd:"请填写密码", ruleTipsPwd: "请填写密码",
formTips:"请填写登录信息", formTips: "请填写登录信息",
success:"登陆成功" success: "登陆成功"
}, },
forget:{ forget: {
pageTitle:"忘记密码", pageTitle: "忘记密码",
title:"忘记密码", title: "忘记密码",
subtitle:"输入您的邮箱,以重置密码", subtitle: "输入您的邮箱,以重置密码",
notaccess:"已经是会员了?", notaccess: "已经是会员了?",
registlink:"登录", registlink: "登录",
account:"账户(EMail)", account: "账户(EMail)",
submit:"提交", submit: "提交",
cancel:"取消", cancel: "取消",
goback:"返回", goback: "返回",
mailResult:"邮件件已发送到您的邮箱,请根据邮件提示修改密码", mailResult: "邮件件已发送到您的邮箱,请根据邮件提示修改密码",
resultBtn:"我已知晓" resultBtn: "我已知晓"
}, },
newpwd:{ newpwd: {
pageTitle:"设置新密码", pageTitle: "设置新密码",
title:"设置新密码", title: "设置新密码",
subtitle:"为了您的账户安全,建议您定期修改密码", subtitle: "为了您的账户安全,建议您定期修改密码",
notaccess:"你已经重置密码了吗?", notaccess: "你已经重置密码了吗?",
registlink:"登入", registlink: "登入",
pass:"新密码", pass: "新密码",
passTips:"使用8个或8个以上的字母、数字和符号的組合", passTips: "使用8个或8个以上的字母、数字和符号的組合",
passvalidate:"请按照提示要求设置密码", passvalidate: "请按照提示要求设置密码",
repeatPassvalidate:"两次输入密码不一致", repeatPassvalidate: "两次输入密码不一致",
repeatPass:"再次输入密码", repeatPass: "再次输入密码",
notEmptyPass:'新密码最少为8位', notEmptyPass: '新密码最少为8位',
maxLengthPass:'密码长度应为8-16位', maxLengthPass: '密码长度应为8-16位',
updateResult:'新密码已经设置成功,可以立即登入', updateResult: '新密码已经设置成功,可以立即登入',
resultBtn:"立即登入" resultBtn: "立即登入"
} }
} }
...@@ -926,6 +926,39 @@ export default { ...@@ -926,6 +926,39 @@ export default {
s8: '申請報價', s8: '申請報價',
s9: '報價詳情', s9: '報價詳情',
s10: '確認報價', s10: '確認報價',
},
list2: {
s1: '下單人:',
s2: '下單時間:',
s3: '訂車公司:',
s4: '訂車人:',
s5: '團體名稱:',
s6: '人數:',
s7: '日期:',
s8: '天數:',
s9: '去程航班:',
s10: '回程航班:',
s11: '用車類型:',
s12: '導遊信息:',
s13: '確認狀態:',
s14: '接機信息:',
s15: '確認狀態:',
s16: '確認',
s17: '已確認',
s18: '確認人:',
s19: '確認時間:',
s20: '行程信息',
s21: '價格:',
s22: '停車費:',
s23: '司機住宿費:',
s24: '小計:',
s25: '合計:',
s26: '備註:',
s27: '注意事項:',
s28: '狀態:',
s29: '手配費:',
s30: '司機:',
s31: '車牌號:',
} }
}, },
CharteredBus:{ CharteredBus:{
......
<template> <template>
<div class="fix-height-subpage column no-wrap q-pa-md"> <div class="fix-height-subpage column no-wrap q-pa-md">
<list-header></list-header> <list-header></list-header>
<div class="col q-mt-md" :class="{'light-shadow q-pa-md bg-white rounded-border':$q.platform.is.desktop}"> <div class="col q-mt-md" :class="{ 'light-shadow q-pa-md bg-white rounded-border': $q.platform.is.desktop }">
<list-table></list-table> <list-table></list-table>
</div> </div>
<hotel-tips></hotel-tips> <hotel-tips></hotel-tips>
...@@ -38,28 +38,28 @@ export default defineComponent({ ...@@ -38,28 +38,28 @@ export default defineComponent({
Star: 0, Star: 0,
PriceLevel: 0, PriceLevel: 0,
Supplier: 0, Supplier: 0,
MaxPrice:'', MaxPrice: '',
MinPrice:'' MinPrice: ''
}) })
provide(DirtionmaryHelper.HOTEL_QUERY_PARAM, search) provide(DirtionmaryHelper.HOTEL_QUERY_PARAM, search)
const HotelCarList = ref<Array<any>>([]) const HotelCarList = ref<Array<any>>([])
const cacheCars = localStorage.getItem(DirtionmaryHelper.HOTEL_HOTELCARS_CACHE) const cacheCars = localStorage.getItem(DirtionmaryHelper.HOTEL_HOTELCARS_CACHE)
if(cacheCars){ if (cacheCars) {
let cacheCarArray = JSON.parse(cacheCars).filter((x:any)=>date.getDateDiff(new Date(x.Date),new Date(), 'days')>=20 ) let cacheCarArray = JSON.parse(cacheCars).filter((x: any) => date.getDateDiff(new Date(x.Date), new Date(), 'days') >= 20)
HotelCarList.value = cacheCarArray HotelCarList.value = cacheCarArray
} }
provide(DirtionmaryHelper.HOTEL_CAR_LIST, HotelCarList) provide(DirtionmaryHelper.HOTEL_CAR_LIST, HotelCarList)
const updateObj = ref<any>({}) const updateObj = ref<any>({})
provide(DirtionmaryHelper.HOTEL_UPDATEHOTEL_CAR,updateObj) provide(DirtionmaryHelper.HOTEL_UPDATEHOTEL_CAR, updateObj)
const orderstatus = ref(false) const orderstatus = ref(false)
provide(DirtionmaryHelper.HOTEL_CAR_ORDER_STATUS,orderstatus) provide(DirtionmaryHelper.HOTEL_CAR_ORDER_STATUS, orderstatus)
const HotelLengths = ref(0) const HotelLengths = ref(0)
provide(DirtionmaryHelper.HOTEL_CAR_ORDER_LENGTH,HotelLengths) provide(DirtionmaryHelper.HOTEL_CAR_ORDER_LENGTH, HotelLengths)
const menu=inject(DirtionmaryHelper.MENU_KEYS) as any const menu = inject(DirtionmaryHelper.MENU_KEYS) as any
menu.value=2 menu.value = 2
const methods = {} const methods = {}
return { return {
...toRefs(data), ...toRefs(data),
...@@ -69,4 +69,6 @@ export default defineComponent({ ...@@ -69,4 +69,6 @@ export default defineComponent({
}) })
</script> </script>
<style></style> <style>
</style>
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<div class=""> <div class="">
<q-table v-if="$q.platform.is.desktop" separator="cell" :pagination="pages" dense :rows="hotels" <q-table v-if="$q.platform.is.desktop" separator="cell" :pagination="pages" dense :rows="hotels"
row-key="Id" bordered :columns="cols" row-key="Id" bordered :columns="cols"
class="sticky-rightrowspan-column-table light-border col no-shadow"> class="sticky-rightrowspan-column-table light-border col no-shadow sticky-rightrowspan-column-table2">
<template v-slot:body-cell-Id="props"> <template v-slot:body-cell-Id="props">
<!--未提交报价,可以修改--> <!--未提交报价,可以修改-->
<q-td :prop="props"> <q-td :prop="props">
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
:label="$t('v102.vehicle.list.s8')" /> :label="$t('v102.vehicle.list.s8')" />
</span> </span>
<!--弹窗显示详细信息--> <!--弹窗显示详细信息-->
<span @click="mask(props.row.Id)" v-if="props.row.OfferState == 3"> <span @click="details(props.row.Id)" v-if="props.row.OfferState == 3">
<q-btn class="col q-mr-md" color="primary" unelevated <q-btn class="col q-mr-md" color="primary" unelevated
:label="$t('v102.vehicle.list.s9')" /> :label="$t('v102.vehicle.list.s9')" />
</span> </span>
...@@ -90,11 +90,16 @@ ...@@ -90,11 +90,16 @@
</q-table> </q-table>
</div> </div>
</q-card> </q-card>
<!-- 详情 --> <!-- 编辑 -->
<q-dialog v-model="showPriceList"> <q-dialog v-model="showPriceList">
<vehicle-popover @close="close" :Id='Id' @refresh="refresh"> <vehicle-popover @close="close" :Id='Id' @refresh="refresh">
</vehicle-popover> </vehicle-popover>
</q-dialog> </q-dialog>
<!-- 详情 -->
<q-dialog v-model="showdetails">
<vehicle-details @close="close" :Id='Id' @refresh="refresh">
</vehicle-details>
</q-dialog>
<!-- 取消弹窗 --> <!-- 取消弹窗 -->
<q-dialog v-model="cancelshow"> <q-dialog v-model="cancelshow">
<q-card flat class="" style="width: 40vw;"> <q-card flat class="" style="width: 40vw;">
...@@ -120,18 +125,20 @@ import { useI18n } from 'vue-i18n' ...@@ -120,18 +125,20 @@ import { useI18n } from 'vue-i18n'
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar'
import { date } from 'quasar' import { date } from 'quasar'
import vehiclePopover from '../../components/vehicle/vehiclePopover.vue' import vehiclePopover from '../../components/vehicle/vehiclePopover.vue'
import vehicleDetails from '../../components/vehicle/vehicleDetails.vue'//详情
// import { DirtionmaryHelper } from '../../../config/dictionary', // import { DirtionmaryHelper } from '../../../config/dictionary',
import useScrollModule from 'src/module/scrollbar/scrollModule' import useScrollModule from 'src/module/scrollbar/scrollModule'
import HotelService from '../../api/vehicle' import HotelService from '../../api/vehicle'
import message from 'src/utils/message' import message from 'src/utils/message'
import { ApiResult } from 'src/@types/enumHelper' import { ApiResult } from 'src/@types/enumHelper'
export default defineComponent({ export default defineComponent({
components: { vehiclePopover }, components: { vehiclePopover, vehicleDetails },
setup() { setup() {
const qDateProxy = ref(null) as any const qDateProxy = ref(null) as any
const { t } = useI18n() const { t } = useI18n()
const $q = useQuasar() const $q = useQuasar()
const data = reactive({ const data = reactive({
showdetails: false,
cancelshow: false, cancelshow: false,
CancelRemark: '', CancelRemark: '',
Id: 0, Id: 0,
...@@ -180,6 +187,11 @@ export default defineComponent({ ...@@ -180,6 +187,11 @@ export default defineComponent({
// data.pages.EndTime = data.dateRange.to // data.pages.EndTime = data.dateRange.to
// data.pageTitle = inject(DirtionmaryHelper.PAGE_TITLE_KEY) // data.pageTitle = inject(DirtionmaryHelper.PAGE_TITLE_KEY)
const methods = { const methods = {
// 详情
details(val: any) {
data.Id = val
data.showdetails = true
},
//申请报价 //申请报价
ApplyTripBus(item: any) { ApplyTripBus(item: any) {
HotelService.applyBusPricelation(item.Id) HotelService.applyBusPricelation(item.Id)
...@@ -251,6 +263,7 @@ export default defineComponent({ ...@@ -251,6 +263,7 @@ export default defineComponent({
} }
}, },
close() { close() {
data.showdetails = false
data.showPriceList = false data.showPriceList = false
}, },
// 刷新 // 刷新
...@@ -258,6 +271,7 @@ export default defineComponent({ ...@@ -258,6 +271,7 @@ export default defineComponent({
// console.log('444') // console.log('444')
data.pages.pageIndex = 1 data.pages.pageIndex = 1
methods.initHotel() methods.initHotel()
data.showdetails = false
data.showPriceList = false data.showPriceList = false
}, },
// 翻页 // 翻页
...@@ -321,4 +335,12 @@ th { ...@@ -321,4 +335,12 @@ th {
.table-title { .table-title {
font-size: 14px; font-size: 14px;
} }
.sticky-rightrowspan-column-table2 th:last-child,
.sticky-rightrowspan-column-table2 tbody tr td {
position: sticky !important;
right: 0 !important;
z-index: 1 !important;
box-shadow: rgba(0, 0, 0, 0.05) -2px 0px 0px !important;
}
</style> </style>
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