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
ce42cba9
Commit
ce42cba9
authored
Apr 11, 2025
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化包机
parent
a54f50cf
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
409 additions
and
353 deletions
+409
-353
quasar.conf.js
quasar.conf.js
+1
-1
index.ts
src/i18n/en-US/index.ts
+14
-4
index.ts
src/i18n/in-ID/index.ts
+15
-5
index.ts
src/i18n/ja-RB/index.ts
+15
-5
index.ts
src/i18n/ko-HG/index.ts
+14
-4
index.ts
src/i18n/zh-SW/index.ts
+14
-4
index.ts
src/i18n/zh-TW/index.ts
+17
-7
productHeader.vue
src/pages/travel/components/productHeader.vue
+4
-2
productList.vue
src/pages/travel/components/productList.vue
+174
-182
order.vue
src/pages/travel/order.vue
+8
-7
menus.ts
src/utils/menus.ts
+133
-132
No files found.
quasar.conf.js
View file @
ce42cba9
...
...
@@ -64,7 +64,7 @@ module.exports = configure(function (ctx) {
publicPath
:
ctx
.
dev
?
'/'
:
'./'
,
env
:
ctx
.
dev
?
{
BASE_APP_API
:
'http://192.168.5.
46
/api/common/post'
,
BASE_APP_API
:
'http://192.168.5.
204:8030
/api/common/post'
,
JAVA_URL_API
:
'http://efficient.oytour.com'
,
VERSION
:
require
(
'./package.json'
).
version
,
...
...
src/i18n/en-US/index.ts
View file @
ce42cba9
...
...
@@ -357,13 +357,23 @@ export default {
three
:
'Remittance instructions'
},
travel
:
{
first
:
'
charter flight
'
,
second
:
'
Charter flight service
'
,
three
:
'
Charter flight
order'
,
four
:
'
Charter flight
settlement'
,
first
:
'
PAK
'
,
second
:
'
PAK group
'
,
three
:
'
PAK
order'
,
four
:
'
PAK
settlement'
,
}
},
travel
:
{
start
:
'Departure'
,
download
:
'Download itinerary'
,
returnMoney
:
'Current return amount'
,
queryDetail
:
'View return details'
,
peopleRequired
:
'Number of people required'
,
totalSeat
:
'Total team'
,
ratio
:
'Return ratio'
,
current
:
'Current'
,
people
:
'person'
,
startCity
:
'Departure city'
,
man
:
'Number of adults'
,
addTitle
:
'Add/Modify Order'
,
oldPeople
:
'Number of elderly people'
,
...
...
src/i18n/in-ID/index.ts
View file @
ce42cba9
...
...
@@ -355,13 +355,23 @@ export default {
three
:
'Instruksi pengiriman uang'
},
travel
:
{
first
:
'piagam'
,
second
:
'Layanan sewa'
,
three
:
'Perintah piagam'
,
four
:
'Penyelesaian penerbangan sewaan'
,
startCity
:
'Keluar'
,
first
:
'PAK'
,
second
:
'PAK grup tur'
,
three
:
'PAK urutan'
,
four
:
'PAK penyelesaian'
,
}
},
travel
:
{
download
:
'Unduh jadwal'
,
start
:
'Keluar'
,
returnMoney
:
'Jumlah pengembalian dana saat ini'
,
queryDetail
:
'Lihat detail pengembalian dana'
,
peopleRequired
:
'Jumlah orang yang dibutuhkan'
,
totalSeat
:
'Jumlah total tim'
,
ratio
:
'Rasio pengembalian dana'
,
current
:
'Saat ini'
,
people
:
'orang'
,
man
:
'jumlah orang dewasa'
,
addTitle
:
'ambah/ubah pesanan'
,
oldPeople
:
'Jumlah orang tua'
,
...
...
@@ -1185,7 +1195,7 @@ export default {
c15
:
'Masukkan jumlah bagasi yang diperiksa'
,
}
},
},
//#endregion
//#region ending v1.0.3
...
...
src/i18n/ja-RB/index.ts
View file @
ce42cba9
...
...
@@ -357,13 +357,23 @@ export default {
three
:
'送金の説明'
},
travel
:
{
first
:
'
チャーター機です
'
,
second
:
'
チャーターサービスです
'
,
three
:
'
チャーター機受注です
'
,
four
:
'
チャーターチェックアウト
'
,
first
:
'
PAK
'
,
second
:
'
PAK 団
'
,
three
:
'
PAK オーダー
'
,
four
:
'
PAK 決済
'
,
}
},
travel
:
{
start
:
'出発'
,
download
:
'行程をダウンロード'
,
returnMoney
:
'現在の返佣金額'
,
queryDetail
:
'返佣詳細を見る'
,
peopleRequired
:
'必要な人数'
,
totalSeat
:
'総団位'
,
ratio
:
'返佣比例'
,
current
:
'現在'
,
people
:
'人'
,
startCity
:
'出発地'
,
man
:
'大人の数'
,
addTitle
:
'注文の追加/変更'
,
oldPeople
:
'老人の数'
,
...
...
@@ -1187,7 +1197,7 @@ export default {
c15
:
'手荷物数を入力します'
,
}
},
},
Airticket
:
{
Air_go
:
'往路'
,
...
...
src/i18n/ko-HG/index.ts
View file @
ce42cba9
...
...
@@ -357,13 +357,23 @@ export default {
three
:
'송금 안내'
},
travel
:
{
first
:
'
전세기
'
,
second
:
'
전세기
서비스'
,
three
:
'
전세기
주문서'
,
four
:
'
전세
체크아웃'
,
first
:
'
PAK
'
,
second
:
'
PAK
서비스'
,
three
:
'
PAK
주문서'
,
four
:
'
PAK
체크아웃'
,
}
},
travel
:
{
start
:
'출발'
,
download
:
'여정 다운로드'
,
returnMoney
:
'현재 반환 금액'
,
queryDetail
:
'返佣 상세 보기'
,
peopleRequired
:
'필요한 사람 수'
,
totalSeat
:
'총 팀 수'
,
ratio
:
'반환 비율'
,
current
:
'현재'
,
people
:
'사람'
,
startCity
:
'출발 도시'
,
man
:
'성인 수'
,
addTitle
:
'주문 추가/수정'
,
oldPeople
:
'노인 수'
,
...
...
src/i18n/zh-SW/index.ts
View file @
ce42cba9
...
...
@@ -357,13 +357,23 @@ export default {
three
:
'汇款说明'
},
travel
:
{
first
:
'
包机
'
,
second
:
'
包机服务
'
,
three
:
'
包机
订单'
,
four
:
'
包机结
算'
,
first
:
'
PAK团
'
,
second
:
'
PAK团表
'
,
three
:
'
PAK
订单'
,
four
:
'
PAK結
算'
,
}
},
travel
:
{
start
:
'出发'
,
download
:
'下载行程'
,
returnMoney
:
'当前返佣金額'
,
queryDetail
:
'查看返佣詳情'
,
peopleRequired
:
'需求人數'
,
totalSeat
:
'總團位'
,
ratio
:
'返佣比例'
,
current
:
'當前'
,
people
:
'人'
,
startCity
:
'出发城市'
,
man
:
'成人数量'
,
addTitle
:
'新增/修改订单'
,
oldPeople
:
'老人数量'
,
...
...
src/i18n/zh-TW/index.ts
View file @
ce42cba9
...
...
@@ -357,13 +357,23 @@ export default {
three
:
'匯款說明'
},
travel
:
{
first
:
'
包機
'
,
second
:
'
包機服務
'
,
three
:
'
包機訂單
'
,
four
:
'
包機
結算'
,
first
:
'
PAK团
'
,
second
:
'
PAK团表
'
,
three
:
'
PAK订单
'
,
four
:
'
PAK
結算'
,
}
},
travel
:
{
start
:
'出發'
,
download
:
'下載行程'
,
returnMoney
:
'当前返佣金額'
,
queryDetail
:
'查看返佣詳情'
,
peopleRequired
:
'需求人數'
,
totalSeat
:
'總團位'
,
ratio
:
'返佣比例'
,
current
:
'當前'
,
people
:
'人'
,
startCity
:
'出發城市'
,
man
:
'成人數量'
,
addTitle
:
'新增/修改訂單'
,
oldPeople
:
'老人數量'
,
...
...
@@ -403,7 +413,7 @@ export default {
createDate
:
'創建日期'
,
payStatus
:
'支付狀態'
,
id
:
'團號'
,
planInfo
:
'
包機
資訊'
,
planInfo
:
'
PAK
資訊'
,
groupInfo
:
'團隊資訊'
,
airInfo
:
'航班資訊'
,
tmp
:
'暫定'
,
...
...
@@ -531,7 +541,7 @@ export default {
}
},
scattered
:
{
kefang
:
'客房'
,
chengren
:
'成人'
,
ertong
:
'兒童'
,
...
...
@@ -1191,7 +1201,7 @@ export default {
c15
:
'輸入托运行李数'
,
}
},
},
//#endregion
//#region ending v1.0.3
...
...
src/pages/travel/components/productHeader.vue
View file @
ce42cba9
...
...
@@ -8,6 +8,7 @@
</q-popup-proxy>
</q-field>
<q-input
class=
"q-mr-md q-ml-md"
v-model=
"search.TCID"
dense
standout
:label=
"$t('travel.id')"
/>
<q-input
class=
"q-mr-md q-ml-md"
v-model=
"search.StartAddress"
dense
standout
:label=
"$t('travel.startCity')"
/>
<div
class=
"col"
></div>
<q-btn
color=
"primary"
unelevated
:label=
"$t('query')"
@
click=
"setQueryHandler"
/>
</div>
...
...
@@ -24,8 +25,8 @@ export default defineComponent({
const
realSearch
=
inject
(
DirtionmaryHelper
.
TRAVEL_ORDER_OBJ
)
as
any
const
search
=
reactive
(
JSON
.
parse
(
JSON
.
stringify
(
realSearch
)))
const
dateRange
=
reactive
({
from
:
''
,
to
:
''
})
dateRange
.
to
=
date
.
formatDate
(
date
.
addToDate
(
new
Date
(),
{
days
:
50
}),
'YYYY/MM/DD'
)
dateRange
.
from
=
date
.
formatDate
(
date
.
addToDate
(
new
Date
(),
{
days
:
20
}),
'YYYY/MM/DD'
)
//
dateRange.to = date.formatDate(date.addToDate(new Date(), { days: 50 }), 'YYYY/MM/DD')
//
dateRange.from = date.formatDate(date.addToDate(new Date(), { days: 20 }), 'YYYY/MM/DD')
const
dateRangeFormat
=
ref
(
`
${
dateRange
.
from
}
-
${
dateRange
.
to
}
`
)
search
.
SelectStartDate
=
dateRange
.
from
search
.
SelectEndDate
=
dateRange
.
to
...
...
@@ -40,6 +41,7 @@ export default defineComponent({
realSearch
.
SelectStartDate
=
search
.
SelectStartDate
realSearch
.
SelectEndDate
=
search
.
SelectEndDate
realSearch
.
TCID
=
search
.
TCID
realSearch
.
StartAddress
=
search
.
StartAddress
},
dateRangeHandler
(
e
:
any
)
{
search
.
SelectStartDate
=
`
${
e
.
from
.
year
}
/
${
e
.
from
.
month
}
/
${
e
.
from
.
day
}
`
...
...
src/pages/travel/components/productList.vue
View file @
ce42cba9
<
template
>
<div>
<q-card
class=
"light-shadow q-pa-md bg-white rounded-borders q-mb-md"
flat
:class=
"$q.platform.is.desktop ? 'row' : ''"
v-for=
"(x, index) in orders"
>
<div
class=
"col-2"
>
<q-card
class=
"light-shadow q-pa-md bg-white rounded-borders q-mb-md"
flat
:class=
"$q.platform.is.desktop ? 'row' : ''"
v-for=
"(x, index) in orders"
>
<div
class=
"col-2 "
>
<div
class=
"mb-title"
>
<i
class=
"iconfont icon-biaoti1"
></i><span>
{{
$t
(
"travel.planInfo"
)
}}
</span>
<i
class=
"iconfont icon-biaoti1"
></i><span>
{{
$t
(
'travel.planInfo'
)
}}
</span>
</div>
{{
x
.
GTeamName
}}
<div
class=
"mb"
>
<span>
{{
x
.
Title
}}
</span>
</div>
<div>
{{
$t
(
"travel.startDate"
)
}}
:
<span>
{{
x
.
StartDate
}}
</span>
{{
$t
(
'travel.startDate'
)
}}
:
<span>
{{
x
.
StartDate
}}
</span>
</div>
<div>
{{
$t
(
'travel.groupInfo'
)
}}
:
<span>
{{
x
.
TCNUM
}}
(
{{
x
.
TCID
}}
)
</span>
</div>
<div>
{{
$t
(
"travel.groupInfo"
)
}}
:
<span>
{{
x
.
TCNUM
}}
(
{{
x
.
TCID
}}
)
</span>
<span
v-if=
"x.StartAddress"
class=
"q-mt-md text-weight-bold text-negative"
>
{{
x
.
StartAddress
}}
{{
$t
(
'travel.start'
)
}}
</span>
</div>
</div>
<div
class=
"col-4"
>
<div
class=
"col-4
q-pl-md
"
>
<div
class=
"mb-title"
>
<i
class=
"iconfont icon-hangban1"
></i><span>
{{
$t
(
"travel.airInfo"
)
}}
</span>
<i
class=
"iconfont icon-hangban1"
></i><span>
{{
$t
(
'travel.airInfo'
)
}}
</span>
</div>
<div
class=
"FlightDiv-TCL"
@
click=
"showDialogF(x)"
>
<div
v-for=
"(subItem, subIndex) in x.TravelTeamFlightList"
:key=
"subIndex + 1000"
class=
"TCL-flighInfoList"
>
<div
class=
"FlightDiv-TCL cursor-pointer"
@
click=
"showDialogF(x)"
>
<div
v-for=
"(subItem, subIndex) in x.TravelTeamFlightList"
:key=
"subIndex + 1000"
class=
"TCL-flighInfoList"
>
<span
class=
"travelnowrap"
>
<span
class=
"TCL-FlightNumber"
>
{{
subItem
.
Flight_number
}}
</span>
<span
><template
v-if=
"subItem.DIATA"
>
(
{{
subItem
.
DIATA
}}
)
</
template
>
<
template
v-else
>
(
{{
subItem
.
dName
}}
)
</
template
></span
><template
v-if=
"subItem.DIATA"
>
(
{{
subItem
.
DIATA
}}
)
</
template
>
<
template
v-else
>
(
{{
subItem
.
dName
}}
)
</
template
></span
>
{{ subItem.DepartureName }}
{{
subItem.StopoverName == ""
? ""
: "-(" + subItem.StopoverIATA + ")" + subItem.StopoverName
}}
{{ subItem.StopoverName == '' ? '' : '-(' + subItem.StopoverIATA + ')' + subItem.StopoverName }}
<
template
v-if=
"subItem.ArrivalCityName"
>
<span
v-if=
"subItem.AIATA"
>
-(
{{
subItem
.
AIATA
}}
)
</span>
<span
v-else
>
-
</span>
...
...
@@ -50,25 +39,50 @@
<template
v-if=
"!subItem.DIATA"
>
(
{{
subItem
.
aName
}}
)
</
template
>
</template>
<span
v-if=
"subItem.FlightState == 1"
class=
"TCL-greenType"
>
【OK】
</span>
<span
v-else
class=
"TCL-redType"
>
【{{ $t(
"travel.tmp"
) }}】
</span>
<span
v-else
class=
"TCL-redType"
>
【{{ $t(
'travel.tmp'
) }}】
</span>
</span>
</div>
</div>
<div
class=
"q-mt-sm"
v-if=
"x.WordUrl && x.WordUrl.length > 0"
>
<span
class=
"text-primary cursor-pointer"
@
click=
"download(x.WordUrl)"
>
{{ $t('travel.download') }}
</span>
</div>
</div>
<div
class=
"col-2"
>
<div>
<div
class=
"mb-title"
>
<i
class=
"iconfont icon-jiage"
></i><span>
{{ $t(
"travel.airSeatInfo"
) }}
</span>
<i
class=
"iconfont icon-jiage"
></i><span>
{{ $t(
'travel.airSeatInfo'
) }}
</span>
</div>
<div
class=
"mb bold"
>
<span
class=
"item-title"
>
{{ $t(
"travel.YSeat"
) }}:
</span
<span
class=
"item-title"
>
{{ $t(
'travel.totalSeat'
) }}:
</span
><span
>
{{ x.YSeat }}
<span
class=
"item-title q-ml-md"
>
{{ $t("travel.unUseNum") }}:
</span
>
{{ x.SurplusYSeatNum }}
</span
>
{{ x.YSeat }}
<span
class=
"item-title q-ml-md"
>
{{ $t('travel.unUseNum') }}:
</span>
{{ x.SurplusYSeatNum }}
</span
>
</div>
<div
class=
"mb bold"
>
<div
class=
"q-mt-sm"
>
<span
class=
"item-title"
>
{{ $t('travel.returnMoney') }}:
</span><span
class=
"text-negative"
>
{{ x.RakeBackRatio }} / {{ $t('travel.people') }}
</span>
</div>
<div
class=
"q-mt-sm"
>
<span
class=
"item-title text-primary cursor-pointer"
>
{{ $t('travel.queryDetail') }}
</span>
<q-popup-proxy
:offset=
"[0, 10]"
>
<q-card
class=
""
flat
>
<div
class=
""
>
<div
class=
"row items-center bg-grey-2"
>
<div
class=
"q-pa-sm text-center col"
style=
"border-right: 1px solid #eee;"
>
{{ $t('travel.peopleRequired') }}
</div>
<div
class=
"q-pa-sm text-center col"
style=
"border-right: 1px solid #eee;"
>
{{ $t('travel.ratio') }}
</div>
</div>
<div
class=
"row items-center"
v-for=
"(item, index) in x.RakeBackList"
:key=
"index"
:class=
"{'bg-green-2': x.RakeBackRatio == item.Ratio}"
>
<div
class=
"q-pa-sm text-center col"
style=
"border-right: 1px solid #eee;"
>
{{ item.MinGuest }}-{{ item.MaxGuest }}{{ $t('travel.people') }}
</div>
<div
class=
"q-pa-sm text-center col"
style=
"border-right: 1px solid #eee;"
>
{{ item.Ratio }}/{{ $t('travel.people') }}
</div>
<!-- <div class="q-pa-sm text-center col">
<div class="bg-green" style="width:10px;height:10px;border-radius:50%; display: inline-block;" v-if="x.RakeBackRatio == item.Ratio"></div>
</div> -->
</div>
</div>
</q-card>
</q-popup-proxy>
</div>
<!-- <div class="mb bold">
<span class="item-title">{{ $t("travel.CSeat") }}:</span
><span>
{{ x.CSeat }}
...
...
@@ -83,79 +97,54 @@
<span class="item-title q-ml-md">{{ $t("travel.unUseNum") }}:</span
>{{ x.SurplusFSeatNum }}</span
>
</div>
</div>
-->
</div>
</div>
<div
class=
"col-3"
>
<div
class=
"mb-title"
>
<i
class=
"iconfont icon-jiage"
></i><span>
{{ $t(
"travel.priceInfo"
) }}
</span>
<i
class=
"iconfont icon-jiage"
></i><span>
{{ $t(
'travel.priceInfo'
) }}
</span>
</div>
<div
class=
"mb bold"
>
<span
class=
"item-title"
>
{{ $t("travel.midPrice") }}:
</span
>
{{ x.B2BMemberPrice }}
<span
class=
"item-title"
>
{{ $t('travel.midPrice') }}:
</span>
{{ x.B2BMemberPrice }}
</div>
<div
class=
"mb bold"
>
<span
class=
"item-title"
>
{{ $t("travel.childNeedBed") }}:
</span
>
{{ x.ChildNeedPrice }}
<span
class=
"item-title q-ml-md"
>
{{ $t("travel.NoNeedBed") }}:
</span>
<span
class=
"item-title"
>
{{ $t('travel.childNeedBed') }}:
</span>
{{ x.ChildNeedPrice }}
<span
class=
"item-title q-ml-md"
>
{{ $t('travel.NoNeedBed') }}:
</span>
{{ x.ChildNoNeedPrice }}
</div>
<div
class=
"mb bold"
>
<span
class=
"item-title"
>
{{ $t("travel.Baby") }}:
</span>
{{ x.BabyPrice }}
<span
class=
"item-title q-ml-md"
>
{{ $t("travel.BabyChargePrice") }}:
</span
>
{{ x.BabyChargePrice }}
<span
class=
"item-title"
>
{{ $t('travel.Baby') }}:
</span>
{{ x.BabyPrice }}
<span
class=
"item-title q-ml-md"
>
{{ $t('travel.BabyChargePrice') }}:
</span>
{{ x.BabyChargePrice }}
</div>
<div
class=
"mb bold"
>
<span
class=
"item-title"
>
{{ $t(
"travel.OldManChargePrice"
) }}:
</span>
<span
class=
"item-title"
>
{{ $t(
'travel.OldManChargePrice'
) }}:
</span>
{{ x.OldManChargePrice }}
<span
class=
"item-title q-ml-md"
>
{{ $t("travel.VisaPrice") }}:
</span
>
{{ x.VisaPrice }}
<span
class=
"item-title q-ml-md"
>
{{ $t('travel.VisaPrice') }}:
</span>
{{ x.VisaPrice }}
</div>
<div
class=
"mb bold"
>
<span
class=
"item-title"
>
{{ $t(
"travel.SingleRoomPrice"
) }}:
</span>
<span
class=
"item-title"
>
{{ $t(
'travel.SingleRoomPrice'
) }}:
</span>
{{ x.SingleRoomPrice }}
<span
class=
"item-title q-ml-md"
>
{{ $t("travel.OtherPrice") }}:
</span
>
{{ x.OtherPrice }}
<span
class=
"item-title q-ml-md"
>
{{ $t('travel.OtherPrice') }}:
</span>
{{ x.OtherPrice }}
</div>
</div>
<div
class=
"col-1"
>
<q-btn
color=
"primary"
unelevated
@
click=
"ViewPayment(x)"
>
{{
$t("travel.buy")
}}
</q-btn>
<q-btn
:class=
"$q.platform.is.desktop ? 'q-mt-md' : 'q-ml-md'"
color=
"primary"
unelevated
@
click=
"gotoUrl(x)"
>
{{ $t("travel.payOrder") }}
</q-btn
>
<q-btn
color=
"primary"
unelevated
@
click=
"ViewPayment(x)"
>
{{ $t('travel.buy') }}
</q-btn>
<q-btn
:class=
"$q.platform.is.desktop ? 'q-mt-md' : 'q-ml-md'"
color=
"primary"
unelevated
@
click=
"gotoUrl(x)"
>
{{ $t('travel.payOrder') }}
</q-btn>
</div>
<q-dialog
width=
"900"
v-model=
"showItem"
trigger=
"click"
>
<div
class=
"TC_tripDetails"
style=
"width: 900px; background-color: #fff"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr
class=
"_color_666"
style=
"text-align: center"
>
<th
width=
"60"
>
{{ $t(
"Airticket.Air_segment"
) }}
</th>
<th
width=
"80"
>
{{ $t(
"system.query_flightNum"
) }}
</th>
<th
width=
"150"
>
{{ $t(
"system.ph_flightTime"
) }}
</th>
<th
width=
"80"
>
{{ $t(
"system.query_arrivalTime"
) }}
</th>
<th
width=
"100"
>
{{ $t(
"system.query_stopCity"
) }}
</th>
<th
width=
"60"
>
{{ $t(
'Airticket.Air_segment'
) }}
</th>
<th
width=
"80"
>
{{ $t(
'system.query_flightNum'
) }}
</th>
<th
width=
"150"
>
{{ $t(
'system.ph_flightTime'
) }}
</th>
<th
width=
"80"
>
{{ $t(
'system.query_arrivalTime'
) }}
</th>
<th
width=
"100"
>
{{ $t(
'system.query_stopCity'
) }}
</th>
</tr>
<tr
v-for=
"(fItem, fIndex) in dialogObj.TravelTeamFlightList"
:key=
"fIndex"
style=
"text-align: center"
>
<tr
v-for=
"(fItem, fIndex) in dialogObj.TravelTeamFlightList"
:key=
"fIndex"
style=
"text-align: center"
>
<td
class=
"_d_name _color_666"
>
<span
v-if=
"fIndex == 0"
>
{{ $t("Airticket.Air_go") }}
</span>
<span
v-else-if=
"fIndex == dialogObj.TravelTeamFlightList.length - 1"
>
{{
$t("Airticket.Air_returnTrip")
}}
</span>
<span
v-else-if=
"
fIndex > 0 && fIndex != dialogObj.TravelTeamFlightList.length - 1
"
>
{{ $t("Airticket.Air_transit") }}
</span
>
<span
v-if=
"fIndex == 0"
>
{{ $t('Airticket.Air_go') }}
</span>
<span
v-else-if=
"fIndex == dialogObj.TravelTeamFlightList.length - 1"
>
{{ $t('Airticket.Air_returnTrip') }}
</span>
<span
v-else-if=
"fIndex > 0 && fIndex != dialogObj.TravelTeamFlightList.length - 1"
>
{{ $t('Airticket.Air_transit') }}
</span>
</td>
<td>
<div>
{{ fItem.Flight_number }}
</div>
...
...
@@ -176,37 +165,21 @@
</div>
</td>
<td>
<
template
v-if=
"fItem.StopoverIATA"
>
(
{{
fItem
.
StopoverIATA
}}
)
</
template
>
{{ fItem.StopoverName }}
<
template
v-if=
"fItem.StopoverIATA"
>
(
{{
fItem
.
StopoverIATA
}}
)
</
template
>
{{ fItem.StopoverName }}
</td>
</tr>
</table>
</div>
</q-dialog>
</q-card>
<q-card
class=
"light-shadow q-pa-md bg-white rounded-borders q-mb-md"
v-if=
"pages.pageCount > 0"
flat
>
<q-pagination
class=
"full-width justify-end"
v-model=
"pages.pageIndex"
color=
"primary"
:max=
"pages.pageCount"
:input=
"true"
@
update:model-value=
"changePageHandler"
/>
<q-card
class=
"light-shadow q-pa-md bg-white rounded-borders q-mb-md"
v-if=
"pages.pageCount > 0"
flat
>
<q-pagination
class=
"full-width justify-end"
v-model=
"pages.pageIndex"
color=
"primary"
:max=
"pages.pageCount"
:input=
"true"
@
update:model-value=
"changePageHandler"
/>
</q-card>
<q-inner-loading
:showing=
"loading"
:label=
"$t('loading')"
label-class=
"text-grey-6 f12"
/>
<q-inner-loading
:showing=
"loading"
:label=
"$t('loading')"
label-class=
"text-grey-6 f12"
/>
</div>
<div
class=
"text-center q-mt-xl"
v-if=
"(!orders || orders.length == 0) && !loading"
>
<svg-icon
:size=
"50"
color=
"nav"
icon=
"General/Clipboard.svg"
></svg-icon>
<div
class=
"q-mt-md f12 text-grey-6"
>
{{ $t(
"noneData"
) }}
</div>
<div
class=
"q-mt-md f12 text-grey-6"
>
{{ $t(
'noneData'
) }}
</div>
</div>
<q-dialog
v-model=
"showOrderdDetail"
>
<!-- <OrderdDetail :OrderID="OrderID"></OrderdDetail> -->
...
...
@@ -218,36 +191,36 @@
</template>
<
script
lang=
"ts"
>
import
{
DirtionmaryHelper
}
from
"../../../config/dictionary"
;
import
{
defineComponent
,
inject
,
reactive
,
toRefs
,
watch
,
toRaw
}
from
"vue"
;
import
travelService
from
"../../../api/travel"
;
import
{
ApiResult
}
from
"../../../@types/enumHelper"
;
import
message
from
"../../../utils/message"
;
import
{
RoomType
,
StandardStatus
}
from
"../../../@types"
;
import
{
getHotelOrderStatus
,
getHotelRoomType
,
moneyFormat
}
from
"../../../utils/tools"
;
import
{
useI18n
}
from
"vue-i18n"
;
import
svgIcon
from
"../../../global/svg-icon.vue"
;
import
{
copyToClipboard
,
useQuasar
}
from
"quasar"
;
import
{
currentRouter
}
from
"../../../router"
;
import
{
DirtionmaryHelper
}
from
'../../../config/dictionary'
import
{
defineComponent
,
inject
,
reactive
,
toRefs
,
watch
,
toRaw
}
from
'vue'
import
travelService
from
'../../../api/travel'
import
{
ApiResult
}
from
'../../../@types/enumHelper'
import
message
from
'../../../utils/message'
import
{
RoomType
,
StandardStatus
}
from
'../../../@types'
import
{
getHotelOrderStatus
,
getHotelRoomType
,
moneyFormat
}
from
'../../../utils/tools'
import
{
useI18n
}
from
'vue-i18n'
import
svgIcon
from
'../../../global/svg-icon.vue'
import
{
copyToClipboard
,
useQuasar
}
from
'quasar'
import
{
currentRouter
}
from
'../../../router'
// import OrderdDetail from './OrderdDetail.vue'
// import BankAccount from '../../BankAccount.vue'
import
AddOrder
from
"./addOrder.vue"
;
import
{
useRouter
}
from
"vue-router"
;
import
AddOrder
from
'./addOrder.vue'
import
{
useRouter
}
from
'vue-router'
export
default
defineComponent
({
components
:
{
AddOrder
},
setup
(
props
)
{
const
$router
=
useRouter
()
;
const
search
=
inject
(
DirtionmaryHelper
.
TRAVEL_ORDER_OBJ
)
as
any
;
const
{
t
}
=
useI18n
()
;
const
$q
=
useQuasar
()
;
const
$router
=
useRouter
()
const
search
=
inject
(
DirtionmaryHelper
.
TRAVEL_ORDER_OBJ
)
as
any
const
{
t
}
=
useI18n
()
const
$q
=
useQuasar
()
watch
(
search
,
(
n
,
o
)
=>
{
if
(
data
.
loading
)
return
;
data
.
pages
.
pageIndex
=
1
;
data
.
orders
=
[]
;
methods
.
initOrders
()
;
})
;
if
(
data
.
loading
)
return
data
.
pages
.
pageIndex
=
1
data
.
orders
=
[]
methods
.
initOrders
()
})
const
data
=
reactive
({
showItem
:
false
,
...
...
@@ -255,7 +228,7 @@ export default defineComponent({
info
:
{},
copyId
:
0
,
showAddOrder
:
false
,
OrderID
:
""
,
OrderID
:
''
,
showOrderdDetail
:
false
,
orders
:
[]
as
Array
<
any
>
,
status
:
[]
as
Array
<
StandardStatus
>
,
...
...
@@ -263,79 +236,98 @@ export default defineComponent({
pages
:
{
pageIndex
:
1
,
pageSize
:
10
,
pageCount
:
0
,
pageCount
:
0
},
loadingCel
:
false
,
loading
:
false
,
});
loading
:
false
})
const
methods
=
{
showDialogF
(
item
)
{
data
.
showItem
=
true
;
data
.
dialogObj
=
item
;
data
.
showItem
=
true
data
.
dialogObj
=
item
},
async
download
(
url
:
string
)
{
try
{
const
response
=
await
fetch
(
url
)
const
blob
=
await
response
.
blob
()
const
filename
=
url
.
split
(
'/'
).
pop
()
||
'download'
const
link
=
document
.
createElement
(
'a'
)
link
.
href
=
window
.
URL
.
createObjectURL
(
blob
)
link
.
download
=
filename
document
.
body
.
appendChild
(
link
)
link
.
click
()
document
.
body
.
removeChild
(
link
)
window
.
URL
.
revokeObjectURL
(
link
.
href
)
}
catch
(
error
)
{
message
.
errorMsg
(
t
(
'downloadFailed'
))
}
},
closeAdd
()
{
data
.
showAddOrder
=
false
;
methods
.
initOrders
()
;
data
.
showAddOrder
=
false
methods
.
initOrders
()
},
changePageHandler
(
n
:
any
)
{
data
.
pages
.
pageIndex
=
n
;
methods
.
initOrders
()
;
data
.
pages
.
pageIndex
=
n
methods
.
initOrders
()
},
ViewPayment
(
info
:
any
)
{
data
.
info
=
toRaw
(
info
)
;
data
.
showAddOrder
=
true
;
data
.
info
=
toRaw
(
info
)
data
.
showAddOrder
=
true
},
gotoUrl
(
x
)
{
$router
.
push
({
path
:
`/travel/payList`
,
query
:
{
id
:
x
.
TCID
}
})
;
$router
.
push
({
path
:
`/travel/payList`
,
query
:
{
id
:
x
.
TCID
}
})
},
canCelHotel
(
ThirdOrderNo
)
{
$q
.
dialog
({
title
:
t
(
"dialog.titles.horder"
),
message
:
t
(
"dialog.contents.horder"
),
title
:
t
(
'dialog.titles.horder'
),
message
:
t
(
'dialog.contents.horder'
),
cancel
:
true
,
persistent
:
true
,
persistent
:
true
}).
onOk
(()
=>
{
methods
.
cancellations
(
ThirdOrderNo
)
;
})
;
methods
.
cancellations
(
ThirdOrderNo
)
})
},
cancellations
(
ThirdOrderNo
)
{
if
(
data
.
loadingCel
)
return
;
if
(
data
.
loadingCel
)
return
let
msg
=
{
bookingNumber
:
ThirdOrderNo
,
CancelBy
:
search
.
CustomerId
,
CancelType
:
2
,
};
let
param
=
Object
.
assign
(
msg
);
data
.
loadingCel
=
true
;
StartAddress
:
search
.
StartAddress
}
let
param
=
Object
.
assign
(
msg
)
console
.
log
(
param
)
data
.
loadingCel
=
true
travelService
.
getTravelList
(
param
)
.
then
(
(
r
)
=>
{
.
then
(
r
=>
{
if
(
r
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
message
.
successMsg
(
`
${
t
(
"success"
)}
`
);
methods
.
initOrders
()
;
message
.
successMsg
(
`
${
t
(
'success'
)}
`
)
methods
.
initOrders
()
}
else
{
message
.
errorMsg
(
r
.
data
.
message
)
;
message
.
errorMsg
(
r
.
data
.
message
)
}
data
.
loadingCel
=
false
;
data
.
loadingCel
=
false
})
.
catch
(
e
=>
{
message
.
errorMsg
(
e
.
message
)
data
.
loadingCel
=
false
})
.
catch
((
e
)
=>
{
message
.
errorMsg
(
e
.
message
);
data
.
loadingCel
=
false
;
});
},
getDetail
(
OrderID
)
{
data
.
showOrderdDetail
=
true
;
data
.
OrderID
=
OrderID
;
data
.
showOrderdDetail
=
true
data
.
OrderID
=
OrderID
},
initOrders
()
{
data
.
loading
=
true
;
let
param
=
Object
.
assign
(
data
.
pages
,
search
)
;
data
.
loading
=
true
let
param
=
Object
.
assign
(
data
.
pages
,
search
)
travelService
.
getTravelList
(
param
)
.
then
(
(
r
)
=>
{
data
.
loading
=
false
;
.
then
(
r
=>
{
data
.
loading
=
false
if
(
r
.
data
.
resultCode
==
ApiResult
.
SUCCESS
)
{
// r.data.data.pageData.forEach((x: any) => {
// x.typeInfo = data.status.find(y => y.StatusId == x.OrderStatus) ?? data.status[1]
...
...
@@ -347,45 +339,45 @@ export default defineComponent({
// })
// x.Money= Number(Money+x.MailingMoney)
// })
data
.
orders
=
r
.
data
.
data
.
pageData
;
data
.
pages
.
pageCount
=
r
.
data
.
data
.
pageCount
;
data
.
orders
=
r
.
data
.
data
.
pageData
data
.
pages
.
pageCount
=
r
.
data
.
data
.
pageCount
}
else
{
message
.
errorMsg
(
r
.
data
.
message
)
;
message
.
errorMsg
(
r
.
data
.
message
)
}
})
.
catch
(
(
e
)
=>
{
message
.
errorMsg
(
e
.
message
)
;
data
.
loading
=
false
;
})
;
.
catch
(
e
=>
{
message
.
errorMsg
(
e
.
message
)
data
.
loading
=
false
})
},
init
()
{
data
.
status
=
getHotelOrderStatus
()
;
data
.
rooms
=
getHotelRoomType
()
;
methods
.
initOrders
()
;
data
.
status
=
getHotelOrderStatus
()
data
.
rooms
=
getHotelRoomType
()
methods
.
initOrders
()
},
setCopyHandler
(
order
:
any
,
ctx
?:
string
)
{
if
(
ctx
)
{
data
.
copyId
=
-
1
;
copyToClipboard
(
ctx
)
;
data
.
copyId
=
-
1
copyToClipboard
(
ctx
)
}
else
{
data
.
copyId
=
order
.
OrderID
;
copyToClipboard
(
order
.
ThirdOrderNo
)
;
data
.
copyId
=
order
.
OrderID
copyToClipboard
(
order
.
ThirdOrderNo
)
}
setTimeout
(()
=>
{
data
.
copyId
=
0
;
},
2000
)
;
}
,
}
;
data
.
copyId
=
0
},
2000
)
}
}
methods
.
init
()
;
methods
.
init
()
return
{
...
toRefs
(
data
),
...
methods
,
moneyFormat
,
}
;
}
,
})
;
moneyFormat
}
}
})
</
script
>
<
style
>
...
...
@@ -427,7 +419,7 @@ export default defineComponent({
border-radius
:
10px
;
}
.orderListDialog-img
{
background
:
url(
"../../../assets/images/wallet.png"
)
no-repeat
right
#5098ff
;
background
:
url(
'../../../assets/images/wallet.png'
)
no-repeat
right
#5098ff
;
background-size
:
97px
100%
;
}
</
style
>
...
...
src/pages/travel/order.vue
View file @
ce42cba9
...
...
@@ -6,7 +6,7 @@
</div>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
inject
,
provide
,
reactive
,
toRefs
,
defineComponent
,
onMounted
}
from
'vue'
;
import
travelService
from
'../../api/travel'
...
...
@@ -15,6 +15,7 @@ import { ApiResult } from '../../@types/enumHelper'
import
message
from
'../../utils/message'
import
{
useI18n
}
from
'vue-i18n'
import
OrderListHeader
from
'./components/productHeader.vue'
;
import
OrderList
from
'./components/productList.vue'
;
import
{
DirtionmaryHelper
}
from
'../../config/dictionary'
;
import
useMetaModule
from
'../../module/meta/metaModule'
...
...
@@ -54,15 +55,16 @@ import useMetaModule from '../../module/meta/metaModule'
const
search
=
reactive
({
GTeamName
:
""
,
// 包机名称
FlightCompany
:
""
,
// 航空公司
FlightNo
:
""
,
// 航班号
SelectEndDate
:
""
,
// 出发开始时间
FlightNo
:
""
,
// 航班号
SelectEndDate
:
""
,
// 出发开始时间
SelectStartDate
:
""
,
// 出发结算时间
StartAddress
:
""
// 出发城市
})
const
methods
=
{
}
provide
(
DirtionmaryHelper
.
TRAVEL_ORDER_OBJ
,
search
)
onMounted
(()
=>
{
})
return
{
// ...toRefs(data),
...
...
@@ -71,8 +73,7 @@ import useMetaModule from '../../module/meta/metaModule'
}
})
</
script
>
<
style
>
</
style
>
\ No newline at end of file
src/utils/menus.ts
View file @
ce42cba9
...
...
@@ -11,117 +11,118 @@ const { t } = i18n.global
const
useMenus
=
{
getMenus
():
Menu
[]
{
let
menus
=
[]
as
Menu
[]
menus
.
push
({
name
:
t
(
'menu.hotel.first'
),
url
:
''
,
id
:
1
,
parentId
:
0
,
icon
:
'Home/Building.svg'
,
childs
:
[
{
name
:
t
(
'menu.hotel.second'
),
url
:
'/hotel'
,
id
:
2
,
parentId
:
1
,
},
{
name
:
t
(
'menu.hotel.three'
),
url
:
'/hotel/order'
,
id
:
3
,
parentId
:
1
,
}
]
})
menus
.
push
({
name
:
t
(
'menu.scattered.first'
),
url
:
''
,
id
:
13
,
parentId
:
0
,
icon
:
'scattered/The.svg'
,
childs
:
[
{
name
:
t
(
'menu.scattered.second'
),
url
:
'/scattered'
,
id
:
14
,
parentId
:
13
,
},
{
name
:
t
(
'menu.scattered.didaName'
),
url
:
'/didahotel'
,
id
:
23
,
parentId
:
13
,
},
{
name
:
t
(
'menu.scattered.three'
),
url
:
'/scattered/HotelOrder'
,
id
:
15
,
parentId
:
13
,
}
]
})
menus
.
push
({
name
:
t
(
'menu.car.first'
),
url
:
''
,
id
:
4
,
parentId
:
0
,
icon
:
'Electric/Iron.svg'
,
childs
:
[
{
name
:
t
(
'menu.car.second'
),
url
:
'/vehicle/index'
,
id
:
5
,
parentId
:
4
,
},
{
name
:
t
(
'menu.car.three'
),
url
:
'/vehicle/order'
,
id
:
6
,
parentId
:
4
,
}
]
}),
menus
.
push
({
name
:
t
(
'menu.ticket.first'
),
url
:
''
,
id
:
7
,
parentId
:
0
,
icon
:
'Shopping/Ticket.svg'
,
childs
:
[
{
name
:
t
(
'menu.ticket.second'
),
url
:
'/ticket/list'
,
id
:
8
,
parentId
:
7
,
},
{
name
:
t
(
'menu.ticket.three'
),
url
:
'/ticket/order'
,
id
:
9
,
parentId
:
7
,
}
]
})
menus
.
push
({
name
:
t
(
'menu.stroke.first'
),
url
:
''
,
id
:
16
,
parentId
:
0
,
icon
:
'ScheduledTrip/stroke.svg'
,
childs
:
[
{
name
:
t
(
'menu.stroke.second'
),
url
:
'/scheduledTrip/index'
,
id
:
17
,
parentId
:
16
,
},
{
name
:
t
(
'menu.stroke.three'
),
url
:
'/scheduledTrip/order'
,
id
:
18
,
parentId
:
16
,
},
]
})
//menus.push(
// {
// name: t('menu.hotel.first'),
// url: '',
// id: 1,
// parentId: 0,
// icon: 'Home/Building.svg',
// childs: [
// {
// name: t('menu.hotel.second'),
// url: '/hotel',
// id: 2,
// parentId: 1,
// },
// {
// name: t('menu.hotel.three'),
// url: '/hotel/order',
// id: 3,
// parentId: 1,
// }
// ]
// })
// menus.push({
// name: t('menu.scattered.first'),
// url: '',
// id: 13,
// parentId: 0,
// icon: 'scattered/The.svg',
// childs: [
// {
// name: t('menu.scattered.second'),
// url: '/scattered',
// id: 14,
// parentId: 13,
// },
// {
// name: t('menu.scattered.didaName'),
// url: '/didahotel',
// id: 23,
// parentId: 13,
// },
// {
// name: t('menu.scattered.three'),
// url: '/scattered/HotelOrder',
// id: 15,
// parentId: 13,
// }
// ]
// })
// menus.push({
// name: t('menu.car.first'),
// url: '',
// id: 4,
// parentId: 0,
// icon: 'Electric/Iron.svg',
// childs: [
// {
// name: t('menu.car.second'),
// url: '/vehicle/index',
// id: 5,
// parentId: 4,
// },
// {
// name: t('menu.car.three'),
// url: '/vehicle/order',
// id: 6,
// parentId: 4,
// }
// ]
// }),
// menus.push({
// name: t('menu.ticket.first'),
// url: '',
// id: 7,
// parentId: 0,
// icon: 'Shopping/Ticket.svg',
// childs: [
// {
// name: t('menu.ticket.second'),
// url: '/ticket/list',
// id: 8,
// parentId: 7,
// },
// {
// name: t('menu.ticket.three'),
// url: '/ticket/order',
// id: 9,
// parentId: 7,
// }
// ]
// })
// menus.push({
// name: t('menu.stroke.first'),
// url: '',
// id: 16,
// parentId: 0,
// icon: 'ScheduledTrip/stroke.svg',
// childs: [
// {
// name: t('menu.stroke.second'),
// url: '/scheduledTrip/index',
// id: 17,
// parentId: 16,
// },
// {
// name: t('menu.stroke.three'),
// url: '/scheduledTrip/order',
// id: 18,
// parentId: 16,
// },
// ]
// })
menus
.
push
({
name
:
t
(
'menu.travel.first'
),
url
:
''
,
...
...
@@ -143,27 +144,27 @@ const useMenus = {
}
]
})
menus
.
push
({
name
:
t
(
'menu.finance.first'
),
url
:
''
,
id
:
10
,
parentId
:
0
,
icon
:
'Shopping/Money.svg'
,
childs
:
[
{
name
:
t
(
'menu.finance.second'
),
url
:
'/comingsoon'
,
id
:
11
,
parentId
:
10
,
},
{
name
:
t
(
'menu.finance.three'
),
url
:
'/comingsoon'
,
id
:
12
,
parentId
:
10
,
}
]
})
//
menus.push({
//
name: t('menu.finance.first'),
//
url: '',
//
id: 10,
//
parentId: 0,
//
icon: 'Shopping/Money.svg',
//
childs: [
//
{
//
name: t('menu.finance.second'),
//
url: '/comingsoon',
//
id: 11,
//
parentId: 10,
//
},
//
{
//
name: t('menu.finance.three'),
//
url: '/comingsoon',
//
id: 12,
//
parentId: 10,
//
}
//
]
//
})
return
menus
}
}
...
...
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