Commit ce42cba9 authored by 罗超's avatar 罗超

优化包机

parent a54f50cf
...@@ -64,7 +64,7 @@ module.exports = configure(function (ctx) { ...@@ -64,7 +64,7 @@ module.exports = configure(function (ctx) {
publicPath: ctx.dev ? '/' : './', publicPath: ctx.dev ? '/' : './',
env: 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', JAVA_URL_API: 'http://efficient.oytour.com',
VERSION:require('./package.json').version, VERSION:require('./package.json').version,
......
...@@ -357,13 +357,23 @@ export default { ...@@ -357,13 +357,23 @@ export default {
three: 'Remittance instructions' three: 'Remittance instructions'
}, },
travel: { travel: {
first: 'charter flight', first: 'PAK',
second: 'Charter flight service', second: 'PAK group',
three: 'Charter flight order', three: 'PAK order',
four: 'Charter flight settlement', four: 'PAK settlement',
} }
}, },
travel: { 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', man: 'Number of adults',
addTitle: 'Add/Modify Order', addTitle: 'Add/Modify Order',
oldPeople: 'Number of elderly people', oldPeople: 'Number of elderly people',
......
...@@ -355,13 +355,23 @@ export default { ...@@ -355,13 +355,23 @@ export default {
three: 'Instruksi pengiriman uang' three: 'Instruksi pengiriman uang'
}, },
travel: { travel: {
first: 'piagam', startCity:'Keluar',
second: 'Layanan sewa', first: 'PAK',
three: 'Perintah piagam', second: 'PAK grup tur',
four: 'Penyelesaian penerbangan sewaan', three: 'PAK urutan',
four: 'PAK penyelesaian',
} }
}, },
travel: { 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', man: 'jumlah orang dewasa',
addTitle: 'ambah/ubah pesanan', addTitle: 'ambah/ubah pesanan',
oldPeople: 'Jumlah orang tua', oldPeople: 'Jumlah orang tua',
......
...@@ -357,13 +357,23 @@ export default { ...@@ -357,13 +357,23 @@ export default {
three: '送金の説明' three: '送金の説明'
}, },
travel: { travel: {
first: 'チャーター機です', first: 'PAK',
second: 'チャーターサービスです', second: 'PAK 団',
three: 'チャーター機受注です', three: 'PAK オーダー',
four: 'チャーターチェックアウト', four: 'PAK 決済',
} }
}, },
travel: { travel: {
start:'出発',
download:'行程をダウンロード',
returnMoney:'現在の返佣金額',
queryDetail:'返佣詳細を見る',
peopleRequired:'必要な人数',
totalSeat:'総団位',
ratio:'返佣比例',
current:'現在',
people:'人',
startCity:'出発地',
man: '大人の数', man: '大人の数',
addTitle: '注文の追加/変更', addTitle: '注文の追加/変更',
oldPeople: '老人の数', oldPeople: '老人の数',
......
...@@ -357,13 +357,23 @@ export default { ...@@ -357,13 +357,23 @@ export default {
three: '송금 안내' three: '송금 안내'
}, },
travel: { travel: {
first: '전세기', first: 'PAK',
second: '전세기 서비스', second: 'PAK 서비스',
three: '전세기 주문서', three: 'PAK 주문서',
four: '전세 체크아웃', four: 'PAK 체크아웃',
} }
}, },
travel: { travel: {
start:'출발',
download:'여정 다운로드',
returnMoney:'현재 반환 금액',
queryDetail:'返佣 상세 보기',
peopleRequired:'필요한 사람 수',
totalSeat:'총 팀 수',
ratio:'반환 비율',
current:'현재',
people:'사람',
startCity:'출발 도시',
man: '성인 수', man: '성인 수',
addTitle: '주문 추가/수정', addTitle: '주문 추가/수정',
oldPeople: '노인 수', oldPeople: '노인 수',
......
...@@ -357,13 +357,23 @@ export default { ...@@ -357,13 +357,23 @@ export default {
three: '汇款说明' three: '汇款说明'
}, },
travel: { travel: {
first: '包机', first: 'PAK团',
second: '包机服务', second: 'PAK团表',
three: '包机订单', three: 'PAK订单',
four: '包机结算', four: 'PAK結算',
} }
}, },
travel: { travel: {
start:'出发',
download:'下载行程',
returnMoney:'当前返佣金額',
queryDetail:'查看返佣詳情',
peopleRequired:'需求人數',
totalSeat:'總團位',
ratio:'返佣比例',
current:'當前',
people:'人',
startCity:'出发城市',
man: '成人数量', man: '成人数量',
addTitle: '新增/修改订单', addTitle: '新增/修改订单',
oldPeople: '老人数量', oldPeople: '老人数量',
......
...@@ -357,13 +357,23 @@ export default { ...@@ -357,13 +357,23 @@ export default {
three: '匯款說明' three: '匯款說明'
}, },
travel: { travel: {
first: '包機', first: 'PAK团',
second: '包機服務', second: 'PAK团表',
three: '包機訂單', three: 'PAK订单',
four: '包機結算', four: 'PAK結算',
} }
}, },
travel: { travel: {
start:'出發',
download:'下載行程',
returnMoney:'当前返佣金額',
queryDetail:'查看返佣詳情',
peopleRequired:'需求人數',
totalSeat:'總團位',
ratio:'返佣比例',
current:'當前',
people:'人',
startCity:'出發城市',
man: '成人數量', man: '成人數量',
addTitle: '新增/修改訂單', addTitle: '新增/修改訂單',
oldPeople: '老人數量', oldPeople: '老人數量',
...@@ -403,7 +413,7 @@ export default { ...@@ -403,7 +413,7 @@ export default {
createDate: '創建日期', createDate: '創建日期',
payStatus: '支付狀態', payStatus: '支付狀態',
id: '團號', id: '團號',
planInfo: '包機資訊', planInfo: 'PAK 資訊',
groupInfo: '團隊資訊', groupInfo: '團隊資訊',
airInfo: '航班資訊', airInfo: '航班資訊',
tmp: '暫定', tmp: '暫定',
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
</q-popup-proxy> </q-popup-proxy>
</q-field> </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.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> <div class="col"></div>
<q-btn color="primary" unelevated :label="$t('query')" @click="setQueryHandler"/> <q-btn color="primary" unelevated :label="$t('query')" @click="setQueryHandler"/>
</div> </div>
...@@ -24,8 +25,8 @@ export default defineComponent({ ...@@ -24,8 +25,8 @@ export default defineComponent({
const realSearch = inject(DirtionmaryHelper.TRAVEL_ORDER_OBJ) as any const realSearch = inject(DirtionmaryHelper.TRAVEL_ORDER_OBJ) as any
const search = reactive(JSON.parse(JSON.stringify(realSearch))) const search = reactive(JSON.parse(JSON.stringify(realSearch)))
const dateRange = reactive({from: '', to: ''}) const dateRange = reactive({from: '', to: ''})
dateRange.to = date.formatDate(date.addToDate(new Date(), { days: 50 }), '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') // dateRange.from = date.formatDate(date.addToDate(new Date(), { days: 20 }), 'YYYY/MM/DD')
const dateRangeFormat = ref(`${dateRange.from} - ${dateRange.to}`) const dateRangeFormat = ref(`${dateRange.from} - ${dateRange.to}`)
search.SelectStartDate = dateRange.from search.SelectStartDate = dateRange.from
search.SelectEndDate = dateRange.to search.SelectEndDate = dateRange.to
...@@ -40,6 +41,7 @@ export default defineComponent({ ...@@ -40,6 +41,7 @@ export default defineComponent({
realSearch.SelectStartDate=search.SelectStartDate realSearch.SelectStartDate=search.SelectStartDate
realSearch.SelectEndDate=search.SelectEndDate realSearch.SelectEndDate=search.SelectEndDate
realSearch.TCID=search.TCID realSearch.TCID=search.TCID
realSearch.StartAddress=search.StartAddress
}, },
dateRangeHandler(e: any) { dateRangeHandler(e: any) {
search.SelectStartDate = `${e.from.year}/${e.from.month}/${e.from.day}` search.SelectStartDate = `${e.from.year}/${e.from.month}/${e.from.day}`
......
<template> <template>
<div> <div>
<q-card <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">
class="light-shadow q-pa-md bg-white rounded-borders q-mb-md" <div class="col-2 ">
flat
:class="$q.platform.is.desktop ? 'row' : ''"
v-for="(x, index) in orders"
>
<div class="col-2">
<div class="mb-title"> <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> </div>
{{ x.GTeamName }} {{ x.GTeamName }}
<div class="mb"> <div class="mb">
<span>{{ x.Title }}</span> <span>{{ x.Title }}</span>
</div> </div>
<div> <div>
{{ $t("travel.startDate") }}<span>{{ x.StartDate }}</span> {{ $t('travel.startDate') }}<span>{{ x.StartDate }}</span>
</div> </div>
<div> <div>
{{ $t("travel.groupInfo") }}<span>{{ x.TCNUM }}({{ x.TCID }})</span> {{ $t('travel.groupInfo') }}<span>{{ x.TCNUM }}({{ x.TCID }})</span>
</div> </div>
<div>
<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>
<div class="col-4 q-pl-md">
<div class="mb-title"> <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>
<div class="FlightDiv-TCL" @click="showDialogF(x)"> <div class="FlightDiv-TCL cursor-pointer" @click="showDialogF(x)">
<div <div v-for="(subItem, subIndex) in x.TravelTeamFlightList" :key="subIndex + 1000" class="TCL-flighInfoList">
v-for="(subItem, subIndex) in x.TravelTeamFlightList"
:key="subIndex + 1000"
class="TCL-flighInfoList"
>
<span class="travelnowrap"> <span class="travelnowrap">
<span class="TCL-FlightNumber">{{ subItem.Flight_number }}</span> <span class="TCL-FlightNumber">{{ subItem.Flight_number }}</span>
<span <span
><template v-if="subItem.DIATA">({{ subItem.DIATA }})</template> ><template v-if="subItem.DIATA">({{ subItem.DIATA }})</template> <template v-else>({{ subItem.dName }})</template></span
<template v-else>({{ subItem.dName }})</template></span
> >
{{ subItem.DepartureName }} {{ subItem.DepartureName }}
{{ {{ subItem.StopoverName == '' ? '' : '-(' + subItem.StopoverIATA + ')' + subItem.StopoverName }}
subItem.StopoverName == ""
? ""
: "-(" + subItem.StopoverIATA + ")" + subItem.StopoverName
}}
<template v-if="subItem.ArrivalCityName"> <template v-if="subItem.ArrivalCityName">
<span v-if="subItem.AIATA"> -({{ subItem.AIATA }}) </span> <span v-if="subItem.AIATA"> -({{ subItem.AIATA }}) </span>
<span v-else>-</span> <span v-else>-</span>
...@@ -50,25 +39,50 @@ ...@@ -50,25 +39,50 @@
<template v-if="!subItem.DIATA">({{ subItem.aName }})</template> <template v-if="!subItem.DIATA">({{ subItem.aName }})</template>
</template> </template>
<span v-if="subItem.FlightState == 1" class="TCL-greenType">【OK】</span> <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> </span>
</div> </div>
</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>
<div class="col-2"> <div class="col-2">
<div> <div>
<div class="mb-title"> <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>
<div class="mb bold"> <div class="mb bold">
<span class="item-title">{{ $t("travel.YSeat") }}:</span <span class="item-title">{{ $t('travel.totalSeat') }}:</span
><span ><span
>{{ x.YSeat }} >{{ x.YSeat }} <span class="item-title q-ml-md">{{ $t('travel.unUseNum') }}:</span>{{ x.SurplusYSeatNum }}</span
<span class="item-title q-ml-md">{{ $t("travel.unUseNum") }}:</span
>{{ x.SurplusYSeatNum }}</span
> >
</div> </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 class="item-title">{{ $t("travel.CSeat") }}:</span
><span> ><span>
{{ x.CSeat }} {{ x.CSeat }}
...@@ -83,79 +97,54 @@ ...@@ -83,79 +97,54 @@
<span class="item-title q-ml-md">{{ $t("travel.unUseNum") }}:</span <span class="item-title q-ml-md">{{ $t("travel.unUseNum") }}:</span
>{{ x.SurplusFSeatNum }}</span >{{ x.SurplusFSeatNum }}</span
> >
</div> </div> -->
</div> </div>
</div> </div>
<div class="col-3"> <div class="col-3">
<div class="mb-title"> <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>
<div class="mb bold"> <div class="mb bold">
<span class="item-title">{{ $t("travel.midPrice") }}: </span <span class="item-title">{{ $t('travel.midPrice') }}: </span>{{ x.B2BMemberPrice }}
>{{ x.B2BMemberPrice }}
</div> </div>
<div class="mb bold"> <div class="mb bold">
<span class="item-title">{{ $t("travel.childNeedBed") }}: </span <span class="item-title">{{ $t('travel.childNeedBed') }}: </span>{{ x.ChildNeedPrice }}
>{{ x.ChildNeedPrice }} <span class="item-title q-ml-md">{{ $t('travel.NoNeedBed') }}:</span>
<span class="item-title q-ml-md">{{ $t("travel.NoNeedBed") }}:</span>
{{ x.ChildNoNeedPrice }} {{ x.ChildNoNeedPrice }}
</div> </div>
<div class="mb bold"> <div class="mb bold">
<span class="item-title">{{ $t("travel.Baby") }}:</span> {{ x.BabyPrice }} <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 q-ml-md">{{ $t("travel.BabyChargePrice") }}: </span
>{{ x.BabyChargePrice }}
</div> </div>
<div class="mb bold"> <div class="mb bold">
<span class="item-title">{{ $t("travel.OldManChargePrice") }}:</span> <span class="item-title">{{ $t('travel.OldManChargePrice') }}:</span>
{{ x.OldManChargePrice }} {{ x.OldManChargePrice }}
<span class="item-title q-ml-md">{{ $t("travel.VisaPrice") }}: </span <span class="item-title q-ml-md">{{ $t('travel.VisaPrice') }}: </span>{{ x.VisaPrice }}
>{{ x.VisaPrice }}
</div> </div>
<div class="mb bold"> <div class="mb bold">
<span class="item-title">{{ $t("travel.SingleRoomPrice") }}:</span> <span class="item-title">{{ $t('travel.SingleRoomPrice') }}:</span>
{{ x.SingleRoomPrice }} {{ x.SingleRoomPrice }}
<span class="item-title q-ml-md">{{ $t("travel.OtherPrice") }}: </span <span class="item-title q-ml-md">{{ $t('travel.OtherPrice') }}: </span>{{ x.OtherPrice }}
>{{ x.OtherPrice }}
</div> </div>
</div> </div>
<div class="col-1"> <div class="col-1">
<q-btn color="primary" unelevated @click="ViewPayment(x)">{{ <q-btn color="primary" unelevated @click="ViewPayment(x)">{{ $t('travel.buy') }}</q-btn>
$t("travel.buy") <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>
<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> </div>
<q-dialog width="900" v-model="showItem" trigger="click"> <q-dialog width="900" v-model="showItem" trigger="click">
<div class="TC_tripDetails" style="width: 900px; background-color: #fff"> <div class="TC_tripDetails" style="width: 900px; background-color: #fff">
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr class="_color_666" style="text-align: center"> <tr class="_color_666" style="text-align: center">
<th width="60">{{ $t("Airticket.Air_segment") }}</th> <th width="60">{{ $t('Airticket.Air_segment') }}</th>
<th width="80">{{ $t("system.query_flightNum") }}</th> <th width="80">{{ $t('system.query_flightNum') }}</th>
<th width="150">{{ $t("system.ph_flightTime") }}</th> <th width="150">{{ $t('system.ph_flightTime') }}</th>
<th width="80">{{ $t("system.query_arrivalTime") }}</th> <th width="80">{{ $t('system.query_arrivalTime') }}</th>
<th width="100">{{ $t("system.query_stopCity") }}</th> <th width="100">{{ $t('system.query_stopCity') }}</th>
</tr> </tr>
<tr <tr v-for="(fItem, fIndex) in dialogObj.TravelTeamFlightList" :key="fIndex" style="text-align: center">
v-for="(fItem, fIndex) in dialogObj.TravelTeamFlightList"
:key="fIndex"
style="text-align: center"
>
<td class="_d_name _color_666"> <td class="_d_name _color_666">
<span v-if="fIndex == 0">{{ $t("Airticket.Air_go") }}</span> <span v-if="fIndex == 0">{{ $t('Airticket.Air_go') }}</span>
<span v-else-if="fIndex == dialogObj.TravelTeamFlightList.length - 1">{{ <span v-else-if="fIndex == dialogObj.TravelTeamFlightList.length - 1">{{ $t('Airticket.Air_returnTrip') }}</span>
$t("Airticket.Air_returnTrip") <span v-else-if="fIndex > 0 && fIndex != dialogObj.TravelTeamFlightList.length - 1">{{ $t('Airticket.Air_transit') }}</span>
}}</span>
<span
v-else-if="
fIndex > 0 && fIndex != dialogObj.TravelTeamFlightList.length - 1
"
>{{ $t("Airticket.Air_transit") }}</span
>
</td> </td>
<td> <td>
<div>{{ fItem.Flight_number }}</div> <div>{{ fItem.Flight_number }}</div>
...@@ -176,37 +165,21 @@ ...@@ -176,37 +165,21 @@
</div> </div>
</td> </td>
<td> <td>
<template v-if="fItem.StopoverIATA">({{ fItem.StopoverIATA }})</template <template v-if="fItem.StopoverIATA">({{ fItem.StopoverIATA }})</template>{{ fItem.StopoverName }}
>{{ fItem.StopoverName }}
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
</q-dialog> </q-dialog>
</q-card> </q-card>
<q-card <q-card class="light-shadow q-pa-md bg-white rounded-borders q-mb-md" v-if="pages.pageCount > 0" flat>
class="light-shadow q-pa-md bg-white rounded-borders q-mb-md" <q-pagination class="full-width justify-end" v-model="pages.pageIndex" color="primary" :max="pages.pageCount" :input="true" @update:model-value="changePageHandler" />
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-card>
<q-inner-loading <q-inner-loading :showing="loading" :label="$t('loading')" label-class="text-grey-6 f12" />
:showing="loading"
:label="$t('loading')"
label-class="text-grey-6 f12"
/>
</div> </div>
<div class="text-center q-mt-xl" v-if="(!orders || orders.length == 0) && !loading"> <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> <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> </div>
<q-dialog v-model="showOrderdDetail"> <q-dialog v-model="showOrderdDetail">
<!-- <OrderdDetail :OrderID="OrderID"></OrderdDetail> --> <!-- <OrderdDetail :OrderID="OrderID"></OrderdDetail> -->
...@@ -218,36 +191,36 @@ ...@@ -218,36 +191,36 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { DirtionmaryHelper } from "../../../config/dictionary"; import { DirtionmaryHelper } from '../../../config/dictionary'
import { defineComponent, inject, reactive, toRefs, watch, toRaw } from "vue"; import { defineComponent, inject, reactive, toRefs, watch, toRaw } from 'vue'
import travelService from "../../../api/travel"; import travelService from '../../../api/travel'
import { ApiResult } from "../../../@types/enumHelper"; import { ApiResult } from '../../../@types/enumHelper'
import message from "../../../utils/message"; import message from '../../../utils/message'
import { RoomType, StandardStatus } from "../../../@types"; import { RoomType, StandardStatus } from '../../../@types'
import { getHotelOrderStatus, getHotelRoomType, moneyFormat } from "../../../utils/tools"; import { getHotelOrderStatus, getHotelRoomType, moneyFormat } from '../../../utils/tools'
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 { copyToClipboard, useQuasar } from "quasar"; import { copyToClipboard, useQuasar } from 'quasar'
import { currentRouter } from "../../../router"; import { currentRouter } from '../../../router'
// import OrderdDetail from './OrderdDetail.vue' // import OrderdDetail from './OrderdDetail.vue'
// import BankAccount from '../../BankAccount.vue' // import BankAccount from '../../BankAccount.vue'
import AddOrder from "./addOrder.vue"; import AddOrder from './addOrder.vue'
import { useRouter } from "vue-router"; import { useRouter } from 'vue-router'
export default defineComponent({ export default defineComponent({
components: { AddOrder }, components: { AddOrder },
setup(props) { setup(props) {
const $router = useRouter(); const $router = useRouter()
const search = inject(DirtionmaryHelper.TRAVEL_ORDER_OBJ) as any; const search = inject(DirtionmaryHelper.TRAVEL_ORDER_OBJ) as any
const { t } = useI18n(); const { t } = useI18n()
const $q = useQuasar(); const $q = useQuasar()
watch(search, (n, o) => { watch(search, (n, o) => {
if (data.loading) return; if (data.loading) return
data.pages.pageIndex = 1; data.pages.pageIndex = 1
data.orders = []; data.orders = []
methods.initOrders(); methods.initOrders()
}); })
const data = reactive({ const data = reactive({
showItem: false, showItem: false,
...@@ -255,7 +228,7 @@ export default defineComponent({ ...@@ -255,7 +228,7 @@ export default defineComponent({
info: {}, info: {},
copyId: 0, copyId: 0,
showAddOrder: false, showAddOrder: false,
OrderID: "", OrderID: '',
showOrderdDetail: false, showOrderdDetail: false,
orders: [] as Array<any>, orders: [] as Array<any>,
status: [] as Array<StandardStatus>, status: [] as Array<StandardStatus>,
...@@ -263,79 +236,98 @@ export default defineComponent({ ...@@ -263,79 +236,98 @@ export default defineComponent({
pages: { pages: {
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
pageCount: 0, pageCount: 0
}, },
loadingCel: false, loadingCel: false,
loading: false, loading: false
}); })
const methods = { const methods = {
showDialogF(item) { showDialogF(item) {
data.showItem = true; data.showItem = true
data.dialogObj = item; 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() { closeAdd() {
data.showAddOrder = false; data.showAddOrder = false
methods.initOrders(); methods.initOrders()
}, },
changePageHandler(n: any) { changePageHandler(n: any) {
data.pages.pageIndex = n; data.pages.pageIndex = n
methods.initOrders(); methods.initOrders()
}, },
ViewPayment(info: any) { ViewPayment(info: any) {
data.info = toRaw(info); data.info = toRaw(info)
data.showAddOrder = true; data.showAddOrder = true
}, },
gotoUrl(x) { gotoUrl(x) {
$router.push({ path: `/travel/payList`, query: { id: x.TCID } }); $router.push({ path: `/travel/payList`, query: { id: x.TCID } })
}, },
canCelHotel(ThirdOrderNo) { canCelHotel(ThirdOrderNo) {
$q.dialog({ $q.dialog({
title: t("dialog.titles.horder"), title: t('dialog.titles.horder'),
message: t("dialog.contents.horder"), message: t('dialog.contents.horder'),
cancel: true, cancel: true,
persistent: true, persistent: true
}).onOk(() => { }).onOk(() => {
methods.cancellations(ThirdOrderNo); methods.cancellations(ThirdOrderNo)
}); })
}, },
cancellations(ThirdOrderNo) { cancellations(ThirdOrderNo) {
if (data.loadingCel) return; if (data.loadingCel) return
let msg = { let msg = {
bookingNumber: ThirdOrderNo, bookingNumber: ThirdOrderNo,
CancelBy: search.CustomerId, CancelBy: search.CustomerId,
CancelType: 2, CancelType: 2,
}; StartAddress: search.StartAddress
let param = Object.assign(msg); }
data.loadingCel = true; let param = Object.assign(msg)
console.log(param)
data.loadingCel = true
travelService travelService
.getTravelList(param) .getTravelList(param)
.then((r) => { .then(r => {
if (r.data.resultCode == ApiResult.SUCCESS) { if (r.data.resultCode == ApiResult.SUCCESS) {
message.successMsg(`${t("success")}`); message.successMsg(`${t('success')}`)
methods.initOrders(); methods.initOrders()
} else { } 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) { getDetail(OrderID) {
data.showOrderdDetail = true; data.showOrderdDetail = true
data.OrderID = OrderID; data.OrderID = OrderID
}, },
initOrders() { initOrders() {
data.loading = true; data.loading = true
let param = Object.assign(data.pages, search); let param = Object.assign(data.pages, search)
travelService travelService
.getTravelList(param) .getTravelList(param)
.then((r) => { .then(r => {
data.loading = false; data.loading = false
if (r.data.resultCode == ApiResult.SUCCESS) { if (r.data.resultCode == ApiResult.SUCCESS) {
// r.data.data.pageData.forEach((x: any) => { // r.data.data.pageData.forEach((x: any) => {
// x.typeInfo = data.status.find(y => y.StatusId == x.OrderStatus) ?? data.status[1] // x.typeInfo = data.status.find(y => y.StatusId == x.OrderStatus) ?? data.status[1]
...@@ -347,45 +339,45 @@ export default defineComponent({ ...@@ -347,45 +339,45 @@ export default defineComponent({
// }) // })
// x.Money= Number(Money+x.MailingMoney) // x.Money= Number(Money+x.MailingMoney)
// }) // })
data.orders = r.data.data.pageData; data.orders = r.data.data.pageData
data.pages.pageCount = r.data.data.pageCount; data.pages.pageCount = r.data.data.pageCount
} else { } else {
message.errorMsg(r.data.message); message.errorMsg(r.data.message)
} }
}) })
.catch((e) => { .catch(e => {
message.errorMsg(e.message); message.errorMsg(e.message)
data.loading = false; data.loading = false
}); })
}, },
init() { init() {
data.status = getHotelOrderStatus(); data.status = getHotelOrderStatus()
data.rooms = getHotelRoomType(); data.rooms = getHotelRoomType()
methods.initOrders(); methods.initOrders()
}, },
setCopyHandler(order: any, ctx?: string) { setCopyHandler(order: any, ctx?: string) {
if (ctx) { if (ctx) {
data.copyId = -1; data.copyId = -1
copyToClipboard(ctx); copyToClipboard(ctx)
} else { } else {
data.copyId = order.OrderID; data.copyId = order.OrderID
copyToClipboard(order.ThirdOrderNo); copyToClipboard(order.ThirdOrderNo)
} }
setTimeout(() => { setTimeout(() => {
data.copyId = 0; data.copyId = 0
}, 2000); }, 2000)
}, }
}; }
methods.init(); methods.init()
return { return {
...toRefs(data), ...toRefs(data),
...methods, ...methods,
moneyFormat, moneyFormat
}; }
}, }
}); })
</script> </script>
<style> <style>
...@@ -427,7 +419,7 @@ export default defineComponent({ ...@@ -427,7 +419,7 @@ export default defineComponent({
border-radius: 10px; border-radius: 10px;
} }
.orderListDialog-img { .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%; background-size: 97px 100%;
} }
</style> </style>
......
...@@ -15,6 +15,7 @@ import { ApiResult } from '../../@types/enumHelper' ...@@ -15,6 +15,7 @@ import { ApiResult } from '../../@types/enumHelper'
import message from '../../utils/message' import message from '../../utils/message'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import OrderListHeader from './components/productHeader.vue'; import OrderListHeader from './components/productHeader.vue';
import OrderList from './components/productList.vue'; import OrderList from './components/productList.vue';
import { DirtionmaryHelper } from '../../config/dictionary'; import { DirtionmaryHelper } from '../../config/dictionary';
import useMetaModule from '../../module/meta/metaModule' import useMetaModule from '../../module/meta/metaModule'
...@@ -57,6 +58,7 @@ import useMetaModule from '../../module/meta/metaModule' ...@@ -57,6 +58,7 @@ import useMetaModule from '../../module/meta/metaModule'
FlightNo:"", // 航班号 FlightNo:"", // 航班号
SelectEndDate:"", // 出发开始时间 SelectEndDate:"", // 出发开始时间
SelectStartDate:"", // 出发结算时间 SelectStartDate:"", // 出发结算时间
StartAddress:"" // 出发城市
}) })
const methods = { const methods = {
} }
...@@ -75,4 +77,3 @@ import useMetaModule from '../../module/meta/metaModule' ...@@ -75,4 +77,3 @@ import useMetaModule from '../../module/meta/metaModule'
<style> <style>
</style> </style>
\ No newline at end of file
...@@ -11,117 +11,118 @@ const { t } = i18n.global ...@@ -11,117 +11,118 @@ const { t } = i18n.global
const useMenus = { const useMenus = {
getMenus(): Menu[] { getMenus(): Menu[] {
let menus = [] as Menu[] let menus = [] as Menu[]
menus.push({ //menus.push(
name: t('menu.hotel.first'), // {
url: '', // name: t('menu.hotel.first'),
id: 1, // url: '',
parentId: 0, // id: 1,
icon: 'Home/Building.svg', // parentId: 0,
childs: [ // icon: 'Home/Building.svg',
{ // childs: [
name: t('menu.hotel.second'), // {
url: '/hotel', // name: t('menu.hotel.second'),
id: 2, // url: '/hotel',
parentId: 1, // id: 2,
}, // parentId: 1,
{ // },
name: t('menu.hotel.three'), // {
url: '/hotel/order', // name: t('menu.hotel.three'),
id: 3, // url: '/hotel/order',
parentId: 1, // id: 3,
} // parentId: 1,
] // }
}) // ]
menus.push({ // })
name: t('menu.scattered.first'), // menus.push({
url: '', // name: t('menu.scattered.first'),
id: 13, // url: '',
parentId: 0, // id: 13,
icon: 'scattered/The.svg', // parentId: 0,
childs: [ // icon: 'scattered/The.svg',
{ // childs: [
name: t('menu.scattered.second'), // {
url: '/scattered', // name: t('menu.scattered.second'),
id: 14, // url: '/scattered',
parentId: 13, // id: 14,
}, // parentId: 13,
{ // },
name: t('menu.scattered.didaName'), // {
url: '/didahotel', // name: t('menu.scattered.didaName'),
id: 23, // url: '/didahotel',
parentId: 13, // id: 23,
}, // parentId: 13,
{ // },
name: t('menu.scattered.three'), // {
url: '/scattered/HotelOrder', // name: t('menu.scattered.three'),
id: 15, // url: '/scattered/HotelOrder',
parentId: 13, // id: 15,
} // parentId: 13,
] // }
}) // ]
menus.push({ // })
name: t('menu.car.first'), // menus.push({
url: '', // name: t('menu.car.first'),
id: 4, // url: '',
parentId: 0, // id: 4,
icon: 'Electric/Iron.svg', // parentId: 0,
childs: [ // icon: 'Electric/Iron.svg',
{ // childs: [
name: t('menu.car.second'), // {
url: '/vehicle/index', // name: t('menu.car.second'),
id: 5, // url: '/vehicle/index',
parentId: 4, // id: 5,
}, // parentId: 4,
{ // },
name: t('menu.car.three'), // {
url: '/vehicle/order', // name: t('menu.car.three'),
id: 6, // url: '/vehicle/order',
parentId: 4, // id: 6,
} // parentId: 4,
] // }
}), // ]
menus.push({ // }),
name: t('menu.ticket.first'), // menus.push({
url: '', // name: t('menu.ticket.first'),
id: 7, // url: '',
parentId: 0, // id: 7,
icon: 'Shopping/Ticket.svg', // parentId: 0,
childs: [ // icon: 'Shopping/Ticket.svg',
{ // childs: [
name: t('menu.ticket.second'), // {
url: '/ticket/list', // name: t('menu.ticket.second'),
id: 8, // url: '/ticket/list',
parentId: 7, // id: 8,
}, // parentId: 7,
{ // },
name: t('menu.ticket.three'), // {
url: '/ticket/order', // name: t('menu.ticket.three'),
id: 9, // url: '/ticket/order',
parentId: 7, // id: 9,
} // parentId: 7,
] // }
}) // ]
menus.push({ // })
name: t('menu.stroke.first'), // menus.push({
url: '', // name: t('menu.stroke.first'),
id: 16, // url: '',
parentId: 0, // id: 16,
icon: 'ScheduledTrip/stroke.svg', // parentId: 0,
childs: [ // icon: 'ScheduledTrip/stroke.svg',
{ // childs: [
name: t('menu.stroke.second'), // {
url: '/scheduledTrip/index', // name: t('menu.stroke.second'),
id: 17, // url: '/scheduledTrip/index',
parentId: 16, // id: 17,
}, // parentId: 16,
{ // },
name: t('menu.stroke.three'), // {
url: '/scheduledTrip/order', // name: t('menu.stroke.three'),
id: 18, // url: '/scheduledTrip/order',
parentId: 16, // id: 18,
}, // parentId: 16,
] // },
}) // ]
// })
menus.push({ menus.push({
name: t('menu.travel.first'), name: t('menu.travel.first'),
url: '', url: '',
...@@ -143,27 +144,27 @@ const useMenus = { ...@@ -143,27 +144,27 @@ const useMenus = {
} }
] ]
}) })
menus.push({ // menus.push({
name: t('menu.finance.first'), // name: t('menu.finance.first'),
url: '', // url: '',
id: 10, // id: 10,
parentId: 0, // parentId: 0,
icon: 'Shopping/Money.svg', // icon: 'Shopping/Money.svg',
childs: [ // childs: [
{ // {
name: t('menu.finance.second'), // name: t('menu.finance.second'),
url: '/comingsoon', // url: '/comingsoon',
id: 11, // id: 11,
parentId: 10, // parentId: 10,
}, // },
{ // {
name: t('menu.finance.three'), // name: t('menu.finance.three'),
url: '/comingsoon', // url: '/comingsoon',
id: 12, // id: 12,
parentId: 10, // parentId: 10,
} // }
] // ]
}) // })
return menus return menus
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment