Commit b2f20ed0 authored by 黄奎's avatar 黄奎

11

parent 0c8b6b81
<template> <template>
<div class="content-page order-preview"> <div class="content-page order-preview">
<q-stepper <q-stepper v-model="step" ref="stepper" color="primary" inactive-color="grey-5 " class="bg-transparent" flat
v-model="step" animated>
ref="stepper" <q-step :name="1" title="確認訂單" icon="settings" :done="step > 1"></q-step>
color="primary"
inactive-color="grey-5 "
class="bg-transparent"
flat
animated
>
<q-step
:name="1"
title="確認訂單"
icon="settings"
:done="step > 1"
></q-step>
<q-step <q-step :name="2" title="付款" icon="iconfont iconPayment-1" :done="step > 2"></q-step>
:name="2"
title="付款"
icon="iconfont iconPayment-1"
:done="step > 2"
></q-step>
<q-step <q-step :name="3" title="訂購完成" icon="iconfont iconicon_finish_R" :done="step == 3"></q-step>
:name="3"
title="訂購完成"
icon="iconfont iconicon_finish_R"
:done="step == 3"
></q-step>
</q-stepper> </q-stepper>
<div <div class="row q-pa-md" style="min-width: 375px; margin: 0 auto" :class="{
class="row q-pa-md"
style="min-width: 375px; margin: 0 auto"
:class="{
row: $q.screen.width >= 1200 && $q.platform.is.desktop, row: $q.screen.width >= 1200 && $q.platform.is.desktop,
column: $q.screen.width < 1200 || $q.platform.is.mobile, column: $q.screen.width < 1200 || $q.platform.is.mobile,
}" }">
>
<div class="col"> <div class="col">
<q-form ref="baseUserInfo"> <q-form ref="baseUserInfo">
<q-card flat class="q-pa-md"> <q-card flat class="q-pa-md">
...@@ -45,26 +19,13 @@ ...@@ -45,26 +19,13 @@
<q-separator color="grey-2" class="q-my-md" /> <q-separator color="grey-2" class="q-my-md" />
<div class="row q-col-gutter-md"> <div class="row q-col-gutter-md">
<div :class="filedWidth"> <div :class="filedWidth">
<q-select <q-select v-model="userInfo.Country" @input="changeCountry" :options="countrys" emit-value
v-model="userInfo.Country" option-label="Name" option-value="ID" map-options label="國家/地區" standout />
@input="changeCountry"
:options="countrys"
emit-value
option-label="Name"
option-value="ID"
map-options
label="國家/地區"
standout
/>
</div> </div>
<div :class="filedWidth"> <div :class="filedWidth">
<q-input <q-input standout v-model="userInfo.Mailbox" label="郵箱地址"
standout
v-model="userInfo.Mailbox"
label="郵箱地址"
:rules="[(val) => /^[a-zA-Z0-9]+([-_.][A-Za-zd]+)*@([a-zA-Z0-9]+[-.])+[A-Za-zd]{2,5}$/.test(val) || '請輸入正確的郵箱地址']" :rules="[(val) => /^[a-zA-Z0-9]+([-_.][A-Za-zd]+)*@([a-zA-Z0-9]+[-.])+[A-Za-zd]{2,5}$/.test(val) || '請輸入正確的郵箱地址']"
ref="mail" ref="mail" />
/>
</div> </div>
</div> </div>
</q-card> </q-card>
...@@ -74,18 +35,9 @@ ...@@ -74,18 +35,9 @@
<div class="row"> <div class="row">
<q-img v-if="details.imageList&&details.imageList.length" <q-img v-if="details.imageList&&details.imageList.length"
:src="details.imageList&&details.imageList.length?details.imageList[0]:'https://image.kkday.com/v2/image/get/s1.kkday.com/product_138437/20230217083232_t5rcO/jpg'" :src="details.imageList&&details.imageList.length?details.imageList[0]:'https://image.kkday.com/v2/image/get/s1.kkday.com/product_138437/20230217083232_t5rcO/jpg'"
class="rounded-borders" class="rounded-borders" spinner-color="grey-3" spinner-size="20px" style="width: 80px; height: 80px" />
spinner-color="grey-3" <q-img v-else src="../../assets/img/errImg.png" class="rounded-borders" spinner-color="grey-3"
spinner-size="20px" spinner-size="20px" style="width: 80px;" />
style="width: 80px; height: 80px"
/>
<q-img v-else
src="../../assets/img/errImg.png"
class="rounded-borders"
spinner-color="grey-3"
spinner-size="20px"
style="width: 80px;"
/>
<div class="q-ml-md col"> <div class="q-ml-md col">
<div class="text-subtitle1 ellipsis"> <div class="text-subtitle1 ellipsis">
{{OrderDate.detail.Name_CN}} {{OrderDate.detail.Name_CN}}
...@@ -111,7 +63,8 @@ ...@@ -111,7 +63,8 @@
<span class="fz15 text-weight-bold"> <span class="fz15 text-weight-bold">
{{ msg.roomOptionCd.RoomName_CN }} {{ msg.roomOptionCd.RoomName_CN }}
</span> </span>
<span class="fz13 text-grey-6 q-ml-sm" v-if="roomRateDetails.RatePlanList && roomRateDetails.RatePlanList.length > 0"> <span class="fz13 text-grey-6 q-ml-sm"
v-if="roomRateDetails.RatePlanList && roomRateDetails.RatePlanList.length > 0">
{{ getRoomType(roomRateDetails.RatePlanList[0].BedType) }} {{ getRoomType(roomRateDetails.RatePlanList[0].BedType) }}
<template v-for="( itemp, indexp ) in roomRateDetails.RatePlanList[0].PriceList"> <template v-for="( itemp, indexp ) in roomRateDetails.RatePlanList[0].PriceList">
<template v-if="!indexp"> <template v-if="!indexp">
...@@ -125,7 +78,7 @@ ...@@ -125,7 +78,7 @@
) )
</span> </span>
<span class="text-grey-9"> <span class="text-grey-9">
<q-icon name="iconfont jinggao1" size="20px"/><span> <q-icon name="iconfont jinggao1" size="20px" /><span>
<template v-if="roomRateDetails&&roomRateDetails.RatePlanList.length"> <template v-if="roomRateDetails&&roomRateDetails.RatePlanList.length">
<template v-for="(item, index) in roomRateDetails.RatePlanList"> <template v-for="(item, index) in roomRateDetails.RatePlanList">
僅剩{{item.InventoryCount}} 僅剩{{item.InventoryCount}}
...@@ -165,54 +118,28 @@ ...@@ -165,54 +118,28 @@
</div> </div>
<q-separator color="grey-2" class="q-mt-md" /> <q-separator color="grey-2" class="q-mt-md" />
<div <div class="bg-grey-1 rounded-borders q-pa-md q-mt-md guest-item">
class="bg-grey-1 rounded-borders q-pa-md q-mt-md guest-item"
>
<div class="text-subtitle1 q-pb-md text-weight-bold"></div> <div class="text-subtitle1 q-pb-md text-weight-bold"></div>
<div class="row q-col-gutter-md"> <div class="row q-col-gutter-md">
<div :class="filedGuestWidth"> <div :class="filedGuestWidth">
<q-input <q-input standout v-model="parameters.guestLastName" label="本國姓" placeholder="例:張"
standout :rules="[(val) => !!val || '請輸本國姓']" ref="SurName" />
v-model="parameters.guestLastName"
label="本國姓"
placeholder="例:張"
:rules="[(val) => !!val || '請輸本國姓']"
ref="SurName"
/>
</div> </div>
<div :class="filedGuestWidth"> <div :class="filedGuestWidth">
<q-input <q-input standout v-model="parameters.guestFirstName" label="本國名" placeholder="例:三"
standout :rules="[(val) => !!val || '請輸本國名']" ref="Name" />
v-model="parameters.guestFirstName"
label="本國名"
placeholder="例:三"
:rules="[(val) => !!val || '請輸本國名']"
ref="Name"
/>
</div> </div>
<div :class="filedGuestWidth"> <div :class="filedGuestWidth">
<q-input <q-input standout v-model="parameters.guestPhoneNumber" label="電話"
standout :rules="[(val) => !!val || '請輸正確電話']" ref="Mobile" mask="#" reverse-fill-mask>
v-model="parameters.guestPhoneNumber"
label="電話"
:rules="[(val) => !!val || '請輸正確電話']"
ref="Mobile"
mask="#"
reverse-fill-mask
>
<template v-slot:prepend> <template v-slot:prepend>
<div class="text-subtitle2">+{{ userInfo.areaCode }}</div> <div class="text-subtitle2">+{{ userInfo.areaCode }}</div>
</template> </template>
</q-input> </q-input>
</div> </div>
<div :class="filedGuestWidth"> <div :class="filedGuestWidth">
<q-input <q-input standout v-model="parameters.guestAddress" label="當前地址" :rules="[(val) => !!val || '請輸當前地址']"
standout ref="guestAddress"></q-input>
v-model="parameters.guestAddress"
label="當前地址"
:rules="[(val) => !!val || '請輸當前地址']"
ref="guestAddress"
></q-input>
</div> </div>
<!-- <div :class="filedGuestWidth"> <!-- <div :class="filedGuestWidth">
<q-input <q-input
...@@ -238,98 +165,56 @@ ...@@ -238,98 +165,56 @@
</div> </div>
</div> </div>
<q-separator color="grey-2" class="q-mt-md" /> <q-separator color="grey-2" class="q-mt-md" />
<div <div class="bg-grey-1 rounded-borders q-pa-md q-mt-md guest-item" v-for="(x,i) in parameters.GuestList"
class="bg-grey-1 rounded-borders q-pa-md q-mt-md guest-item" :key="i">
v-for="(x,i) in parameters.GuestList"
:key="i"
>
<div class="text-subtitle1 q-pb-md text-weight-bold"> <div class="text-subtitle1 q-pb-md text-weight-bold">
房間{{ x.RoomNum }} 房間{{ x.RoomNum }}
</div> </div>
<div class="row q-col-gutter-md" v-for="(y,index) in x.GuestInfo" <div class="row q-col-gutter-md" v-for="(y,index) in x.GuestInfo"
:class="[index!=x.GuestInfo.length-1?'q-mb-md':'']"> :class="[index!=x.GuestInfo.length-1?'q-mb-md':'']">
<div :class="filedGuestWidth"> <div :class="filedGuestWidth">
<q-input <q-input standout v-model="y.LastName" label="英文姓" placeholder="" mask="A" reverse-fill-mask
standout :ref="`guest${i}_${index}Male`" />
v-model="y.LastName"
label="英文姓"
placeholder=""
mask="A"
reverse-fill-mask
:ref="`guest${i}_${index}Male`"
/>
</div> </div>
<div :class="filedGuestWidth"> <div :class="filedGuestWidth">
<q-input <q-input standout v-model="y.FirstName" label="英文名" placeholder="" mask="A" reverse-fill-mask
standout :ref="`guest${i}_${index}Female`" />
v-model="y.FirstName"
label="英文名"
placeholder=""
mask="A"
reverse-fill-mask
:ref="`guest${i}_${index}Female`"
/>
</div> </div>
<div :class="filedGuestWidth"> <div :class="filedGuestWidth">
<q-input <q-input standout v-model="y.Age" label="年龄(兒童必填)" placeholder="" mask="#" reverse-fill-mask
standout :disable="!y.isChild?true:false" />
v-model="y.Age"
label="年龄(兒童必填)"
placeholder=""
mask="#"
reverse-fill-mask
:disable="!y.isChild?true:false"
/>
<!-- :rules="[(val) => !!val || '請輸儿童數']" --> <!-- :rules="[(val) => !!val || '請輸儿童數']" -->
</div> </div>
</div> </div>
</div> </div>
<div class="text-subtitle1 q-my-md text-weight-bold">特殊需求備註:</div> <div class="text-subtitle1 q-my-md text-weight-bold">特殊需求備註:</div>
<q-input standout v-model="parameters.guestRequest" input-style="height:170px;" type="textarea" placeholder="此欄位僅限資料備註。不在商品規範內的個人需求,不保證提供" maxlength="200" counter /> <q-input standout v-model="parameters.guestRequest" input-style="height:170px;" type="textarea"
placeholder="此欄位僅限資料備註。不在商品規範內的個人需求,不保證提供" maxlength="200" counter />
</q-card> </q-card>
</q-form> </q-form>
<coupon <coupon v-if="sumPrice>0" :product-type="productType" :current-price="sumPrice" @change="changeDiscountHandler">
v-if="sumPrice>0" </coupon>
:product-type="productType"
:current-price="sumPrice"
@change="changeDiscountHandler"
></coupon>
</div> </div>
<div class="relative-position" v-if="details" <div class="relative-position" v-if="details" :class="{
:class="{
'q-ml-lg': !($q.screen.width < 1200 || $q.platform.is.mobile), 'q-ml-lg': !($q.screen.width < 1200 || $q.platform.is.mobile),
'q-mt-lg full-width': $q.screen.width < 1200 || $q.platform.is.mobile, 'q-mt-lg full-width': $q.screen.width < 1200 || $q.platform.is.mobile,
}" }">
> <div class="rounded-borders bg-white q-pa-md" style="width: 300px" :style="{
<div
class="rounded-borders bg-white q-pa-md"
style="width: 300px"
:style="{
width: width:
$q.screen.width < 1200 || $q.platform.is.mobile $q.screen.width < 1200 || $q.platform.is.mobile
? 'unset' ? 'unset'
: '300px', : '300px',
position:$q.platform.is.mobile?'unset':'sticky', position:$q.platform.is.mobile?'unset':'sticky',
top:$q.platform.is.mobile?'unset':'50px', top:$q.platform.is.mobile?'unset':'50px',
}" }">
>
<div class="text-subtitle1 text-weight-bolder">付款明細</div> <div class="text-subtitle1 text-weight-bolder">付款明細</div>
<div class="row q-mt-md"> <div class="row q-mt-md">
<q-img v-if="details&&details.imageList.length" <q-img v-if="details&&details.imageList.length"
:src="details.imageList&&details.imageList.length?details.imageList[0]:'https://image.kkday.com/v2/image/get/s1.kkday.com/product_138437/20230217083232_t5rcO/jpg'" :src="details.imageList&&details.imageList.length?details.imageList[0]:'https://image.kkday.com/v2/image/get/s1.kkday.com/product_138437/20230217083232_t5rcO/jpg'"
class="rounded-borders" class="rounded-borders" spinner-color="grey-3" style="width: 80px" />
spinner-color="grey-3" <q-img v-else src="../../assets/img/errImg.png" class="rounded-borders" spinner-color="grey-3"
style="width: 80px" spinner-size="20px" style="width: 80px;" />
/>
<q-img v-else
src="../../assets/img/errImg.png"
class="rounded-borders"
spinner-color="grey-3"
spinner-size="20px"
style="width: 80px;"
/>
<div class="q-ml-md col"> <div class="q-ml-md col">
<div class="text-subtitle1 ellipsis"> <div class="text-subtitle1 ellipsis">
{{OrderDate.detail.Name_CN}} {{OrderDate.detail.Name_CN}}
...@@ -340,7 +225,7 @@ ...@@ -340,7 +225,7 @@
</div> </div>
</div> </div>
<!-- v-if="details.roomRateDetails" --> <!-- v-if="details.roomRateDetails" -->
<div class="q-mt-md text-grey-6" > <div class="q-mt-md text-grey-6">
<div class="row"> <div class="row">
<div style="width: 80px"> <div style="width: 80px">
入住時間: 入住時間:
...@@ -350,7 +235,7 @@ ...@@ -350,7 +235,7 @@
</div> </div>
</div> </div>
</div> </div>
<q-separator color="grey-2" class="q-my-md"/> <q-separator color="grey-2" class="q-my-md" />
<div class="text-grey-9"> <div class="text-grey-9">
<template v-for="(x,i) in parameters.GuestList"> <template v-for="(x,i) in parameters.GuestList">
<div class="row justify-between q-mb-sm"> <div class="row justify-between q-mb-sm">
...@@ -367,10 +252,7 @@ ...@@ -367,10 +252,7 @@
</div> </div>
</template> </template>
</template> </template>
<hr <hr style="border: none; border-top: 1px dashed #eee !important" class="bg-transparent q-mb-sm" />
style="border: none; border-top: 1px dashed #eee !important"
class="bg-transparent q-mb-sm"
/>
<div class="row q-mb-sm items-center"> <div class="row q-mb-sm items-center">
<div class="col">總金額</div> <div class="col">總金額</div>
<div class="text-subtitle2 text-weight-bolder text-primary"> <div class="text-subtitle2 text-weight-bolder text-primary">
...@@ -396,36 +278,35 @@ ...@@ -396,36 +278,35 @@
</div> </div>
</div> </div>
<div class="text-right q-mt-md" v-if="step!=3"> <div class="text-right q-mt-md" v-if="step!=3">
<q-btn v-if="step!=3" unelevated color="primary" <q-btn v-if="step!=3" unelevated color="primary" :loading="loading" :label="step!=3?'立即支付':'已支付'"
:loading="loading" :label="step!=3?'立即支付':'已支付'" @click="submit()" @click="submit()" :disable="step!=3&&loading" />
:disable="step!=3&&loading"/> <q-btn v-else unelevated color="primary" label="" />
<q-btn v-else unelevated color="primary" label=""/>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div v-if="!orderKey || orderKey == ''" class="text-center q-my-xl"> <div v-if="!orderKey || orderKey == ''" class="text-center q-my-xl">
<none-data <none-data iconType="order" title="沒有找到您的訂單信息哦" subtitle="趕緊去挑選心儀的旅遊產品吧,三秒後自動跳轉到首頁"></none-data>
iconType="order"
title="沒有找到您的訂單信息哦"
subtitle="趕緊去挑選心儀的旅遊產品吧,三秒後自動跳轉到首頁"
></none-data>
</div> </div>
<auth></auth> <auth></auth>
</div> </div>
</template> </template>
<script> <script>
import NoneData from "src/components/common/noneData.vue"; import NoneData from "src/components/common/noneData.vue";
import auth from "src/components/common/auth.vue"; import auth from "src/components/common/auth.vue";
import { date } from 'quasar' import {
import { json } from "body-parser"; date
import coupon from 'src/components/common/coupon.vue' } from 'quasar'
import ProductTypeEnum from "src/utils/producttypeenum"; import {
json
export default { } from "body-parser";
components:{ import coupon from 'src/components/common/coupon.vue'
import ProductTypeEnum from "src/utils/producttypeenum";
export default {
components: {
coupon, coupon,
NoneData, NoneData,
auth auth
...@@ -433,13 +314,13 @@ export default { ...@@ -433,13 +314,13 @@ export default {
data() { data() {
return { return {
CouponIds: [], CouponIds: [],
productType: 8, productType: 9, //道旅酒店
sumPrice: 0,//总金额 sumPrice: 0, //总金额
order: null,//订单信息 order: null, //订单信息
orderKey: "", orderKey: "",
optionObj: null,//类型 optionObj: null, //类型
details: null,//产品详情 details: null, //产品详情
options: {//音频控件 options: { //音频控件
currentPage: 0, currentPage: 0,
speed: 300, speed: 300,
itemAnimation: true, itemAnimation: true,
...@@ -450,7 +331,7 @@ export default { ...@@ -450,7 +331,7 @@ export default {
slidesToScroll: 1, slidesToScroll: 1,
loop: true, loop: true,
}, },
OrderDate: null,//接收产品相关信息 OrderDate: null, //接收产品相关信息
step: 1, step: 1,
userInfo: { userInfo: {
Country: 0, Country: 0,
...@@ -462,7 +343,7 @@ export default { ...@@ -462,7 +343,7 @@ export default {
countrys: [], countrys: [],
areaCodes: [], areaCodes: [],
loading: false, loading: false,
msg:{ msg: {
sort: 1, sort: 1,
displayFrom: 1, displayFrom: 1,
CheckInDate: "", CheckInDate: "",
...@@ -484,19 +365,19 @@ export default { ...@@ -484,19 +365,19 @@ export default {
CheckInDateQ: '', CheckInDateQ: '',
price: 0, price: 0,
guest: { guest: {
roomCount: 0,//房间编号 roomCount: 0, //房间编号
roomMaleCount:0, roomMaleCount: 0,
roomFemaleCount:0, roomFemaleCount: 0,
roomChildCount:0, roomChildCount: 0,
roomInfantCount:0, roomInfantCount: 0,
rateGroup:[] rateGroup: []
}, },
chekedChildCount: 0, chekedChildCount: 0,
TotalChildCount: 0, TotalChildCount: 0,
isBaoChild: true, isBaoChild: true,
isShowTime: true, isShowTime: true,
price: 0, price: 0,
SettlementPrice: 0,//实付 SettlementPrice: 0, //实付
parameters: { parameters: {
EmployeeIdStr: "", EmployeeIdStr: "",
CheckInDate: "", CheckInDate: "",
...@@ -515,19 +396,19 @@ export default { ...@@ -515,19 +396,19 @@ export default {
TotalPrice: 0, TotalPrice: 0,
CustomerPayMoney: 0, CustomerPayMoney: 0,
DiscountMoney: 0, DiscountMoney: 0,
OrderSource: 2, OrderSource: 4,
OrderForm: 1, OrderForm: 1,
//备注 //备注
guestRequest: "", guestRequest: "",
hotelId: '', hotelId: '',
roomType: 0, roomType: 0,
RoomName:"",//房型名称 RoomName: "", //房型名称
}, },
TotalPeople: 0,//总人数 TotalPeople: 0, //总人数
HotelRoomTypes: [],//道旅床类型 HotelRoomTypes: [], //道旅床类型
HotelMealTypes: [],//道旅餐食类型 HotelMealTypes: [], //道旅餐食类型
DanWei: '',//单位 DanWei: '', //单位
}; };
}, },
computed: { computed: {
...@@ -546,7 +427,7 @@ export default { ...@@ -546,7 +427,7 @@ export default {
}, },
created() {}, created() {},
mounted() { mounted() {
if(this.checkParamsHandler()){ if (this.checkParamsHandler()) {
this.getData() this.getData()
} }
...@@ -658,7 +539,6 @@ export default { ...@@ -658,7 +539,6 @@ export default {
this.dataList = res.data.data.PriceDetails; this.dataList = res.data.data.PriceDetails;
this.roomRateDetails = res.data.data.PriceDetails.HotelList[0]; this.roomRateDetails = res.data.data.PriceDetails.HotelList[0];
this.parameters.BookingID = res.data.data.PriceDetails.ReferenceNo; this.parameters.BookingID = res.data.data.PriceDetails.ReferenceNo;
// this.parameters.CheckInDate = res.data.data.PriceDetails.CheckInDate;
this.parameters.TotalPrice = this.roomRateDetails.TotalPrice; this.parameters.TotalPrice = this.roomRateDetails.TotalPrice;
this.parameters.RoomCount = this.msg.RoomCount; this.parameters.RoomCount = this.msg.RoomCount;
this.DanWei = res.data.data.PriceDetails.HotelList[0].RatePlanList[0].Currency; this.DanWei = res.data.data.PriceDetails.HotelList[0].RatePlanList[0].Currency;
...@@ -679,13 +559,15 @@ export default { ...@@ -679,13 +559,15 @@ export default {
this.sumPrice = 0 this.sumPrice = 0
this.roomRateDetails.RatePlanList[0].PriceList.forEach((item) => { this.roomRateDetails.RatePlanList[0].PriceList.forEach((item) => {
this.sumPrice+= (this.parameters.GuestList.length*Number(item.Price)) this.sumPrice += (this.parameters.GuestList.length * Number(item.Price))
this.Price = Number(item.Price) this.Price = Number(item.Price)
}) })
} else { } else {
this.$message.error(res.data.message) this.$message.error(res.data.message)
this.CommonJump(`/detailHotalDida/${this.msg.hotelId}/${this.OrderDate.MinPrice}/${encodeURIComponent(this.msg.CheckInDate)}/${encodeURIComponent(this.msg.CheckOutDate)}`, this.CommonJump(
{orderKey:this.orderKey}); `/detailHotalDida/${this.msg.hotelId}/${this.OrderDate.MinPrice}/${encodeURIComponent(this.msg.CheckInDate)}/${encodeURIComponent(this.msg.CheckOutDate)}`, {
orderKey: this.orderKey
});
} }
}, },
...@@ -723,17 +605,17 @@ export default { ...@@ -723,17 +605,17 @@ export default {
this.parameters.RoomName = this.msg.roomOptionCd.RoomName_CN this.parameters.RoomName = this.msg.roomOptionCd.RoomName_CN
this.parameters.GuestList = [] this.parameters.GuestList = []
this.msg.searchroomGroup.forEach((x,index)=>{ this.msg.searchroomGroup.forEach((x, index) => {
this.numberOfAdults+=Number(x.numberOfAdults) this.numberOfAdults += Number(x.numberOfAdults)
this.numberOfChildren+=Number(x.numberOfChildren) this.numberOfChildren += Number(x.numberOfChildren)
var guestInfoList = []; var guestInfoList = [];
let allprople = x.numberOfAdults + x.numberOfChildren let allprople = x.numberOfAdults + x.numberOfChildren
for (let i = 0; i < allprople; i++) { for (let i = 0; i < allprople; i++) {
let obj = { let obj = {
LastName: "", LastName: "",
FirstName: "", FirstName: "",
Age: i<x.numberOfAdults?'':x.ChildAgeDetails, Age: i < x.numberOfAdults ? '' : x.ChildAgeDetails,
isChild: i<x.numberOfAdults?false:true isChild: i < x.numberOfAdults ? false : true
}; };
guestInfoList.push(obj); guestInfoList.push(obj);
} }
...@@ -760,116 +642,96 @@ export default { ...@@ -760,116 +642,96 @@ export default {
}, },
async submit() { async submit() {
//判断选择的人数与入住人数 //判断选择的人数与入住人数
let Count1=0 let Count1 = 0
let roomGroup = this.parameters.GuestList let roomGroup = this.parameters.GuestList
roomGroup.forEach(x=>{ roomGroup.forEach(x => {
Count1+= Number(x.numberOfAdults)+Number(x.numberOfChildren) Count1 += Number(x.numberOfAdults) + Number(x.numberOfChildren)
}) })
let Count2=this.numberOfChildren?this.numberOfChildren:0; let Count2 = this.numberOfChildren ? this.numberOfChildren : 0;
Count2+= Number(this.numberOfAdults); Count2 += Number(this.numberOfAdults);
if(Count1!=Count2){ if (Count1 != Count2) {
this.$message.error('入住人數與總入住數不匹配'); this.$message.error('入住人數與總入住數不匹配');
return; return;
} }
for (let i = 0; i < roomGroup.length; i++) { for (let i = 0; i < roomGroup.length; i++) {
if(!roomGroup[i].numberOfAdults){ if (!roomGroup[i].numberOfAdults) {
this.$message.error('一個房間至少入住一人'); this.$message.error('一個房間至少入住一人');
return; return;
} }
} }
this.parameters.CustomerId = this.userInfo.Id; this.parameters.CustomerId = this.userInfo.Id;
this.parameters.EmployeeIdStr = this.userInfo.Id;//`${this.userInfo.Surname?this.userInfo.Surname:''}${this.userInfo.Name?this.userInfo.Name:' '}` this.parameters.EmployeeIdStr = this.userInfo.Id;
this.$refs.mail.validate() this.$refs.mail.validate()
this.$refs.SurName.validate() this.$refs.SurName.validate()
this.$refs.Name.validate() this.$refs.Name.validate()
this.$refs.Mobile.validate() this.$refs.Mobile.validate()
this.$refs.guestAddress.validate() this.$refs.guestAddress.validate()
// this.$refs.CheckInDate.validate()
this.parameters.guestEmail = this.userInfo.Mailbox this.parameters.guestEmail = this.userInfo.Mailbox
for (let i = 0; i < this.parameters.GuestList.length; i++) { for (let i = 0; i < this.parameters.GuestList.length; i++) {
let GuestList = this.parameters.GuestList[i] let GuestList = this.parameters.GuestList[i]
for (let j = 0; j < GuestList.GuestInfo.length; j++) { for (let j = 0; j < GuestList.GuestInfo.length; j++) {
let GuestInfo = GuestList.GuestInfo[j] let GuestInfo = GuestList.GuestInfo[j]
if(GuestInfo.LastName==''||GuestInfo.FirstName==''){ if (GuestInfo.LastName == '' || GuestInfo.FirstName == '') {
this.$message.error('請填寫姓或名'); this.$message.error('請填寫姓或名');
return; return;
} }
} }
} }
let flag = true let flag = true
flag = await this.formValidateHandler('baseUserInfo') flag = await this.formValidateHandler('baseUserInfo')
if(!flag){ if (!flag) {
let errorObj = this.$refs.baseUserInfo.getValidationComponents().find(x=>x.innerError) let errorObj = this.$refs.baseUserInfo.getValidationComponents().find(x => x.innerError)
window.scrollTo(0,errorObj.$el.offsetTop) window.scrollTo(0, errorObj.$el.offsetTop)
}else{ } else {
this.SetCarOrder() this.AddOrderInfo()
} }
}, },
async formValidateHandler(formName){ async formValidateHandler(formName) {
let temp=this.$refs[formName] let temp = this.$refs[formName]
let formObj = temp instanceof Array ? temp[0] : temp let formObj = temp instanceof Array ? temp[0] : temp
return formObj.validate() return formObj.validate()
}, },
SetCarOrder(){ AddOrderInfo() {
this.loading = true this.loading = true;
this.apipost( this.apipost(
"dmc_post_GetDiDaBookingConfirm", "AddOrderInfo_post", {
this.parameters, SurName: this.parameters.guestLastName ? this.parameters.guestLastName : this.userInfo.Surname,
(r) => { Name: this.parameters.guestFirstName ? this.parameters.guestFirstName : this.userInfo.Name,
if (r.data.resultCode == 1) { ContactNumber: this.parameters.guestPhoneNumber ? this.parameters.guestPhoneNumber : this.userInfo
this.step = 2 .Mobile, // 联系电话
let ErpOrderId = r.data.data.Id Mailbox: this.parameters.guestEmail ? this.parameters.guestEmail : this.userInfo.Mailbox, //邮箱
this.AddOrderInfo(ErpOrderId) GoodsId: this.parameters.hotelId, //商品id
}else{ GoodsName: this.OrderDate.detail.Name_CN, //商品名称
this.$message.error(r.data.message) GoodsPic: this.OrderDate.detail.images[0], //商品图片
this.loading = false
}
})
},
AddOrderInfo(ErpOrderId){
let Name = this.parameters.guestLastName+this.parameters.guestFirstName
this.apipost(
"AddOrderInfo_post",
{
SurName: this.parameters.guestLastName?this.parameters.guestLastName:this.userInfo.Surname,
Name: this.parameters.guestFirstName?this.parameters.guestFirstName:this.userInfo.Name,
ContactNumber: this.parameters.guestPhoneNumber?this.parameters.guestPhoneNumber:this.userInfo.Mobile,// 联系电话
Mailbox: this.parameters.guestEmail?this.parameters.guestEmail:this.userInfo.Mailbox,//邮箱
GoodsId: this.parameters.hotelId,//商品id
GoodsName: this.OrderDate.detail.Name_CN,//商品名称
GoodsPic: this.OrderDate.detail.images[0],//商品图片
GoodsType: this.productType, GoodsType: this.productType,
OrderMake: this.parameters.CheckInDate,//订单摘要(例如出行时间) OrderMake: this.parameters.CheckInDate, //订单摘要(例如出行时间)
TotalPrice: this.parameters.TotalPrice,//总价格 TotalPrice: this.parameters.TotalPrice, //总价格
PreferentialPrice: this.parameters.DiscountMoney,// 优惠总金额 PreferentialPrice: this.parameters.DiscountMoney, // 优惠总金额
ErpOrderId: ErpOrderId,//erp订单id ErpOrderId: 0, //erp订单id
Country: this.userInfo.Country,//国家id Country: this.userInfo.Country, //国家id
PlatformTax: 0,//平台税金默认0 PlatformTax: 0, //平台税金默认0
Income: 0,//已收默认0 Income: 0, //已收默认0
Refund: 0,//退款金额默认0 Refund: 0, //退款金额默认0
DOrderType: 1,//1直客订单 DOrderType: 1, //1直客订单
DiDaHotelParams: this.parameters,
}, },
(r) => { (r) => {
if (r.data.resultCode == 1) { if (r.data.resultCode == 1) {
this.step = 3 this.step = 3
this.$message.success("訂單創建成功") this.$message.success("訂單創建成功")
this.goPayHandler(r.data.data) this.goPayHandler(r.data.data)
}else{ } else {
this.CommonJump("/order?type=1", {}); this.CommonJump("/order?type=1", {});
this.$message.error(r.data.message) this.$message.error(r.data.message)
} }
this.loading = false this.loading = false
}) })
}, },
goPayHandler(pay){ goPayHandler(pay) {
let pickuporderScenTickets = localStorage.getItem("pickuporderScenTickets"); let pickuporderScenTickets = localStorage.getItem("pickuporderScenTickets");
pickuporderScenTickets = pickuporderScenTickets ? JSON.parse(pickuporderScenTickets) : []; pickuporderScenTickets = pickuporderScenTickets ? JSON.parse(pickuporderScenTickets) : [];
let i = pickuporderScenTickets.findIndex((x) => x.key == this.orderKey); let i = pickuporderScenTickets.findIndex((x) => x.key == this.orderKey);
...@@ -882,7 +744,9 @@ export default { ...@@ -882,7 +744,9 @@ export default {
optionsFn(cd) { optionsFn(cd) {
return ( return (
cd >= cd >=
date.formatDate(date.addToDate(new Date(), { days: 0 }), "YYYY/MM/DD") date.formatDate(date.addToDate(new Date(), {
days: 0
}), "YYYY/MM/DD")
); );
}, },
// 音频 // 音频
...@@ -948,15 +812,16 @@ export default { ...@@ -948,15 +812,16 @@ export default {
} }
return gradeType; return gradeType;
}, },
// 获取当前用户信息 // 获取当前用户信息
getUserInfoHandler() { getUserInfoHandler() {
let u = this.$user.userInfo; let u = this.$user.userInfo;
if (u) { if (u) {
this.apipost("GetCustomerInfo_post", { Id: u.id }, (r) => { this.apipost("GetCustomerInfo_post", {
Id: u.id
}, (r) => {
if (r.data.resultCode == 1) { if (r.data.resultCode == 1) {
this.userInfo = r.data.data; this.userInfo = r.data.data;
if(r.data.data.Moblie){ if (r.data.data.Moblie) {
this.parameters.guestEmail = r.data.data.Moblie this.parameters.guestEmail = r.data.data.Moblie
this.userInfo.Mobile = r.data.data.Moblie this.userInfo.Mobile = r.data.data.Moblie
} }
...@@ -973,7 +838,6 @@ export default { ...@@ -973,7 +838,6 @@ export default {
if (r.data.resultCode == 1) { if (r.data.resultCode == 1) {
this.countrys = r.data.data.countList; this.countrys = r.data.data.countList;
this.userInfo.Country = this.countrys[0].ID; this.userInfo.Country = this.countrys[0].ID;
this.areaCodes = r.data.data.phoneCountList; this.areaCodes = r.data.data.phoneCountList;
this.changeCountry(this.userInfo.Country); this.changeCountry(this.userInfo.Country);
this.areaCodes.forEach((x) => { this.areaCodes.forEach((x) => {
...@@ -987,20 +851,23 @@ export default { ...@@ -987,20 +851,23 @@ export default {
this.userInfo.areaCode = this.areaCodes.find((x) => x.ID == id).PhoneCode; this.userInfo.areaCode = this.areaCodes.find((x) => x.ID == id).PhoneCode;
}, },
}, },
}; };
</script> </script>
<style> <style>
.order-preview .q-stepper__content { .order-preview .q-stepper__content {
display: none !important; display: none !important;
} }
.order-preview .q-toggle__track {
.order-preview .q-toggle__track {
height: 0.7em; height: 0.7em;
border-radius: 0.35em; border-radius: 0.35em;
opacity: 0.38; opacity: 0.38;
width: 50px; width: 50px;
} }
.order-preview .q-toggle__thumb {
.order-preview .q-toggle__thumb {
top: 0.42em; top: 0.42em;
left: 0.45em; left: 0.45em;
width: 0.5em; width: 0.5em;
...@@ -1008,33 +875,40 @@ export default { ...@@ -1008,33 +875,40 @@ export default {
transition: left 0.22s ease-in-out; transition: left 0.22s ease-in-out;
user-select: none; user-select: none;
z-index: 0; z-index: 0;
} }
.order-preview .q-toggle__inner--truthy .q-toggle__thumb {
.order-preview .q-toggle__inner--truthy .q-toggle__thumb {
left: 0.94em; left: 0.94em;
} }
.order-preview .q-toggle__inner {
.order-preview .q-toggle__inner {
width: 1.9em; width: 1.9em;
} }
.order-preview .q-toggle__label {
.order-preview .q-toggle__label {
margin-top: 12px; margin-top: 12px;
} }
.guest-item:hover{
background: rgba(241,65,108,.04) !important; .guest-item:hover {
} background: rgba(241, 65, 108, .04) !important;
.text-h6Detail { }
.text-h6Detail {
text-align: center; text-align: center;
font-size: 18px; font-size: 18px;
color: #333; color: #333;
font-weight: 700; font-weight: 700;
position: relative; position: relative;
width:100%; width: 100%;
height:50px; height: 50px;
} }
.text-h6Detail i {
.text-h6Detail i {
position: absolute; position: absolute;
right:20px; right: 20px;
top:10px; top: 10px;
cursor: pointer; cursor: pointer;
font-size:23px; font-size: 23px;
} }
</style> </style>
...@@ -11,24 +11,15 @@ ...@@ -11,24 +11,15 @@
</div> </div>
<div class="row q-mb-sm items-center"> <div class="row q-mb-sm items-center">
<div class="q-mr-lg">優惠金額</div> <div class="q-mr-lg">優惠金額</div>
<div <div class="text-subtitle2 text-weight-bolder text-teal" v-if="DiscountMoney > 0">
class="text-subtitle2 text-weight-bolder text-teal"
v-if="DiscountMoney > 0"
>
CNY - {{ moneyFormat(DiscountMoney, 2) }} CNY - {{ moneyFormat(DiscountMoney, 2) }}
</div> </div>
<div class="text-grey-5" v-else>暫無優惠</div> <div class="text-grey-5" v-else>暫無優惠</div>
</div> </div>
<!-- <div class="row q-mb-sm items-center">
<div class="q-mr-lg">支付金額</div>
<div class="text-h6 text-weight-bolder product-price">
CNY {{ moneyFormat(TotalPrice, 2) }}
</div>
</div> -->
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
orderInfo: { orderInfo: {
type: Object, type: Object,
...@@ -38,8 +29,8 @@ export default { ...@@ -38,8 +29,8 @@ export default {
data() { data() {
return { return {
details: null, details: null,
sumPrice: 0,//总金额 sumPrice: 0, //总金额
DiscountMoney: 0,//优惠金额 DiscountMoney: 0, //优惠金额
TotalPrice: 0, // 支付金額 TotalPrice: 0, // 支付金額
} }
}, },
...@@ -49,25 +40,23 @@ export default { ...@@ -49,25 +40,23 @@ export default {
methods: { methods: {
// 获取团的详情 // 获取团的详情
getGroupData() { getGroupData() {
// this.$q.loading.show(); if (!this.orderInfo.ErpOrderId) return this.sumPrice = this.orderInfo.TotalPrice
if(!this.orderInfo.ErpOrderId) return this.sumPrice = this.orderInfo.TotalPrice
this.apipost( this.apipost(
"dmc_post_GetThirdHotelOrder", "dmc_post_GetThirdHotelOrder", {
{ OrderID: this.orderInfo.ErpOrderId }, OrderID: this.orderInfo.ErpOrderId
},
(r) => { (r) => {
if (r.data.resultCode == 1) { if (r.data.resultCode == 1) {
this.dataList = r.data.data; this.dataList = r.data.data;
const {DiscountMoney,TotalPrice} = r.data.data; const {
// sumPrice: 0,//总金额 DiscountMoney,
// DiscountMoney: 0,//优惠金额 TotalPrice
// TotalPrice: 0, // 支付金額 } = r.data.data;
// MailingState: '',//邮寄状态 1自取 2邮寄
this.TotalPrice = TotalPrice; this.TotalPrice = TotalPrice;
this.DiscountMoney = DiscountMoney this.DiscountMoney = DiscountMoney
this.sumPrice = TotalPrice + DiscountMoney this.sumPrice = TotalPrice + DiscountMoney
// this.sumPrice = this.moneyFormat(this.sumPrice, 2)
// this.TotalPrice = this.moneyFormat(this.TotalPrice, 2)
// this.DiscountMoney = this.moneyFormat(this.DiscountMoney, 2)
} else { } else {
this.$q.notify({ this.$q.notify({
type: "negative", type: "negative",
...@@ -76,11 +65,11 @@ export default { ...@@ -76,11 +65,11 @@ export default {
timeout: 2000, // 以毫秒为单位; 0意味着没有超时 timeout: 2000, // 以毫秒为单位; 0意味着没有超时
}); });
} }
// this.$q.loading.hide();
}, },
null null
); );
}, },
} }
} }
</script> </script>
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