Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
bigwood
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
罗超
bigwood
Commits
3bd3782f
Commit
3bd3782f
authored
Jan 17, 2023
by
youjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/bigwood
parents
eef91431
a788314c
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
366 additions
and
184 deletions
+366
-184
vehicle.ts
src/api/vehicle.ts
+8
-0
ListHeader.vue
src/components/hotel/list/ListHeader.vue
+37
-20
hotelDetails.vue
src/components/hotel/list/hotelDetails.vue
+34
-14
ListHeader.vue
src/components/ticket/list/ListHeader.vue
+58
-39
vehiclePopover.vue
src/components/vehicle/vehiclePopover.vue
+9
-14
index.ts
src/i18n/ja-RB/index.ts
+33
-0
index.ts
src/i18n/ko-HG/index.ts
+33
-0
index.ts
src/i18n/zh-SW/index.ts
+82
-82
index.ts
src/i18n/zh-TW/index.ts
+33
-0
HotelList.vue
src/pages/hotel/HotelList.vue
+13
-11
index.vue
src/pages/vehicle/index.vue
+26
-4
No files found.
src/api/vehicle.ts
View file @
3bd3782f
...
...
@@ -68,5 +68,13 @@ class HotelService {
static
async
sureBusPricelation
(
Id
:
number
):
Promise
<
HttpResponse
>
{
return
request
(
'tripbus_SureBusTripOffer'
,
{
Id
})
}
/**
* 获取报价详情
* @param param
* @returns
*/
static
async
DetailsQuotation
(
Id
:
number
):
Promise
<
HttpResponse
>
{
return
request
(
'tripbus_GetTripBusInfo'
,
{
Id
})
}
}
export
default
HotelService
\ No newline at end of file
src/components/hotel/list/ListHeader.vue
View file @
3bd3782f
<
template
>
<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
/>
<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
>
<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
/>
<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>
<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>
<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>
<q-btn
unelevated
class=
"bg-grey-3 hover q-mr-md"
icon=
"shopping_cart"
:title=
"$t('hotel.car.shoppingTitle')"
@
click=
"rightCarOpen=true"
>
<q-badge
color=
"red"
rounded
floating
>
{{
HotelLength
}}
</q-badge>
<q-btn
unelevated
class=
"bg-grey-3 hover q-mr-md"
icon=
"shopping_cart"
:title=
"$t('hotel.car.shoppingTitle')"
@
click=
"rightCarOpen = true"
>
<q-badge
color=
"red"
rounded
floating
>
{{
HotelLength
}}
</q-badge>
</q-btn>
<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
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
class=
"q-my-md"
v-if=
"$q.platform.is.mobile"
>
<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>
<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>
<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
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
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.MaxPrice"
class=
"col"
dense
mask=
"#.##"
reverse-fill-mask
ftype=
"text"
standout
:label=
"$t('hotel.maxPrice')"
/>
<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.MaxPrice"
class=
"col"
dense
mask=
"#.##"
reverse-fill-mask
ftype=
"text"
standout
:label=
"$t('hotel.maxPrice')"
/>
</div>
</q-card>
</q-popup-proxy>
...
...
@@ -58,7 +75,7 @@ import { computed, inject, provide, reactive, ref, toRefs, defineComponent, onMo
import
HotelService
from
'../../../api/hotel'
import
message
from
'../../../utils/message'
import
{
ApiResult
}
from
'../../../@types/enumHelper'
import
{
CascaderOption
,
NCascader
,
NSelect
}
from
'naive-ui'
import
{
CascaderOption
,
NCascader
,
NSelect
}
from
'naive-ui'
import
{
date
}
from
'quasar'
import
{
HotelRate
,
useHotel
}
from
'../../../utils/hotelRate'
import
{
useQuasar
}
from
'quasar'
...
...
@@ -174,7 +191,7 @@ export default defineComponent({
changearea
(
e
:
number
,
option
:
any
,
pathValues
:
Array
<
any
>
)
{
search
.
Province
=
0
search
.
City
=
0
if
(
pathValues
)
{
if
(
pathValues
)
{
if
(
pathValues
.
length
>
0
)
{
search
.
Province
=
pathValues
[
0
].
ID
}
...
...
@@ -188,10 +205,10 @@ export default defineComponent({
console
.
log
(
search
.
HotelChooseArray
)
},
1000
)
},
close
(){
close
()
{
data
.
rightCarOpen
=
false
},
setSuccess
(){
setSuccess
()
{
data
.
rightCarOpen
=
false
},
}
...
...
@@ -210,13 +227,13 @@ export default defineComponent({
methods
.
initAddress
()
methods
.
initHotels
()
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
)
=>
{
HotelLength
.
value
=
n
})
onMounted
(()
=>
{
onMounted
(()
=>
{
HotelLength
.
value
=
cars
.
value
.
length
})
return
{
...
...
src/components/hotel/list/hotelDetails.vue
View file @
3bd3782f
...
...
@@ -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>
</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
/>
</div>
</div>
...
...
@@ -39,22 +39,33 @@
</div>
</div>
<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
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 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
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=
"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
class=
"col-7"
: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
class=
"col-7"
: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
class=
"col q-pl-sm"
v-if=
"h.List.length > 1"
>
<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
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"
>
<span
class=
"fz20 text-weight-bold"
>
+
</span>
<span
class=
"text-h5 text-weight-bold"
>
{{
h
.
List
.
length
-
3
}}
</span>
...
...
@@ -63,8 +74,11 @@
</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">
<GoogleMap
api-key=
"AIzaSyCvRZN9lGl3y3EsM0A0sWPf1pZ2olGsyNg"
style=
"width: 100%; height: 100%"
:center=
"center"
:zoom=
"15"
v-if=
"center"
>
<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">
<GoogleMap
api-key=
"AIzaSyCvRZN9lGl3y3EsM0A0sWPf1pZ2olGsyNg"
style=
"width: 100%; height: 100%"
:center=
"center"
:zoom=
"15"
v-if=
"center"
>
<Marker
:options=
"
{ position: center }" />
</GoogleMap>
</div>
...
...
@@ -90,7 +104,10 @@
<div
class=
"col-3 f12 text-grey-500"
>
{{
$t
(
'hd.item.c'
)
}}
</div>
<div
class=
"col text-subtitle2 text-weight-bolder"
>
{{
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>
...
...
@@ -187,10 +204,10 @@ export default defineComponent({
const
methods
=
{
initMap
(
lat
:
any
,
lng
:
any
)
{
let
country
=
localStorage
.
getItem
(
DirtionmaryHelper
.
USER_IN_COUNTRY
)
??
'GW'
if
(
country
!=
'CN'
)
{
let
country
=
localStorage
.
getItem
(
DirtionmaryHelper
.
USER_IN_COUNTRY
)
??
'GW'
if
(
country
!=
'CN'
)
{
data
.
center
=
{
lat
:
parseFloat
(
lng
),
lng
:
parseFloat
(
lat
)
}
}
else
{
}
else
{
let
Bmap
=
window
.
BMapGL
// 注意要带window,不然会报错(注意官方api,会有改动,之前是Bmap,后面3.0版本改为了BMap,最好查文档或者打印一下window)
var
b
=
new
Bmap
.
Map
(
'baiduMap'
)
b
.
centerAndZoom
(
new
Bmap
.
Point
(
lat
,
lng
),
15
)
...
...
@@ -250,18 +267,21 @@ export default defineComponent({
height
:
162px
;
overflow
:
hidden
;
}
.hotelCard-title
{
width
:
100%
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
}
.hotel-info-item
::before
{
display
:
inline
;
content
:
'·'
;
font-weight
:
bolder
;
margin-right
:
4px
;
}
.height-320
{
height
:
250px
;
}
...
...
src/components/ticket/list/ListHeader.vue
View file @
3bd3782f
<
template
>
<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
/>
<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
>
<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
/>
<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>
<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-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>
<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-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-btn>
<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"
/>
<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-card
class=
"q-pa-md rounded-borders"
style=
"width: 300px"
>
<div
class=
"q-mb-md text-subtitle2"
>
{{
$t
(
'morequery'
)
}}
</div>
<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"
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
class=
"q-my-md"
v-if=
"$q.platform.is.mobile"
>
<q-field
stack-label
:label=
"$t('daterange')"
standout
class=
"col-2"
style=
"min-width: 190px"
dense
>
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{
searchClone
.
OpenTime
}}
</div>
<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-popup-proxy>
</q-field>
</div>
<div
class=
"row items-center"
>
<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-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-card
class=
"q-pa-md rounded-borders"
style=
"width: 300px"
>
<div
class=
"q-mb-md text-subtitle2"
>
{{
$t
(
'morequery'
)
}}
</div>
<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"
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
class=
"q-my-md"
v-if=
"$q.platform.is.mobile"
>
<q-field
stack-label
:label=
"$t('daterange')"
standout
class=
"col-2"
style=
"min-width: 190px"
dense
>
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{
searchClone
.
OpenTime
}}
</div>
<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-popup-proxy>
</q-field>
</div>
<div
class=
"row items-center"
>
<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
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-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"
/>
<!-- view_list grid_view -->
</div>
</
template
>
...
...
@@ -71,7 +88,7 @@ export default {
cascader
:
{
addressValue
:
null
}
as
any
,
searchClone
:{}
as
any
,
searchClone
:
{}
as
any
,
canHide
:
false
,
})
const
search
=
inject
(
DirtionmaryHelper
.
TICKET_QUERY_PARAM
)
as
any
...
...
@@ -128,11 +145,11 @@ export default {
}
}
},
setSearchHandler
(){
setSearchHandler
()
{
search
.
msg
=
JSON
.
parse
(
JSON
.
stringify
(
data
.
searchClone
))
},
changeViewHandler
(
t
:
number
)
{
data
.
searchClone
.
ViewType
=
t
changeViewHandler
(
t
:
number
)
{
data
.
searchClone
.
ViewType
=
t
methods
.
setSearchHandler
()
},
dateRangeHandler
(
e
:
any
)
{
...
...
@@ -148,8 +165,8 @@ export default {
if
(
data
.
searchClone
.
QProvince
>
0
)
setCnt
++
if
(
data
.
searchClone
.
OpenTime
)
setCnt
++
}
if
(
data
.
searchClone
.
StartPrice
>
0
)
setCnt
++
if
(
data
.
searchClone
.
EndPrice
>
0
)
setCnt
++
if
(
data
.
searchClone
.
StartPrice
>
0
)
setCnt
++
if
(
data
.
searchClone
.
EndPrice
>
0
)
setCnt
++
return
setCnt
})
methods
.
initAddress
()
...
...
@@ -163,4 +180,6 @@ export default {
}
</
script
>
<
style
></
style
>
<
style
>
</
style
>
src/components/vehicle/vehiclePopover.vue
View file @
3bd3782f
...
...
@@ -20,19 +20,17 @@
<q-input
class=
"q-mr-md"
style=
''
v-model=
"search.GoFlightInfo"
dense
standout
:label=
"$t('v102.vehicle.title4')"
/>
</div>
</div>
<div
class=
"flex2"
style=
"margin-top: 20px;"
>
<div
class=
"flex2"
>
<q-input
class=
"q-mr-md"
style=
''
v-model=
"search.BackFlightInfo"
dense
standout
:label=
"$t('v102.vehicle.title5')"
/>
</div>
<div
class=
"flex2"
>
<q-input
v-model=
"search.PeopleNum"
class=
"q-mr-md"
dense
mask=
"#.##"
reverse-fill-mask
ftype=
"text"
standout
:label=
"$t('v102.vehicle.title6')"
/>
<q-input
v-model=
"search.PeopleNum"
style=
"width: 172px"
class=
"q-mr-md"
dense
mask=
"#.##"
reverse-fill-mask
ftype=
"text"
standout
:label=
"$t('v102.vehicle.title6')"
/>
</div>
<div
class=
"q-my-md"
style=
"margin-right: 1
5
px;"
>
<div
class=
"q-my-md"
style=
"margin-right: 1
0
px;"
>
<q-field
stack-label
:label=
"$t('v102.vehicle.title7')"
standout
class=
"col-2"
style=
"min-width: 1
80
px"
dense
>
style=
"min-width: 1
77
px"
dense
>
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{
search
.
StartDate
}}
</div>
<q-popup-proxy
:offset=
"[0, 10]"
ref=
"qDateProxy"
>
<q-date
v-model=
"search.StartDate"
:options=
"optionsFn"
mask=
"YYYY-MM-DD"
...
...
@@ -41,22 +39,20 @@
</q-popup-proxy>
</q-field>
</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')"
/>
</div>
<div
class=
"flex2"
>
<q-input
class=
"q-mr-md"
style=
''
v-model=
"search.GuideInfo"
dense
standout
:label=
"$t('v102.vehicle.title10')"
/>
<q-input
class=
"q-mr-md"
style=
''
v-model=
"search.TeamName"
dense
standout
:label=
"$t('v102.vehicle.title11')"
/>
<div
class=
"q-my-md"
>
<q-select
style=
"width: 1
8
0px;"
v-model=
"search.BusType"
dense
:options=
"vehicletop"
emit-value
<q-select
style=
"width: 1
7
0px;"
v-model=
"search.BusType"
dense
:options=
"vehicletop"
emit-value
option-label=
"Name"
option-value=
"Id"
map-options
clearable
:label=
"$t('v102.vehicle.title13')"
standout
/>
</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;"
>
<tr>
<th
width=
"15%"
align=
"center"
class=
"td-title"
>
{{
$t
(
'v102.vehicle.tatle.th1'
)
}}
</th>
...
...
@@ -71,7 +67,6 @@
</td>
<td>
DAY
{{
item
.
DayNum
}}
</td>
<td>
<div
class=
"q-my-md"
>
...
...
@@ -157,7 +152,7 @@ export default defineComponent({
// UseType: null,//用车类型(接口返下拉列表)
// TripInfo: "",//行程信息
// }
]
]
as
Array
<
any
>
},
vehicletop
:
[],
//上面车辆
listvehicle
:
[],
//车辆类型
...
...
@@ -276,7 +271,6 @@ export default defineComponent({
},
// 点击时间选项
dateRangeHandler
(
e
:
any
)
{
// data.search.StartDate = data.search.StartDate
if
(
qDateProxy
.
value
)
{
qDateProxy
.
value
.
hide
()
methods
.
checkInteger
()
...
...
@@ -340,6 +334,7 @@ export default defineComponent({
.flex2
{
display
:
flex
;
align-items
:
center
;
flex-wrap
:
wrap
;
}
...
...
src/i18n/ja-RB/index.ts
View file @
3bd3782f
...
...
@@ -919,6 +919,39 @@ export default {
s8
:
'見積もりの申請'
,
s9
:
'見積もり詳細'
,
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
:
'ナンバープレート:'
,
}
}
},
...
...
src/i18n/ko-HG/index.ts
View file @
3bd3782f
...
...
@@ -919,6 +919,39 @@ export default {
s8
:
'신청 가격'
,
s9
:
'오퍼 상세정보'
,
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
:
'자동차 번호판:'
,
}
}
},
...
...
src/i18n/zh-SW/index.ts
View file @
3bd3782f
...
...
@@ -5,97 +5,97 @@ export default {
failed
:
'执行失败'
,
success
:
'执行成功'
,
appsuffix
:
"PIC同业预定系统"
,
siteName
:
"同业预定系统"
,
lanuage
:
"系统语言"
,
loginout
:
'登录信息失效,请重新登录'
,
timeout
:
'当前网络环境异常,请求超时'
,
syslog
:
'系统升級告示'
,
sysmsg
:
'系统通知'
,
daterange
:
'请选择检索日期'
,
morequery
:
'更多筛选项'
,
query
:
'检索'
,
Notifications
:{
title
:
'通知'
,
subtitle
:
'条新消息'
,
more
:
'更多'
,
time
:
'h'
siteName
:
"同业预定系统"
,
lanuage
:
"系统语言"
,
loginout
:
'登录信息失效,请重新登录'
,
timeout
:
'当前网络环境异常,请求超时'
,
syslog
:
'系统升級告示'
,
sysmsg
:
'系统通知'
,
daterange
:
'请选择检索日期'
,
morequery
:
'更多筛选项'
,
query
:
'检索'
,
Notifications
:
{
title
:
'通知'
,
subtitle
:
'条新消息'
,
more
:
'更多'
,
time
:
'h'
},
hotel
:{
pageTitle
:
"酒店检索"
,
area
:
"检索区域"
,
searchName
:
'酒店名称'
hotel
:
{
pageTitle
:
"酒店检索"
,
area
:
"检索区域"
,
searchName
:
'酒店名称'
},
userMenu
:{
mypro
:
'个人档案'
,
myfinace
:
'请求书'
,
fapiao
:
'索取发票'
,
lang
:
'系统语言'
,
signOut
:
'登出'
userMenu
:
{
mypro
:
'个人档案'
,
myfinace
:
'请求书'
,
fapiao
:
'索取发票'
,
lang
:
'系统语言'
,
signOut
:
'登出'
},
menu
:{
hotel
:{
first
:
'酒店预定'
,
second
:
'酒店检索'
,
three
:
'酒店订单'
menu
:
{
hotel
:
{
first
:
'酒店预定'
,
second
:
'酒店检索'
,
three
:
'酒店订单'
},
car
:{
first
:
'车辆预定'
,
second
:
'车辆预定'
,
three
:
'用车订单'
car
:
{
first
:
'车辆预定'
,
second
:
'车辆预定'
,
three
:
'用车订单'
},
ticket
:{
first
:
'门票预定'
,
second
:
'门票检索'
,
three
:
'门票订单'
ticket
:
{
first
:
'门票预定'
,
second
:
'门票检索'
,
three
:
'门票订单'
},
finance
:{
first
:
'账单'
,
second
:
'月度请求书'
,
three
:
'汇款说明'
finance
:
{
first
:
'账单'
,
second
:
'月度请求书'
,
three
:
'汇款说明'
}
},
login
:{
notaccess
:
"沒有同业会员账户?"
,
registlink
:
"申请注册"
,
title
:
"登入"
,
subTitle
:
"欢迎您的到来,开放急速采购"
,
account
:
"账户(EMail)"
,
password
:
"密码"
,
forgot
:
"忘记密码?"
,
signin
:
"登入"
,
pageTitle
:
"登入"
,
ruleTipsAccount
:
"请填写正确的邮箱账号"
,
ruleTipsPwd
:
"请填写密码"
,
formTips
:
"请填写登录信息"
,
success
:
"登陆成功"
login
:
{
notaccess
:
"沒有同业会员账户?"
,
registlink
:
"申请注册"
,
title
:
"登入"
,
subTitle
:
"欢迎您的到来,开放急速采购"
,
account
:
"账户(EMail)"
,
password
:
"密码"
,
forgot
:
"忘记密码?"
,
signin
:
"登入"
,
pageTitle
:
"登入"
,
ruleTipsAccount
:
"请填写正确的邮箱账号"
,
ruleTipsPwd
:
"请填写密码"
,
formTips
:
"请填写登录信息"
,
success
:
"登陆成功"
},
forget
:{
pageTitle
:
"忘记密码"
,
title
:
"忘记密码"
,
subtitle
:
"输入您的邮箱,以重置密码"
,
notaccess
:
"已经是会员了?"
,
registlink
:
"登录"
,
account
:
"账户(EMail)"
,
submit
:
"提交"
,
cancel
:
"取消"
,
goback
:
"返回"
,
mailResult
:
"邮件件已发送到您的邮箱,请根据邮件提示修改密码"
,
resultBtn
:
"我已知晓"
forget
:
{
pageTitle
:
"忘记密码"
,
title
:
"忘记密码"
,
subtitle
:
"输入您的邮箱,以重置密码"
,
notaccess
:
"已经是会员了?"
,
registlink
:
"登录"
,
account
:
"账户(EMail)"
,
submit
:
"提交"
,
cancel
:
"取消"
,
goback
:
"返回"
,
mailResult
:
"邮件件已发送到您的邮箱,请根据邮件提示修改密码"
,
resultBtn
:
"我已知晓"
},
newpwd
:{
pageTitle
:
"设置新密码"
,
title
:
"设置新密码"
,
subtitle
:
"为了您的账户安全,建议您定期修改密码"
,
notaccess
:
"你已经重置密码了吗?"
,
registlink
:
"登入"
,
pass
:
"新密码"
,
passTips
:
"使用8个或8个以上的字母、数字和符号的組合"
,
passvalidate
:
"请按照提示要求设置密码"
,
repeatPassvalidate
:
"两次输入密码不一致"
,
repeatPass
:
"再次输入密码"
,
notEmptyPass
:
'新密码最少为8位'
,
maxLengthPass
:
'密码长度应为8-16位'
,
updateResult
:
'新密码已经设置成功,可以立即登入'
,
resultBtn
:
"立即登入"
newpwd
:
{
pageTitle
:
"设置新密码"
,
title
:
"设置新密码"
,
subtitle
:
"为了您的账户安全,建议您定期修改密码"
,
notaccess
:
"你已经重置密码了吗?"
,
registlink
:
"登入"
,
pass
:
"新密码"
,
passTips
:
"使用8个或8个以上的字母、数字和符号的組合"
,
passvalidate
:
"请按照提示要求设置密码"
,
repeatPassvalidate
:
"两次输入密码不一致"
,
repeatPass
:
"再次输入密码"
,
notEmptyPass
:
'新密码最少为8位'
,
maxLengthPass
:
'密码长度应为8-16位'
,
updateResult
:
'新密码已经设置成功,可以立即登入'
,
resultBtn
:
"立即登入"
}
}
src/i18n/zh-TW/index.ts
View file @
3bd3782f
...
...
@@ -926,6 +926,39 @@ export default {
s8
:
'申請報價'
,
s9
:
'報價詳情'
,
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
:{
...
...
src/pages/hotel/HotelList.vue
View file @
3bd3782f
<
template
>
<div
class=
"fix-height-subpage column no-wrap q-pa-md"
>
<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>
</div>
<hotel-tips></hotel-tips>
...
...
@@ -38,28 +38,28 @@ export default defineComponent({
Star
:
0
,
PriceLevel
:
0
,
Supplier
:
0
,
MaxPrice
:
''
,
MinPrice
:
''
MaxPrice
:
''
,
MinPrice
:
''
})
provide
(
DirtionmaryHelper
.
HOTEL_QUERY_PARAM
,
search
)
const
HotelCarList
=
ref
<
Array
<
any
>>
([])
const
cacheCars
=
localStorage
.
getItem
(
DirtionmaryHelper
.
HOTEL_HOTELCARS_CACHE
)
if
(
cacheCars
)
{
let
cacheCarArray
=
JSON
.
parse
(
cacheCars
).
filter
((
x
:
any
)
=>
date
.
getDateDiff
(
new
Date
(
x
.
Date
),
new
Date
(),
'days'
)
>=
20
)
if
(
cacheCars
)
{
let
cacheCarArray
=
JSON
.
parse
(
cacheCars
).
filter
((
x
:
any
)
=>
date
.
getDateDiff
(
new
Date
(
x
.
Date
),
new
Date
(),
'days'
)
>=
20
)
HotelCarList
.
value
=
cacheCarArray
}
provide
(
DirtionmaryHelper
.
HOTEL_CAR_LIST
,
HotelCarList
)
const
updateObj
=
ref
<
any
>
({})
provide
(
DirtionmaryHelper
.
HOTEL_UPDATEHOTEL_CAR
,
updateObj
)
provide
(
DirtionmaryHelper
.
HOTEL_UPDATEHOTEL_CAR
,
updateObj
)
const
orderstatus
=
ref
(
false
)
provide
(
DirtionmaryHelper
.
HOTEL_CAR_ORDER_STATUS
,
orderstatus
)
provide
(
DirtionmaryHelper
.
HOTEL_CAR_ORDER_STATUS
,
orderstatus
)
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
menu
.
value
=
2
const
menu
=
inject
(
DirtionmaryHelper
.
MENU_KEYS
)
as
any
menu
.
value
=
2
const
methods
=
{}
return
{
...
toRefs
(
data
),
...
...
@@ -69,4 +69,6 @@ export default defineComponent({
})
</
script
>
<
style
></
style
>
<
style
>
</
style
>
src/pages/vehicle/index.vue
View file @
3bd3782f
...
...
@@ -28,7 +28,7 @@
<div
class=
""
>
<q-table
v-if=
"$q.platform.is.desktop"
separator=
"cell"
:pagination=
"pages"
dense
:rows=
"hotels"
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"
>
<!--未提交报价,可以修改-->
<q-td
:prop=
"props"
>
...
...
@@ -46,7 +46,7 @@
:label=
"$t('v102.vehicle.list.s8')"
/>
</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
:label=
"$t('v102.vehicle.list.s9')"
/>
</span>
...
...
@@ -90,11 +90,16 @@
</q-table>
</div>
</q-card>
<!--
详情
-->
<!--
编辑
-->
<q-dialog
v-model=
"showPriceList"
>
<vehicle-popover
@
close=
"close"
:Id=
'Id'
@
refresh=
"refresh"
>
</vehicle-popover>
</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-card
flat
class=
""
style=
"width: 40vw;"
>
...
...
@@ -120,18 +125,20 @@ import { useI18n } from 'vue-i18n'
import
{
useQuasar
}
from
'quasar'
import
{
date
}
from
'quasar'
import
vehiclePopover
from
'../../components/vehicle/vehiclePopover.vue'
import
vehicleDetails
from
'../../components/vehicle/vehicleDetails.vue'
//详情
// import { DirtionmaryHelper } from '../../../config/dictionary',
import
useScrollModule
from
'src/module/scrollbar/scrollModule'
import
HotelService
from
'../../api/vehicle'
import
message
from
'src/utils/message'
import
{
ApiResult
}
from
'src/@types/enumHelper'
export
default
defineComponent
({
components
:
{
vehiclePopover
},
components
:
{
vehiclePopover
,
vehicleDetails
},
setup
()
{
const
qDateProxy
=
ref
(
null
)
as
any
const
{
t
}
=
useI18n
()
const
$q
=
useQuasar
()
const
data
=
reactive
({
showdetails
:
false
,
cancelshow
:
false
,
CancelRemark
:
''
,
Id
:
0
,
...
...
@@ -180,6 +187,11 @@ export default defineComponent({
// data.pages.EndTime = data.dateRange.to
// data.pageTitle = inject(DirtionmaryHelper.PAGE_TITLE_KEY)
const
methods
=
{
// 详情
details
(
val
:
any
)
{
data
.
Id
=
val
data
.
showdetails
=
true
},
//申请报价
ApplyTripBus
(
item
:
any
)
{
HotelService
.
applyBusPricelation
(
item
.
Id
)
...
...
@@ -251,6 +263,7 @@ export default defineComponent({
}
},
close
()
{
data
.
showdetails
=
false
data
.
showPriceList
=
false
},
// 刷新
...
...
@@ -258,6 +271,7 @@ export default defineComponent({
// console.log('444')
data
.
pages
.
pageIndex
=
1
methods
.
initHotel
()
data
.
showdetails
=
false
data
.
showPriceList
=
false
},
// 翻页
...
...
@@ -321,4 +335,12 @@ th {
.table-title
{
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
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment