Commit 0a6725b9 authored by 吴春's avatar 吴春

1

parent b67374af
...@@ -44,6 +44,21 @@ static async GetDiDaPriceConfirm(param:any): Promise<HttpResponse> { ...@@ -44,6 +44,21 @@ static async GetDiDaPriceConfirm(param:any): Promise<HttpResponse> {
static async GetDiDaBookingConfirm(param:any): Promise<HttpResponse> { static async GetDiDaBookingConfirm(param:any): Promise<HttpResponse> {
return request('dmc_post_GetDiDaBookingConfirm', param) return request('dmc_post_GetDiDaBookingConfirm', param)
} }
//散客订单取消确认
static async GetDiDaBookingCancelConfirm(param:any): Promise<HttpResponse> {
return request('dmc_post_GetDiDaBookingCancelConfirm', param)
}
//散客订单预取消
static async GetDiDaBookingCancel(param:any): Promise<HttpResponse> {
return request('dmc_post_GetDiDaBookingCancel', param)
}
//散客订单详情
static async GetDiDaBookingSearchList(param:any): Promise<HttpResponse> {
return request('dmc_post_GetDiDaBookingSearchList', param)
}
// 道旅酒店列表 // 道旅酒店列表
static async GetDidaHotelList(param: any): Promise<HttpResponse> { static async GetDidaHotelList(param: any): Promise<HttpResponse> {
param.reviewRatingUpperLimits = param.reviewRatingUpperLimits && param.reviewRatingUpperLimits != '' ? param.reviewRatingUpperLimits : 0 param.reviewRatingUpperLimits = param.reviewRatingUpperLimits && param.reviewRatingUpperLimits != '' ? param.reviewRatingUpperLimits : 0
......
...@@ -141,26 +141,18 @@ ...@@ -141,26 +141,18 @@
</div> </div>
<div class="rounded-borders q-pa-sm justify-between" :class="{ 'column': $q.platform.is.desktop, 'row items-center': $q.platform.is.mobile, 'bg-green-1': x.OrderStatus != '已取消', 'bg-grey-2': x.OrderStatus == '已取消' }"> <div class="rounded-borders q-pa-sm justify-between" :class="{ 'column': $q.platform.is.desktop, 'row items-center': $q.platform.is.mobile, 'bg-green-1': x.OrderStatus != '已取消', 'bg-grey-2': x.OrderStatus == '已取消' }">
<q-list dense :class="{ 'row items-center justify-between full-width': $q.platform.is.mobile }"> <q-list dense :class="{ 'row items-center justify-between full-width': $q.platform.is.mobile }">
<q-item v-if="x.OrderStatus != '已取消'" class="text-negative" clickable v-close-popup @click="canCelHotel(x.ThirdOrderNo)"> <q-item v-if="x.OrderStatus != '已取消'" class="text-negative" clickable v-close-popup @click="canCelHotel(x.ThirdOrderNo,x.Source)">
<q-item-section> <q-item-section>
<q-item-label>{{ $t('hotelorder.opera.cancel') }}</q-item-label> <q-item-label>{{ $t('hotelorder.opera.cancel') }}</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item class="text-positive" clickable v-close-popup @click="getDetail(x.OrderID)"> <q-item class="text-positive" clickable v-close-popup @click="getDetail(x.OrderID,x.Source)">
<q-item-section> <q-item-section>
<q-item-label>{{ $t('v101.scatteredOrderList.xiangqing') }}</q-item-label> <q-item-label>{{ $t('v101.scatteredOrderList.xiangqing') }}</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
</q-list> </q-list>
<!-- <div v-else>
<div class="f12 text-green-4">{{ $t('hotelorder.payed') }}</div>
<div class="text-subtitle1 din text-green-14">
{{ moneyFormat(x.totalMoney) }}
<span class="text-green-4 f12">
{{$t('unit.jp')}}
</span>
</div>
</div> -->
</div> </div>
</div> </div>
<div v-if="x.OrderStatus == 3"> <div v-if="x.OrderStatus == 3">
...@@ -184,7 +176,9 @@ ...@@ -184,7 +176,9 @@
<q-dialog v-model="showOrderdDetail"> <q-dialog v-model="showOrderdDetail">
<OrderdDetail :OrderID="OrderID"></OrderdDetail> <OrderdDetail :OrderID="OrderID"></OrderdDetail>
</q-dialog> </q-dialog>
<q-dialog v-model="showOrderdDidaDetail">
<OrderdDiDaDetail :OrderID="OrderID"></OrderdDiDaDetail>
</q-dialog>
<q-dialog v-model="showBankAccount"> <q-dialog v-model="showBankAccount">
<BankAccount @change="showBankAccount=false"></BankAccount> <BankAccount @change="showBankAccount=false"></BankAccount>
</q-dialog> </q-dialog>
...@@ -195,6 +189,7 @@ ...@@ -195,6 +189,7 @@
import { DirtionmaryHelper } from '../../../config/dictionary' import { DirtionmaryHelper } from '../../../config/dictionary'
import { defineComponent, inject, reactive, toRefs, watch } from 'vue' import { defineComponent, inject, reactive, toRefs, watch } from 'vue'
import HotelService from '../../../api/scattered' import HotelService from '../../../api/scattered'
import DidaService from '../../../api/didahotel'
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'
...@@ -204,10 +199,12 @@ import svgIcon from '../../../global/svg-icon.vue' ...@@ -204,10 +199,12 @@ 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 OrderdDiDaDetail from './OrderdDiDaDetail.vue'
import BankAccount from '../../BankAccount.vue' import BankAccount from '../../BankAccount.vue'
export default defineComponent({ export default defineComponent({
components: { OrderdDetail, BankAccount }, components: { OrderdDetail, BankAccount,OrderdDiDaDetail },
setup(props) { setup(props) {
const search = inject(DirtionmaryHelper.HOTEL_ORDER_SEARCH) as any const search = inject(DirtionmaryHelper.HOTEL_ORDER_SEARCH) as any
const { t } = useI18n() const { t } = useI18n()
...@@ -225,6 +222,7 @@ export default defineComponent({ ...@@ -225,6 +222,7 @@ export default defineComponent({
showBankAccount: false, showBankAccount: false,
OrderID: '', OrderID: '',
showOrderdDetail: false, showOrderdDetail: false,
showOrderdDidaDetail: false,
orders: [] as Array<any>, orders: [] as Array<any>,
status: [] as Array<StandardStatus>, status: [] as Array<StandardStatus>,
rooms: [] as Array<RoomType>, rooms: [] as Array<RoomType>,
...@@ -253,14 +251,18 @@ export default defineComponent({ ...@@ -253,14 +251,18 @@ export default defineComponent({
ViewPayment() { ViewPayment() {
data.showBankAccount = true data.showBankAccount = true
}, },
canCelHotel(ThirdOrderNo) { canCelHotel(ThirdOrderNo,Source) {
$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(() => {
if (Source==4) {
methods.didacancellations(ThirdOrderNo)
}else{
methods.cancellations(ThirdOrderNo) methods.cancellations(ThirdOrderNo)
}
}) })
}, },
cancellations(ThirdOrderNo){ cancellations(ThirdOrderNo){
...@@ -287,8 +289,58 @@ export default defineComponent({ ...@@ -287,8 +289,58 @@ export default defineComponent({
data.loadingCel = false data.loadingCel = false
}) })
}, },
getDetail(OrderID){
didacancellations(ThirdOrderNo){
if(data.loadingCel) return
let msg ={
BookingID:ThirdOrderNo,
}
let param = Object.assign(msg)
data.loadingCel = true
DidaService.GetDiDaBookingCancel(param)
.then(r => {
if (r.data.resultCode == ApiResult.SUCCESS) {
let calmsg={
BookingID:ThirdOrderNo,
CancelBy: search.CustomerId,
CancelType:2,
Amount:r.data.data.Amount,
ConfirmID:r.data.data.ConfirmID
}
console.log("r.data",r.data);
let paramcal = Object.assign(calmsg)
DidaService.GetDiDaBookingCancelConfirm(paramcal)
.then(rc => {
if (rc.data.resultCode == ApiResult.SUCCESS) {
message.successMsg(`${t('success')}`)
methods.initOrders()
} else {
message.errorMsg(rc.data.message)
}
data.loadingCel = false
})
.catch(ec => {
message.errorMsg(ec.message)
data.loadingCel = false
})
} else {
message.errorMsg(r.data.message)
}
data.loadingCel = false
})
.catch(e => {
message.errorMsg(e.message)
data.loadingCel = false
})
},
getDetail(OrderID,Source){
if (Source==4){
data.showOrderdDidaDetail = true
}else{
data.showOrderdDetail = true data.showOrderdDetail = true
}
data.OrderID = OrderID data.OrderID = OrderID
}, },
initOrders() { initOrders() {
......
...@@ -144,6 +144,7 @@ import { date } from 'quasar' ...@@ -144,6 +144,7 @@ import { date } from 'quasar'
import message from '../../../utils/message' import message from '../../../utils/message'
import { moneyFormat, dateDiffer } from '../../../utils/tools' import { moneyFormat, dateDiffer } from '../../../utils/tools'
import HotelService from '../../../api/scattered' import HotelService from '../../../api/scattered'
import DidaService from '../../../api/didahotel'
import { currentRouter } from 'src/router' import { currentRouter } from 'src/router'
import { HotelRate,HotelArea, useHotel } from '../../../utils/hotelRate' import { HotelRate,HotelArea, useHotel } from '../../../utils/hotelRate'
import { isPhone, validatAlphabetsName } from '../../../utils/validate' import { isPhone, validatAlphabetsName } from '../../../utils/validate'
......
<template>
<q-card class="bg-white q-py-lg column" style="max-width: 886px; min-width: 375px; width: 900px; height: 65vh" v-if="model&&model.length>0" v-for="(item,index) in model" :key="index" v-loading="loading">
<div class="q-px-lg q-mb-lg" :class="{ 'row justify-between': $q.platform.is.desktop }">
<div :class="{ 'row items-center': $q.platform.is.desktop, '': $q.platform.is.mobile }">
<div class="mobile-only row items-center">
<div class="text-weight-bold fz20 ellipsis" style="width: 280px">{{ item.Hotel.HotelName }}{{ item.Hotel.HotelName }}{{ item.Hotel.HotelName }}</div>
<q-icon class="text-grey-13 cursor-pointer text-right q-ml-sm" name="close" size="md" v-close-popup></q-icon>
</div>
<div class="text-weight-bold fz20 ellipsis desktop-only">{{ item.Hotel.HotelName }}</div>
</div>
<q-icon class="text-grey-13 cursor-pointer desktop-only" name="close" size="md" v-close-popup></q-icon>
</div>
<q-scroll-area :thumb-style="scrollStyle.thumbStyle" :bar-style="scrollStyle.barStyle" class="col q-px-lg">
<div class="col bg-white rounded-border q-mb-md" :class="{'row q-pa-lg':$q.platform.is.desktop}">
<div :class="{'col row':$q.platform.is.desktop,'col-12 column':$q.platform.is.mobile}">
<q-img v-if="model.HotelPic" :class="{'col-1 q-mr-lg':$q.platform.is.desktop,'col-12':$q.platform.is.mobile}" :src="model.HotelPic" style="display: inline-block;" :style="{'height':$q.platform.is.mobile?'150px':'130px','width':$q.platform.is.mobile?'100%':'130px',}" spinner-color="drk" spinner-size="20px" mode="cover" :ratio="1"/>
<div class="column" :class="{'col q-pl-lg':$q.platform.is.desktop,'q-pt-sm':$q.platform.is.mobile}">
<div class="text-red fz18 text-weight-bold">{{item.Hotel.HotelName}}</div>
<div class="q-pt-xs">
<q-icon class="text-grey-13 q-mr-xs" name="place" size="xs"></q-icon>
<span class="col fz14 text-weight-bold text-blick">{{item.Hotel.TotalPrice}}</span>
</div>
<div v-for="(itemrate,indexrate) in item.Hotel.RatePlanList" :key="indexrate" >
<div class="q-pt-xs">
<span class="text-grey-6 q-pr-lg">{{$t('v101.scatteredOrder.fangxing')}}</span>
<span class="text-grey-9 q-pr-lg">
{{getRoomType(itemrate.BedType)}}
</span>
</div>
<div class="q-pt-xs">
<span class="text-grey-6 q-pr-lg">{{$t('v101.scatteredOrder.xiyan')}}</span>
<span class="text-grey-9">
{{itemrate.BreakfastType==1?"不含早":"含早"}}
</span>
</div>
<div class="q-pt-xs">
<span class="text-grey-6 q-pr-lg">{{$t('v101.scatteredOrder.cesuo')}}</span>
<span class="text-grey-9">
{{itemrate.RatePlanName}}
</span>
</div>
<!-- <div class="q-pt-xs">
<span class="text-grey-6 q-pr-lg">{{$t('v101.scatteredOrder.lutiankefang')}}</span>
<span class="text-grey-9">
<template v-if="parmResult.withOpenAirBath==0">{{$t('v101.scatteredOrder.wu')}}</template>
<template v-if="parmResult.withOpenAirBath==1">{{$t('v101.scatteredOrder.you')}}</template>
</span>
</div> -->
</div>
</div>
</div>
</div>
<div :class="{'row':$q.platform.is.desktop,'column':$q.platform.is.mobile}">
<div class="col column bg-white rounded-border q-mb-md" :class="{'q-mr-lg':$q.platform.is.desktop}">
<div class="bg-light-blue-1 q-py-md fz14 rounded-borders row items-center text-weight-bold" :class="{'q-px-lg':$q.platform.is.desktop,'q-px-sm':$q.platform.is.mobile}">
{{$t('v101.scatteredOrder.yudinxinx')}}
</div>
<div class="column" :class="{'q-pa-lg':$q.platform.is.desktop,'q-pa-sm':$q.platform.is.mobile}">
<div class="row items-center no-wrap q-mb-md">
<span class="text-grey-6 ScatteredOrderdDetail">{{$t('v101.scatteredOrder.dindanhao')}}</span>
<div class="q-pl-lg">
<span>{{item.BookingID}}</span>
</div>
</div>
<div class="row items-center no-wrap q-mb-md">
<span class="text-grey-6 ScatteredOrderdDetail">{{$t('v101.scatteredOrder.fangxingxinxi')}}</span>
<div class="q-pl-lg">
<span class="q-pr-lg">
<!-- {{parmResult?getGradeType(parmResult.gradeType):''}}{{parmResult?getRoomType(parmResult.roomType):''}} -->
</span>
</div>
</div>
<div class="row items-center no-wrap q-mb-md">
<span class="text-grey-6 ScatteredOrderdDetail">{{$t('v101.scatteredOrder.ruzhuriqi')}}</span>
<div class="q-pl-lg row items-center" >
<span :class="{'q-pr-lg':$q.platform.is.desktop,'q-pr-xs':$q.platform.is.mobile
}">{{getformatDateStr(item.CheckInDate)}}</span>
<q-separator :class="{'q-px-sm':$q.platform.is.desktop,'q-px-xs':$q.platform.is.mobile
}" color="dark"/>
<span :class="{'q-pl-lg':$q.platform.is.desktop,'q-pl-xs':$q.platform.is.mobile
}">{{getformatDateStr(item.CheckOutDate)}}</span>
</div>
</div>
<div class="row items-center no-wrap q-mb-md">
<span class="text-grey-6 ScatteredOrderdDetail">{{$t('v101.scatteredOrder.fangjianshuliang')}}</span>
<div class="q-pl-lg">
<span>{{item.NumOfRooms}}</span>
</div>
</div>
</div>
</div>
<div class="col column bg-white rounded-border q-mb-md">
<div class="bg-light-blue-1 q-py-md fz14 rounded-borders row items-center justify-between" :class="{'q-px-lg':$q.platform.is.desktop,'q-px-sm':$q.platform.is.mobile
}">
<span class="text-weight-bold">{{$t('v101.scatteredOrder.ruzhuxinxi')}}</span>
</div>
<div class="column" :class="{'q-pa-lg':$q.platform.is.desktop,'q-pa-sm':$q.platform.is.mobile
}">
<div class="row items-center no-wrap q-mb-md">
<span class="text-grey-6 ScatteredOrderdDetail">{{$t('v101.scatteredOrder.yudinren')}}</span>
<div class="q-pl-lg">
<span>{{item.Contact.Name.First + item.Contact.Name.Last}}</span>
</div>
</div>
<div class="row items-center no-wrap q-mb-md">
<span class="text-grey-6 ScatteredOrderdDetail">{{$t('v101.scatteredOrder.dangqiandizhi')}}</span>
<div class="q-pl-lg row">
<span>{{parmResultRoomInfo.guestAddress}}</span>
</div>
</div>
<div class="row items-center no-wrap q-mb-md">
<span class="text-grey-6 ScatteredOrderdDetail">{{$t('v101.scatteredOrder.Email')}}</span>
<div class="q-pl-lg">
<span>{{item.Contact.Email}}</span>
</div>
</div>
<div class="row items-center no-wrap q-mb-md">
<span class="text-grey-6 ScatteredOrderdDetail">{{$t('v101.scatteredOrder.dianhua')}}</span>
<div class="q-pl-lg">
<span>{{item.Contact.Phone}}</span>
</div>
</div>
<div class="row items-center no-wrap q-mb-md">
<span class="text-grey-6 ScatteredOrderdDetail">{{$t('v101.scatteredOrder.kehubeizhu')}}</span>
<div class="q-pl-lg">
<span v-if="model.Remark">{{model.Remark}}</span>
</div>
</div>
</div>
</div>
</div>
</q-scroll-area>
</q-card>
<q-inner-loading :showing="loading" :label="$t('loading')" label-class="text-grey-6 f12" />
</template>
<script lang="ts">
import { defineComponent, ref, reactive, toRef, toRefs, provide, onMounted, inject, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { DirtionmaryHelper } from '../../../config/dictionary'
import { date } from 'quasar'
import message from '../../../utils/message'
import { moneyFormat, dateDiffer } from '../../../utils/tools'
import DidaService from '../../../api/didahotel'
import { currentRouter } from 'src/router'
import { HotelRate,HotelArea, useHotel } from '../../../utils/hotelRate'
import { isPhone, validatAlphabetsName } from '../../../utils/validate'
import { ApiResult } from 'src/@types/enumHelper'
import useScrollModule from '../../../module/scrollbar/scrollModule'
export default defineComponent({
components: { },
props: ['OrderID'],
emits:['close'],
setup(props, context) {
const { t } = useI18n()
const data = reactive({
scrollStyle: {} as any,
params:{
orderId: props.OrderID,
},
model: {} as any,
parmResult: {} as any,
parmResultRoomInfo: {} as any,
loading: false,
RoomTypeList: [] as Array<HotelArea>,//房间等级
scatteredRoomTypeList: [] as Array<HotelArea>,//散客房间类型
})
data.scrollStyle = useScrollModule().scrollStyle
data.RoomTypeList = useHotel.getHotelRoomType()
data.scatteredRoomTypeList = useHotel.getHotelScatRoom()
const methods = {
//日期格式化
getformatDateStr(value){
var dt = new Date(value);
let year = dt.getFullYear();
let month = (dt.getMonth()+1).toString().padStart(2,'0');
let date = (dt.getDate()+1).toString().padStart(2,'0');
return year+"-"+month+"-"+date;
},
//获取房型
getGradeType(type) {
let gradeType = "";
switch (parseInt(type)) {
case 1:
gradeType = data.RoomTypeList[0].name;
break;
case 2:
gradeType = data.RoomTypeList[1].name;
break;
case 3:
gradeType = data.RoomTypeList[2].name;
break;
case 4:
gradeType = data.RoomTypeList[3].name;
break;
case 5:
gradeType = data.RoomTypeList[4].name;
break;
case 6:
gradeType = data.RoomTypeList[5].name;
break;
}
return gradeType;
},
//获取房型
getRoomType(roomtypeId) {
let roomtypeName = "";
if (roomtypeId>0) {
data.HotelRoomTypes.forEach((item) => {
if (item.ID == roomtypeId) {
roomtypeName=item.Name_CN;
}
});
}
return roomtypeName;
},
//获取道旅床类型列表
getdidaBedType() {
DidaService.GetDidaBedType({}).then((res) => {
console.log("getdidaBedType", res);
if (res.data.resultCode == 1) {
data.HotelRoomTypes = res.data.data;
}
});
},
initHotel() {
data.loading = true
let param = Object.assign(data.params)
DidaService.GetDiDaBookingSearchList(param)
.then(r => {
if (r.data.resultCode == ApiResult.SUCCESS) {
data.model = r.data.data.BookingDetailsList
console.log(r.data.data.BookingDetailsList);
}
data.loading = false
}).catch(e => {
data.loading = false
message.errorMsg(e.message)
})
},
}
methods.initHotel()
methods.getdidaBedType()
onMounted(()=>{
})
return { ...toRefs(data), ...methods }
}
})
</script>
<style>
.ScatteredOrderdDetail{
width: 70px;
}
</style>
...@@ -98,6 +98,12 @@ class DirtionmaryHelper { ...@@ -98,6 +98,12 @@ class DirtionmaryHelper {
*/ */
static readonly SCATTERED_HOTEL_ORDER_MSG = "scatteredhotelordermsg" static readonly SCATTERED_HOTEL_ORDER_MSG = "scatteredhotelordermsg"
/**
* 道旅散客预约酒店缓存客房下单成功的详情数据
*/
static readonly SCATTERED_DIDAHOTEL_ORDER_MSG = "scattereddidahotelordermsg"
/** /**
* 用户是否在中国 * 用户是否在中国
*/ */
......
...@@ -535,6 +535,7 @@ export default { ...@@ -535,6 +535,7 @@ export default {
chengren: '大人です', chengren: '大人です',
ertong: '子供です', ertong: '子供です',
ertongage:'子供の年齢', ertongage:'子供の年齢',
age:'年齢',
pingfen: '採点です', pingfen: '採点です',
minpingfen: '最低評価です', minpingfen: '最低評価です',
maxpingfen: '最高評価です', maxpingfen: '最高評価です',
...@@ -826,6 +827,7 @@ export default { ...@@ -826,6 +827,7 @@ export default {
dangqiandizhi: '現在のアドレスです', dangqiandizhi: '現在のアドレスです',
Email: 'メール', Email: 'メール',
dianhua: '電話です', dianhua: '電話です',
ertongshucuowu: '子供の数が正しくない',
kehuxuqiu: '顧客ニーズです', kehuxuqiu: '顧客ニーズです',
kehubeizhu: '顧客コメントです', kehubeizhu: '顧客コメントです',
fangjian: '部屋です', fangjian: '部屋です',
......
...@@ -535,6 +535,7 @@ export default { ...@@ -535,6 +535,7 @@ export default {
chengren: '어른', chengren: '어른',
ertong: '어린이들입니다', ertong: '어린이들입니다',
ertongage:'어린이 나이', ertongage:'어린이 나이',
age:'나이',
pingfen: '평점', pingfen: '평점',
minpingfen: '최저 평점', minpingfen: '최저 평점',
maxpingfen: '최고 평점', maxpingfen: '최고 평점',
...@@ -826,6 +827,7 @@ export default { ...@@ -826,6 +827,7 @@ export default {
dangqiandizhi: '현재 주소', dangqiandizhi: '현재 주소',
Email: '이메일', Email: '이메일',
dianhua: '전화요', dianhua: '전화요',
ertongshucuowu:'아동 수가 정확하지 않다',
kehuxuqiu: '고객 요구', kehuxuqiu: '고객 요구',
kehubeizhu: '고객 설명', kehubeizhu: '고객 설명',
fangjian: '방', fangjian: '방',
...@@ -835,6 +837,7 @@ export default { ...@@ -835,6 +837,7 @@ export default {
quxiao1: '취소가 통보되지 않았습니다', quxiao1: '취소가 통보되지 않았습니다',
quxiao2: '입주 당일 취소', quxiao2: '입주 당일 취소',
shouxufei: '수속비', shouxufei: '수속비',
quxiaoshijian:'시작 취소',
youhuixingxi: '할인 정보', youhuixingxi: '할인 정보',
duihuan: '교환', duihuan: '교환',
youhuiquanduihuan: '쿠폰 교환', youhuiquanduihuan: '쿠폰 교환',
......
...@@ -535,6 +535,7 @@ export default { ...@@ -535,6 +535,7 @@ export default {
chengren: '成人', chengren: '成人',
ertong: '儿童', ertong: '儿童',
ertongage: '儿童年龄', ertongage: '儿童年龄',
age: '年龄',
pingfen: '评分', pingfen: '评分',
minpingfen: '最低评分', minpingfen: '最低评分',
maxpingfen: '最高评分', maxpingfen: '最高评分',
......
...@@ -536,6 +536,7 @@ export default { ...@@ -536,6 +536,7 @@ export default {
chengren: '成人', chengren: '成人',
ertong: '兒童', ertong: '兒童',
ertongage:'兒童年齡', ertongage:'兒童年齡',
age:'年齡',
pingfen: '評分', pingfen: '評分',
minpingfen: '最低評分', minpingfen: '最低評分',
maxpingfen: '最高評分', maxpingfen: '最高評分',
...@@ -830,6 +831,7 @@ export default { ...@@ -830,6 +831,7 @@ export default {
dangqiandizhi: '當前地址', dangqiandizhi: '當前地址',
Email: 'Email', Email: 'Email',
dianhua: '電話', dianhua: '電話',
ertongshucuowu:'兒童數不正確',
kehuxuqiu: '客戶需求', kehuxuqiu: '客戶需求',
kehubeizhu: '客戶备注', kehubeizhu: '客戶备注',
fangjian: '房間', fangjian: '房間',
...@@ -839,6 +841,7 @@ export default { ...@@ -839,6 +841,7 @@ export default {
quxiao1: '沒有通知取消', quxiao1: '沒有通知取消',
quxiao2: '入住當日取消', quxiao2: '入住當日取消',
shouxufei: '手續費', shouxufei: '手續費',
quxiaoshijian:'起取消',
youhuixingxi: '優惠信息', youhuixingxi: '優惠信息',
duihuan: '兌換', duihuan: '兌換',
youhuiquanduihuan: '優惠券兌換', youhuiquanduihuan: '優惠券兌換',
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
<span class="text-red fz18 q-pl-xs">{{roomRateDetails.TotalSupplement}}</span> <span class="text-red fz18 q-pl-xs">{{roomRateDetails.TotalSupplement}}</span>
</div> </div>
<div class="q-pt-xs row no-wrap items-center" :class="{'q-pl-lg':$q.platform.is.mobile}"> <div class="q-pt-xs row no-wrap items-center" :class="{'q-pl-lg':$q.platform.is.mobile}">
<span class="text-grey-10">{{$t('v101.scatteredOrder.shifu')}}</span> <span class="text-grey-10">{{$t('v101.scatteredOrder.shifu')}}({{DanWei}})</span>
<span class="text-h5 text-red text-weight-bold q-pl-xs">{{roomRateDetails.TotalPrice}}</span> <span class="text-h5 text-red text-weight-bold q-pl-xs">{{roomRateDetails.TotalPrice}}</span>
</div> </div>
<div class="q-pt-xs row items-center" v-if="sureMsg.DiscountMoney==0"> <div class="q-pt-xs row items-center" v-if="sureMsg.DiscountMoney==0">
...@@ -257,10 +257,10 @@ ...@@ -257,10 +257,10 @@
</div> </div>
</div> </div>
<div v-if="sureMsg.GuestList&&sureMsg.GuestList.length>0" v-for="(item,subIndex) in sureMsg.GuestList" :key="subIndex"> <div v-if="sureMsg.GuestList&&sureMsg.GuestList.length>0" v-for="(item,subIndex) in sureMsg.GuestList" :key="subIndex">
<div class="row col-12" v-for="numberOfAdultsIndex in item.numberOfAdults" :key="numberOfAdultsIndex" > <div class="row col-12" v-if="item.GuestInfo&&item.GuestInfo.length>0" v-for="(itemguest,numberOfAdultsIndex) in item.GuestInfo" :key="numberOfAdultsIndex" >
<span class="" :class="{'HotelSure-text q-px-lg':$q.platform.is.desktop,'HotelSure-textMobile q-pr-sm':$q.platform.is.mobile}" ><span class="text-red" v-if="numberOfAdultsIndex==1">*</span> <span class="" :class="{'HotelSure-text q-px-lg':$q.platform.is.desktop,'HotelSure-textMobile q-pr-sm':$q.platform.is.mobile}" ><span class="text-red" v-if="numberOfAdultsIndex==0">*</span>
{{numberOfAdultsIndex==1?$t('v101.scatteredOrder.fangjian'):""}} {{numberOfAdultsIndex==0?$t('v101.scatteredOrder.fangjian'):""}}
{{numberOfAdultsIndex==1?subIndex+1:""}} {{numberOfAdultsIndex==0?subIndex+1:""}}
</span> </span>
<div class="col row " > <div class="col row " >
<div class="col-4"> <div class="col-4">
...@@ -268,7 +268,7 @@ ...@@ -268,7 +268,7 @@
dense dense
size="xs" size="xs"
filled filled
v-model="item.LastName" v-model="itemguest.LastName"
:label="$t('v101.scatteredOrder.xin')+'('+$t('v101.scatteredOrder.yingwen')+')'" :label="$t('v101.scatteredOrder.xin')+'('+$t('v101.scatteredOrder.yingwen')+')'"
hint="" hint=""
lazy-rules lazy-rules
...@@ -282,7 +282,7 @@ ...@@ -282,7 +282,7 @@
dense dense
size="xs" size="xs"
filled filled
v-model="item.FirstName" v-model="itemguest.FirstName"
:label="$t('v101.scatteredOrder.ming')+'('+$t('v101.scatteredOrder.yingwen')+')'" :label="$t('v101.scatteredOrder.ming')+'('+$t('v101.scatteredOrder.yingwen')+')'"
hint="" hint=""
lazy-rules lazy-rules
...@@ -296,8 +296,9 @@ ...@@ -296,8 +296,9 @@
dense dense
size="xs" size="xs"
filled filled
v-model="item.Age" type="Number"
:label="$t('v101.scattered.ertongage')" v-model="itemguest.Age"
:label="$t('v101.scattered.age')"
hint="" hint=""
lazy-rules lazy-rules
:rules="[ val => val && val.length > 0 || ' ']" :rules="[ val => val && val.length > 0 || ' ']"
...@@ -308,25 +309,10 @@ ...@@ -308,25 +309,10 @@
</div> </div>
</div> </div>
<div class=" row col-12 text-red" :class="{'q-pl-lg':$q.platform.is.desktop}">
<div class="column text-red" :class="{'q-pl-lg':$q.platform.is.desktop}"> <div v-if="roomRateDetails.CancellationPolicyList&&roomRateDetails.CancellationPolicyList.length>0" v-for="(item,index) in roomRateDetails.CancellationPolicyList" :key="index" >
<div v-if="(dataList.cancellationPeriod1==-1||dataList.cancellationPeriod1==0)&&(dataList.cancellationType1==1||dataList.cancellationType1==2)"> <span> {{getformatDateStr(item.FromDate)}} {{$t('v101.scatteredOrder.quxiaoshijian')}}</span>
<template v-if="dataList.cancellationPeriod1==-1">{{$t('v101.scatteredOrder.quxiao1')}},</template> <span >({{DanWei}})-{{item.Amount}}</span>
<template v-if="dataList.cancellationPeriod1==0">{{$t('v101.scatteredOrder.quxiao2')}},</template>
<template v-if="dataList.cancellationType1==1">{{$t('v101.scatteredOrder.shouxufei')}}: {{dataList.cancellation1}}%</template>
<template v-if="dataList.cancellationType1==2">{{$t('v101.scatteredOrder.shouxufei')}}: {{dataList.cancellation1}}</template>
</div>
<div v-if="(dataList.cancellationPeriod2==-1||dataList.cancellationPeriod2==0)&&(dataList.cancellationType2==1||dataList.cancellationType2==2)">
<template v-if="dataList.cancellationPeriod2==-1">{{$t('v101.scatteredOrder.quxiao1')}},</template>
<template v-if="dataList.cancellationPeriod2==0">{{$t('v101.scatteredOrder.quxiao2')}},</template>
<template v-if="dataList.cancellationType2==1">{{$t('v101.scatteredOrder.shouxufei')}}: {{dataList.cancellation2}}%</template>
<template v-if="dataList.cancellationType2==2">{{$t('v101.scatteredOrder.shouxufei')}}: {{dataList.cancellation2}}</template>
</div>
<div v-if="(dataList.cancellationPeriod3==-1||dataList.cancellationPeriod3==0)&&(dataList.cancellationType3==1||dataList.cancellationType3==2)">
<template v-if="dataList.cancellationPeriod3==-1">{{$t('v101.scatteredOrder.quxiao1')}},</template>
<template v-if="dataList.cancellationPeriod3==0">{{$t('v101.scatteredOrder.quxiao2')}},</template>
<template v-if="dataList.cancellationType3==1">{{$t('v101.scatteredOrder.shouxufei')}}: {{dataList.cancellation3}}%</template>
<template v-if="dataList.cancellationType3==2">{{$t('v101.scatteredOrder.shouxufei')}}: {{dataList.cancellation3}}</template>
</div> </div>
</div> </div>
</q-form> </q-form>
...@@ -476,6 +462,7 @@ ...@@ -476,6 +462,7 @@
dateRange: '' as any,//当前日期 dateRange: '' as any,//当前日期
dateRange2: '' as any,//当前日期 dateRange2: '' as any,//当前日期
roomRateDetails: {} as any, roomRateDetails: {} as any,
DanWei:'',
HotelRoomTypes: [] as Array<HotelArea>,//散客房间类型 HotelRoomTypes: [] as Array<HotelArea>,//散客房间类型
dataList: {} as any, dataList: {} as any,
//确认MSG参数 //确认MSG参数
...@@ -485,7 +472,6 @@ ...@@ -485,7 +472,6 @@
CheckInDate:'', CheckInDate:'',
RatePlanID:"", RatePlanID:"",
CheckOutDate:'', CheckOutDate:'',
Hotel:'',
RoomCount:'', RoomCount:'',
guestLastName:'', guestLastName:'',
guestFirstName:'', guestFirstName:'',
...@@ -496,7 +482,7 @@ ...@@ -496,7 +482,7 @@
HotelName:'', HotelName:'',
HotelPic:'', HotelPic:'',
GuestList:[] as Array<any>, GuestList:[] as Array<any>,
OldTotalPrice:0, TotalPrice:0,
CustomerPayMoney:0, CustomerPayMoney:0,
DiscountMoney:0, DiscountMoney:0,
OrderSource:2, OrderSource:2,
...@@ -504,11 +490,8 @@ ...@@ -504,11 +490,8 @@
//备注 //备注
guestRequest:'', guestRequest:'',
}, },
ischeckInTimeSure: false,
auditNum:0, auditNum:0,
childNum:0, childNum:0,
TotalChildCount:0,//孩子能否报入
chekedChildCount:0,//选了的儿童数
isBaoChild: false, isBaoChild: false,
SettlementPrice : 0, SettlementPrice : 0,
price: 0, price: 0,
...@@ -536,21 +519,33 @@ ...@@ -536,21 +519,33 @@
data.RoomTypeList = useHotel.getHotelRoomType() data.RoomTypeList = useHotel.getHotelRoomType()
data.scatteredRoomTypeList = useHotel.getHotelScatRoom() data.scatteredRoomTypeList = useHotel.getHotelScatRoom()
data.WeekList = useHotel.getHotelWeek() data.WeekList = useHotel.getHotelWeek()
if(data.params.searchroomGroup&&data.params.searchroomGroup!=null){ if(data.params.searchroomGroup&&data.params.searchroomGroup!=null){
data.params.searchroomGroup.forEach(function (item,index) { data.params.searchroomGroup.forEach(function (item,index) {
var guestInfoList=[] as Array<any>;
let allprople= item.numberOfAdults+item.numberOfChildren;
for (let i = 1; i <= allprople; i++) {
let obj = {
LastName: "",
FirstName: "",
Age: ""
}
guestInfoList.push(obj);
}
console.log("guestInfoList",guestInfoList);
var obj = { var obj = {
RoomNum:index+1, RoomNum:index+1,
numberOfAdults:item.numberOfAdults, numberOfAdults:item.numberOfAdults,
numberOfChildren:item.numberOfChildren, numberOfChildren:item.numberOfChildren,
GuestInfo:[] GuestInfo:guestInfoList
} }
data.sureMsg.GuestList.push(obj); data.sureMsg.GuestList.push(obj);
}); });
console.log(" data.sureMsg ", data.sureMsg );
} }
const methods = { const methods = {
// 提交下单 // 提交下单
submitForm () { submitForm () {
if(data.submLoading) return if(data.submLoading) return
...@@ -567,36 +562,25 @@ ...@@ -567,36 +562,25 @@
if(isPhone(data.sureMsg.guestPhoneNumber)==false) return message.errorMsg(t('v101.scatteredOrder.qingshuru')+t('v101.scatteredOrder.zhengque')+t('v101.scatteredOrder.dianhua')) if(isPhone(data.sureMsg.guestPhoneNumber)==false) return message.errorMsg(t('v101.scatteredOrder.qingshuru')+t('v101.scatteredOrder.zhengque')+t('v101.scatteredOrder.dianhua'))
if(!flag) return if(!flag) return
data.sureMsg.hotelId = data.urlParamsMsg.hotelId; data.sureMsg.hotelId = data.urlParamsMsg.hotelId;
data.sureMsg.RatePlanID = data.urlParamsMsg.ratePlanID; data.sureMsg.RatePlanID = data.urlParamsMsg.ratePlanID;
data.sureMsg.CheckInDate = data.params.CheckInDate; data.sureMsg.CheckInDate = data.params.CheckInDate;
data.sureMsg.totalRoomCount = data.params.searchroomGroup.length; data.sureMsg.totalRoomCount = data.params.searchroomGroup.length;
data.sureMsg.CheckOutDate = data.params.CheckOutDate; data.sureMsg.CheckOutDate = data.params.CheckOutDate;
data.sureMsg.roomOptionCd = data.params.roomOptionCd;
data.sureMsg.HotelName = data.dataList.hotelName;
data.sureMsg.HotelPic = data.params.imgUrl;
//判断选择的人数与入住人数 //判断选择的人数与入住人数
let Count1=0 let Count1=0
data.sureMsg.GuestList.forEach(x=>{ data.sureMsg.GuestList.forEach(item=>{
Count1+=x.numberOfAdults+x.numberOfChildren if(item.numberOfChildren>0){
}) let ageNum=0;
let Count2=0; item.GuestInfo.forEach(guestItem => {
Count2=data.auditNum+data.childNum; if(guestItem.Age<=12){ageNum=ageNum+1;}
if(Count1!=Count2){ });
message.errorMsg(t('v101.scatteredOrder.Errorruzhushu')) if(item.numberOfChildren!=ageNum){
return; message.errorMsg(t('v101.scatteredOrder.ertongshucuowu'));
}
} }
//data.dataList.roomGroup.forEach(x=>{ })
//data.sureMsg.GuestList.forEach(j=>{
// if(Object.prototype.toString.call(x.rateGroup) == '[object //Object]'){
// j.rateGroup.push(x.rateGroup);
// }else{
// j.rateGroup=x.rateGroup
// }
// })
// })
let CustomerId let CustomerId
if (Store.state && Store.state.user?.userDetail) { if (Store.state && Store.state.user?.userDetail) {
CustomerId = Store.state.user?.userDetail?.customerId CustomerId = Store.state.user?.userDetail?.customerId
...@@ -608,24 +592,25 @@ ...@@ -608,24 +592,25 @@
.then(r => { .then(r => {
data.submLoading = false data.submLoading = false
if (r.data.resultCode == ApiResult.SUCCESS) { if (r.data.resultCode == ApiResult.SUCCESS) {
console.log("确认酒店接口数据",r.data.data); localStorage.removeItem(DirtionmaryHelper.SCATTERED_DIDAHOTEL_ORDER_MSG)
localStorage.removeItem(DirtionmaryHelper.SCATTERED_HOTEL_ORDER_MSG)
message.successMsg(`${t('v101.scatteredOrder.xiadanSuccess')}`) message.successMsg(`${t('v101.scatteredOrder.xiadanSuccess')}`)
let num =0; let num =0;
data.sureMsg.roomGroup.forEach(x=>{ data.sureMsg.GuestList.forEach(x=>{
num+=parseInt(x.roomFemaleCount)+parseInt(x.roomMaleCount)+parseInt(x.roomChildCount) num+=parseInt(x.numberOfAdults)+parseInt(x.numberOfChildren)
}) })
console.log("r.data.data.parmResult",r.data.data);
let msg = { let msg = {
RB_Branch_id:r.data.data.RB_Branch_id, RB_Branch_id:r.data.data.RB_Branch_id,
costType:r.data.data.costType, costType:r.data.data.costType,
orderId:r.data.data.orderId, orderId:r.data.data.orderId,
bookingNumber:r.data.data.parmResult.bookingNumber, bookingNumber:r.data.data.BookingDetails.BookingID,
bookMoney:data.SettlementPrice, bookMoney:data.SettlementPrice,
CancelTime:r.data.data.CancelTime, CancelTime:r.data.data.CancelTime,
hotelName:r.data.data.parmResult.hotelName, hotelName:data.sureMsg.hotelName,
totalPnumber:num totalPnumber:num
} }
localStorage.setItem(DirtionmaryHelper.SCATTERED_HOTEL_ORDER_MSG,JSON.stringify(msg)) localStorage.setItem(DirtionmaryHelper.SCATTERED_DIDAHOTEL_ORDER_MSG,JSON.stringify(msg))
} else { } else {
message.errorMsg(r.data.message) message.errorMsg(r.data.message)
} }
...@@ -635,21 +620,7 @@ ...@@ -635,21 +620,7 @@
data.submLoading = false data.submLoading = false
}) })
}, },
//设置房间里面成人数改变总成人数和儿童数
setPeopleNum() {
// data.auditNum = 0;
// data.childNum = 0;
// search.searchroomGroup.forEach(x => {
// data.auditNum += (x.roomMaleCount+x.roomFemaleCount);
// data.childNum += x.roomChildCount;
// })
// if (data.auditNum == null || data.auditNum == undefined) {
// data.auditNum = 1
// }
// if (data.childNum == null || data.childNum == undefined) {
// data.childNum = 1
// }
},
//通过日期得到周几 //通过日期得到周几
getWeek(){ getWeek(){
let CheckInDate = new Date(data.params.CheckInDate).getDay(); let CheckInDate = new Date(data.params.CheckInDate).getDay();
...@@ -740,6 +711,10 @@ ...@@ -740,6 +711,10 @@
data.sureMsg.BookingID=r.data.data.PriceDetails.ReferenceNo data.sureMsg.BookingID=r.data.data.PriceDetails.ReferenceNo
console.log("道旅酒店",r.data.data.PriceDetails.HotelList[0]); console.log("道旅酒店",r.data.data.PriceDetails.HotelList[0]);
data.sureMsg.checkInTime = r.data.data.PriceDetails.CheckInDate data.sureMsg.checkInTime = r.data.data.PriceDetails.CheckInDate
data.sureMsg.HotelName= data.roomRateDetails.HotelName
data.sureMsg.TotalPrice= data.roomRateDetails.TotalPrice
data.sureMsg.RoomCount= data.roomRateDetails.RatePlanList[0].RoomOccupancy.RoomNum
data.DanWei=r.data.data.PriceDetails.HotelList[0].RatePlanList[0].Currency
if(Object.prototype.toString.call(data.dataList.HotelList) == '[object Object]'){ if(Object.prototype.toString.call(data.dataList.HotelList) == '[object Object]'){
let arr = []; let arr = [];
arr.push(data.dataList.HotelList); arr.push(data.dataList.HotelList);
......
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