Commit 187da1ee authored by youjie's avatar youjie

Merge branch 'master' of http://gitlab.oytour.com/luochao/bigwood

parents 54c6dbc0 6064814c
...@@ -11,6 +11,14 @@ class travelService { ...@@ -11,6 +11,14 @@ class travelService {
static async newOrder(params:any):Promise<HttpResponse>{ static async newOrder(params:any):Promise<HttpResponse>{
return request('sellorder_post_SetTravelTeamOrderForB2B',params) return request('sellorder_post_SetTravelTeamOrderForB2B',params)
} }
// 获取包机结算列表
static async payList(params:any):Promise<HttpResponse>{
return request('travelteam_GetTravelTeamPartnerPage',params)
}
// 获取包机订单分页列表
static async getOrderList(params:any):Promise<HttpResponse>{
return request('sellorder_post_GetTravelTeamOrderPicList',params)
}
} }
export default travelService export default travelService
...@@ -358,7 +358,7 @@ export default { ...@@ -358,7 +358,7 @@ export default {
travel: { travel: {
first: '包机', first: '包机',
second: '包机服务', second: '包机服务',
three: ' ' three: '包机结算'
} }
}, },
login: { login: {
......
<template> <template>
<div class="row full-height"> <div class="row full-height">
<!-- <div class="col window-height column">
<div class="col q-pa-lg flex justify-center items-center">
<div class="relative-position">
<img src="../../assets/images/big-logo.png" style="height: 60px" class="q-mb-lg" alt="" />
<div class="text-h5 pfb q-mb-md">欢迎回来,亲爱的用户</div>
<div class="pfb text-grey-5 text-subtitle">通过配置您的推广渠道,实现对线索和客户的快速获取<br />并且及时的跟进</div>
<div class="absolute q-mt-md" style="top: 0; left: 180px">
<q-badge style="background: #cbcfe0" floating transparent>Alpha</q-badge>
</div>
</div>
</div>
<div class="col q-mb-lg login-bg"></div>
</div>
<div class="col q-pa-xl column">
<div class="col">
<q-card class="w-450 q-ma-xl q-pa-xl">
<div class="text-h5 pfb q-mb-md text-center">登录大水豚</div>
<div class="text-center q-mb-lg">
<span class="text-grey-5 pfb text-subtitle">新用户?</span>
<router-link :to="{ path: '/auth/regist' }" class="text-primary pfb text-subtitle">1分钟创建新账户</router-link>
</div>
<div class="text-body pfb">账户:</div>
<div class="q-mt-xs">
<q-input standout v-model="userModel.username" dense ref="usernameRef" :rules="userValidateRule.usernameRule" />
</div>
<div class="row q-mt-lg">
<div class="col text-body pfb">密码:</div>
<div class="col text-right">
<router-link :to="{ path: '/auth/forget' }" class="text-primary pfb text-body no-underline">忘记密码</router-link>
</div>
</div>
<div class="q-mt-xs">
<q-input standout v-model="userModel.password" type="password" dense ref="passwordRef" :rules="userValidateRule.userpasswordRule" />
</div>
<div class="q-mt-md">
<q-checkbox dense v-model="userModel.remeber" label="30天免登录" color="accent" />
</div>
<div class="q-mt-lg text-center">
<q-btn class="pfb" color="primary" :loading="stateManager.subLogin" unelevated label="登 录" style="width: 10rem" @click="loginSubmit"></q-btn>
</div>
</q-card>
</div>
<div class="q-my-lg q-mx-xl text-center row w-450-only">
<div class="f12 text-dark">© 2021-{{ dtNow }} 微途科技 版权所有</div>
<div class="text-center col text-right">
<router-link :to="{ path: '/auth/forget' }" class="f12 no-underline change-a-primary q-mr-md">关于大水豚</router-link>
<router-link :to="{ path: '/auth/forget' }" class="f12 no-underline change-a-primary q-mr-md">联系我们</router-link>
<router-link :to="{ path: '/auth/forget' }" class="f12 no-underline change-a-primary q-mr-md">技术支持</router-link>
</div>
</div>
</div> -->
<div class="col q-pa-xl fit row justify-center height"> <div class="col q-pa-xl fit row justify-center height">
<div style="width:450px;" class="column justify-between content-between"> <div style="width:450px;" class="column justify-between content-between">
<div :class="{'row':$q.platform.is.desktop,'column':$q.platform.is.mobile}"> <div :class="{'row':$q.platform.is.desktop,'column':$q.platform.is.mobile}">
<div class="col" :class="{'text-center q-mb-md':$q.platform.is.mobile}"> <div class="col" :class="{'text-center q-mb-md':$q.platform.is.mobile}">
<img src="../../assets/images/jvs-log.png" style="width:80%;" /> <img src="../../assets/images/jvs-log.png" style="width:80%;" />
</div> </div>
<!-- <div class="text-grey-6 text-weight-bold col" :class="{'text-right':$q.platform.is.desktop,'text-center':$q.platform.is.mobile}">
<span>{{$t("login.notaccess")}}</span>
<router-link :to="{ path: '/auth/regist' }" class="text-primary pfb text-subtitle">{{$t("login.registlink")}}</router-link>
</div> -->
</div> </div>
<div class="q-py-xxl full-width"> <div class="q-py-xxl full-width">
<div class="text-h3 text-weight-bold">{{$t("login.title")}}</div> <div class="text-h3 text-weight-bold">{{$t("login.title")}}</div>
......
<style>
</style>
<template>
<div>
<div class="rounded-borders bg-white row items-center q-pa-md">
<q-field :class="$q.platform.is.desktop ? '' : 'q-mb-md'" stack-label :label="$t('daterange')" standout class="q-ml-lg col-2" style="min-width: 190px" dense>
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" landscape
@range-end="dateRangeHandler"></q-date>
</q-popup-proxy>
</q-field>
<q-input class="q-mr-md q-ml-md" v-model="search.GTeamName" dense standout label="团号"/>
<div class="col"></div>
<q-btn color="primary" unelevated :label="$t('query')" @click="setQueryHandler"/>
</div>
<div v-for="item in orders" :key="item.id">
<div>合作伙伴:<span>{{item.ContactName}}</span></div>
<div>已入名单人数:<span>{{item.EntGuestNum}}</span></div>
<div>已入名单人数:<span>{{item.IsHaveFinance}}</span></div>
<div>报名总人数:<span>{{item.GuestNum}}</span></div>
<div>应收总金额:<span>{{item.PreferPrice}}</span></div>
<div>退款金额:<span>{{item.Refund}}</span></div>
<div>平台税金:<span>{{item.PlatformTax}}</span></div>
<div>实收:<span>{{item.Income}}</span></div>
<div>在途金额:<span>{{item.ZaiTuMoney}}</span></div>
<div>折扣金额:<span>{{item.DiscountMoney}}</span></div>
<div>大红包抵扣金额:<span>{{item.RedEnvelopeMoney}}</span></div>
<div>代收总金额:<span>{{item.DueInMoney}}</span></div>
<div>利润(先给这个字段,规则还没有):<span>{{item.CommissionRate}}</span></div></div>
</div>
</template>
<script lang="ts">
import { inject, provide, reactive, toRefs, defineComponent,onMounted, ref } from 'vue';
import travelService from "../../api/travel";
import { ApiResult } from "../../@types/enumHelper";
import message from "../../utils/message";
import { useRoute } from 'vue-router'
import { date } from 'quasar'
export default defineComponent({
setup(props) {
const qDateProxy = ref(null) as any
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')
const dateRangeFormat = ref(`${dateRange.from} - ${dateRange.to}`)
const {query, params} = useRoute()
const search = {
GTeamName: '',
SelectEndDate: '',
SelectStartDate: '',
}
const data = reactive({
info: {},
copyId: 0,
showAddOrder: false,
OrderID: "",
showOrderdDetail: false,
orders: [] as Array<any>,
pages: {
pageIndex: 1,
pageSize: 10,
pageCount: 0,
},
loadingCel: false,
loading: false,
});
search.SelectStartDate = dateRange.from
search.SelectEndDate = dateRange.to
const methods = {
setQueryHandler() {
data.pages.pageIndex = 1
this.initOrders()
},
dateRangeHandler(e: any) {
search.SelectStartDate = `${e.from.year}/${e.from.month}/${e.from.day}`
search.SelectEndDate = `${e.to.year}/${e.to.month}/${e.to.day} `
dateRangeFormat.value = `${search.SelectStartDate} - ${search.SelectEndDate} `
if (qDateProxy.value) qDateProxy.value.hide()
},
optionsFn(cd: any) {
return cd >= date.formatDate(date.addToDate(new Date(), { days: 20 }), 'YYYY/MM/DD')
},
initOrders() {
data.loading = true;
let param = Object.assign(data.pages, search);
travelService
.payList(param)
.then((r) => {
data.loading = false;
if (r.data.resultCode == ApiResult.SUCCESS) {
data.orders = r.data.data.pageData;
data.pages.pageCount = r.data.data.pageCount;
} else {
message.errorMsg(r.data.message);
}
})
.catch((e) => {
message.errorMsg(e.message);
data.loading = false;
});
},
}
methods.initOrders()
return {
...toRefs(data),
...methods,
search,
dateRangeFormat,
dateRange
};
}
})
</script>
\ No newline at end of file
...@@ -11,30 +11,21 @@ ...@@ -11,30 +11,21 @@
<div class="mb-title"> <div class="mb-title">
<i class="iconfont icon-biaoti1"></i><span>包机信息</span> <i class="iconfont icon-biaoti1"></i><span>包机信息</span>
</div> </div>
{{ x.GTeamName }}
<div class="mb">
<span>{{ x.Title }}</span>
</div>
<div> <div>
出发日期:<span>{{ x.StartDate }}</span> <span>{{ x.orderId }}</span>
</div> </div>
<div> <div>
团队信息:<span>{{ x.TCNUM }}({{ x.TCID }})</span> <span>{{ x.orderId }}</span>
</div> </div>
<div>
<span>{{ x.orderId }}</span>
</div> </div>
<div class="col-4">
<div class="mb-title"><i class="iconfont icon-hangban1"></i><span>航班信息</span></div>
<div
class="mb"
v-for="(subItem, subIndex) in x.TravelTeamFlightList"
:key="subIndex + 1000"
>
<div> <div>
{{ subItem.Flight_number }} {{ subItem.DepartureAirPortName }} <span>{{ x.orderId }}</span>
{{ subItem.Departure_time }} {{ subItem.ArrivalAirPortName }}
{{ subItem.Arrival_time }}
</div> </div>
</div> </div>
<div class="col-4">
<div class="mb-title"><i class="iconfont icon-hangban1"></i><span>航班信息</span></div>
</div> </div>
<div class="col-2"> <div class="col-2">
<div> <div>
...@@ -79,6 +70,7 @@ ...@@ -79,6 +70,7 @@
</div> </div>
<div class="col-1"> <div class="col-1">
<q-btn color="primary" unelevated @click="ViewPayment(x)">下单</q-btn> <q-btn color="primary" unelevated @click="ViewPayment(x)">下单</q-btn>
<q-btn color="primary" unelevated @click="gotoUrl(x)">包机结算</q-btn>
</div> </div>
</q-card> </q-card>
<q-card <q-card
...@@ -129,10 +121,12 @@ import { currentRouter } from "../../../router"; ...@@ -129,10 +121,12 @@ 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'
export default defineComponent({ export default defineComponent({
components: { AddOrder }, components: { AddOrder },
setup(props) { setup(props) {
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();
...@@ -173,6 +167,10 @@ export default defineComponent({ ...@@ -173,6 +167,10 @@ export default defineComponent({
console.log("ViewPayment", toRaw(info)); console.log("ViewPayment", toRaw(info));
data.showAddOrder = true; data.showAddOrder = true;
}, },
gotoUrl(x) {
console.log('`/travel/payList?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"),
...@@ -217,7 +215,7 @@ export default defineComponent({ ...@@ -217,7 +215,7 @@ export default defineComponent({
data.loading = true; data.loading = true;
let param = Object.assign(data.pages, search); let param = Object.assign(data.pages, search);
travelService travelService
.getTravelList(param) .getOrderList(param)
.then((r) => { .then((r) => {
data.loading = false; data.loading = false;
if (r.data.resultCode == ApiResult.SUCCESS) { if (r.data.resultCode == ApiResult.SUCCESS) {
......
<template> <template>
<!--
接口文档地址
http://dev.api.oytour.com/#/home/project/inside/api/detail?groupID=20&childGroupID=730&apiID=4386&projectName=REBORN&projectID=2
参考
http://dev.api.oytour.com/#/home/project/inside/api/detail?groupID=157&childGroupID=170&apiID=1010&projectName=REBORN&projectID=2
-->
<div class="rounded-borders bg-white row items-center q-pa-md"> <div class="rounded-borders bg-white row items-center q-pa-md">
<div>
<span>订单状态</span>
<q-select v-model="search.OrderState"></q-select>
</div>
<div>
<span>参团类型</span>
<q-select v-model="search.GroupType"></q-select>
</div>
<div>
<span>订单来源</span>
<q-select v-model="search.OrderSource"></q-select>
</div>
<div>
<span>支付状态</span>
<q-select v-model="search.PayStatus"></q-select>
</div>
<q-field :class="$q.platform.is.desktop ? '' : 'q-mb-md'" stack-label :label="$t('daterange')" standout class="q-ml-lg col-2" style="min-width: 190px" dense>
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" landscape
@range-end="dateRangeHandler"></q-date>
</q-popup-proxy>
</q-field>
<q-field :class="$q.platform.is.desktop ? '' : 'q-mb-md'" stack-label :label="$t('daterange')" standout class="q-ml-lg col-2" style="min-width: 190px" dense> <q-field :class="$q.platform.is.desktop ? '' : 'q-mb-md'" stack-label :label="$t('daterange')" standout class="q-ml-lg col-2" style="min-width: 190px" dense>
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div> <div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy"> <q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
...@@ -7,7 +38,7 @@ ...@@ -7,7 +38,7 @@
@range-end="dateRangeHandler"></q-date> @range-end="dateRangeHandler"></q-date>
</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="团号"/> <q-input class="q-mr-md q-ml-md" v-model="search.TCNUM" dense standout label="团号"/>
<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>
...@@ -33,7 +64,7 @@ export default defineComponent({ ...@@ -33,7 +64,7 @@ export default defineComponent({
setQueryHandler(){ setQueryHandler(){
realSearch.StartTime=search.StartTime realSearch.StartTime=search.StartTime
realSearch.EndTime=search.EndTime realSearch.EndTime=search.EndTime
realSearch.TCID=search.TCID realSearch.TCNUM=search.TCNUM
}, },
dateRangeHandler(e: any) { dateRangeHandler(e: any) {
search.StartTime = `${e.from.year}/${e.from.month}/${e.from.day}` search.StartTime = `${e.from.year}/${e.from.month}/${e.from.day}`
......
<template>
<div class="rounded-borders bg-white row items-center q-pa-md">
<q-field :class="$q.platform.is.desktop ? '' : 'q-mb-md'" stack-label :label="$t('daterange')" standout class="q-ml-lg col-2" style="min-width: 190px" dense>
<div class="self-center full-width no-outline" tabindex="0">{{ dateRangeFormat }}</div>
<q-popup-proxy :offset="[0, 10]" ref="qDateProxy">
<q-date v-model="dateRange" :options="optionsFn" range mask="YYYY/MM/DD" landscape
@range-end="dateRangeHandler"></q-date>
</q-popup-proxy>
</q-field>
<q-input class="q-mr-md q-ml-md" v-model="search.TCID" dense standout label="团号"/>
<div class="col"></div>
<q-btn color="primary" unelevated :label="$t('query')" @click="setQueryHandler"/>
</div>
</template>
<script lang="ts">
import { DirtionmaryHelper } from '../../../config/dictionary'
import { defineComponent, inject, reactive, ref } from 'vue'
import { date } from 'quasar'
export default defineComponent({
setup(props) {
const qDateProxy = ref(null) as any
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')
const dateRangeFormat = ref(`${dateRange.from} - ${dateRange.to}`)
search.StartTime = dateRange.from
search.EndTime = dateRange.to
const methods = {
setQueryHandler(){
realSearch.StartTime=search.StartTime
realSearch.EndTime=search.EndTime
realSearch.TCID=search.TCID
},
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} `
dateRangeFormat.value = `${search.StartTime} - ${search.EndTime} `
if (qDateProxy.value) qDateProxy.value.hide()
},
optionsFn(cd: any) {
return cd >= date.formatDate(date.addToDate(new Date(), { days: 20 }), 'YYYY/MM/DD')
},
}
return {
...methods,
search,
dateRange,
dateRangeFormat
}
}
})
</script>
<style></style>
<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">
<div class="mb-title">
<i class="iconfont icon-biaoti1"></i><span>包机信息</span>
</div>
{{ x.GTeamName }}
<div class="mb">
<span>{{ x.Title }}</span>
</div>
<div>
出发日期:<span>{{ x.StartDate }}</span>
</div>
<div>
团队信息:<span>{{ x.TCNUM }}({{ x.TCID }})</span>
</div>
</div>
<div class="col-4">
<div class="mb-title"><i class="iconfont icon-hangban1"></i><span>航班信息</span></div>
<div
class="mb"
v-for="(subItem, subIndex) in x.TravelTeamFlightList"
:key="subIndex + 1000"
>
<div>
{{ subItem.Flight_number }} {{ subItem.DepartureAirPortName }}
{{ subItem.Departure_time }} {{ subItem.ArrivalAirPortName }}
{{ subItem.Arrival_time }}
</div>
</div>
</div>
<div class="col-2">
<div>
<div class="mb-title">
<i class="iconfont icon-jiage"></i><span>团位信息</span>
</div>
<div class="mb">
<span>经济舱: {{ x.YSeat }}</span>
</div>
<div class="mb">
<span>商务舱: {{ x.CSeat }}</span>
</div>
<div class="mb">
<span>头等舱: {{ x.FSeat }}</span>
</div>
</div>
</div>
<div class="col-3">
<div class="mb-title">
<i class="iconfont icon-jiage"></i><span>价格信息</span>
</div>
<div class="mb">
<span>中心价: {{ x.B2BMemberPrice }}</span>
</div>
<div class="mb">
<span
>小孩占床: {{ x.ChildNeedPrice }}&nbsp;不占床:
{{ x.ChildNoNeedPrice }}</span
>
</div>
<div class="mb">
<span
>婴儿: {{ x.BabyPrice }}&nbsp; 婴儿附加费: {{ x.BabyChargePrice }}</span
>
</div>
<div class="mb">
<span
>老人附加费: {{ x.OldManChargePrice }} &nbsp;签证:
{{ x.VisaPrice }}</span
>
</div>
</div>
<div class="col-1">
<q-btn color="primary" unelevated @click="ViewPayment(x)">下单</q-btn>
<q-btn color="primary" unelevated @click="gotoUrl(x)">包机结算</q-btn>
</div>
</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>
<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>
<q-dialog v-model="showOrderdDetail">
<!-- <OrderdDetail :OrderID="OrderID"></OrderdDetail> -->
</q-dialog>
<q-dialog v-model="showAddOrder">
<AddOrder :info="info" @close="showAddOrder = false"></AddOrder>
</q-dialog>
</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 OrderdDetail from './OrderdDetail.vue'
// import BankAccount from '../../BankAccount.vue'
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();
watch(search, (n, o) => {
if (data.loading) return;
data.pages.pageIndex = 1;
data.orders = [];
methods.initOrders();
});
const data = reactive({
info: {},
copyId: 0,
showAddOrder: false,
OrderID: "",
showOrderdDetail: false,
orders: [] as Array<any>,
status: [] as Array<StandardStatus>,
rooms: [] as Array<RoomType>,
pages: {
pageIndex: 1,
pageSize: 10,
pageCount: 0,
},
loadingCel: false,
loading: false,
});
const methods = {
changePageHandler(n: any) {
console.log(n);
data.pages.pageIndex = n;
methods.initOrders();
},
ViewPayment(info: any) {
data.info = toRaw(info);
console.log("ViewPayment", toRaw(info));
data.showAddOrder = true;
},
gotoUrl(x) {
console.log('`/travel/payList?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"),
cancel: true,
persistent: true,
}).onOk(() => {
methods.cancellations(ThirdOrderNo);
});
},
cancellations(ThirdOrderNo) {
if (data.loadingCel) return;
let msg = {
bookingNumber: ThirdOrderNo,
CancelBy: search.CustomerId,
CancelType: 2,
};
let param = Object.assign(msg);
data.loadingCel = true;
travelService
.getTravelList(param)
.then((r) => {
if (r.data.resultCode == ApiResult.SUCCESS) {
message.successMsg(`${t("success")}`);
methods.initOrders();
} else {
message.errorMsg(r.data.message);
}
data.loadingCel = false;
})
.catch((e) => {
message.errorMsg(e.message);
data.loadingCel = false;
});
},
getDetail(OrderID) {
data.showOrderdDetail = true;
data.OrderID = OrderID;
},
initOrders() {
data.loading = true;
let param = Object.assign(data.pages, search);
travelService
.getTravelList(param)
.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]
// x.SendType = data.sends.find(y => y.Id == x.MailingState) ?? data.sends[0]
// x.Money = 0
// let Money = 0
// x.DetailList.forEach((y:any)=>{
// Money+=y.Money
// })
// x.Money= Number(Money+x.MailingMoney)
// })
data.orders = r.data.data.pageData;
data.pages.pageCount = r.data.data.pageCount;
} else {
message.errorMsg(r.data.message);
}
})
.catch((e) => {
message.errorMsg(e.message);
data.loading = false;
});
},
init() {
data.status = getHotelOrderStatus();
data.rooms = getHotelRoomType();
methods.initOrders();
},
setCopyHandler(order: any, ctx?: string) {
if (ctx) {
data.copyId = -1;
copyToClipboard(ctx);
} else {
data.copyId = order.OrderID;
copyToClipboard(order.ThirdOrderNo);
}
setTimeout(() => {
data.copyId = 0;
}, 2000);
},
};
methods.init();
return {
...toRefs(data),
...methods,
moneyFormat,
};
},
});
</script>
<style>
.light-border table,
.light-border table td,
.light-border .q-table__middle,
.light-border.borders,
.light-border table th {
border-color: #eee !important;
white-space: wrap;
}
.light-border .room-item {
height: 28px;
line-height: 28px;
border-bottom: 1px solid #eee;
}
.light-border .room-item:last-child {
border-bottom: none;
}
.light-border .max-hotelname {
width: 140px;
height: 28px;
line-height: 28px;
}
.orderListDialog-title {
position: relative;
}
.orderListDialog-title span {
font-size: 20px;
}
.orderListDialog-close {
position: absolute;
right: 0;
top: -10px;
font-size: 26px;
}
.orderListDialog-bg {
background: #5098ff;
border-radius: 10px;
}
.orderListDialog-img {
background: url("../../../assets/images/wallet.png") no-repeat right #5098ff;
background-size: 97px 100%;
}
</style>
<style scoped>
.mb-title {
font-weight: bold;
margin-bottom: 10px;
}
.mb {
margin-bottom: 10px;
}
</style>
\ No newline at end of file
...@@ -14,8 +14,8 @@ import { SendType, StandardStatus } from '../../@types' ...@@ -14,8 +14,8 @@ import { SendType, StandardStatus } from '../../@types'
import { ApiResult } from '../../@types/enumHelper' 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/OrderListHeader.vue'; import OrderListHeader from './components/productHeader.vue';
import OrderList from './components/OrderList.vue'; import OrderList from './components/productList.vue';
import { DirtionmaryHelper } from '../../config/dictionary'; import { DirtionmaryHelper } from '../../config/dictionary';
export default defineComponent({ export default defineComponent({
components: {OrderListHeader, OrderList}, components: {OrderListHeader, OrderList},
......
<template>
<div class="fix-height-subpage column no-wrap q-pa-md">
<order-list-header></order-list-header>
<div class="col q-mt-md">
<order-list></order-list>
</div>
</div>
</template>
<script lang="ts">
import { inject, provide, reactive, toRefs, defineComponent,onMounted } from 'vue';
import travelService from '../../api/travel'
import { SendType, StandardStatus } from '../../@types'
import { ApiResult } from '../../@types/enumHelper'
import message from '../../utils/message'
import { useI18n } from 'vue-i18n'
import OrderListHeader from './components/OrderListHeader.vue';
import OrderList from './components/OrderList.vue';
import { DirtionmaryHelper } from '../../config/dictionary';
export default defineComponent({
components: {OrderListHeader, OrderList},
props: ['OrderId'],
setup(props) {
const { t } = useI18n()
const data = reactive({
PaymentDialog: false,
orders: [] as Array<any>,
status: [] as Array<StandardStatus>,
sends: [] as Array<SendType>,
showBankAccount: false,
pages: {
pageIndex: 1,
pageSize: 10,
pageCount: 0
},
loading: false,
copyId: 0,
expendsOrderId: 0,
cols: [
{ name: 'Date', label: t('v102.ticket.jq')+'('+t('v102.ticket.d')+')', field: (row: any) => row.Date, align: 'left' },
{ name: 'TicketName', label: t('v102.ticket.hn'), field: (row: any) => row.TicketName, align: 'left' },
{ name: 'Num', label: t('v102.ticket.sl'), field: (row: any) => row.Num, align: 'left' },
{ name: 'Money', label: t('hotelorder.col.m'), field: (row: any) => row.Money, align: 'left' }
] as any[],
modifyOrder:{} as any,
showModify:false,
})
const search = reactive({
GTeamName:"", // 包机名称
FlightCompany:"", // 航空公司
FlightNo:"", // 航班号
SelectEndDate:"", // 出发开始时间
SelectStartDate:"", // 出发结算时间
})
const methods = {
}
provide(DirtionmaryHelper.TRAVEL_ORDER_OBJ,search)
onMounted(()=>{
})
return {
// ...toRefs(data),
...methods
}
}
})
</script>
<style>
</style>
\ No newline at end of file
...@@ -37,6 +37,8 @@ const routes: RouteRecordRaw[] = [ ...@@ -37,6 +37,8 @@ const routes: RouteRecordRaw[] = [
{ path: '/scheduledTrip/preview/:tripId', component: () => import('pages/scheduledTrip/TripOrderPreview.vue') }, { path: '/scheduledTrip/preview/:tripId', component: () => import('pages/scheduledTrip/TripOrderPreview.vue') },
{ path: '/scheduledTrip/order/:orderId?', component: () => import('pages/scheduledTrip/TripOrder.vue') }, { path: '/scheduledTrip/order/:orderId?', component: () => import('pages/scheduledTrip/TripOrder.vue') },
{ path: '/travel/order', component: () => import('pages/travel/order.vue') }, { path: '/travel/order', component: () => import('pages/travel/order.vue') },
{ path: '/travel/payList', component: () => import('pages/travel/OrderPayList.vue') },
{ path: '/travel/orderList', component: () => import('pages/travel/orderList.vue') },
] ]
}, },
{ {
......
...@@ -140,22 +140,22 @@ const useMenus = { ...@@ -140,22 +140,22 @@ const useMenus = {
menus.push({ menus.push({
name: t('menu.travel.first'), name: t('menu.travel.first'),
url: '', url: '',
id: 10, id: 20,
parentId: 0, parentId: 0,
icon: 'Shopping/Money.svg', icon: 'Shopping/Money.svg',
childs: [ childs: [
{ {
name: t('menu.travel.second'), name: t('menu.travel.second'),
url: '/travel/order', url: '/travel/order',
id: 11, id: 21,
parentId: 10, parentId: 20,
}, },
// { {
// name: t('menu.travel.three'), name: t('menu.travel.three'),
// url: '/comingsoon', url: '/travel/orderList',
// id: 12, id: 22,
// parentId: 10, parentId: 20,
// } }
] ]
}) })
return menus return menus
......
This diff is collapsed.
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