Commit eef91431 authored by youjie's avatar youjie

no message

parent c4761c7e
......@@ -131,10 +131,16 @@ export default defineComponent({
font-size: 10px
.fz14
font-size: 14px
.fz15
font-size: 15px
.fz16
font-size: 16px
.fz17
font-size: 17px
.fz18
font-size: 18px
.fz19
font-size: 19px
.fz20
font-size: 20px
.mycard
......
import { HttpResponse } from '../@types'
import request from './request'
class CharteredBusService {
// 取消门票訂單
static async setTicketOrderCancel(OrderId:number):Promise<HttpResponse>{
return request('ticket_post_CancelTicketOrder',{OrderId})
}
// 门票訂單列表
static async getTicketOrderList(param:any):Promise<HttpResponse>{
return request('ticket_post_GetMyTicketOrderPageList',param)
}
// 提交包车訂單
static async SetTYCarOrder(param:any):Promise<HttpResponse>{
return request('CarSingle_post_SetTYCarOrder',param)
}
// 获取产品报价
static async GetTYCarSingleProductMonthPrice(param:any):Promise<HttpResponse>{
return request('CarSingle_post_GetTYCarSingleProductMonthPrice',param)
}
// 包车详情
static async GetTYCarSingleProductInfo(param:any):Promise<HttpResponse>{
return request('CarSingle_post_GetTYCarSingleProductInfo',param)
}
// 包车列表
static async getTYCarSingleProductList(param:any):Promise<HttpResponse>{
return request('CarSingle_post_GetTYCarSingleProductPageList',param)
}
// 获取包车机场
static async GetCarSingleAllAirport(params: any): Promise<HttpResponse> {
return request('CarSingle_post_GetCarSingleAllAirportList', params)
}
// 获取包车所有国家
static async GetCarSingleAllPlace(params: any): Promise<HttpResponse> {
return request('CarSingle_post_GetCarSingleAllPlaceList', params)
}
}
export default CharteredBusService
This diff is collapsed.
This diff is collapsed.
<template>
<!-- <div v-if="search.msg.ViewType == 1 || $q.platform.is.mobile" class="q-pt-lg row" :class="{ 'q-col-gutter-sm': $q.platform.is.mobile, 'q-col-gutter-lg': $q.platform.is.desktop }">
<q-card v-for="x in dataList" :class="{ 'col-4': $q.screen.lt.lg && $q.platform.is.desktop, 'col-3': $q.screen.gt.md && $q.platform.is.desktop, 'col-6': $q.platform.is.mobile && search.msg.ViewType == 1, 'col-12 q-mb-sm': $q.platform.is.mobile && search.msg.ViewType == 2 }" class="transparent" flat>
<q-img :src="x.PicPathList[0]" :ratio="16 / 9" spinner-color="grey" spinner-size="50px" width="100%" fit="cover" class="rounded-borders">
<template v-slot:error>
<div class="absolute-full flex flex-center bg-blue-1 text-dark">
{{$t('v102.ticket.load')}}
</div>
</template>
</q-img>
<q-card-section class="bg-white">
<div class="text-subtitle1 text-weight-bolder ellipsis-2-lines cursor-pointer" :class="{ 'text-subtitle2': $q.platform.is.mobile }" @click="showCardHandler(x)">{{x.Name}}</div>
<div class="f12 text-grey-700 ellipsis">{{$t('v102.ticket.Japan')}} {{x.ProvinceName}} {{x.CityName}} {{x.Address}}</div>
<div class="q-mt-lg row items-center">
<div class="text-grey-900 col" :class="{ f12: $q.platform.is.mobile, 'text-subtitle2 text-weight-bold': $q.platform.is.desktop }">
{{ $t('v102.ticket.showtt.t1') }}
<span class="text-weight-bolder">{{x.TicketPriceList.length}}</span>
{{ $t('v102.ticket.showtt.t2') }}
</div>
<q-btn color="primary" icon="local_grocery_store" unelevated dense size="sm" :label="$q.platform.is.desktop || search.msg.ViewType == 2 ? $t('v102.ticket.buy') : $t('v102.ticket.shortBuy')" @click="toPreviewOrderHandler(x.ID)"/>
</div>
</q-card-section>
</q-card>
</div> -->
<div v-if="search.msg.ViewType == 2" class="row wrap justify-center">
<div class="q-py-md" style="width: 70%;min-width: 1000px;">
<div class="row q-pa-md q-mb-md bg-white rounded-borders">
<div class="col"></div>
<q-btn class="hover q-mr-md" v-for="(item,index) in 2"
:class="{'bg-blue text-white':pages.Q_OrderBy==index+1&&pages.Q_OrderBy!=0,'bg-grey-3':pages.Q_OrderBy!=index+1}" @click="getList(index+1)">
{{index+1==1?$t('v102.CharteredBus.jiageshenxu'):$t('v102.CharteredBus.jiagejianxu')}}
</q-btn>
</div>
<q-card v-for="i in dataList" flat class="full-width row items-center q-mb-md rounded-borders" style="overflow: hidden;">
<div>
<q-img :src="i.ImageList[0]" :ratio="1" spinner-color="grey" spinner-size="50px" width="160px" height="100%" fit="cover" class="">
<template v-slot:error>
<div class="absolute-full flex flex-center bg-blue-1 text-dark">
{{$t('v102.ticket.load')}}
</div>
</template>
</q-img>
</div>
<div class="q-mx-md col">
<div class="fz17 q-py-xs text-subtitle1 text-weight-bolder cursor-pointer" @click="showCardHandler(i)">{{i.Name}}</div>
<div class="q-my-xs" v-if="i.FreeCancelDay>0||(i.CarType==3&&i.TravelHours>0)">
<q-badge v-if="i.FreeCancelDay>0" color="light-blue-1" class="q-mr-md text-light-blue">{{i.FreeCancelDay+$t('v102.CharteredBus.mianfeiquxiao')}}</q-badge>
<q-badge v-if="i.CarType==3&&i.TravelHours>0" color="light-blue-1" class="q-mr-md text-light-blue">
{{$t('v102.CharteredBus.baoche')+i.TravelHours+$t('v102.CharteredBus.xiaoshi')}}
</q-badge>
</div>
<div class="ellipsis fz14 text-grey-6 q-my-xs">{{i.Description}}</div>
<div class="fz12 text-grey-6 row items-center q-my-sm " >
<div class="cursor-pointer" @click="showCardHandler(i)">
<q-icon class="text-grey-13 q-mr-xs" name="place" size="xs"></q-icon>
<span>{{i.CityList2[0].CountryName }}{{i.CityList2[0].CityName }}</span>
</div>
<q-btn color="primary" icon="map" :label="$t('v102.ticket.map')" size="sm" dense flat class="q-ml-md" @click="showCardHandler(i)"/>
<span class="q-pl-lg">{{$t('v102.CharteredBus.zuizaokeyudin')+': '+i.EarlyDate}}</span>
</div>
<div class="row items-center justify-between">
<div class="text-h6 din text-negative">
<span>{{i.MinPrice.toFixed(2)}}</span>
<span class="f12 text-grey-600 q-ml-sm">
<!-- {{$t('unit.jp')}} -->
<span class="fz15">{{i.CurrencyCode}}</span>
{{ $t('hotel.col.low') }}</span>
</div>
<div class="text-right">
<q-btn color="primary" icon="shopping_cart" :label="$t('v102.ticket.buy')" dense outline size="sm" @click="toPreviewOrderHandler(i.Id)"/>
</div>
</div>
</div>
</q-card>
<div class="bg-white q-my-md q-pa-sm rounded-borders">
<q-pagination class="full-width justify-end" v-model="pages.PageIndex" color="primary" :max="pages.PageCount" :input="true" @update:model-value="changePageHandler" />
</div>
</div>
</div>
<q-dialog v-model="showDetails">
<CharteredBusCard :ProductId="ProductId"></CharteredBusCard>
</q-dialog>
</template>
<script lang="ts">
import { date } from 'quasar'
import { ApiResult } from '../../../@types/enumHelper'
import { useQuasar } from 'quasar'
import CharteredBusService from '../../../api/CharteredBus'
import message from '../../../utils/message'
import { DirtionmaryHelper } from 'src/config/dictionary'
import { defineComponent, inject, reactive, toRefs, watch } from 'vue'
import { useRouter } from 'vue-router'
import CharteredBusCard from '../CharteredBusCard.vue'
export default defineComponent({
components: { CharteredBusCard },
setup(props) {
const $q = useQuasar()
const $router = useRouter()
const data = reactive({
loading: false,
pages: {
PageIndex: 1,
PageSize: 10,
PageCount: 10,
Q_OrderBy: 0
},
dataList: [] as any[],
ProductId: {} as any,
showDetails: false
})
// if ($q.platform.is.desktop) {
// if ($q.screen.gt.md) {
// data.pages.PageSize = 12
// } else {
// data.pages.PageSize = 9
// }
// } else {
// data.pages.PageSize = 10
// }
const search = inject(DirtionmaryHelper.TICKET_QUERY_PARAM) as any
watch(search, (n, o) => {
if (data.loading) return
console.log('search change')
data.pages.PageIndex = 1
methods.getList()
})
const methods = {
getList(index) {
if(data.pages.Q_OrderBy==index){
data.pages.Q_OrderBy = 0
}else{
data.pages.Q_OrderBy = index
}
let param = Object.assign(data.pages, search.msg)
CharteredBusService.getTYCarSingleProductList(param)
.then(r => {
if (r.data.resultCode == ApiResult.SUCCESS) {
data.dataList = 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
})
},
optionsFn(cd: any) {
return cd >= date.formatDate(date.addToDate(new Date(), { days: 0 }), 'YYYY/MM/DD')
},
toPreviewOrderHandler(id:number){
let onldOpen = `${search.msg.Q_Date.split('/')}`
let newOpen = onldOpen.substring(0,4) + onldOpen.substring(5,7) + onldOpen.substring(8,10)
$router.push({ path:`/vehicle/Preview/${id}/${newOpen}`})
},
changePageHandler(n: number) {
data.pages.PageIndex = n
methods.getList(data.pages.Q_OrderBy)
},
showCardHandler(x:any){
data.ProductId = x.Id
data.showDetails=true
}
}
methods.getList(data.pages.Q_OrderBy)
return {
...toRefs(data),
...methods,
search
}
}
})
</script>
<style></style>
......@@ -36,7 +36,7 @@
</div>
<div class="q-ml-md col">
<div class="text-subtitle1 text-weight-bolder cursor-pointer" @click="showCardHandler(i)">{{i.Name}}</div>
<div class="f14 text-grey-600">
<div class="fz14 text-grey-600">
{{ $t('v102.ticket.addr') }}:
<span>{{i.CityName}} {{i.Address}}</span>
<q-btn color="primary" icon="map" :label="$t('v102.ticket.map')" size="sm" dense flat class="q-ml-md" @click="showCardHandler(i)"/>
......
......@@ -927,6 +927,85 @@ export default {
s9: '報價詳情',
s10: '確認報價',
}
},
CharteredBus:{
baochetype: '包車類型',
baochetype0: '不限',
baochetype1: '接機',
baochetype2: '送機',
baochetype3: '包車',
jiansuojichang: '檢索機場',
qishirenshu: '起始人數',
jiezhirenshu: '截止人數',
jiageshenxu: '升序',
jiagejianxu: '降序',
baoche: '包車',
xiaoshi: '小時',
mianfeiquxiao: '天前可免費取消',
zuizaokeyudin:' 最早可预定',
detail: '产品詳情',
d1: '產品介紹',
d2: '如何使用',
d3: '取消政策',
d4: '預訂須知',
d5: '費用包含',
d6: '費用不包含',
d7: '行程时长',
baochexinxi: '信息',
ordertip: '請在出发前一天的23:00前完成預訂',
pt: '日期',
tt: '選擇車型',
jc: '選擇機場',
bc: '購買輛數',
unit: '輛',
scfw: '上車範圍',
gi: '訂單類型',
lianluo: '聯絡',
chengke: '乘客',
hangban: '航班',
dida: '抵達',
chufa: '出發',
xunxi: '訊息',
nt: '沒有選擇車型',
rtt: '取消限製',
sjc:{
c1: '姓名',
c2: '電話',
c3: '性別',
c4: '聯絡方式',
c5: '上車地點',
c6: '下車地點',
c7: '選擇預定時間',
c8: '預定時間',
c9: '航廈',
c10: '航空公司名稱',
c11: '航班號',
c12: '航班抵達時間',
c13: '航班出發時間',
c14: '成人数',
c15: '儿童数',
c16: '婴儿数',
c17: '手提行李数',
c18: '托运行李数',
},
sjcp:{
c1: '請輸入姓',
c1m: '請輸入名',
c2: '電話',
c3: '性別',
c4: '聯絡方式(Line號,WeChat號)',
c5: '請輸入上車地點',
c6: '請輸入下車地點',
c7: '請輸入航厦',
c8: '請輸入航空公司名称',
c9: '請輸入航班号',
c10: '航班时间',
c11: '請輸入成人数',
c12: '輸入儿童数',
c13: '輸入婴儿数',
c14: '輸入手提行李数',
c15: '輸入托运行李数',
}
}
},
//#endregion
......
<template>
<div class="fix-height-subpage column no-wrap q-pa-md">
<list-header></list-header>
<list-table></list-table>
</div>
</template>
<script lang="ts">
import { date } from 'quasar'
import { inject, provide, reactive, toRefs, defineComponent } from 'vue';
import useMetaModule from '../../module/meta/metaModule'
import { useI18n } from 'vue-i18n'
import { DirtionmaryHelper } from '../../config/dictionary';
import ListHeader from 'src/components/CharteredBus/list/ListHeader.vue';
import ListTable from 'src/components/CharteredBus/list/ListTable.vue';
export default defineComponent({
components: { ListHeader, ListTable },
setup(props) {
let { setTitle } = useMetaModule()
const { t } = useI18n()
const pageTitle = inject(DirtionmaryHelper.PAGE_TITLE_KEY) as any
pageTitle.value = t('v102.ticket.pageTitle')
setTitle(pageTitle.value)
const data= reactive({
})
const search = reactive({
msg:{
CarType: 0,//类型 1接机 2送机 3包车
Q_SPeopleNum: '',//起始人数
Q_EPeopleNum: '',//截止人数
Q_Country: 0,
Q_City: 0,
Q_AirportId: 0,
Q_Date: date.formatDate(date.addToDate(new Date(), { days: 1 }), 'YYYY/MM/DD'),//预约日期
Q_SPrice: '',//起始价格
Q_EPrice: '',// 结束价格
ViewType:2,//列表模式
}
})
provide(DirtionmaryHelper.TICKET_QUERY_PARAM, search)
const menu=inject(DirtionmaryHelper.MENU_KEYS) as any
menu.value=8
const methods = {
}
return {
...toRefs(data),
...methods
}
}
})
</script>
<style>
</style>
<template>
<div class="fix-height-subpage column no-wrap q-pa-md">
<ticket-order-header></ticket-order-header>
<ticket-order-list></ticket-order-list>
</div>
</template>
<script lang="ts">
import { defineComponent, inject, provide, reactive, toRefs, onMounted } from 'vue'
import { currentRouter } from 'src/router'
import useMetaModule from '../../module/meta/metaModule'
import { useI18n } from 'vue-i18n'
import TicketOrderHeader from 'src/components/CharteredBus/order/TicketOrderHeader.vue'
import { DirtionmaryHelper } from 'src/config/dictionary'
import TicketOrderList from 'src/components/CharteredBus/order/TicketOrderList.vue'
export default defineComponent({
components: {TicketOrderHeader, TicketOrderList},
setup(props) {
let { setTitle } = useMetaModule()
const { t } = useI18n()
const pageTitle = inject(DirtionmaryHelper.PAGE_TITLE_KEY) as any
pageTitle.value = t('v102.to.pageTitle')
setTitle(pageTitle.value)
const search = reactive({
OrderId: '',
OrderNo: '',
OrderStatus: 0,
StartTime: '',
EndTime: '',
// TicketName:'',//景区名称
CouponsName: '',//景区名称
ContactNumber: '',//电话
Name: '',//顾客名称
UseSTime: '',//门票开始时间
UseETime: '',//门票结束时间
MailingState: -1
})
search.OrderId = currentRouter.currentRoute.value.params.orderId
provide(DirtionmaryHelper.TICKET_ORDER_SEARCH, search)
const menu = inject(DirtionmaryHelper.MENU_KEYS) as any
menu.value = 9
const data = reactive({})
const methods = {}
onMounted(() => {})
return { ...toRefs(data), ...methods, search }
}
})
</script>
<style></style>
This diff is collapsed.
......@@ -16,7 +16,7 @@
</div>
<div class="col">
<div class="text-subtitle1 text-weight-bolder cursor-pointer" @click="showCardHandler">{{detailsObj.Name}}</div>
<div class="f14 text-grey-600">
<div class="fz14 text-grey-600">
{{ $t('v102.ticket.ordertip') }}
</div>
</div>
......
......@@ -20,7 +20,9 @@ const routes: RouteRecordRaw[] = [
{ path: '/ticket/preview/:ticketId/:Time', component: () => import('pages/ticket/TicketOrderPreview.vue') },
{ path: '/ticket/order', component: () => import('pages/ticket/TicketOrder.vue') },
{ path: '/vehicle/index', component: () => import('pages/vehicle/index.vue') },//车辆
{ path: '/vehicle/index', component: () => import('pages/CharteredBus/CharteredBusList.vue') },//车辆
{ path: '/vehicle/Preview/:ProductId/:Time', component: () => import('pages/CharteredBus/CharteredBusPreview.vue') },
{ path: '/vehicle/order', component: () => import('pages/CharteredBus/CharteredBusOrder.vue') },
{ path: '/ticket/preview/:ticketId/:Time', component: () => import('pages/ticket/TicketOrderPreview.vue') },
{ path: '/ticket/order/:orderId?', component: () => import('pages/ticket/TicketOrder.vue') }
]
......
......@@ -151,6 +151,14 @@ const useHotel={
}
return rates
},
// 包车类型
getCharteredBusType():HotelRate[]{
let rates=[] as HotelRate[]
for(let i=0;i<4;i++){
rates.push({name:t(`v102.CharteredBus.baochetype${i}`),id:i})
}
return rates
},
}
export {useHotel,
type HotelRate,
......
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