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
ce5e3efc
Commit
ce5e3efc
authored
Aug 24, 2023
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增页面
parent
f37f6c2b
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
796 additions
and
347 deletions
+796
-347
didahotel.ts
src/api/didahotel.ts
+37
-0
DidaHeader.vue
src/components/scattered/dida/DidaHeader.vue
+471
-183
DidaListTable.vue
src/components/scattered/dida/DidaListTable.vue
+283
-161
index.ts
src/i18n/ja-RB/index.ts
+1
-1
index.ts
src/i18n/ko-HG/index.ts
+1
-1
index.ts
src/i18n/zh-TW/index.ts
+1
-0
didaHotel.vue
src/pages/scattered/didaHotel.vue
+2
-1
No files found.
src/api/didahotel.ts
0 → 100644
View file @
ce5e3efc
import
{
HttpResponse
}
from
'../@types'
import
request
from
'./request'
//道旅酒店API
class
DidaService
{
//获取道旅酒店类型
static
async
GetDidaPropertyCategory
(
param
:
any
):
Promise
<
HttpResponse
>
{
return
request
(
'dmc_post_Get_GetJAPAN_HotelList'
,
param
,
false
)
}
//获取道旅餐食类型
static
async
GetDidaMealType
(
param
:
any
):
Promise
<
HttpResponse
>
{
return
request
(
'dmc_post_Get_GetJAPAN_HotelList'
,
param
,
false
)
}
//道旅城市
static
async
GetDidaCity
(
param
:
any
):
Promise
<
HttpResponse
>
{
return
request
(
'dmc_post_Get_GetJAPAN_HotelList'
,
param
,
false
)
}
//道旅床型
static
async
GetDidaBedType
(
param
:
any
):
Promise
<
HttpResponse
>
{
return
request
(
'dmc_post_Get_GetJAPAN_HotelList'
,
param
,
false
)
}
// 道旅酒店列表
static
async
GetDidaHotelList
(
param
:
any
):
Promise
<
HttpResponse
>
{
param
.
reviewRatingUpperLimits
=
param
.
reviewRatingUpperLimits
&&
param
.
reviewRatingUpperLimits
!=
''
?
param
.
reviewRatingUpperLimits
:
0
param
.
reviewRatingLowerLimits
=
param
.
reviewRatingLowerLimits
&&
param
.
reviewRatingLowerLimits
!=
''
?
param
.
reviewRatingLowerLimits
:
0
param
.
searchMaxRate
=
param
.
searchMaxRate
&&
param
.
searchMaxRate
!=
''
?
param
.
searchMaxRate
:
0
param
.
searchMinRate
=
param
.
searchMinRate
&&
param
.
searchMinRate
!=
''
?
param
.
searchMinRate
:
0
return
request
(
'dmc_post_Get_GetJAPAN_HotelList'
,
param
,
false
)
}
}
export
default
DidaService
src/components/scattered/dida/DidaHeader.vue
View file @
ce5e3efc
<
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"
style=
"min-width: 190px;"
unelevated
v-model=
"placeKeyWords"
dense
:options=
"Areas"
emit-value
option-label=
"name"
option-value=
"name"
map-options
:label=
"$t('hotel.area')"
standout
/>
<q-select
<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-if=
"$q.platform.is.desktop"
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{
dateRangeFormat
}}
</div>
style=
"min-width: 190px"
unelevated
v-model=
"placeKeyWords"
dense
:options=
"Areas"
emit-value
option-label=
"name"
option-value=
"name"
map-options
:label=
"$t('hotel.area')"
standout
/>
<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-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=
"row"
v-if=
"$q.platform.is.desktop"
>
<div
class=
"row"
v-if=
"$q.platform.is.desktop"
>
<q-select
class=
"q-ml-lg"
style=
"min-width: 90px;z-index: 99999;"
unelevated
v-model=
"room"
dense
:options=
"theRooms"
emit-value
option-label=
"name"
option-value=
"id"
map-options
:label=
"$t('v101.scattered.kefang')"
standout
@
update:model-value=
"getRoomList"
>
<q-select
class=
"q-ml-lg"
style=
"min-width: 90px; z-index: 99999"
unelevated
v-model=
"room"
dense
:options=
"theRooms"
emit-value
option-label=
"name"
option-value=
"id"
map-options
:label=
"$t('v101.scattered.kefang')"
standout
@
update:model-value=
"getRoomList"
>
</q-select>
</q-select>
<q-btn
unelevated
class=
"bg-white hover q-px-xs q-py-sm q-ml-xs text-grey-6"
icon=
"person"
>
<q-btn
unelevated
class=
"bg-white hover q-px-xs q-py-sm q-ml-xs text-grey-6"
icon=
"person"
>
<div
class=
"text-dark q-ml-xs"
>
<div
class=
"text-dark q-ml-xs"
>
{{
auditNum
}}{{
$t
(
'v101.scattered.chengren'
)
}}
{{
auditNum
}}{{
$t
(
"v101.scattered.chengren"
)
}}
<span
class=
"q-px-sm"
>
.
</span>
<span
class=
"q-px-sm"
>
.
</span>
<template
v-if=
"childNum
>0"
>
{{
childNum
}}
</
template
>
<template
v-if=
"childNum
> 0"
>
{{
childNum
}}
</
template
>
{{
$t('v101.scattered.ertong')
}}
{{
$t("v101.scattered.ertong")
}}
</div>
</div>
<q-popup-proxy
class=
"no-shadow absolute"
style=
"z-index: 0;box-shadow: 0 0 50px #ddd !important"
:offset=
"[0, 20]"
:model-value=
"isShowPop"
>
<q-popup-proxy
<q-card
class=
"row wrap q-pa-md rounded-borders"
style=
"max-width:697px;"
>
class=
"no-shadow absolute"
<div
class=
"q-mr-md"
v-for=
"(item,index) in search.searchroomGroup"
:key=
"index"
style=
"min-width: 150px;"
>
style=
"z-index: 0; box-shadow: 0 0 50px #ddd !important"
<div
class=
"q-mb-md text-subtitle2"
>
{{ $t('v101.scattered.kefang') }}{{index+1}}
</div>
:offset=
"[0, 20]"
:model-value=
"isShowPop"
>
<q-card
class=
"row wrap q-pa-md rounded-borders"
style=
"max-width: 697px"
>
<div
class=
"q-mr-md"
v-for=
"(item, index) in search.searchroomGroup"
:key=
"index"
style=
"min-width: 150px"
>
<div
class=
"q-mb-md text-subtitle2"
>
{{ $t("v101.scattered.kefang") }}{{ index + 1 }}
</div>
<div
class=
"q-my-md"
>
<div
class=
"q-my-md"
>
<q-select
v-model=
"item.numberOfAdults"
dense
:options=
"adultList"
emit-value
map-options
:label=
"$t('v101.scattered.chengren')"
standout
@
update:model-value=
"setPeopleNum"
/>
<q-select
v-model=
"item.numberOfAdults"
dense
:options=
"adultList"
emit-value
map-options
:label=
"$t('v101.scattered.chengren')"
standout
@
update:model-value=
"setPeopleNum"
/>
</div>
</div>
<div
class=
"q-my-md"
>
<div
class=
"q-my-md"
>
<q-select
v-model=
"item.numberOfChildren"
dense
:options=
"childrenList"
emit-value
map-options
:label=
"$t('v101.scattered.ertong')"
standout
@
update:model-value=
"setPeopleNum"
/>
<q-select
v-model=
"item.numberOfChildren"
dense
:options=
"childrenList"
emit-value
map-options
:label=
"$t('v101.scattered.ertong')"
standout
@
update:model-value=
"setPeopleNum"
/>
</div>
</div>
</div>
</div>
</q-card>
</q-card>
...
@@ -34,42 +112,131 @@
...
@@ -34,42 +112,131 @@
</div>
</div>
<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
<svg-icon
color=
"dark"
icon=
"Text/Filter.svg"
:tips=
"$t('morequery')"
:size=
"20"
></svg-icon>
rounded
<q-tooltip>
{{ $t('morequery') }}
</q-tooltip>
class=
"din bg-red-2 text-red-14 text-weight-bold"
<q-popup-proxy
class=
"no-shadow"
style=
"box-shadow: 0 0 50px #ddd !important"
:offset=
"[0, 20]"
:model-value=
"canHide"
>
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"
>
<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-my-md"
v-if=
"$q.platform.is.mobile"
>
<div
class=
"q-my-md"
v-if=
"$q.platform.is.mobile"
>
<q-select
unelevated
v-model=
"placeKeyWords"
dense
:options=
"Areas"
emit-value
option-label=
"name"
option-value=
"name"
map-options
:label=
"$t('hotel.area')"
standout
/>
<q-select
unelevated
v-model=
"placeKeyWords"
dense
:options=
"Areas"
emit-value
option-label=
"name"
option-value=
"name"
map-options
:label=
"$t('hotel.area')"
standout
/>
</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')"
standout
style=
"min-width: 190px"
dense
>
<q-field
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{ dateRangeFormat }}
</div>
stack-label
:label=
"$t('daterange')"
standout
style=
"min-width: 190px"
dense
>
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{ dateRangeFormat }}
</div>
<q-popup-proxy
:offset=
"[0, 10]"
ref=
"qDateProxy"
>
<q-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
class=
"q-my-md row justify-between"
v-if=
"$q.platform.is.mobile"
>
<div
class=
"q-my-md row justify-between"
v-if=
"$q.platform.is.mobile"
>
<q-select
style=
"min-width: 90px;z-index: 99999;"
unelevated
v-model=
"room"
dense
:options=
"theRooms"
emit-value
option-label=
"name"
option-value=
"id"
map-options
:label=
"$t('v101.scattered.kefang')"
standout
@
update:model-value=
"getRoomList"
>
<q-select
style=
"min-width: 90px; z-index: 99999"
unelevated
v-model=
"room"
dense
:options=
"theRooms"
emit-value
option-label=
"name"
option-value=
"id"
map-options
:label=
"$t('v101.scattered.kefang')"
standout
@
update:model-value=
"getRoomList"
>
</q-select>
</q-select>
<q-btn
unelevated
class=
"bg-white hover q-px-xs q-py-sm q-ml-xs text-grey-6"
icon=
"person"
>
<q-btn
unelevated
class=
"bg-white hover q-px-xs q-py-sm q-ml-xs text-grey-6"
icon=
"person"
>
<div
class=
"text-dark q-ml-xs"
>
<div
class=
"text-dark q-ml-xs"
>
{{
auditNum}}{{$t('v101.scattered.chengren')
}}
{{
auditNum }}{{ $t("v101.scattered.chengren")
}}
<span
class=
"q-px-sm"
>
.
</span>
<span
class=
"q-px-sm"
>
.
</span>
<
template
v-if=
"childNum
>0"
>
{{
childNum
}}
</
template
>
<
template
v-if=
"childNum
> 0"
>
{{
childNum
}}
</
template
>
{{
$t('v101.scattered.ertong')
}}
{{
$t("v101.scattered.ertong")
}}
</div>
</div>
<q-popup-proxy
class=
"no-shadow absolute"
style=
"z-index: 0;box-shadow: 0 0 50px #ddd !important"
:offset=
"[0, 20]"
:model-value=
"isShowPop"
>
<q-popup-proxy
<q-card
class=
"row wrap q-pa-md rounded-borders"
style=
"max-width:697px;"
>
class=
"no-shadow absolute"
<div
class=
"q-mr-md"
v-for=
"(item,index) in search.searchroomGroup"
:key=
"index"
style=
"min-width: 150px;"
>
style=
"z-index: 0; box-shadow: 0 0 50px #ddd !important"
<div
class=
"q-mb-md text-subtitle2"
>
{{ $t('v101.scattered.kefang') }}{{index+1}}
</div>
:offset=
"[0, 20]"
:model-value=
"isShowPop"
>
<q-card
class=
"row wrap q-pa-md rounded-borders"
style=
"max-width: 697px"
>
<div
class=
"q-mr-md"
v-for=
"(item, index) in search.searchroomGroup"
:key=
"index"
style=
"min-width: 150px"
>
<div
class=
"q-mb-md text-subtitle2"
>
{{ $t("v101.scattered.kefang") }}{{ index + 1 }}
</div>
<div
class=
"q-my-md"
>
<div
class=
"q-my-md"
>
<q-select
v-model=
"item.numberOfAdults"
dense
:options=
"adultList"
emit-value
map-options
:label=
"$t('v101.scattered.chengren')"
standout
@
update:model-value=
"setPeopleNum"
/>
<q-select
v-model=
"item.numberOfAdults"
dense
:options=
"adultList"
emit-value
map-options
:label=
"$t('v101.scattered.chengren')"
standout
@
update:model-value=
"setPeopleNum"
/>
</div>
</div>
<div
class=
"q-my-md"
>
<div
class=
"q-my-md"
>
<q-select
v-model=
"item.numberOfChildren"
dense
:options=
"childrenList"
emit-value
map-options
:label=
"$t('v101.scattered.ertong')"
standout
@
update:model-value=
"setPeopleNum"
/>
<q-select
v-model=
"item.numberOfChildren"
dense
:options=
"childrenList"
emit-value
map-options
:label=
"$t('v101.scattered.ertong')"
standout
@
update:model-value=
"setPeopleNum"
/>
</div>
</div>
</div>
</div>
</q-card>
</q-card>
...
@@ -77,113 +244,216 @@
...
@@ -77,113 +244,216 @@
</q-btn>
</q-btn>
</div>
</div>
<div
class=
"q-my-md"
>
<div
class=
"q-my-md"
>
<q-select
v-model=
"search.searchHotelCategory"
dense
:options=
"HotelLiveRates"
emit-value
option-label=
"name"
option-value=
"id"
clearable
multiple
map-options
:label=
"$t('v101.scattered.zhusutype')"
standout
/>
<q-select
v-model=
"search.searchHotelCategory"
dense
:options=
"HotelLiveRates"
emit-value
option-label=
"name"
option-value=
"id"
clearable
multiple
map-options
:label=
"$t('v101.scattered.zhusutype')"
standout
/>
</div>
</div>
<div
class=
"q-my-md row items-center"
>
<div
class=
"q-my-md row items-center"
>
<q-input
v-model=
"search.searchMinRate"
class=
"col q-mr-md"
mask=
"#.##"
reverse-fill-mask
dense
type=
"text"
standout
:label=
"$t('hotel.minPrice')"
/>
<q-input
<q-input
v-model=
"search.searchMaxRate"
class=
"col"
dense
mask=
"#.##"
reverse-fill-mask
ftype=
"text"
standout
:label=
"$t('hotel.maxPrice')"
/>
v-model=
"search.searchMinRate"
class=
"col q-mr-md"
mask=
"#.##"
reverse-fill-mask
dense
type=
"text"
standout
:label=
"$t('hotel.minPrice')"
/>
<q-input
v-model=
"search.searchMaxRate"
class=
"col"
dense
mask=
"#.##"
reverse-fill-mask
ftype=
"text"
standout
:label=
"$t('hotel.maxPrice')"
/>
</div>
</div>
<div
class=
"q-my-md"
>
<div
class=
"q-my-md"
>
<q-select
v-model=
"search.searchRoomType"
dense
:options=
"HotelRoomTypes"
emit-value
option-label=
"name"
option-value=
"id"
clearable
multiple
map-options
:label=
"$t('v101.scattered.fangxingtype')"
standout
/>
<q-select
v-model=
"search.searchRoomType"
dense
:options=
"HotelRoomTypes"
emit-value
option-label=
"name"
option-value=
"id"
clearable
multiple
map-options
:label=
"$t('v101.scattered.fangxingtype')"
standout
/>
</div>
</div>
<div
class=
"q-my-md"
>
<div
class=
"q-my-md"
>
<q-select
v-model=
"search.searchMealType"
dense
:options=
"HotelMealTypes"
emit-value
option-label=
"name"
option-value=
"id"
clearable
multiple
map-options
:label=
"$t('v101.scattered.canxingtype')"
standout
/>
<q-select
v-model=
"search.searchMealType"
dense
:options=
"HotelMealTypes"
emit-value
option-label=
"name"
option-value=
"id"
clearable
multiple
map-options
:label=
"$t('v101.scattered.canxingtype')"
standout
/>
</div>
</div>
<div
class=
"q-my-md"
>
<div
class=
"q-my-md"
>
<q-select
v-model=
"search.searchHotelFeatures"
dense
:options=
"HotelConceptTypes"
emit-value
option-label=
"name"
option-value=
"id"
clearable
multiple
map-options
:label=
"$t('v101.scattered.liniantype')"
standout
/>
<q-select
v-model=
"search.searchHotelFeatures"
dense
:options=
"HotelConceptTypes"
emit-value
option-label=
"name"
option-value=
"id"
clearable
multiple
map-options
:label=
"$t('v101.scattered.liniantype')"
standout
/>
</div>
</div>
<div
class=
"q-my-md row items-center"
>
<div
class=
"q-my-md row items-center"
>
<q-input
v-model=
"search.reviewRatingLowerLimits"
class=
"col q-mr-md"
mask=
"#.##"
reverse-fill-mask
dense
type=
"text"
standout
:label=
"$t('v101.scattered.minpingfen')"
/>
<q-input
<q-input
v-model=
"search.reviewRatingUpperLimits"
class=
"col"
dense
mask=
"#.##"
reverse-fill-mask
ftype=
"text"
standout
:label=
"$t('v101.scattered.maxpingfen')"
/>
v-model=
"search.reviewRatingLowerLimits"
class=
"col q-mr-md"
mask=
"#.##"
reverse-fill-mask
dense
type=
"text"
standout
:label=
"$t('v101.scattered.minpingfen')"
/>
<q-input
v-model=
"search.reviewRatingUpperLimits"
class=
"col"
dense
mask=
"#.##"
reverse-fill-mask
ftype=
"text"
standout
:label=
"$t('v101.scattered.maxpingfen')"
/>
</div>
</div>
<div
class=
"q-my-md"
>
<div
class=
"q-my-md"
>
<q-input
v-model=
"keyWords"
class=
"col"
reverse-fill-mask
dense
type=
"text"
standout
:label=
"$t('v101.scattered.jiudianName')"
/>
<q-input
v-model=
"keyWords"
class=
"col"
reverse-fill-mask
dense
type=
"text"
standout
:label=
"$t('v101.scattered.jiudianName')"
/>
</div>
</div>
</q-card>
</q-card>
</q-popup-proxy>
</q-popup-proxy>
</q-btn>
</q-btn>
<q-btn
color=
"primary"
unelevated
:label=
"$t('query')"
/>
<q-btn
color=
"primary"
unelevated
:label=
"$t('query')"
/>
</div>
</div>
</template>
</template>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
useI18n
}
from
'vue-i18n'
import
{
useI18n
}
from
"vue-i18n"
;
import
svgIcon
from
'../../global/svg-icon.vue'
import
svgIcon
from
"../../global/svg-icon.vue"
;
import
{
computed
,
inject
,
provide
,
reactive
,
ref
,
toRefs
,
defineComponent
,
onMounted
,
watch
}
from
'vue'
import
DidaService
from
"../../../api/didahotel"
;
import
HotelService
from
'../../../api/hotel'
import
{
import
message
from
'../../../utils/message'
computed
,
import
{
ApiResult
}
from
'../../../@types/enumHelper'
inject
,
import
{
CascaderOption
,
NCascader
,
NSelect
}
from
'naive-ui'
reactive
,
import
{
date
}
from
'quasar'
ref
,
import
{
HotelRate
,
HotelArea
,
useHotel
}
from
'../../../utils/hotelRate'
toRefs
,
import
{
useQuasar
}
from
'quasar'
defineComponent
,
import
useScrollModule
from
'../../../module/scrollbar/scrollModule'
onMounted
,
// import { dateDiffer } from '../../../utils/tools'
watch
,
import
{
DirtionmaryHelper
}
from
'../../../config/dictionary'
}
from
"vue"
;
import
{
NCascader
,
NSelect
}
from
"naive-ui"
;
import
{
date
}
from
"quasar"
;
import
{
HotelRate
,
HotelArea
,
useHotel
}
from
"../../../utils/hotelRate"
;
import
{
useQuasar
}
from
"quasar"
;
import
useScrollModule
from
"../../../module/scrollbar/scrollModule"
;
import
{
DirtionmaryHelper
}
from
"../../../config/dictionary"
;
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
svgIcon
,
NCascader
,
NSelect
},
components
:
{
svgIcon
,
NCascader
,
NSelect
},
setup
()
{
setup
()
{
const
$q
=
useQuasar
()
const
$q
=
useQuasar
()
;
const
qDateProxy
=
ref
(
null
)
as
any
const
qDateProxy
=
ref
(
null
)
as
any
;
const
qNameProxy
=
ref
(
null
)
as
any
const
qNameProxy
=
ref
(
null
)
as
any
;
const
{
locale
,
t
}
=
useI18n
()
const
{
t
}
=
useI18n
();
const
data
=
reactive
({
const
data
=
reactive
({
scrollStyle
:
{}
as
any
,
scrollStyle
:
{}
as
any
,
Areas
:
[]
as
Array
<
HotelArea
>
,
//区域
Areas
:
[]
as
Array
<
HotelArea
>
,
//区域
cascader
:
{
cascader
:
{
addressValue
:
null
addressValue
:
null
,
}
as
any
,
}
as
any
,
dateRange
:
{}
as
any
,
//当前日期
dateRange
:
{}
as
any
,
//当前日期
dateRangeFormat
:
''
,
//可选日期
dateRangeFormat
:
""
,
//可选日期
loading
:
false
,
loading
:
false
,
hotelsRates
:
[]
as
Array
<
HotelRate
>
,
hotelsRates
:
[]
as
Array
<
HotelRate
>
,
canHide
:
false
,
//更多筛选
canHide
:
false
,
//更多筛选
theRooms
:
[]
as
Array
<
Number
>
,
//客房下拉
theRooms
:
[]
as
Array
<
Number
>
,
//客房下拉
room
:
1
,
//客房数
room
:
1
,
//客房数
auditNum
:
1
,
auditNum
:
1
,
childNum
:
null
as
any
,
childNum
:
null
as
any
,
adultList
:
[]
as
Array
<
Number
>
,
//成人下拉
adultList
:
[]
as
Array
<
Number
>
,
//成人下拉
childrenList
:
[]
as
Array
<
Number
>
,
//儿童下拉
childrenList
:
[]
as
Array
<
Number
>
,
//儿童下拉
isShowPop
:
false
,
//房间
isShowPop
:
false
,
//房间
HotelLiveRates
:
[]
as
Array
<
HotelRate
>
,
//住宿类型
HotelLiveRates
:
[]
as
Array
<
HotelRate
>
,
//住宿类型
HotelRoomTypes
:
[]
as
Array
<
HotelRate
>
,
//房类型
HotelRoomTypes
:
[]
as
Array
<
HotelRate
>
,
//房类型
HotelMealTypes
:
[]
as
Array
<
HotelRate
>
,
//餐型
HotelMealTypes
:
[]
as
Array
<
HotelRate
>
,
//餐型
HotelConceptTypes
:
[]
as
Array
<
HotelRate
>
,
//理念
HotelConceptTypes
:
[]
as
Array
<
HotelRate
>
,
//理念
keyWords
:
''
as
stringify
,
keyWords
:
""
as
stringify
,
placeKeyWords
:
t
(
'v101.scattered.HotelArea1'
),
placeKeyWords
:
t
(
"v101.scattered.HotelArea1"
),
})
})
;
for
(
let
i
=
1
;
i
<
11
;
i
++
)
{
for
(
let
i
=
1
;
i
<
11
;
i
++
)
{
data
.
theRooms
.
push
(
i
)
data
.
theRooms
.
push
(
i
)
;
}
}
for
(
let
i
=
1
;
i
<
10
;
i
++
)
{
for
(
let
i
=
1
;
i
<
10
;
i
++
)
{
data
.
adultList
.
push
(
i
)
data
.
adultList
.
push
(
i
)
;
}
}
for
(
let
i
=
0
;
i
<
6
;
i
++
)
{
for
(
let
i
=
0
;
i
<
6
;
i
++
)
{
data
.
childrenList
.
push
(
i
)
data
.
childrenList
.
push
(
i
)
;
}
}
data
.
scrollStyle
=
useScrollModule
().
scrollStyle
data
.
scrollStyle
=
useScrollModule
().
scrollStyle
;
const
search
=
inject
(
DirtionmaryHelper
.
HOTEL_QUERY_PARAM
)
as
any
const
search
=
inject
(
DirtionmaryHelper
.
HOTEL_QUERY_PARAM
)
as
any
;
if
(
search
.
searchroomGroup
&&
search
.
searchroomGroup
.
length
==
0
)
{
if
(
search
.
searchroomGroup
&&
search
.
searchroomGroup
.
length
==
0
)
{
search
.
searchroomGroup
.
push
({
search
.
searchroomGroup
.
push
({
roomNum
:
1
,
roomNum
:
1
,
numberOfAdults
:
1
,
numberOfAdults
:
1
,
numberOfChildren
:
0
numberOfChildren
:
0
,
})
})
;
}
}
data
.
dateRange
.
to
=
date
.
formatDate
(
date
.
addToDate
(
new
Date
(),
{
days
:
9
}),
'YYYY/MM/DD'
)
data
.
dateRange
.
to
=
date
.
formatDate
(
data
.
dateRange
.
from
=
date
.
formatDate
(
date
.
addToDate
(
new
Date
(),
{
days
:
8
}),
'YYYY/MM/DD'
)
date
.
addToDate
(
new
Date
(),
{
days
:
9
}),
data
.
dateRangeFormat
=
`
${
data
.
dateRange
.
from
}
-
${
data
.
dateRange
.
to
}
`
"YYYY/MM/DD"
search
.
arrivalDate
=
data
.
dateRange
.
from
);
search
.
departureDate
=
data
.
dateRange
.
to
data
.
dateRange
.
from
=
date
.
formatDate
(
data
.
hotelsRates
=
useHotel
.
getHotelRate
()
date
.
addToDate
(
new
Date
(),
{
days
:
8
}),
data
.
HotelLiveRates
=
useHotel
.
getAccommodationType
()
"YYYY/MM/DD"
data
.
Areas
=
useHotel
.
getHotelArea
()
);
data
.
HotelRoomTypes
=
useHotel
.
getHotelRoom
()
data
.
dateRangeFormat
=
`
${
data
.
dateRange
.
from
}
-
${
data
.
dateRange
.
to
}
`
;
data
.
HotelMealTypes
=
useHotel
.
getHotelMeal
()
search
.
arrivalDate
=
data
.
dateRange
.
from
;
data
.
HotelConceptTypes
=
useHotel
.
getHotelConcept
()
search
.
departureDate
=
data
.
dateRange
.
to
;
if
(
data
.
keyWords
==
''
)
{
data
.
hotelsRates
=
useHotel
.
getHotelRate
();
data
.
HotelLiveRates
=
useHotel
.
getAccommodationType
();
data
.
Areas
=
useHotel
.
getHotelArea
();
data
.
HotelMealTypes
=
useHotel
.
getHotelMeal
();
data
.
HotelConceptTypes
=
useHotel
.
getHotelConcept
();
if
(
data
.
keyWords
==
""
)
{
search
.
freewordType
=
1
;
search
.
freewordType
=
1
;
search
.
freeword
=
data
.
placeKeyWords
;
search
.
freeword
=
data
.
placeKeyWords
;
}
else
{
}
else
{
...
@@ -193,57 +463,59 @@ export default defineComponent({
...
@@ -193,57 +463,59 @@ export default defineComponent({
const
methods
=
{
const
methods
=
{
//设置房间里面成人数改变总成人数和儿童数
//设置房间里面成人数改变总成人数和儿童数
setPeopleNum
()
{
setPeopleNum
()
{
data
.
auditNum
=
0
;
data
.
auditNum
=
0
;
data
.
childNum
=
0
;
data
.
childNum
=
0
;
search
.
searchroomGroup
.
forEach
(
x
=>
{
search
.
searchroomGroup
.
forEach
((
x
)
=>
{
data
.
auditNum
+=
x
.
numberOfAdults
;
data
.
auditNum
+=
x
.
numberOfAdults
;
data
.
childNum
+=
x
.
numberOfChildren
;
data
.
childNum
+=
x
.
numberOfChildren
;
})
});
if
(
data
.
auditNum
==
null
||
data
.
auditNum
==
undefined
)
{
if
(
data
.
auditNum
==
null
||
data
.
auditNum
==
undefined
)
{
data
.
auditNum
=
1
data
.
auditNum
=
1
;
}
}
if
(
data
.
childNum
==
null
||
data
.
childNum
==
undefined
)
{
if
(
data
.
childNum
==
null
||
data
.
childNum
==
undefined
)
{
data
.
childNum
=
1
data
.
childNum
=
1
;
}
}
},
},
//房间数改变
//房间数改变
getRoomList
(
roomNum
)
{
getRoomList
(
roomNum
)
{
let
length
=
search
.
searchroomGroup
.
length
let
length
=
search
.
searchroomGroup
.
length
;
if
(
roomNum
>
length
){
if
(
roomNum
>
length
)
{
for
(
let
i
=
1
;
i
<=
roomNum
-
length
;
i
++
)
{
for
(
let
i
=
1
;
i
<=
roomNum
-
length
;
i
++
)
{
let
obj
=
{
let
obj
=
{
roomNum
:
i
,
roomNum
:
i
,
numberOfAdults
:
1
,
numberOfAdults
:
1
,
numberOfChildren
:
0
numberOfChildren
:
0
,
}
};
search
.
searchroomGroup
.
push
(
obj
);
search
.
searchroomGroup
.
push
(
obj
);
}
}
else
{
search
.
searchroomGroup
=
search
.
searchroomGroup
.
filter
((
x
:
any
,
i
:
Number
)
=>
{
if
(
roomNum
>
i
)
return
x
})
}
}
data
.
auditNum
=
0
;
}
else
{
data
.
childNum
=
0
;
search
.
searchroomGroup
=
search
.
searchroomGroup
.
filter
((
x
:
any
,
i
:
Number
)
=>
{
search
.
searchroomGroup
.
forEach
(
x
=>
{
if
(
roomNum
>
i
)
return
x
;
data
.
auditNum
+=
x
.
numberOfAdults
;
});
data
.
childNum
+=
x
.
numberOfChildren
;
}
})
data
.
auditNum
=
0
;
data
.
isShowPop
=
true
data
.
childNum
=
0
;
search
.
auditNum
=
data
.
auditNum
;
search
.
searchroomGroup
.
forEach
((
x
)
=>
{
search
.
childNum
=
data
.
childNum
;
data
.
auditNum
+=
x
.
numberOfAdults
;
data
.
childNum
+=
x
.
numberOfChildren
;
});
data
.
isShowPop
=
true
;
search
.
auditNum
=
data
.
auditNum
;
search
.
childNum
=
data
.
childNum
;
},
},
dateRangeHandler
(
e
:
any
)
{
dateRangeHandler
(
e
:
any
)
{
search
.
arrivalDate
=
`
${
e
.
from
.
year
}
/
${
e
.
from
.
month
}
/
${
e
.
from
.
day
}
`
search
.
arrivalDate
=
`
${
e
.
from
.
year
}
/
${
e
.
from
.
month
}
/
${
e
.
from
.
day
}
`
;
search
.
departureDate
=
`
${
e
.
to
.
year
}
/
${
e
.
to
.
month
}
/
${
e
.
to
.
day
}
`
search
.
departureDate
=
`
${
e
.
to
.
year
}
/
${
e
.
to
.
month
}
/
${
e
.
to
.
day
}
`
;
data
.
dateRangeFormat
=
`
${
search
.
arrivalDate
}
-
${
search
.
departureDate
}
`
data
.
dateRangeFormat
=
`
${
search
.
arrivalDate
}
-
${
search
.
departureDate
}
`
;
if
(
qDateProxy
.
value
)
qDateProxy
.
value
.
hide
()
if
(
qDateProxy
.
value
)
qDateProxy
.
value
.
hide
()
;
},
},
optionsFn
(
cd
:
any
)
{
optionsFn
(
cd
:
any
)
{
return
cd
>=
date
.
formatDate
(
date
.
addToDate
(
new
Date
(),
{
days
:
8
}),
'YYYY/MM/DD'
)
return
(
cd
>=
date
.
formatDate
(
date
.
addToDate
(
new
Date
(),
{
days
:
8
}),
"YYYY/MM/DD"
)
);
},
},
setData
(){
setData
()
{
localStorage
.
removeItem
(
DirtionmaryHelper
.
SCATTERED_HOTEL_DATE
)
localStorage
.
removeItem
(
DirtionmaryHelper
.
SCATTERED_HOTEL_DATE
)
;
let
d
=
{
let
d
=
{
searchroomGroup
:
search
.
searchroomGroup
,
searchroomGroup
:
search
.
searchroomGroup
,
room
:
data
.
room
,
room
:
data
.
room
,
...
@@ -251,51 +523,69 @@ export default defineComponent({
...
@@ -251,51 +523,69 @@ export default defineComponent({
childNum
:
data
.
childNum
,
childNum
:
data
.
childNum
,
arrivalDate
:
search
.
arrivalDate
,
arrivalDate
:
search
.
arrivalDate
,
departureDate
:
search
.
departureDate
,
departureDate
:
search
.
departureDate
,
}
};
localStorage
.
setItem
(
DirtionmaryHelper
.
SCATTERED_HOTEL_DATE
,
JSON
.
stringify
(
d
))
localStorage
.
setItem
(
DirtionmaryHelper
.
SCATTERED_HOTEL_DATE
,
JSON
.
stringify
(
d
));
}
},
}
//获取道旅房型
getdidaPropertyCategory
()
{
DidaService
.
GetDidaPropertyCategory
({}).
then
((
res
)
=>
{
console
.
log
(
"GetDidaPropertyCategory"
,
res
);
if
((
res
.
data
.
resultCode
=
1
))
{
data
.
HotelRoomTypes
=
res
.
data
.
data
;
}
});
},
//获取道旅餐食类型
getdidaMealType
()
{
DidaService
.
GetDidaMealType
({}).
then
((
res
)
=>
{
console
.
log
(
"getdidaMealType"
,
res
);
if
(
res
.
data
.
resultCode
==
1
)
{
data
.
HotelMealTypes
=
res
.
data
.
data
;
}
});
},
};
const
searchCnt
=
computed
(()
=>
{
const
searchCnt
=
computed
(()
=>
{
let
setCnt
=
0
let
setCnt
=
0
;
if
(
$q
.
platform
.
is
.
mobile
)
{
if
(
$q
.
platform
.
is
.
mobile
)
{
if
(
data
.
placeKeyWords
&&!
data
.
keyWords
)
setCnt
++
if
(
data
.
placeKeyWords
&&
!
data
.
keyWords
)
setCnt
++
;
if
(
data
.
dateRange
)
setCnt
++
if
(
data
.
dateRange
)
setCnt
++
;
if
(
search
.
searchroomGroup
.
length
>
0
)
setCnt
++
if
(
search
.
searchroomGroup
.
length
>
0
)
setCnt
++
;
}
}
if
(
data
.
keyWords
)
setCnt
++
if
(
data
.
keyWords
)
setCnt
++
;
if
(
search
.
reviewRatingUpperLimits
)
setCnt
++
if
(
search
.
reviewRatingUpperLimits
)
setCnt
++
;
if
(
search
.
reviewRatingLowerLimits
)
setCnt
++
if
(
search
.
reviewRatingLowerLimits
)
setCnt
++
;
if
(
search
.
searchHotelCategory
&&
search
.
searchHotelCategory
.
length
>
0
)
setCnt
++
if
(
search
.
searchHotelCategory
&&
search
.
searchHotelCategory
.
length
>
0
)
setCnt
++
;
if
(
search
.
searchHotelFeatures
&&
search
.
searchHotelFeatures
.
length
>
0
)
setCnt
++
if
(
search
.
searchHotelFeatures
&&
search
.
searchHotelFeatures
.
length
>
0
)
setCnt
++
;
if
(
search
.
searchRoomType
&&
search
.
searchRoomType
.
length
>
0
)
setCnt
++
if
(
search
.
searchRoomType
&&
search
.
searchRoomType
.
length
>
0
)
setCnt
++
;
if
(
search
.
searchMealType
&&
search
.
searchMealType
.
length
>
0
)
setCnt
++
if
(
search
.
searchMealType
&&
search
.
searchMealType
.
length
>
0
)
setCnt
++
;
if
(
search
.
searchMinRate
)
setCnt
++
if
(
search
.
searchMinRate
)
setCnt
++
;
if
(
search
.
searchMaxRate
)
setCnt
++
if
(
search
.
searchMaxRate
)
setCnt
++
;
if
(
data
.
keyWords
==
''
)
{
if
(
data
.
keyWords
==
""
)
{
search
.
freewordType
=
1
;
search
.
freewordType
=
1
;
search
.
freeword
=
data
.
placeKeyWords
;
search
.
freeword
=
data
.
placeKeyWords
;
}
else
{
}
else
{
search
.
freewordType
=
2
;
search
.
freewordType
=
2
;
search
.
freeword
=
data
.
keyWords
;
search
.
freeword
=
data
.
keyWords
;
}
}
return
setCnt
return
setCnt
;
})
})
;
watch
(
search
,
(
n
,
o
)
=>
{
watch
(
search
,
(
n
,
o
)
=>
{
methods
.
setData
()
methods
.
setData
()
;
})
})
;
watch
(
data
.
room
,
(
n
,
o
)
=>
{
watch
(
data
.
room
,
(
n
,
o
)
=>
{
methods
.
setData
()
methods
.
setData
()
;
})
})
;
watch
(
data
.
auditNum
,
(
n
,
o
)
=>
{
watch
(
data
.
auditNum
,
(
n
,
o
)
=>
{
methods
.
setData
()
methods
.
setData
()
;
})
})
;
watch
(
data
.
childNum
,
(
n
,
o
)
=>
{
watch
(
data
.
childNum
,
(
n
,
o
)
=>
{
methods
.
setData
()
methods
.
setData
()
;
})
})
;
onMounted
(()
=>
{
onMounted
(()
=>
{
methods
.
setData
()
methods
.
setData
()
;
})
})
;
return
{
return
{
...
toRefs
(
data
),
...
toRefs
(
data
),
...
methods
,
...
methods
,
...
@@ -303,11 +593,9 @@ export default defineComponent({
...
@@ -303,11 +593,9 @@ export default defineComponent({
qNameProxy
,
qNameProxy
,
searchCnt
,
searchCnt
,
search
,
search
,
}
}
;
}
}
,
})
})
;
</
script
>
</
script
>
<
style
>
<
style
></
style
>
</
style
>
src/components/scattered/dida/DidaListTable.vue
View file @
ce5e3efc
<
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=
"col sticky-header-column-table"
flat
:pagination=
"pages"
:no-data-label=
"$t('noneData')"
:columns=
"cols"
>
<q-table
v-if=
"$q.platform.is.desktop"
:loading=
"loading"
:rows=
"hotels"
:loading-label=
"$t('loading')"
class=
"col sticky-header-column-table"
flat
:pagination=
"pages"
:no-data-label=
"$t('noneData')"
:columns=
"cols"
>
<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>
<q-btn
class=
"hover q-mr-md"
v-for=
"(item,index) in 2"
<q-btn
:class=
"
{'bg-blue text-white':pages.sort==index+1,'bg-grey-3':pages.sort!=index+1}" @click="pages.sort=index+1,initHotels()">
class=
"hover q-mr-md"
{{
index
+
1
==
1
?
$t
(
'v101.scattered.anrenqi'
):
$t
(
'v101.scattered.anjiage'
)
}}
v-for=
"(item, index) in 2"
:class=
"
{
'bg-blue text-white': pages.sort == index + 1,
'bg-grey-3': pages.sort != index + 1,
}"
@click="(pages.sort = index + 1), initHotels()"
>
{{
index
+
1
==
1
?
$t
(
"v101.scattered.anrenqi"
)
:
$t
(
"v101.scattered.anjiage"
)
}}
</q-btn>
</q-btn>
</div>
</div>
</
template
>
</
template
>
<
template
v-slot:body-cell-hotelName=
"props"
>
<
template
v-slot:body-cell-hotelName=
"props"
>
<q-td
class=
"cursor-pointer"
:props=
"props"
@
click=
"goUrl('/scattered/HotelDetails',props.row)"
>
<q-td
<span>
{{
props
.
row
.
hotelName
}}
</span>
class=
"cursor-pointer"
:props=
"props"
@
click=
"goUrl('/scattered/HotelDetails', props.row)"
>
<span>
{{
props
.
row
.
hotelName
}}
</span>
</q-td>
</q-td>
</
template
>
</
template
>
<
template
v-slot:body-cell-reviewRating=
"props"
>
<
template
v-slot:body-cell-reviewRating=
"props"
>
<q-td
:props=
"props"
>
<q-td
:props=
"props"
>
<div
class=
"row no-wrap items-center"
>
<div
class=
"row no-wrap items-center"
>
<q-rating
v-model=
"props.row.reviewRating"
size=
"1.5em"
color=
"orange"
:max=
"5"
<q-rating
v-model=
"props.row.reviewRating"
size=
"1.5em"
color=
"orange"
:max=
"5"
icon=
"star_border"
icon=
"star_border"
icon-selected=
"star"
icon-selected=
"star"
icon-half=
"star_half"
no-dimming
readonly
/>
icon-half=
"star_half"
<span
class=
"q-ml-xs"
v-if=
"props.row.reviewRating>0"
>
{{
props
.
row
.
reviewRating
}}
</span>
no-dimming
readonly
/>
<span
class=
"q-ml-xs"
v-if=
"props.row.reviewRating > 0"
>
{{
props
.
row
.
reviewRating
}}
</span>
</div>
</div>
</q-td>
</q-td>
</
template
>
</
template
>
<
template
v-slot:body-cell-lowrateBySetCurrency=
"props"
>
<
template
v-slot:body-cell-lowrateBySetCurrency=
"props"
>
<q-td
:props=
"props"
>
<q-td
:props=
"props"
>
<span
class=
"q-ml-xs text-orange text-weight-bold fz18"
>
<span
class=
"q-ml-xs text-orange text-weight-bold fz18"
>
円
円
<template
v-if=
"props.row.type
==
1"
>
<template
v-if=
"props.row.type
==
1"
>
{{
getPrice
(
props
.
row
.
lowrateBySetCurrency
)
}}
{{
getPrice
(
props
.
row
.
lowrateBySetCurrency
)
}}
</
template
>
</
template
>
<
template
v-else
>
<
template
v-else
>
{{
props
.
row
.
lowrateBySetCurrency
}}
{{
props
.
row
.
lowrateBySetCurrency
}}
</
template
>
</
template
>
</span>
</span>
<span
class=
"text-grey-8 q-pl-xs"
>
{{
$t('v101.scattered.qi')
}}
</span>
<span
class=
"text-grey-8 q-pl-xs"
>
{{
$t("v101.scattered.qi")
}}
</span>
</q-td>
</q-td>
</template>
</template>
<!-- <template v-slot:body-cell-type="props">
<q-td :props="props">
<span class="q-ml-xs text-green-4 fz14" >
{{props.row.type==2?$t('v101.scattered.ziying'):$t('v101.scattered.jalan')}}
</span>
</q-td>
</template> -->
<
template
v-slot:body-cell-hotelFeaturesMask=
"props"
>
<
template
v-slot:body-cell-hotelFeaturesMask=
"props"
>
<q-td
:props=
"props"
>
<q-td
:props=
"props"
>
<span
v-for=
"(subItem,index) in props.row.hotelFeaturesMask"
:key=
"index"
>
<span
v-for=
"(subItem, index) in props.row.hotelFeaturesMask"
:key=
"index"
>
<span
class=
"rounded-borders bg-blue-1 text-blue q-mr-xs q-px-sm q-py-xs"
v-if=
"subItem"
>
<span
{{
subItem
==
1
?
themeList
[
index
].
name
:
''
}}
class=
"rounded-borders bg-blue-1 text-blue q-mr-xs q-px-sm q-py-xs"
</span>
v-if=
"subItem"
>
{{
subItem
==
1
?
themeList
[
index
].
name
:
""
}}
</span>
</span>
</span>
</q-td>
</q-td>
</
template
>
</
template
>
<
template
v-slot:bottom
>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"pages.displayFrom"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
update:model-value=
"changePageHandler"
/>
<q-pagination
class=
"full-width justify-end"
v-model=
"pages.displayFrom"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
update:model-value=
"changePageHandler"
/>
</
template
>
</
template
>
</q-table>
</q-table>
<q-table
<q-table
...
@@ -72,188 +108,272 @@
...
@@ -72,188 +108,272 @@
:pagination=
"pages"
:pagination=
"pages"
:loading=
"loading"
:loading=
"loading"
>
>
<
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>
<q-btn
dense
unelevated
class=
"hover q-px-sm q-mr-md"
v-for=
"(item,index) in 2"
<q-btn
:class=
"
{'bg-blue text-white':pages.sort==index+1,'bg-grey-3':pages.sort!=index+1}" @click="pages.sort=index+1,initHotels()">
dense
{{
index
+
1
==
1
?
$t
(
'v101.scattered.anrenqi'
):
$t
(
'v101.scattered.anjiage'
)
}}
unelevated
class=
"hover q-px-sm q-mr-md"
v-for=
"(item, index) in 2"
:class=
"
{
'bg-blue text-white': pages.sort == index + 1,
'bg-grey-3': pages.sort != index + 1,
}"
@click="(pages.sort = index + 1), initHotels()"
>
{{
index
+
1
==
1
?
$t
(
"v101.scattered.anrenqi"
)
:
$t
(
"v101.scattered.anjiage"
)
}}
</q-btn>
</q-btn>
</div>
</div>
</
template
>
</
template
>
<
template
v-slot:item=
"props"
>
<
template
v-slot:item=
"props"
>
<div
@
click=
"goUrl('/scattered/HotelDetails',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>
@
click=
"goUrl('/scattered/HotelDetails', props.row)"
<div
style=
"opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;"
>
{{
$t
(
'v101.scattered.titleHeard1'
)
}}
</div>
class=
"rounded-borders bg-primary text-white col-12 q-mb-sm"
<div
style=
"font-size: 13px;"
>
{{
props
.
row
.
hotelName
}}
</div>
style=
"
</div>
padding: 12px;
<div
class=
"q-my-md"
>
margin-left: 12px;
<div
style=
"opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;"
>
{{
$t
(
'v101.scattered.titleHeard2'
)
}}
</div>
margin-right: 12px;
<div
style=
"font-size: 13px;"
>
width: calc(100% - 24px);
<q-rating
v-model=
"props.row.reviewRating"
size=
"1.5em"
color=
"orange"
:max=
"5"
"
icon=
"star_border"
>
icon-selected=
"star"
<div>
icon-half=
"star_half"
no-dimming
readonly
/>
<div
<span
class=
"q-ml-xs"
v-if=
"props.row.reviewRating>0"
>
{{
props
.
row
.
reviewRating
}}
</span>
style=
"opacity: 0.54; font-weight: 500; font-size: 12px; margin-bottom: 4px"
>
{{
$t
(
"v101.scattered.titleHeard1"
)
}}
</div>
<div
style=
"font-size: 13px"
>
{{
props
.
row
.
hotelName
}}
</div>
</div>
</div>
</div>
<div
class=
"q-my-md"
>
<div>
<div
<div
style=
"opacity: 0.54;font-weight: 500;font-size: 12px;margin-bottom: 4px;"
>
{{
$t
(
'v101.scattered.titleHeard3'
)
}}
</div>
style=
"opacity: 0.54; font-weight: 500; font-size: 12px; margin-bottom: 4px"
<div
class=
""
>
>
<span>
円
{{
$t
(
"v101.scattered.titleHeard2"
)
}}
<template
v-if=
"props.row.type==1"
>
</div>
{{
getPrice
(
props
.
row
.
lowrateBySetCurrency
)
}}
<div
style=
"font-size: 13px"
>
</
template
>
<q-rating
<
template
v-else
>
v-model=
"props.row.reviewRating"
{{
props
.
row
.
lowrateBySetCurrency
}}
size=
"1.5em"
</
template
>
color=
"orange"
</span>
:max=
"5"
<span
class=
"q-pl-xs"
>
{{$t('v101.scattered.qi')}}
</span>
icon=
"star_border"
icon-selected=
"star"
icon-half=
"star_half"
no-dimming
readonly
/>
<span
class=
"q-ml-xs"
v-if=
"props.row.reviewRating > 0"
>
{{
props
.
row
.
reviewRating
}}
</span>
</div>
</div>
<div>
<div
style=
"opacity: 0.54; font-weight: 500; font-size: 12px; margin-bottom: 4px"
>
{{
$t
(
"v101.scattered.titleHeard3"
)
}}
</div>
<div
class=
""
>
<span
>
円
<template
v-if=
"props.row.type == 1"
>
{{
getPrice
(
props
.
row
.
lowrateBySetCurrency
)
}}
</
template
>
<
template
v-else
>
{{
props
.
row
.
lowrateBySetCurrency
}}
</
template
>
</span>
<span
class=
"q-pl-xs"
>
{{ $t("v101.scattered.qi") }}
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
</template>
<
template
v-slot:bottom
>
<
template
v-slot:bottom
>
<q-pagination
<q-pagination
class=
"full-width justify-end"
v-model=
"pages.displayFrom"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
update:model-value=
"changePageHandler"
/>
class=
"full-width justify-end"
v-model=
"pages.displayFrom"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
update:model-value=
"changePageHandler"
/>
</
template
>
</
template
>
</q-table>
</q-table>
</div>
</div>
</template>
</template>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
useRouter
}
from
'vue-router'
import
{
useRouter
}
from
"vue-router"
;
import
HotelService
from
'../../../api/scattered'
import
HotelService
from
"../../../api/scattered"
;
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
{
useI18n
}
from
'vue-i18n'
import
{
useI18n
}
from
"vue-i18n"
;
import
{
HotelArea
,
useHotel
}
from
'../../../utils/hotelRate'
import
{
HotelArea
,
useHotel
}
from
"../../../utils/hotelRate"
;
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
},
components
:
{},
name
:
'list-table'
,
name
:
"list-table"
,
setup
()
{
setup
()
{
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
;
const
$router
=
useRouter
()
const
$router
=
useRouter
()
;
watch
(
search
,
(
n
,
o
)
=>
{
watch
(
search
,
(
n
,
o
)
=>
{
if
(
data
.
loading
)
return
if
(
data
.
loading
)
return
;
console
.
log
(
'search change'
)
console
.
log
(
"search change"
);
data
.
pages
.
displayFrom
=
1
data
.
pages
.
displayFrom
=
1
;
methods
.
initHotels
()
methods
.
initHotels
()
;
})
})
;
const
data
=
reactive
({
const
data
=
reactive
({
groupBookingFlg
:
''
as
any
,
groupBookingFlg
:
""
as
any
,
JapanIncrease
:
''
as
any
,
JapanIncrease
:
""
as
any
,
travelLngLat
:
[]
as
Array
<
any
>
,
//地图坐标
travelLngLat
:
[]
as
Array
<
any
>
,
//地图坐标
themeList
:
[]
as
Array
<
HotelArea
>
,
themeList
:
[]
as
Array
<
HotelArea
>
,
hotels
:
[]
as
Array
<
any
>
,
hotels
:
[]
as
Array
<
any
>
,
loading
:
false
,
loading
:
false
,
cols
:
[
cols
:
[
{
name
:
'hotelName'
,
label
:
t
(
'v101.scattered.titleHeard1'
),
align
:
'left'
},
{
name
:
"hotelName"
,
label
:
t
(
"v101.scattered.titleHeard1"
),
align
:
"left"
},
{
name
:
'reviewRating'
,
label
:
t
(
'v101.scattered.titleHeard2'
),
field
:
(
row
:
any
)
=>
(
row
.
reviewRating
),
align
:
'left'
},
{
{
name
:
'lowrateBySetCurrency'
,
label
:
t
(
'v101.scattered.titleHeard3'
),
align
:
'left'
},
name
:
"reviewRating"
,
// { name: 'type', label: t('v101.scattered.titleHeard4'), field: (row: any) => row.type==2?t('v101.scattered.ziying'):t('v101.scattered.jalan'), align: 'left' },
label
:
t
(
"v101.scattered.titleHeard2"
),
{
name
:
'hotelFeaturesMask'
,
label
:
t
(
'v101.scattered.titleHeard5'
),
align
:
'left'
},
field
:
(
row
:
any
)
=>
row
.
reviewRating
,
{
name
:
'address'
,
label
:
t
(
'v101.scattered.titleHeard6'
),
field
:
(
row
:
any
)
=>
(
row
.
address
),
align
:
'left'
},
align
:
"left"
,
},
{
name
:
"lowrateBySetCurrency"
,
label
:
t
(
"v101.scattered.titleHeard3"
),
align
:
"left"
,
},
{
name
:
"hotelFeaturesMask"
,
label
:
t
(
"v101.scattered.titleHeard5"
),
align
:
"left"
,
},
{
name
:
"address"
,
label
:
t
(
"v101.scattered.titleHeard6"
),
field
:
(
row
:
any
)
=>
row
.
address
,
align
:
"left"
,
},
]
as
any
,
]
as
any
,
pages
:
{
pages
:
{
displayFrom
:
1
,
//页数
displayFrom
:
1
,
//页数
numberOfResults
:
12
,
numberOfResults
:
12
,
rowsPerPage
:
15
,
rowsPerPage
:
15
,
sort
:
1
sort
:
1
,
},
},
pageCount
:
0
,
pageCount
:
0
,
pageTitle
:
''
as
(
string
|
undefined
),
pageTitle
:
""
as
string
|
undefined
,
mobileCols
:[
mobileCols
:
[
{
name
:
'hotelName'
,
label
:
t
(
'hotel.col.first'
),
field
:(
row
:
any
)
=>
row
.
hotelName
},
{
{
name
:
'TotalInventory'
,
label
:
t
(
'hotel.col.three'
),
field
:(
row
:
any
)
=>
row
.
TotalInventory
},
name
:
"hotelName"
,
{
name
:
'LowerPrice'
,
label
:
t
(
'hotel.col.four'
),
field
:(
row
:
any
)
=>
`¥
${
row
.
LowerPrice
.
toFixed
(
2
)}${
t
(
'unit.jp'
)}
{t('hotel.col.low')}`
}
label
:
t
(
"hotel.col.first"
),
field
:
(
row
:
any
)
=>
row
.
hotelName
,
},
{
name
:
"TotalInventory"
,
label
:
t
(
"hotel.col.three"
),
field
:
(
row
:
any
)
=>
row
.
TotalInventory
,
},
{
name
:
"LowerPrice"
,
label
:
t
(
"hotel.col.four"
),
field
:
(
row
:
any
)
=>
`¥
${
row
.
LowerPrice
.
toFixed
(
2
)}${
t
(
"unit.jp"
)}
{t('hotel.col.low')}`
,
},
],
],
showPriceList
:
false
,
showPriceList
:
false
,
queryHotelObj
:{},
queryHotelObj
:
{},
orderSubmitObj
:{}
as
any
,
orderSubmitObj
:
{}
as
any
,
orderSubmitItemObj
:{}
as
any
,
orderSubmitItemObj
:
{}
as
any
,
showOrderPreview
:
false
,
showOrderPreview
:
false
,
showHotelDetailId
:
0
,
showHotelDetailId
:
0
,
});
})
data
.
themeList
=
useHotel
.
getHotelTheme
();
data
.
themeList
=
useHotel
.
getHotelTheme
()
data
.
pageTitle
=
inject
(
DirtionmaryHelper
.
PAGE_TITLE_KEY
);
data
.
pageTitle
=
inject
(
DirtionmaryHelper
.
PAGE_TITLE_KEY
)
const
methods
=
{
const
methods
=
{
initHotels
()
{
initHotels
()
{
data
.
loading
=
true
data
.
loading
=
true
;
data
.
hotels
=
[]
data
.
hotels
=
[]
;
let
dataList
=
[]
as
any
[];
let
dataList
=
[]
as
any
[];
data
.
travelLngLat
=
[];
data
.
travelLngLat
=
[];
let
param
=
Object
.
assign
(
data
.
pages
,
search
)
let
param
=
Object
.
assign
(
data
.
pages
,
search
)
;
HotelService
.
GetJAPANHotelList
(
param
)
HotelService
.
GetJAPANHotelList
(
param
)
.
then
(
r
=>
{
.
then
(
(
r
)
=>
{
if
(
r
.
data
.
data
.
parmResult
&&
r
.
data
.
data
.
parmResult
.
hotelSummary
)
{
if
(
r
.
data
.
data
.
parmResult
&&
r
.
data
.
data
.
parmResult
.
hotelSummary
)
{
dataList
=
r
.
data
.
data
.
parmResult
.
hotelSummary
;
dataList
=
r
.
data
.
data
.
parmResult
.
hotelSummary
;
}
}
var
ourHotelList
=
r
.
data
.
data
.
ourHotelList
;
var
ourHotelList
=
r
.
data
.
data
.
ourHotelList
;
if
(
ourHotelList
&&
ourHotelList
.
length
>
0
)
{
if
(
ourHotelList
&&
ourHotelList
.
length
>
0
)
{
ourHotelList
.
forEach
(
x
=>
{
ourHotelList
.
forEach
((
x
)
=>
{
x
.
type
=
2
x
.
type
=
2
;
})
});
}
}
if
(
dataList
&&
dataList
.
length
>
0
)
{
if
(
dataList
&&
dataList
.
length
>
0
)
{
//获取酒店坐标
//获取酒店坐标
dataList
.
forEach
(
x
=>
{
dataList
.
forEach
((
x
)
=>
{
x
.
reviewRating
=
parseFloat
(
x
.
reviewRating
);
x
.
reviewRating
=
parseFloat
(
x
.
reviewRating
);
x
.
lowrateBySetCurrency
=
parseFloat
(
x
.
lowrateBySetCurrency
);
x
.
lowrateBySetCurrency
=
parseFloat
(
x
.
lowrateBySetCurrency
);
let
obj
=
{
let
obj
=
{
lat
:
x
.
latitudeW
,
lat
:
x
.
latitudeW
,
lng
:
x
.
longitudeW
,
lng
:
x
.
longitudeW
,
name
:
x
.
hotelName
name
:
x
.
hotelName
,
}
};
data
.
travelLngLat
.
push
(
obj
);
data
.
travelLngLat
.
push
(
obj
);
x
.
type
=
1
x
.
type
=
1
;
})
});
}
}
data
.
hotels
=
ourHotelList
.
concat
(
dataList
);
data
.
hotels
=
ourHotelList
.
concat
(
dataList
);
data
.
hotels
.
forEach
(
x
=>
{
data
.
hotels
.
forEach
(
(
x
)
=>
{
if
(
isNaN
(
x
.
reviewRating
))
{
if
(
isNaN
(
x
.
reviewRating
))
{
x
.
reviewRating
=
0
x
.
reviewRating
=
0
;
}
}
x
.
hotelFeaturesMask
=
x
.
hotelFeaturesMask
.
split
(
','
)
x
.
hotelFeaturesMask
=
x
.
hotelFeaturesMask
.
split
(
","
);
})
})
;
//按价格升序
//按价格升序
if
(
data
.
pages
.
sort
==
2
)
{
if
(
data
.
pages
.
sort
==
2
)
{
data
.
hotels
.
sort
(
methods
.
getSortFun
(
'asc'
,
'lowrateBySetCurrency'
));
data
.
hotels
.
sort
(
methods
.
getSortFun
(
"asc"
,
"lowrateBySetCurrency"
));
}
}
//按照星级降序
//按照星级降序
if
(
data
.
pages
.
sort
==
1
)
{
if
(
data
.
pages
.
sort
==
1
)
{
data
.
hotels
.
sort
(
methods
.
getSortFun
(
'desc'
,
'reviewRating'
));
data
.
hotels
.
sort
(
methods
.
getSortFun
(
"desc"
,
"reviewRating"
));
}
}
let
jalanTotalCount
=
0
let
jalanTotalCount
=
0
;
if
(
r
.
data
.
data
.
parmResult
&&
r
.
data
.
data
.
parmResult
.
numberOfResultMatched
)
{
if
(
r
.
data
.
data
.
parmResult
&&
r
.
data
.
data
.
parmResult
.
numberOfResultMatched
)
{
jalanTotalCount
=
r
.
data
.
data
.
parmResult
.
numberOfResultMatched
;
jalanTotalCount
=
r
.
data
.
data
.
parmResult
.
numberOfResultMatched
;
}
}
let
ourHotelTotalCount
=
0
;
let
ourHotelTotalCount
=
0
;
if
(
ourHotelList
&&
ourHotelList
.
length
>
0
)
{
if
(
ourHotelList
&&
ourHotelList
.
length
>
0
)
{
ourHotelTotalCount
=
ourHotelList
[
0
].
totalHotelCount
;
ourHotelTotalCount
=
ourHotelList
[
0
].
totalHotelCount
;
}
}
let
totalCount
=
Number
(
jalanTotalCount
)
+
Number
(
ourHotelTotalCount
);
let
totalCount
=
Number
(
jalanTotalCount
)
+
Number
(
ourHotelTotalCount
);
data
.
pageCount
=
Math
.
ceil
(
parseFloat
(
r
.
data
.
data
.
parmResult
.
numberOfResultMatched
)
/
data
.
pages
.
numberOfResults
)
data
.
pageCount
=
Math
.
ceil
(
parseFloat
(
r
.
data
.
data
.
parmResult
.
numberOfResultMatched
)
/
data
.
pages
.
numberOfResults
);
data
.
groupBookingFlg
=
r
.
data
.
data
.
parmResult
.
groupBookingFlg
;
data
.
groupBookingFlg
=
r
.
data
.
data
.
parmResult
.
groupBookingFlg
;
data
.
JapanIncrease
=
r
.
data
.
data
.
parmResult
.
JapanIncrease
;
data
.
JapanIncrease
=
r
.
data
.
data
.
parmResult
.
JapanIncrease
;
data
.
loading
=
false
data
.
loading
=
false
;
})
.
catch
(
e
=>
{
data
.
loading
=
false
})
})
.
catch
((
e
)
=>
{
data
.
loading
=
false
;
});
},
},
//数组排序
//数组排序
getSortFun
(
order
,
sortBy
)
{
getSortFun
(
order
,
sortBy
)
{
var
ordAlpah
=
(
order
==
'asc'
)
?
'>'
:
'<'
;
var
ordAlpah
=
order
==
"asc"
?
">"
:
"<"
;
var
sortFun
=
new
Function
(
'a'
,
'b'
,
'return a.'
+
sortBy
+
ordAlpah
+
'b.'
+
sortBy
+
'?1:-1'
);
var
sortFun
=
new
Function
(
"a"
,
"b"
,
"return a."
+
sortBy
+
ordAlpah
+
"b."
+
sortBy
+
"?1:-1"
);
return
sortFun
;
return
sortFun
;
},
},
//获取价格
//获取价格
...
@@ -261,25 +381,27 @@ export default defineComponent({
...
@@ -261,25 +381,27 @@ export default defineComponent({
return
Math
.
ceil
(
price
/
data
.
JapanIncrease
);
return
Math
.
ceil
(
price
/
data
.
JapanIncrease
);
},
},
changePageHandler
(
n
:
any
)
{
changePageHandler
(
n
:
any
)
{
data
.
pages
.
displayFrom
=
n
data
.
pages
.
displayFrom
=
n
;
console
.
log
(
n
)
console
.
log
(
n
)
;
methods
.
initHotels
()
methods
.
initHotels
()
;
},
},
showHotelDetailHandler
(
hotelId
:
number
)
{
showHotelDetailHandler
(
hotelId
:
number
)
{
data
.
showHotelDetailId
=
hotelId
data
.
showHotelDetailId
=
hotelId
;
},
},
goUrl
(
url
:
string
,
row
:
{}){
goUrl
(
url
:
string
,
row
:
{})
{
url
=
`
${
url
}
/
${
row
.
hotelId
}
/
${
data
.
groupBookingFlg
}
/
${
row
.
type
==
1
?
methods
.
getPrice
(
row
.
lowrateBySetCurrency
):
row
.
lowrateBySetCurrency
}
`
url
=
`
${
url
}
/
${
row
.
hotelId
}
/
${
data
.
groupBookingFlg
}
/
${
window
.
open
(
url
,
'_blank'
)
row
.
type
==
1
?
methods
.
getPrice
(
row
.
lowrateBySetCurrency
)
:
row
.
lowrateBySetCurrency
}
`
;
window
.
open
(
url
,
"_blank"
);
// $router.push({ path:url })
// $router.push({ path:url })
},
},
}
}
;
methods
.
initHotels
()
methods
.
initHotels
()
;
return
{
...
toRefs
(
data
),
...
methods
}
return
{
...
toRefs
(
data
),
...
methods
}
;
}
}
,
})
})
;
</
script
>
</
script
>
<
style
>
<
style
></
style
>
</
style
>
src/i18n/ja-RB/index.ts
View file @
ce5e3efc
...
@@ -334,7 +334,7 @@ export default {
...
@@ -334,7 +334,7 @@ export default {
first
:
'個人客の予定です'
,
first
:
'個人客の予定です'
,
second
:
'ホテル検索'
,
second
:
'ホテル検索'
,
three
:
'ホテル注文'
,
three
:
'ホテル注文'
,
didaName
:
'道旅
酒店
'
,
didaName
:
'道旅
ホテル
'
,
},
},
car
:
{
car
:
{
first
:
'車両予約'
,
first
:
'車両予約'
,
...
...
src/i18n/ko-HG/index.ts
View file @
ce5e3efc
...
@@ -334,7 +334,7 @@ export default {
...
@@ -334,7 +334,7 @@ export default {
first
:
'산행객 예약'
,
first
:
'산행객 예약'
,
second
:
'호텔 검색'
,
second
:
'호텔 검색'
,
three
:
'호텔 주문서'
,
three
:
'호텔 주문서'
,
didaName
:
'
道旅酒店
'
,
didaName
:
'
다오뤼호텔
'
,
},
},
car
:
{
car
:
{
first
:
'차량 예약'
,
first
:
'차량 예약'
,
...
...
src/i18n/zh-TW/index.ts
View file @
ce5e3efc
...
@@ -531,6 +531,7 @@ export default {
...
@@ -531,6 +531,7 @@ export default {
}
}
},
},
scattered
:
{
scattered
:
{
kefang
:
'客房'
,
kefang
:
'客房'
,
chengren
:
'成人'
,
chengren
:
'成人'
,
ertong
:
'兒童'
,
ertong
:
'兒童'
,
...
...
src/pages/scattered/didaHotel.vue
View file @
ce5e3efc
...
@@ -45,7 +45,8 @@
...
@@ -45,7 +45,8 @@
t
t
}
=
useI18n
()
}
=
useI18n
()
const
pageTitle
=
inject
(
DirtionmaryHelper
.
PAGE_TITLE_KEY
)
as
any
const
pageTitle
=
inject
(
DirtionmaryHelper
.
PAGE_TITLE_KEY
)
as
any
pageTitle
.
value
=
t
(
'hotel.pageTitle'
)
pageTitle
.
value
=
t
(
'menu.scattered.didaName'
)
setTitle
(
pageTitle
.
value
)
setTitle
(
pageTitle
.
value
)
const
search
=
reactive
({
const
search
=
reactive
({
arrivalDate
:
''
,
//开始日期
arrivalDate
:
''
,
//开始日期
...
...
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