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
37fd9618
Commit
37fd9618
authored
Mar 25, 2023
by
youjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
23086fb6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1554 additions
and
91 deletions
+1554
-91
scheduledTrip.ts
src/api/scheduledTrip.ts
+16
-0
rightList.vue
src/components/searchdata/rightList.vue
+3
-1
search.vue
src/components/searchdata/search.vue
+20
-57
ModifyOrderAddress.vue
src/components/trip/order/ModifyOrderAddress.vue
+142
-0
TripOrderHeader.vue
src/components/trip/order/TripOrderHeader.vue
+182
-0
TripOrderList.vue
src/components/trip/order/TripOrderList.vue
+407
-0
orderPreview.vue
src/components/trip/orderPreview.vue
+125
-21
index.ts
src/i18n/zh-TW/index.ts
+1
-1
TripOrder.vue
src/pages/scheduledTrip/TripOrder.vue
+56
-0
TripOrderPreview.vue
src/pages/scheduledTrip/TripOrderPreview.vue
+584
-0
detailsNew.vue
src/pages/scheduledTrip/detailsNew.vue
+9
-11
scheduledTripList.vue
src/pages/scheduledTrip/scheduledTripList.vue
+1
-0
routes.ts
src/router/routes.ts
+2
-0
menus.ts
src/utils/menus.ts
+6
-0
No files found.
src/api/scheduledTrip.ts
View file @
37fd9618
...
...
@@ -2,6 +2,22 @@ import { HttpResponse } from '../@types'
import
request
from
'./request'
class
scheduledTripService
{
// 一日游订单列表
static
async
GetTravelOneDayOrderList
(
param
:
any
):
Promise
<
HttpResponse
>
{
return
request
(
'sellorder_post_GetTravelOneDayOrderList'
,
param
)
}
// 一日游订单提交
static
async
SetOrderInfoForB2B
(
param
:
any
):
Promise
<
HttpResponse
>
{
return
request
(
'sellorder_post_SetOrderInfoForB2B'
,
param
)
}
// 获取销售信息
static
async
GetB2BSellByCustomerId
(
param
:
any
):
Promise
<
HttpResponse
>
{
return
request
(
'app_customer_GetB2BSellByCustomerId'
,
param
)
}
// 获取客户信息
static
async
GetCustomerSummary
(
param
:
any
):
Promise
<
HttpResponse
>
{
return
request
(
'b2b_get_GetCustomerSummary'
,
param
)
}
// 行程详情
static
async
GetB2BTravelInfoV1
(
param
:
any
):
Promise
<
HttpResponse
>
{
return
request
(
'b2b_get_GetB2BTravelInfoV1'
,
param
)
...
...
src/components/searchdata/rightList.vue
View file @
37fd9618
...
...
@@ -34,7 +34,7 @@
</
template
>
</div>
</div>
<div
class=
"q-ml-md"
>
<div
class=
"q-ml-md"
v-if=
"$q.platform.is.desktop"
>
<q-btn
style=
"width: 60px;"
color=
"primary"
unelevated
size=
"sm"
:label=
"$t('query')"
@
click=
"setSearchHandler"
/>
</div>
</div>
...
...
@@ -269,6 +269,7 @@
data
.
chosenAddress
=
JSON
.
parse
(
JSON
.
stringify
(
n
.
chosenAddress
))
data
.
qMsg
=
JSON
.
parse
(
JSON
.
stringify
(
n
.
msg
))
data
.
msg
=
JSON
.
parse
(
JSON
.
stringify
(
n
.
msg
))
if
(
n
.
RetrievalState
)
methods
.
setSearchHandler
()
},{
deep
:
true
})
const
methods
=
{
changeOrderType
(
i
){
...
...
@@ -388,6 +389,7 @@
setSearchHandler
(){
data
.
msg
.
pageIndex
=
1
methods
.
goSearchHandler
()
search
.
RetrievalState
=
false
},
GotoDetails
(
item
)
{
$router
.
push
({
...
...
src/components/searchdata/search.vue
View file @
37fd9618
...
...
@@ -12,37 +12,20 @@
<q-card
class=
"q-pa-md rounded-borders"
style=
"width: 300px"
>
<div
class=
"q-mb-md text-subtitle2"
>
{{
$t
(
'morequery'
)
}}
</div>
<div
class=
"rounded-borders q-my-md q-px-xs q-py-xs bg-grey-3"
>
<div
v-if=
"chosenAddress.length==0"
class=
"q-px-sm q-py-xs"
>
{{
$t
(
'v103.scheduledTrip.screeningtitle'
)
}}
</div>
<template
v-else
>
<q-chip
v-for=
"(x, i) in chosenAddress"
size=
"12px"
:key=
"i"
removable
outline
color=
"grey"
:label=
"x.Name"
@
remove=
"removeChosen(x,i,1)"
/>
</
template
>
<div
class=
"q-px-sm q-py-xs row justify-between"
>
<span>
公司所在地
</span>
<span
class=
"text-primary"
v-if=
"chosenAddress.length>0"
>
{{
chosenAddress
[
0
].
Name
}}
</span>
</div>
<q-popup-proxy
:offset=
"[0, 10]"
>
<div
class=
"bg-white q-pb-lg"
style=
"width: 300px;"
>
<div
class=
"q-px-lg q-py-md fz18"
>
{{$t('v103.scheduledTrip.screeningtitle')}}
</div>
<div
v-for=
"(x, i) in
areaList
"
:key=
"i"
>
<div
class=
"q-px-lg q-py-md fz18"
>
公司所在地
</div>
<div
v-for=
"(x, i) in
sites
"
:key=
"i"
>
<div
class=
"addr"
>
<div
<
!--
<
div
class=
"addr-list q-px-md q-py-sm cursor-pointer row items-center"
v-if=
"x.isShow"
>
<q-checkbox
indeterminate-value=
"half"
@
update:model-value=
"changeCheckHandler(x)"
v-model=
"x.checked"
size=
"xs"
/>
<span
class=
"col"
@
click=
"changeExplesdHandler(x)"
>
{{
x.Name
}}
</span>
<span
class=
"col"
@
click=
"changeExplesdHandler(x)"
>
公司所在地
</span>
<q-icon
@
click=
"changeExplesdHandler(x)"
v-if=
"
...
...
@@ -52,28 +35,19 @@
:name=
"!x.explsed ? 'keyboard_arrow_down' : 'keyboard_arrow_up'"
size=
"20px"
/>
</div>
<div
class=
"q-mx-md"
v-if=
"
</div>
-->
<!-- v-if="
x.explsed ||
(x.SubList && x.isShowChild && searchClone.searchKey.length > 0)
"
" -->
<div
class=
"q-mx-md"
>
<template
v-for=
"(y, yi) in x.SubList"
>
<
div
<
q-radio
class=
"addr-list q-px-md q-py-sm row items-center"
:key=
"yi"
v-if=
"y.isShow"
>
<q-checkbox
@
update:model-value=
"changeCheckHandler(y, x)"
v-model=
"y.checked"
size=
"xs"
/>
<span
class=
"col"
>
{{
y
.
Name
}}
</span>
</div>
v-if=
"y.isShow"
v-model=
"searchClone.cityId"
checked-icon=
"task_alt"
unchecked-icon=
"panorama_fish_eye"
:val=
"y.cityId"
:label=
"y.siteName"
size=
"sm"
@
update:model-value=
"changeCheckHandler(y, x,0)"
/>
</
template
>
</div>
</div>
...
...
@@ -199,21 +173,20 @@
</q-card>
</q-popup-proxy>
</q-btn>
<q-btn
color=
"primary"
unelevated
:label=
"$t('query')"
/>
<q-btn
color=
"primary"
unelevated
:label=
"$t('query')"
@
click=
"search.RetrievalState=true"
/>
</div>
<
template
v-if=
"$q.platform.is.desktop"
>
<q-card
flat
class=
"rounded-borders q-py-md"
>
<div
class=
"row justify-between q-mx-md"
>
<span
class=
"text-subtitle1 text-weight-bold "
>
{{
$t
(
'v103.scheduledTrip.screeningtitle'
)
}}
</span>
</div>
<!-- @update:model-value="changeAddrSearchHandler" -->
<q-input
v-model=
"searchClone.searchKey"
type=
"text"
standout
:placeholder=
"$t('v103.scheduledTrip.searchinput')"
class=
"q-ma-md"
@
update:model-value=
"changeAddrSearchHandler"
/>
<div
v-for=
"(x, i) in sites"
:key=
"i"
>
<div
class=
"addr"
>
...
...
@@ -940,20 +913,9 @@
],
});
},
// 搜寻
目的地
// 搜寻
关键词
changeAddrSearchHandler
(
v
)
{
search
.
chosenAddress
=
[]
data
.
areaList
.
forEach
((
x
)
=>
{
x
.
isShow
=
x
.
Name
.
indexOf
(
v
)
!=
-
1
;
x
.
isShowChild
=
false
;
x
.
SubList
.
forEach
((
y
)
=>
{
y
.
isShow
=
y
.
Name
.
indexOf
(
v
)
!=
-
1
;
if
(
y
.
isShow
)
{
x
.
isShow
=
true
;
x
.
isShowChild
=
true
;
}
});
});
search
.
RetrievalState
=
true
},
}
watch
(
data
.
searchClone
,
(
n
,
o
)
=>
{
...
...
@@ -1000,6 +962,7 @@
return
{
...
toRefs
(
data
),
...
methods
,
search
,
searchCnt
,
qDateProxy
,
qNameProxy
,
...
...
src/components/trip/order/ModifyOrderAddress.vue
0 → 100644
View file @
37fd9618
<
template
>
<q-card
class=
"bg-white q-pa-md"
style=
"max-width: 500px; min-width: 375px; "
>
<div
class=
"text-h6 q-mb-lg"
>
{{
$t
(
'v102.to.m.t'
)
}}
</div>
<div
class=
"row items-center"
>
<span
class=
"f12 text-grey-900 text-subtitle2 text-weight-bold"
:class=
"
{ 'col-2': $q.platform.is.desktop, 'col-3': $q.platform.is.mobile }">
{{
$t
(
'v102.ticket.gi'
)
}}
:
</span>
<span
class=
"col f12"
>
<q-radio
v-model=
"m.MailingState"
checked-icon=
"task_alt"
unchecked-icon=
"panorama_fish_eye"
:val=
"1"
:label=
"$t('v102.ticket.zq')"
/>
<q-radio
v-model=
"m.MailingState"
checked-icon=
"task_alt"
unchecked-icon=
"panorama_fish_eye"
:val=
"2"
:label=
"$t('v102.ticket.yj')"
/>
</span>
</div>
<div
v-if=
"m.MailingState == 1"
class=
"bg-light-blue-1 q-pa-md fz14 rounded-borders q-mt-md"
>
<div
class=
"text-weight-bold"
>
{{
$t
(
'v102.ticket.zqs'
)
}}
</div>
<div
class=
"text-grey-900 q-mt-sm f12"
>
{{
$t
(
'v102.ticket.zqd'
)
}}
</div>
</div>
<div>
<div
class=
"q-mt-md"
>
<span
class=
"f12 text-grey-900 text-subtitle2 text-weight-bold"
>
{{
$t
(
'v102.ticket.sj'
)
}}
</span>
</div>
<div
class=
"row items-center q-mt-md text-grey-600 q-mb-md"
v-if=
"$q.platform.is.desktop"
>
<div
class=
"col q-mr-md"
>
{{
$t
(
'v102.ticket.sjc.c1'
)
}}
</div>
<div
class=
"col q-mr-md"
>
{{
$t
(
'v102.ticket.sjc.c2'
)
}}
</div>
<div
class=
"col-2 q-mr-md"
>
{{
$t
(
'v102.ticket.sjc.c3'
)
}}
</div>
<div
class=
"col q-mr-md"
>
{{
$t
(
'v102.ticket.sjc.c4'
)
}}
</div>
<div
class=
"col-4"
v-if=
"m.MailingState == 2"
>
{{
$t
(
'v102.ticket.sjc.c5'
)
}}
</div>
</div>
<div
style=
"border-top: 1px dashed #eee"
:class=
"
{ 'row items-center': $q.platform.is.desktop, column: $q.platform.is.mobile }">
<q-input
dense
standout
v-model=
"m.Name"
class=
"col q-mt-md"
:class=
"
{ 'q-mr-md': $q.platform.is.desktop }" :placeholder="$t('v102.ticket.sjcp.c1')" :rules="[ val => val
&&
val.length > 0 || ' ']" ref="guestName"/>
<q-input
dense
standout
v-model=
"m.EName"
class=
"col q-mt-md"
:class=
"
{ 'q-mr-md': $q.platform.is.desktop }" :placeholder="$t('v102.ticket.sjcp.c2')" :rules="[ val => val
&&
val.length > 0 || ' ']" ref="guestEName"/>
<div
class=
"col q-mt-md"
:class=
"
{ 'q-mr-md': $q.platform.is.desktop }">
<q-radio
v-model=
"m.Sex"
checked-icon=
"task_alt"
unchecked-icon=
"panorama_fish_eye"
:val=
"Number(1)"
:label=
"$t('v102.ticket.sex.man')"
/>
<q-radio
v-model=
"m.Sex"
checked-icon=
"task_alt"
unchecked-icon=
"panorama_fish_eye"
:val=
"Number(2)"
:label=
"$t('v102.ticket.sex.women')"
/>
</div>
<q-input
dense
standout
v-model=
"m.Mobile"
class=
"col q-mt-md"
:class=
"
{ 'q-mr-md': $q.platform.is.desktop }" :placeholder="$t('v102.ticket.sjcp.c4')" :rules="[ val => val
&&
val.length == 11 || ' ']" ref="guestMobile"/>
<q-input
v-if=
"m.MailingState == 2"
dense
standout
v-model=
"m.MailingAddress"
class=
"col-4 q-mt-md"
:placeholder=
"$t('v102.ticket.sjcp.c5')"
:rules=
"[ val => val && val.length > 0 || ' ']"
ref=
"guestAddress"
/>
</div>
</div>
<div
class=
"q-mt-md"
>
<q-input
v-model=
"m.Remark"
standout
autogrow
:label=
"$t('v102.ticket.or')"
/>
</div>
<div
class=
"q-mt-lg text-right"
>
<!-- v-close-popup flat dense -->
<q-btn
color=
"negative"
class=
"q-px-lg"
:label=
"$t('v102.to.m.c')"
v-close-popup
flat
dense
@
click=
"close"
/>
<q-btn
color=
"primary"
class=
"q-ml-md q-px-lg"
:label=
"$t('v102.to.m.s')"
flat
dense
@
click=
"submit"
/>
</div>
</q-card>
</
template
>
<
script
lang=
"ts"
>
import
{
ref
,
defineComponent
,
reactive
,
toRefs
,
watch
}
from
'vue'
import
{
ApiResult
}
from
'src/@types/enumHelper'
import
TicketService
from
'../../../api/ticket'
import
message
from
'../../../utils/message'
import
{
useI18n
}
from
'vue-i18n'
export
default
defineComponent
({
props
:
[
'order'
],
setup
(
props
,
context
)
{
watch
(
()
=>
props
.
order
,
(
n
,
o
)
=>
{
// data.m = JSON.parse(JSON.stringify(n))
}
)
const
{
t
}
=
useI18n
()
const
guestName
=
ref
(
null
)
as
any
const
guestEName
=
ref
(
null
)
as
any
const
guestMobile
=
ref
(
null
)
as
any
const
guestAddress
=
ref
(
null
)
as
any
const
data
=
reactive
({
m
:
{}
as
any
,
loading
:
false
})
data
.
m
=
JSON
.
parse
(
JSON
.
stringify
(
props
.
order
))
const
methods
=
{
close
(){
context
.
emit
(
'close'
)
},
submit
(){
if
(
data
.
loading
)
return
data
.
loading
=
true
let
flag
=
false
guestName
.
value
.
validate
()
guestEName
.
value
.
validate
()
guestMobile
.
value
.
validate
()
if
(
data
.
m
.
MailingState
==
'2'
){
guestAddress
.
value
.
validate
()
flag
=
!
guestName
.
value
.
hasError
&&
!
guestEName
.
value
.
hasError
&&
!
guestMobile
.
value
.
hasError
&&
!
guestAddress
.
value
.
hasError
}
else
{
flag
=
!
guestName
.
value
.
hasError
&&
!
guestEName
.
value
.
hasError
&&
!
guestMobile
.
value
.
hasError
data
.
m
.
MailingAddress
=
''
}
if
(
!
flag
)
return
let
m
=
{
IsUpdateMailing
:
1
,
OrderId
:
data
.
m
.
OrderId
,
CouponsId
:
data
.
m
.
CouponsId
,
Money
:
data
.
m
.
Money
,
UseDate
:
data
.
m
.
UseDate
,
Birthday
:
data
.
m
.
Birthday
,
DetailList
:
data
.
m
.
DetailList
,
MailingState
:
data
.
m
.
MailingState
,
//邮寄状态 1自取 2邮寄
MailingAddress
:
data
.
m
.
MailingAddress
,
//MailingState =2 填写邮寄
Name
:
data
.
m
.
Name
,
EName
:
data
.
m
.
EName
,
Sex
:
data
.
m
.
Sex
,
//1男2女
Mobile
:
data
.
m
.
Mobile
,
Remark
:
data
.
m
.
Remark
,
}
let
param
=
Object
.
assign
(
m
)
TicketService
.
setTicketOrder
(
param
)
.
then
(
r
=>
{
if
(
r
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
context
.
emit
(
'success'
)
message
.
successMsg
(
`
${
t
(
'success'
)}
`
)
}
else
{
message
.
errorMsg
(
r
.
data
.
message
)
}
data
.
loading
=
false
}).
catch
(
e
=>
{
data
.
loading
=
false
message
.
errorMsg
(
e
.
message
)
})
}
}
return
{
...
toRefs
(
data
),
...
methods
,
guestName
,
guestEName
,
guestMobile
,
guestAddress
}
}
})
</
script
>
<
style
></
style
>
src/components/trip/order/TripOrderHeader.vue
0 → 100644
View file @
37fd9618
<
template
>
<div
class=
"rounded-borders bg-white row items-center q-pa-md"
>
<q-select
v-if=
"$q.platform.is.desktop"
class=
"q-mr-md"
style=
"min-width: 150px"
v-model=
"search.OrderStatus"
@
update:model-value=
"setOrderStatus"
dense
:options=
"status"
emit-value
option-label=
"StatusName"
option-value=
"StatusId"
map-options
:label=
"$t('hotelorder.search.status')"
standout
/>
<q-input
v-if=
"$q.platform.is.desktop"
class=
"q-mr-md"
v-model=
"search.OrderNo"
dense
standout
:label=
"$t('hotelorder.search.orderNum')"
/>
<q-field
v-if=
"$q.platform.is.desktop"
clearable
v-model=
"dateRangeFormat"
:label=
"$t('hotelorder.search.daterange')"
standout
class=
"col-2"
style=
"min-width: 190px"
dense
@
clear=
"getDateRange"
>
<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-popup-proxy>
</q-field>
<div
class=
"col"
></div>
<q-btn
unelevated
class=
"bg-grey-3 hover q-mr-md"
:title=
"$t('morequery')"
>
<q-badge
rounded
class=
"din bg-red-2 text-red-14 text-weight-bold"
floating
:label=
"searchCnt"
v-if=
"searchCnt > 0"
/>
<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-mt-md row"
>
<q-input
v-model=
"search.OrderNo"
dense
standout
:label=
"$t('hotelorder.search.orderNum')"
class=
"mobile-only col q-mr-md"
/>
<q-input
v-model=
"search.OrderId"
dense
standout
:label=
"$t('hotelorder.search.orderId')"
class=
"col"
/>
</div>
<div
class=
"mobile-only q-mt-md"
>
<q-field
clearable
v-model=
"dateRangeFormat"
:label=
"$t('hotelorder.search.daterange')"
standout
style=
"min-width: 190px"
dense
@
clear=
"getDateRange"
>
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{
dateRangeFormat
}}
</div>
<q-popup-proxy
:offset=
"[0, 10]"
ref=
"qDateProxy"
>
<q-date
v-model=
"dateRange"
:options=
"optionsFn"
range
mask=
"YYYY/MM/DD"
@
range-end=
"dateRangeHandler"
></q-date>
</q-popup-proxy>
</q-field>
</div>
<div
class=
"q-mt-md"
>
<q-field
clearable
v-model=
"dateRangeFormatUse"
:label=
"$t('v102.ticket.starttime')"
standout
style=
"min-width: 190px"
dense
@
clear=
"getDateRangeUse"
>
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{
dateRangeFormatUse
}}
</div>
<q-popup-proxy
:offset=
"[0, 10]"
ref=
"qDateProxyUse"
>
<q-date
v-model=
"dateRangeUse"
:options=
"optionsFnUse"
range
mask=
"YYYY/MM/DD"
@
range-end=
"dateRangeHandlerUse"
></q-date>
</q-popup-proxy>
</q-field>
</div>
<!--
<div
class=
"q-mt-md"
>
<q-field
clearable
v-model=
"dateRangeFormatUse"
:label=
"$t('v102.ticket.starttime')"
standout
class=
"col"
style=
"min-width: 190px"
dense
@
clear=
"getDateRangeUse"
>
<div
class=
"self-center full-width no-outline"
tabindex=
"0"
>
{{
dateRangeFormatUse
}}
</div>
<q-popup-proxy
:offset=
"[0, 10]"
ref=
"qDateProxyUse"
>
<q-date
v-model=
"dateRangeUse"
:options=
"optionsFnUse"
range
mask=
"YYYY/MM/DD"
@
range-end=
"dateRangeHandlerUse"
></q-date>
</q-popup-proxy>
</q-field>
</div>
-->
<div
class=
"q-mt-md"
>
<q-input
v-model=
"search.Name"
dense
standout
:label=
"$t('v102.to.qjc')"
/>
</div>
<q-select
class=
"q-mt-md"
v-model=
"search.MailingState"
dense
:options=
"orderTypes"
emit-value
option-label=
"TypeName"
option-value=
"TypeId"
map-options
:label=
"$t('v102.to.qj')"
standout
/>
<q-input
v-model=
"search.CouponsName"
dense
standout
:label=
"$t('v102.to.ticketName')"
class=
"q-mt-md"
/>
<q-input
v-model=
"search.ContactNumber"
dense
standout
:label=
"$t('v102.to.qjp')"
class=
"q-mt-md"
/>
</q-card>
</q-popup-proxy>
</q-btn>
<q-btn
unelevated
class=
"bg-blue-1 text-primary hover q-mr-md"
:label=
"$t('hotelorder.recovery')"
/>
<q-btn
color=
"primary"
unelevated
:label=
"$t('query')"
@
click=
"setQueryHandler"
/>
</div>
<div
class=
"rounded-borders bg-white q-pa-sm q-mt-md mobile-only"
>
<q-tabs
v-model=
"search.OrderStatus"
class=
"text-cyan"
dense
>
<q-tab
:name=
"x.StatusId"
:label=
"x.StatusName"
v-for=
"x in status"
@
click=
"setOrderStatus(x.StatusId)"
/>
</q-tabs>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
DirtionmaryHelper
}
from
'../../../config/dictionary'
import
{
computed
,
defineComponent
,
inject
,
reactive
,
ref
,
toRefs
}
from
'vue'
import
{
OrderType
,
RoomType
,
StandardStatus
}
from
'../../../@types'
import
{
getHotelOrderStatus
,
getHotelOrderType
,
getHotelRoomType
,
getTicketOrderType
}
from
'../../../utils/tools'
import
{
date
,
useQuasar
}
from
'quasar'
import
svgIcon
from
'../../global/svg-icon.vue'
export
default
defineComponent
({
components
:
{
svgIcon
},
setup
(
props
)
{
const
qDateProxy
=
ref
(
null
)
as
any
const
qDateProxyUse
=
ref
(
null
)
as
any
const
$q
=
useQuasar
()
const
data
=
reactive
({
status
:
[]
as
Array
<
StandardStatus
>
,
cancelStatus
:
{}
as
StandardStatus
|
undefined
,
dateRangeFormat
:
''
,
dateRangeFormatUse
:
''
,
dateRange
:
{}
as
any
,
dateRangeUse
:
{}
as
any
,
orderTypes
:
[]
as
Array
<
OrderType
>
,
canHide
:
false
})
const
realSearch
=
inject
(
DirtionmaryHelper
.
TICKET_ORDER_SEARCH
)
as
any
const
search
=
reactive
(
JSON
.
parse
(
JSON
.
stringify
(
realSearch
)))
as
any
const
methods
=
{
initStatus
()
{
//通用的訂單類型
let
allStatus
=
getHotelOrderStatus
()
data
.
status
=
allStatus
.
filter
((
x
:
StandardStatus
)
=>
{
return
x
.
StatusId
!=
3
})
data
.
cancelStatus
=
allStatus
.
find
((
x
:
StandardStatus
)
=>
{
return
x
.
StatusId
==
3
})
data
.
orderTypes
=
getTicketOrderType
(
true
)
},
optionsFnUse
(
cd
:
any
)
{
return
true
},
optionsFn
(
cd
:
any
)
{
return
cd
<
date
.
formatDate
(
date
.
addToDate
(
new
Date
(),
{
days
:
1
}),
'YYYY/MM/DD'
)
},
getDateRangeUse
(
value
){
search
.
UseSTime
=
''
search
.
UseETime
=
''
data
.
dateRangeFormatUse
=
''
},
getDateRange
(
value
){
search
.
StartTime
=
''
search
.
EndTime
=
''
data
.
dateRangeFormat
=
''
},
dateRangeHandlerUse
(
e
:
any
)
{
search
.
UseSTime
=
`
${
e
.
from
.
year
}
/
${
e
.
from
.
month
}
/
${
e
.
from
.
day
}
`
search
.
UseETime
=
`
${
e
.
to
.
year
}
/
${
e
.
to
.
month
}
/
${
e
.
to
.
day
}
`
data
.
dateRangeFormatUse
=
`
${
search
.
UseSTime
}
-
${
search
.
UseETime
}
`
if
(
qDateProxyUse
.
value
)
qDateProxyUse
.
value
.
hide
()
},
dateRangeHandler
(
e
:
any
)
{
search
.
StartTime
=
`
${
e
.
from
.
year
}
/
${
e
.
from
.
month
}
/
${
e
.
from
.
day
}
`
search
.
EndTime
=
`
${
e
.
to
.
year
}
/
${
e
.
to
.
month
}
/
${
e
.
to
.
day
}
`
data
.
dateRangeFormat
=
`
${
search
.
StartTime
}
-
${
search
.
EndTime
}
`
if
(
qDateProxy
.
value
)
qDateProxy
.
value
.
hide
()
},
setQueryHandler
()
{
realSearch
.
OrderId
=
search
.
OrderId
realSearch
.
RoomType
=
search
.
RoomType
realSearch
.
StartTime
=
search
.
StartTime
realSearch
.
EndTime
=
search
.
EndTime
realSearch
.
UseSTime
=
search
.
UseSTime
realSearch
.
UseETime
=
search
.
UseETime
realSearch
.
OrderStatus
=
search
.
OrderStatus
realSearch
.
OrderNo
=
search
.
OrderNo
realSearch
.
MailingState
=
search
.
MailingState
realSearch
.
Name
=
search
.
Name
realSearch
.
CouponsName
=
search
.
CouponsName
realSearch
.
ContactNumber
=
search
.
ContactNumber
console
.
log
(
realSearch
)
},
setOrderStatus
(
statusId
:
number
)
{
realSearch
.
OrderStatus
=
statusId
}
}
const
searchCnt
=
computed
(()
=>
{
let
setCnt
=
0
if
(
$q
.
platform
.
is
.
mobile
)
{
if
(
search
.
OrderStatus
>
0
)
setCnt
++
if
(
search
.
StartTime
.
length
>
0
)
setCnt
++
if
(
search
.
OrderNo
>
0
)
setCnt
++
}
if
(
search
.
OrderId
>
0
)
setCnt
++
if
(
search
.
UseSTime
.
length
>
0
)
setCnt
++
if
(
search
.
MailingState
>
0
)
setCnt
++
if
(
search
.
Name
)
setCnt
++
if
(
search
.
CouponsName
)
setCnt
++
if
(
search
.
ContactNumber
)
setCnt
++
return
setCnt
})
methods
.
initStatus
()
return
{
...
toRefs
(
data
),
...
methods
,
search
,
searchCnt
}
}
})
</
script
>
<
style
></
style
>
src/components/trip/order/TripOrderList.vue
0 → 100644
View file @
37fd9618
This diff is collapsed.
Click to expand it.
src/components/trip/orderPreview.vue
View file @
37fd9618
This diff is collapsed.
Click to expand it.
src/i18n/zh-TW/index.ts
View file @
37fd9618
...
...
@@ -1131,7 +1131,7 @@ export default {
since
:
'起'
,
selectionscheme
:
'選擇方案'
,
headerlabel
:{
d1
:
'
印象自組團
'
,
d1
:
'
直營產品
'
,
d2
:
'行程時間'
,
d21
:
'天'
,
d3
:
'日本語/中文 導覽'
,
...
...
src/pages/scheduledTrip/TripOrder.vue
0 → 100644
View file @
37fd9618
<
template
>
<div
class=
"fix-height-subpage column no-wrap q-pa-md"
>
<trip-order-header></trip-order-header>
<trip-order-list></trip-order-list>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
defineComponent
,
inject
,
provide
,
reactive
,
toRefs
,
onMounted
}
from
'vue'
import
{
currentRouter
}
from
'src/router'
import
useMetaModule
from
'../../module/meta/metaModule'
import
{
useI18n
}
from
'vue-i18n'
import
TripOrderHeader
from
'src/components/trip/order/TripOrderHeader.vue'
import
{
DirtionmaryHelper
}
from
'src/config/dictionary'
import
TripOrderList
from
'src/components/trip/order/TripOrderList.vue'
export
default
defineComponent
({
components
:
{
TripOrderHeader
,
TripOrderList
},
setup
(
props
)
{
let
{
setTitle
}
=
useMetaModule
()
const
{
t
}
=
useI18n
()
const
pageTitle
=
inject
(
DirtionmaryHelper
.
PAGE_TITLE_KEY
)
as
any
pageTitle
.
value
=
t
(
'v102.to.pageTitle'
)
setTitle
(
pageTitle
.
value
)
const
search
=
reactive
({
OrderId
:
''
,
OrderNo
:
''
,
OrderStatus
:
0
,
StartTime
:
''
,
EndTime
:
''
,
// TicketName:'',//景区名称
CouponsName
:
''
,
//景区名称
ContactNumber
:
''
,
//电话
Name
:
''
,
//顾客名称
UseSTime
:
''
,
//门票开始时间
UseETime
:
''
,
//门票结束时间
MailingState
:
-
1
})
search
.
OrderId
=
currentRouter
.
currentRoute
.
value
.
params
.
orderId
provide
(
DirtionmaryHelper
.
TICKET_ORDER_SEARCH
,
search
)
const
menu
=
inject
(
DirtionmaryHelper
.
MENU_KEYS
)
as
any
menu
.
value
=
18
const
data
=
reactive
({})
const
methods
=
{}
onMounted
(()
=>
{})
return
{
...
toRefs
(
data
),
...
methods
,
search
}
}
})
</
script
>
<
style
></
style
>
src/pages/scheduledTrip/TripOrderPreview.vue
0 → 100644
View file @
37fd9618
This diff is collapsed.
Click to expand it.
src/pages/scheduledTrip/detailsNew.vue
View file @
37fd9618
...
...
@@ -64,7 +64,7 @@
class=
"q-mr-sm"
/>
<span
>
日本
-
>
{{
dataList
.
aimPlaceName
}}
-
<span
v-for=
"(x, i) in citys"
:key=
"i"
>
<span
class=
"cursor-pointer"
>
{{
x
}}
</span>
...
...
@@ -83,14 +83,14 @@
class=
"transparent q-mr-xl no-padding"
square
icon=
"iconfont icontime"
:label=
"` $
{$t('v103.details.headerlabel.d2')} ${dataList.day
List.length
} ${$t('v103.details.headerlabel.d21')}`"
:label=
"` $
{$t('v103.details.headerlabel.d2')} ${dataList.day
Num
} ${$t('v103.details.headerlabel.d21')}`"
/>
<q-chip
<
!--
<
q-chip
class=
"transparent q-mr-xl no-padding"
square
icon=
"iconfont iconnetwork-fill"
:label=
"$t('v103.details.headerlabel.d3')"
/>
/>
-->
<q-chip
class=
"transparent q-mr-xl no-padding"
square
...
...
@@ -145,6 +145,7 @@
</q-field>
<template
v-if=
"currentPrice&¤tPrice.startDate"
>
<order-preview
class=
"q-pa-md"
:msg=
"msg"
:price=
"currentPrice"
@
reset=
"resetHandler"
></order-preview>
...
...
@@ -185,7 +186,10 @@
<calendar
:priceList=
"dataList.priceList"
@
change=
"changeChosenDateHandler"
ref=
"calendarRef"
></calendar>
</div>
<div
class=
"col q-ml-xl"
>
<order-preview
:price=
"currentPrice"
@
reset=
"resetHandler"
></order-preview>
<order-preview
:msg=
"msg"
:price=
"currentPrice"
@
reset=
"resetHandler"
></order-preview>
</div>
</div>
</div>
...
...
@@ -434,13 +438,7 @@ export default defineComponent({
})
},
handleScroll
(
e
)
{
// console.log(document.querySelector('#scrollId .q-scrollarea__container').scrollTop, '...............')
let
temp
=
document
.
querySelector
(
'#scrollId .q-scrollarea__container'
).
scrollTop
// if(temp-data.currentHeight>0){
// data.scrollDirection='down'
// }else{
// data.scrollDirection='up'
// }
data
.
stickyHeight
=
document
.
querySelector
(
'.q-header--hidden'
)
?
'translateY(0px)'
:
'translateY(0px)'
data
.
currentHeight
=
temp
if
(
data
.
videoPosition
>
0
&&
data
.
videoPosition
<
data
.
currentHeight
&&
data
.
options
.
currentPage
==
0
&&
!
data
.
isPictureInPicture
)
{
...
...
src/pages/scheduledTrip/scheduledTripList.vue
View file @
37fd9618
...
...
@@ -717,6 +717,7 @@ export default defineComponent({
})
const
search
=
reactive
({
RetrievalState
:
false
,
datesId
:
0
,
DayId
:
0
,
chosenAddress
:
[]
as
Array
<
any
>
,
//右边目的地
...
...
src/router/routes.ts
View file @
37fd9618
...
...
@@ -34,6 +34,8 @@ const routes: RouteRecordRaw[] = [
{
path
:
'/scheduledTrip/index'
,
component
:
()
=>
import
(
'pages/scheduledTrip/scheduledTripList.vue'
)
},
//预定行程
{
path
:
'/scheduledTrip/details/:id/:tcid'
,
component
:
()
=>
import
(
'pages/scheduledTrip/detailsNew.vue'
)
},
{
path
:
'/scheduledTrip/preview/:tripId'
,
component
:
()
=>
import
(
'pages/scheduledTrip/TripOrderPreview.vue'
)
},
{
path
:
'/scheduledTrip/order/:orderId?'
,
component
:
()
=>
import
(
'pages/scheduledTrip/TripOrder.vue'
)
},
]
},
...
...
src/utils/menus.ts
View file @
37fd9618
...
...
@@ -108,6 +108,12 @@ const useMenus = {
id
:
17
,
parentId
:
16
,
},
{
name
:
t
(
'menu.stroke.three'
),
url
:
'/scheduledTrip/order'
,
id
:
18
,
parentId
:
16
,
},
]
})
menus
.
push
({
...
...
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