Commit 4e93c477 authored by 吴春's avatar 吴春

解决冲突

parents f96ba291 46faa1bb
......@@ -22,7 +22,7 @@
"lodash-es": "^4.17.21",
"qrcode.vue": "^1.7.0",
"qrcodejs2": "^0.0.2",
"quasar": "^1.22.5",
"quasar": "1.22.5",
"swiper": "3.0.4",
"v-viewer": "^1.6.4",
"vue-awesome-swiper": "^3.0.4",
......
......@@ -25,8 +25,8 @@ Vue.prototype.domainManager = function() {
if (domainNameUrl.indexOf('testerp.oytour') !== -1) {
domainUrl = "http://testapi.oytour.com";
} else if (domainNameUrl.indexOf('oytour') !== -1) {
// domainUrl = "http://reborn.oytour.com";
domainUrl = 'http://192.168.10.206' //'http://192.168.10.206:8015' ''http://192.168.10.11:8083' '
domainUrl = "http://reborn.oytour.com";
domainUrl = 'http://192.168.10.206:8015' //'http://192.168.10.206:8015' ''http://192.168.10.11:8083' '
}
var obj = {
//主地址
......@@ -41,7 +41,7 @@ Vue.prototype.domainManager = function() {
//获取当前域名
Vue.prototype.GetDomain = function() {
var domainNameUrl = window.location.hostname;
domainNameUrl = "www.oytour.com";
domainNameUrl = "t.oytour.com";
return domainNameUrl;
}
Vue.prototype.groupBy = function(array, f) {
......
<<<<<<< HEAD
=======
>>>>>>> c020ad40be0c4ddc009c7e515bf5c6c1ac25638c
<style scoped>
.header-box {
max-width: 1200px;
......
......@@ -145,6 +145,7 @@
@focus="searchFocusHandler"
@blur="searchBlurHandler"
@keyup="searchChangeHandler"
@keypress.enter.native="goSearchHandler"
/>
<q-btn
dark-percentage
......
<template>
<div class="items-start q-mt-lg travel-list" :class="$q.platform.is.desktop ? 'row' : 'colmuns'">
<div
class="items-start q-mt-lg travel-list"
:class="$q.platform.is.desktop ? 'row' : 'colmuns'"
>
<div class="col-3" :class="$q.platform.is.desktop ? 'q-mr-lg' : 'q-ma-md'">
<q-card flat class="rounded-borders q-py-md">
<div class="text-subtitle1 text-weight-bold q-mx-md">篩選目的地</div>
......@@ -61,7 +64,7 @@
:options="optionsFn"
range
@range-end="dateRangeHandler"
mask="YYYY/MM/DD"
mask="YYYY-MM-DD"
></q-date>
</div>
</q-popup-proxy>
......@@ -78,7 +81,7 @@
:min="priceModel.min"
:max="priceModel.max"
:step="1"
@input="testHandler"
@change="testHandler"
color="primary"
class="q-mt-md"
/>
......@@ -152,14 +155,8 @@
</div>
<div class="q-mt-lg" v-if="!$q.loading.isActive && DataList.length > 0">
<div
class="
rounded-borders
cursor-pointer
overflow-hidden
bg-white
"
:class="$q.platform.is.desktop ? 'row q-mb-md' : 'colmuns q-ma-md'"
class="rounded-borders cursor-pointer overflow-hidden bg-white"
:class="$q.platform.is.desktop ? 'row q-mb-md' : 'colmuns q-ma-md'"
@click="GotoDetails(x)"
v-for="(x, i) in DataList"
:key="i"
......@@ -169,8 +166,8 @@
:ratio="1"
spinner-color="grey"
spinner-size="20px"
:width="$q.platform.is.desktop ? '272px' : ''"
:height="$q.platform.is.desktop ? '' : '200px'"
:width="$q.platform.is.desktop ? '272px' : ''"
:height="$q.platform.is.desktop ? '' : '200px'"
class="bg-grey-3"
/>
<div class="q-pa-md col column">
......@@ -194,10 +191,7 @@
/>
</div>
<div
class="
text-subtitle2 text-grey-6 text-weight-regular
ellipsis-2-lines
"
class="text-subtitle2 text-grey-6 text-weight-regular ellipsis-2-lines"
style="line-height: 1.6"
>
{{ x.productRecommend }}
......@@ -371,9 +365,9 @@ export default {
TotalCount: 0,
PageCount: 0,
priceModel: {
min: 1,
max: 100000,
}
min: 1,
max: 30000,
},
};
},
created() {
......@@ -383,10 +377,10 @@ export default {
this.initGoods();
this.msg.priceRange = {
min: 1,
max: 100000,
max: 30000,
};
this.msg.minPrice = 0;
this.msg.maxPrice = 100000;
this.msg.maxPrice = 30000;
this.dayArray.forEach((x) => {
x.checked = false;
});
......@@ -395,31 +389,35 @@ export default {
},
mounted() {
var CategoryName = this.getUrlKey("CategoryName", window.location.href);
if(CategoryName) {
let list = this.goodsType.find(item => item.CategoryName === CategoryName)
let arr = []
list.children.forEach(item => {
arr.push(item.Id)
if(item.children && item.children.length) {
item.children.forEach(item2 => {
arr.push(item2.Id)
})
if (CategoryName) {
let list = this.goodsType.find(
(item) => item.CategoryName === CategoryName
);
let arr = [];
list.children.forEach((item) => {
arr.push(item.Id);
if (item.children && item.children.length) {
item.children.forEach((item2) => {
arr.push(item2.Id);
});
}
})
this.ticked = arr
}
});
this.ticked = arr;
}
},
methods: {
handleSelected(target) {
console.log("handleSelected", target);
},
handleTicked(target) {
this.msg.pageIndex = 1
this.ticked = target;
this.goSearchHandler();
},
handleAreaTicked(target) {
this.msg.pageIndex = 1
this.areaTicked = target;
console.log('this.areaTicked', target)
console.log("this.areaTicked", target);
this.msg.placeIds = this.getChoseAddressCity().join(",");
this.goSearchHandler();
},
......@@ -475,22 +473,26 @@ export default {
// },
chosenSortHandler(x) {
this.msg.orderBy = x.value;
this.msg.pageIndex = 1
this.goSearchHandler();
},
getChoseAddressCity() {
let result = [];
function treeToArray(tree) {
return tree.reduce((res, item) => {
const { children, ...i } = item
return res.concat(i, children && children.length ? treeToArray(children) : [])
}, [])
const { children, ...i } = item;
return res.concat(
i,
children && children.length ? treeToArray(children) : []
);
}, []);
}
const areaList = treeToArray(this.areaList)
console.log('>>>>>>>>>>>>>>>>>>>>>', areaList)
const areaList = treeToArray(this.areaList);
console.log(">>>>>>>>>>>>>>>>>>>>>", areaList);
areaList.forEach((item) => {
if(this.areaTicked.includes(item.Id)) {
let arr = item.DestinationList.map((item) => item.ID);
result = result.concat(arr);
if (this.areaTicked.includes(item.Id)) {
let arr = item.DestinationList.map((item) => item.ID);
result = result.concat(arr);
}
});
return result;
......@@ -518,8 +520,8 @@ export default {
}
});
this.msg.dayNumList = arr;
this.msg.pageIndex = 1
this.goSearchHandler();
},
optionsFn(cd) {
return (
......@@ -531,12 +533,14 @@ export default {
this.$forceUpdate();
this.msg.minPrice = e.min;
this.msg.maxPrice = e.max;
this.msg.pageIndex = 1
this.goSearchHandler();
},
dateRangeHandler(e) {
this.msg.startDate = `${e.from.year}/${e.from.month}/${e.from.day}`;
this.msg.endDate = `${e.to.year}/${e.to.month}/${e.to.day} `;
this.$refs.qDateProxy.hide();
this.msg.pageIndex = 1
this.goSearchHandler();
},
initGoods() {
......@@ -571,48 +575,66 @@ export default {
});
this.goodsType.push(x);
});
this.goodsTypeJSON = JSON.stringify(this.goodsType)
this.goodsTypeJSON = JSON.stringify(this.goodsType);
if (this.msg.categoryId) {
this.$nextTick(() => {
this.$refs.category.setTicked([...new Set(arr)], true);
});
}
},
dfs (tree, ope, filter) {
const walkAndCopy = (tree, depth = 1) => {
if(filter(tree)) {
const copy = {...tree}
ope(tree.Name, depth)
if(tree.children) {
copy.children = []
tree.children.forEach((node) => {
const subTree = walkAndCopy(node, depth + 1)
subTree && copy.children.push(subTree)
})
}
return copy
} else if(tree && tree.children && tree.children.length) {
const copy = {...tree}
ope(tree.Name, depth)
copy.Name = tree.Name
if(tree.children) {
copy.children = []
tree.children.forEach((node) => {
const subTree = walkAndCopy(node, depth + 1)
subTree && copy.children.push(subTree)
})
}
return copy
dfs(tree, ope, filter) {
const walkAndCopy = (tree, depth = 1) => {
if (filter(tree)) {
const copy = { ...tree };
ope(tree.Name, depth);
if (tree.children) {
copy.children = [];
tree.children.forEach((node) => {
const subTree = walkAndCopy(node, depth + 1);
subTree && copy.children.push(subTree);
});
}
return copy;
} else if (tree && tree.children && tree.children.length) {
const copy = { ...tree };
ope(tree.Name, depth);
copy.Name = tree.Name;
if (tree.children) {
copy.children = [];
tree.children.forEach((node) => {
const subTree = walkAndCopy(node, depth + 1);
subTree && copy.children.push(subTree);
});
}
return copy;
}
}
return walkAndCopy(tree)
},
};
return walkAndCopy(tree);
},
changeAddrSearchHandler(v) {
this.areaListJSONTMP = JSON.parse(JSON.stringify(this.areaListJSON));
let tree = this.dfs({Name: '', children: this.areaListJSONTMP}, (name, depth) => {}, ({Name}) => {return Name.indexOf(v) !== -1})
tree = this.dfs(tree, (name, depth) => {}, ({Name}) => {return Name.indexOf(v) !== -1})
tree = this.dfs(tree, (name, depth) => {}, ({Name}) => {return Name.indexOf(v) !== -1})
this.areaList = tree.children
let tree = this.dfs(
{ Name: "", children: this.areaListJSONTMP },
(name, depth) => {},
({ Name }) => {
return Name.indexOf(v) !== -1;
}
);
tree = this.dfs(
tree,
(name, depth) => {},
({ Name }) => {
return Name.indexOf(v) !== -1;
}
);
tree = this.dfs(
tree,
(name, depth) => {},
({ Name }) => {
return Name.indexOf(v) !== -1;
}
);
this.areaList = tree.children;
// this.areaList.forEach(x => {
// x.isShow = x.Name.indexOf(v) != -1;
// x.isShowChild = false;
......@@ -647,7 +669,10 @@ export default {
var companyId = -1;
if (localStorage.groupinfo) {
var groupinfo = JSON.parse(localStorage.groupinfo);
companyId = groupinfo.siteList[0]&&groupinfo.siteList[0].companyId?groupinfo.siteList[0].companyId:-1;
companyId =
groupinfo.siteList[0] && groupinfo.siteList[0].companyId
? groupinfo.siteList[0].companyId
: -1;
}
if (localStorage.b2bUser) {
var b2bUser = JSON.parse(window.localStorage.getItem("b2bUser"));
......@@ -665,9 +690,9 @@ export default {
if (res.data.resultCode == 1) {
this.PageCount = res.data.data.pageCount;
this.TotalCount = res.data.data.pageData.count;
this.TotalCount = res.data.data.count;
var tempArray = res.data.data.pageData.list;
console.log('getSearch data', tempArray)
console.log("getSearch data", tempArray);
if (tempArray && tempArray.length > 0) {
// tempArray.forEach(item => {
// if (item.imgCover && item.imgCover != "") {
......@@ -682,7 +707,7 @@ export default {
// }
// });
this.DataList = tempArray;
this.renderSearchInfo(res.data.data.pageData.condition)
this.renderSearchInfo(res.data.data.pageData.condition);
this.$forceUpdate();
}
}
......@@ -691,52 +716,91 @@ export default {
);
},
renderSearchInfo(condition) {
if(!condition.length) {
return
if (!condition.length) {
return;
}
let areaInfo = condition.find(item => item.type === 1).list
let dayInfo = condition.find(item => item.type === 2).list
let priceInfo = condition.find(item => item.type === 3)
let categoryInfo = condition.find(item => item.type === 4).list
// this.areaTicked = areaInfo;
let areaInfo = condition.find((item) => item.type === 1).list;
let dayInfo = condition.find((item) => item.type === 2).list;
let priceInfo = condition.find((item) => item.type === 3);
let categoryInfo = condition.find((item) => item.type === 4).list;
// this.areaTicked = areaInfo;
this.areaListJSONTMP = JSON.parse(JSON.stringify(this.areaListJSON));
let tree = this.dfs({Name: '', children: this.areaListJSONTMP}, (name, depth) => {}, ({Id}) => {return areaInfo.includes(Id)})
tree = this.dfs(tree, (name, depth) => {}, ({Id}) => {return areaInfo.includes(Id)})
tree = this.dfs(tree, (name, depth) => {}, ({Id}) => {return areaInfo.includes(Id)})
this.areaList = tree.children
let tree = this.dfs(
{ Name: "", children: this.areaListJSONTMP },
(name, depth) => {},
({ Id }) => {
return areaInfo.includes(Id);
}
);
tree = this.dfs(
tree,
(name, depth) => {},
({ Id }) => {
return areaInfo.includes(Id);
}
);
tree = this.dfs(
tree,
(name, depth) => {},
({ Id }) => {
return areaInfo.includes(Id);
}
);
this.areaList = tree.children;
const categoryTmp = JSON.parse(this.goodsTypeJSON);
let category = this.dfs({Name: '', children: categoryTmp}, (name, depth) => {}, (item) => {return categoryInfo.includes(item.Id)})
category = this.dfs(category, (name, depth) => {}, (item) => {return categoryInfo.includes(item.Id)})
category = this.dfs(category, (name, depth) => {}, (item) => {return categoryInfo.includes(item.Id)})
this.goodsType = category.children
// this.ticked = categoryInfo;
console.log('this.areaListJSONTMP', this.areaListJSONTMP, this.areaList)
this.priceModel = {min: priceInfo.minPrice, max: priceInfo.maxPrice}
this.msg.priceRange = {min: priceInfo.minPrice, max: priceInfo.maxPrice}
let arr = []
dayInfo.forEach(item => {
if(item < 6) {
arr.push(item)
} else if(item === 7 || item ===8) {
arr.push(7)
} else if(item === 8 || item ===10) {
arr.push(8)
} else {
arr.push(9)
}
})
console.log('dayInfo', arr, dayInfo, this.dayArray)
// arr = [... new Set(arr)]
// this.dayArray.forEach(item => {
// if(arr.includes(item.id)) {
// item.checked = true
// }
// })
this.dayArray = this.dayArray.filter(item => arr.includes(item.id))
// this.msg.dayNumList = arr;
let category = this.dfs(
{ Name: "", children: categoryTmp },
(name, depth) => {},
(item) => {
return categoryInfo.includes(item.Id);
}
);
category = this.dfs(
category,
(name, depth) => {},
(item) => {
return categoryInfo.includes(item.Id);
}
);
category = this.dfs(
category,
(name, depth) => {},
(item) => {
return categoryInfo.includes(item.Id);
}
);
this.goodsType = category.children;
// this.ticked = categoryInfo;
console.log("this.areaListJSONTMP", this.areaListJSONTMP, this.areaList);
this.priceModel = { min: priceInfo.minPrice, max: priceInfo.maxPrice };
this.msg.priceRange = {
min: priceInfo.minPrice,
max: priceInfo.maxPrice,
};
let arr = [];
dayInfo.forEach((item) => {
if (item < 6) {
arr.push(item);
} else if (item === 7 || item === 8) {
arr.push(7);
} else if (item === 8 || item === 10) {
arr.push(8);
} else {
arr.push(9);
}
});
console.log("dayInfo", arr, dayInfo, this.dayArray);
// arr = [... new Set(arr)]
// this.dayArray.forEach(item => {
// if(arr.includes(item.id)) {
// item.checked = true
// }
// })
this.dayArray = this.dayArray.filter((item) => arr.includes(item.id));
// this.msg.dayNumList = arr;
},
GotoDetails(item) {
this.CommonJump(item,{}, 'blank');
this.CommonJump(item, {}, "blank");
},
},
};
......@@ -746,7 +810,6 @@ this.dayArray = this.dayArray.filter(item => arr.includes(item.id))
.addr-list:hover {
background: #f1416c1a;
}
</style>
<style scoped>
.price-stuff {
......
......@@ -381,8 +381,10 @@ export default {
this.chosenObj.startDate = this.p.startDate;
this.calcMoney();
if(this.p.unionCityList && this.p.unionCityList.length>0 && this.p.originalB2CPrice==this.p.RealPrice){
if(this.p.unionCityList[0].cityId==this.travel.startCityId){
this.changeCityHandler(this.p.unionCityList[0])
}
this.changeCityHandler(this.p.unionCityList[0])
}
}
......
......@@ -514,8 +514,8 @@
<q-separator color="grey-2" class="q-my-md"/>
<div class="text-grey-9">
<div class="row q-mb-sm" v-if="chosenObj.Count>0&&CarObj">
<div class="col">{{CarObj.CarName}} x {{ chosenObj.Count }}</div>
<div>{{details.CurrencyCode}} {{ moneyFormat(OrderDate.originalB2CPrice,2) }}</div>
<div class="col">{{CarObj.CarName}} x {{ chosenObj.Count }} </div>
<div>CNY {{ moneyFormat(OrderDate.originalB2CPrice,2) }}</div>
</div>
<hr
style="border: none; border-top: 1px dashed #eee !important"
......
......@@ -570,7 +570,7 @@
{
SurName: this.parameters.Name?this.parameters.Name:this.userInfo.Surname+this.userInfo.Name,
Name: '',
ContactNumber: this.userInfo.Mobile,// 联系电话
ContactNumber: this.parameters.Mobile?this.parameters.Mobile:this.userInfo.Mobile,// 联系电话
Mailbox: this.userInfo.Mailbox,//邮箱
GoodsId: this.parameters.CouponsId,//商品id
GoodsName: this.details.Name,//商品名称
......
<template>
<div style="min-height: 80vh">
<div
style="
position: fixed;
left: 0;
right: 0;
top: 0;
border-top: 1px solid #eee;
box-shadow: 0 2px 8px rgb(0 0 0 / 20%);
z-index: 999;
"
class="bg-white"
v-if="
(currentHeight > navs[0].top + 100 && $q.platform.is.desktop) ||
(currentHeight > priceListHeight &&
currentHeight < navs[0].top &&
$q.platform.is.mobile)
"
:style="{ transform: stickyHeight }"
>
<div v-if="dataList && !$q.loading.isActive">
<div
style="max-width: 1200px; margin-left: auto; margin-right: auto"
:class="{ 'q-px-md': $q.screen.width < 1220 }"
class="q-py-sm row items-center"
style="
position: fixed;
left: 0;
right: 0;
top: 0;
border-top: 1px solid #eee;
box-shadow: 0 2px 8px rgb(0 0 0 / 20%);
z-index: 999;
"
class="bg-white"
v-if="
(currentHeight > navs[0].top + 100 && $q.platform.is.desktop) ||
(currentHeight > priceListHeight &&
currentHeight < navs[0].top &&
$q.platform.is.mobile)
"
:style="{ transform: stickyHeight }"
>
<span
class="col product-price text-subtitle1 text-weight-bold"
style="text-align: left"
<div
style="max-width: 1200px; margin-left: auto; margin-right: auto"
:class="{ 'q-px-md': $q.screen.width < 1220 }"
class="q-py-sm row items-center"
>
<span
>CNY
{{ moneyFormat(dataList.priceList[0].originalB2CPrice, 0) }}</span
class="col product-price text-subtitle1 text-weight-bold"
style="text-align: left"
>
<span class="q-ml-sm f12 text-grey-7"></span>
</span>
<q-btn
color="primary"
unelevated
class="q-px-xl"
label="選擇方案"
@click="goScrollHandler(priceListHeight)"
/>
</div>
</div>
<div
v-if="dataList"
style="max-width: 1200px; margin-left: auto; margin-right: auto"
:class="{ 'q-px-md': $q.screen.width < 1220 }"
>
<div class="row items-center q-mt-md q-mb-lg">
<q-breadcrumbs
class="col f12 no-wrap q-mr-md"
v-if="dataList"
style="font-size: 13px"
>
<q-breadcrumbs-el
icon="home"
label="首頁"
class="cursor-pointer"
@click="CommonJump('/index', {})"
<span
>CNY
{{ moneyFormat(dataList.priceList[0].originalB2CPrice, 0) }}</span
>
<span class="q-ml-sm f12 text-grey-7"></span>
</span>
<q-btn
color="primary"
unelevated
class="q-px-xl"
label="選擇方案"
@click="goScrollHandler(priceListHeight)"
/>
<q-breadcrumbs-el :label="dataList.aimPlaceName" class="cursor-pointer" />
<!-- <q-breadcrumbs-el>
</div>
</div>
<div
v-if="dataList"
style="max-width: 1200px; margin-left: auto; margin-right: auto"
:class="{ 'q-px-md': $q.screen.width < 1220 }"
>
<div class="row items-center q-mt-md q-mb-lg">
<q-breadcrumbs
class="col f12 no-wrap q-mr-md"
v-if="dataList"
style="font-size: 13px"
>
<q-breadcrumbs-el
icon="home"
label="首頁"
class="cursor-pointer"
@click="CommonJump('/index', {})"
/>
<q-breadcrumbs-el
:label="dataList.aimPlaceName"
class="cursor-pointer"
/>
<!-- <q-breadcrumbs-el>
<span v-for="(x, i) in citys" :key="i">
<span class="cursor-pointer">{{ x }} </span>
<span v-if="i + 1 != citys.length" class="q-mr-sm"></span>
</span>
</q-breadcrumbs-el> -->
<q-breadcrumbs-el
v-if="$q.platform.is.desktop"
:label="dataList.title"
class="text-grey-6 ellipsis"
/>
</q-breadcrumbs>
<div class="text-grey-6 f12">Product No. # {{ dataList.id }}</div>
</div>
<div style="padding-bottom: calc((100% - 0px) / 3); position: relative">
<div
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0"
class="overflow-hidden rounded-borders"
>
<slider
ref="slider"
:options="options"
@slide="slideHandler"
style="height: 100%"
<q-breadcrumbs-el
v-if="$q.platform.is.desktop"
:label="dataList.title"
class="text-grey-6 ellipsis"
/>
</q-breadcrumbs>
<div class="text-grey-6 f12">Product No. # {{ dataList.id }}</div>
</div>
<div style="padding-bottom: calc((100% - 0px) / 3); position: relative">
<div
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0"
class="overflow-hidden rounded-borders"
>
<slideritem
v-if="dataList.videoStr"
style="width: 80%"
class="q-mx-sm"
key="video"
<slider
ref="slider"
:options="options"
@slide="slideHandler"
style="height: 100%"
>
<vue-core-video-players
ref="video"
:src="dataList.videoStr"
:title="dataList.title"
:muted="true"
:autoplay="false"
@play="playHandler"
@pause="pauseHandler"
@seeked="seekedChangeHandler"
@timeupdate="timeChangeHandler"
logo="../statics/img/transparent_logo.png"
:loop="false"
id="trip_video"
/>
</slideritem>
<slideritem
v-for="(item, index) in dataList.imgCover"
:key="index"
style="width: 80%"
class="q-mx-sm"
>
<q-img :src="item.Url" spinner-color="grey" spinner-size="20px" />
</slideritem>
<div slot="loading">loading...</div>
</slider>
<slideritem
v-if="dataList.videoStr"
style="width: 80%"
class="q-mx-sm"
key="video"
>
<vue-core-video-players
ref="video"
:src="dataList.videoStr"
:title="dataList.title"
:muted="true"
:autoplay="false"
@play="playHandler"
@pause="pauseHandler"
@seeked="seekedChangeHandler"
@timeupdate="timeChangeHandler"
logo="../statics/img/transparent_logo.png"
:loop="false"
id="trip_video"
/>
</slideritem>
<slideritem
v-for="(item, index) in dataList.imgCover"
:key="index"
style="width: 80%"
class="q-mx-sm"
>
<q-img
:src="item.Url"
spinner-color="grey"
spinner-size="20px"
/>
</slideritem>
<div slot="loading">loading...</div>
</slider>
</div>
</div>
</div>
<div
class="q-py-lg"
:class="{ row: $q.platform.is.desktop, column: $q.platform.is.mobile }"
style="border-bottom: 1px solid #eee"
>
<div class="col q-mr-lg">
<div class="text-h6 ellipsis-2-lines">{{ dataList.title }}</div>
<div class="q-mt-md f12 text-grey-6">
<q-icon
name="iconfont icondingweixiao"
size="16px"
class="q-mr-sm"
/>
<span
>{{ dataList.aimPlaceName }}
<div
class="q-py-lg"
:class="{
row: $q.platform.is.desktop,
column: $q.platform.is.mobile,
}"
style="border-bottom: 1px solid #eee"
>
<div class="col q-mr-lg">
<div class="text-h6 ellipsis-2-lines">{{ dataList.title }}</div>
<div class="q-mt-md f12 text-grey-6">
<q-icon
name="iconfont icondingweixiao"
size="16px"
class="q-mr-sm"
/>
<span
>{{ dataList.aimPlaceName }}
<span class="q-mx-sm">途徑:</span>
<span class="q-mx-sm">途徑:</span>
<span v-for="(x, i) in citys" :key="i">
<span class="cursor-pointer">{{ x }} </span>
<span v-if="i + 1 != citys.length" class="q-mr-sm">,</span>
<span v-for="(x, i) in citys" :key="i">
<span class="cursor-pointer">{{ x }} </span>
<span v-if="i + 1 != citys.length" class="q-mr-sm">,</span>
</span>
</span>
</span>
</div>
<div class="q-mt-md row">
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconOwner-1"
label=" 印象自組團"
/>
<q-chip
v-if="dataList.dayList"
class="transparent q-mr-xl no-padding"
square
icon="iconfont icontime"
:label="` 行程時間 ${dataList.dayList.length} 天`"
/>
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconnetwork-fill"
label="日本語/中文 導覽"
/>
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconcancel"
label="取消需二次確認"
/>
</div>
</div>
<div class="q-mt-md row">
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconOwner-1"
label=" 印象自組團"
/>
<q-chip v-if="dataList.dayList"
class="transparent q-mr-xl no-padding"
square
icon="iconfont icontime"
:label="` 行程時間 ${dataList.dayList.length} 天`"
/>
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconnetwork-fill"
label="日本語/中文 導覽"
/>
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconcancel"
label="取消需二次確認"
<div
:style="{ width: $q.platform.is.mobile ? '100%' : '293px' }"
class="bg-grey-3 rounded-borders q-px-md"
:class="{
'q-py-lg': $q.platform.is.desktop,
'row justify-between items-center q-mt-sm q-py-sm':
$q.platform.is.mobile,
}"
>
<div
class="product-price text-h6"
v-if="dataList.priceList.length > 0"
>
<!-- CNY:{{ dataList. }} -->
CNY:{{ moneyFormat(dataList.priceList[0].originalB2CPrice, 0) }}
<span class="f12 text-grey-6"></span>
</div>
<div v-else class="text-subtitle1 text-grey-6">暫無報價</div>
<q-btn
color="primary"
label="選擇方案"
unelevated
:disable="dataList.priceList.length > 0 ? false : true"
@click="goScrollHandler(priceListHeight)"
:class="{ 'q-mt-md full-width': $q.platform.is.desktop }"
/>
</div>
</div>
<div
:style="{ width: $q.platform.is.mobile ? '100%' : '293px' }"
class="bg-grey-3 rounded-borders q-px-md"
:class="{
'q-py-lg': $q.platform.is.desktop,
'row justify-between items-center q-mt-sm q-py-sm':
$q.platform.is.mobile,
}"
>
<div class="q-mt-lg" v-if="dataList.productRecommend">
<div
class="product-price text-h6"
v-if="dataList.priceList.length > 0"
class="q-mt-sm"
v-for="(x, i) in dataList.productRecommend.split('\n')"
:key="i"
>
<!-- CNY:{{ dataList. }} -->
CNY:{{ moneyFormat(dataList.priceList[0].originalB2CPrice, 0) }}
<span class="f12 text-grey-6"></span>
<q-icon
name="iconfont iconhongqi"
color="primary"
size="16px"
class="q-mr-md"
/>
{{ x }}
</div>
<div v-else class="text-subtitle1 text-grey-6">暫無報價</div>
<q-btn
color="primary"
label="選擇方案"
unelevated
:disable="dataList.priceList.length>0?false:true"
@click="goScrollHandler(priceListHeight)"
:class="{ 'q-mt-md full-width': $q.platform.is.desktop }"
/>
</div>
</div>
<div class="q-mt-lg" v-if="dataList.productRecommend">
<div
class="q-mt-sm"
v-for="(x, i) in dataList.productRecommend.split('\n')"
:key="i"
<div
class="bg-white"
style="
position: fixed;
left: 0;
right: 0;
top: -1px;
border-top: 1px solid #eee;
box-shadow: 0 2px 8px rgb(0 0 0 / 20%);
z-index: 999;
"
v-if="currentHeight > priceListHeight + 800 && $q.platform.is.mobile"
:style="{ transform: stickyHeight }"
>
<q-tabs
v-model="tab"
dense
class="text-grey"
active-color="primary"
indicator-color="primary"
align="left"
narrow-indicator
>
<q-icon
name="iconfont iconhongqi"
color="primary"
size="16px"
class="q-mr-md"
/>
{{ x }}
</div>
<q-tab
v-for="(x, i) in navs"
:key="i"
@click="goScrollHandler(x.top + 20)"
:name="x.display"
:label="x.display"
></q-tab>
</q-tabs>
</div>
</div>
<div
class="bg-white"
style="
position: fixed;
left: 0;
right: 0;
top: -1px;
border-top: 1px solid #eee;
box-shadow: 0 2px 8px rgb(0 0 0 / 20%);
z-index: 999;
"
v-if="currentHeight > priceListHeight + 800 && $q.platform.is.mobile"
:style="{ transform: stickyHeight }"
>
<q-tabs
v-model="tab"
dense
class="text-grey"
active-color="primary"
indicator-color="primary"
align="left"
narrow-indicator
<div
v-if="dataList"
class="q-pa-lg bg-grey-3 q-mt-lg text-grey-9"
ref="pricelist"
>
<q-tab
v-for="(x, i) in navs"
:key="i"
@click="goScrollHandler(x.top + 20)"
:name="x.display"
:label="x.display"
></q-tab>
</q-tabs>
</div>
<div
v-if="dataList"
class="q-pa-lg bg-grey-3 q-mt-lg text-grey-9"
ref="pricelist"
>
<div style="max-width: 1200px; margin-left: auto; margin-right: auto">
<div class="text-h6">選擇方案</div>
<div
class="rounded-borders bg-white q-pa-md q-mt-md"
v-if="$q.platform.is.mobile"
>
<q-field
class="q-mt-md"
stack-label
label="選擇日期、選項"
standout
dense
<div style="max-width: 1200px; margin-left: auto; margin-right: auto">
<div class="text-h6">選擇方案</div>
<div
class="rounded-borders bg-white q-pa-md q-mt-md"
v-if="$q.platform.is.mobile"
>
<div class="self-center full-width no-outline" tabindex="0">
{{ currentPrice.startDate }}
</div>
<q-popup-proxy ref="qDateProxy">
<calendar
class="bg-white q-pa-md"
:priceList="dataList.priceList"
@change="changeChosenDateHandler"
ref="calendarMobile"
></calendar>
</q-popup-proxy>
</q-field>
<q-field
class="q-mt-md"
stack-label
label="選擇日期、選項"
standout
dense
>
<div class="self-center full-width no-outline" tabindex="0">
{{ currentPrice.startDate }}
</div>
<q-popup-proxy ref="qDateProxy">
<calendar
class="bg-white q-pa-md"
:priceList="dataList.priceList"
@change="changeChosenDateHandler"
ref="calendarMobile"
></calendar>
</q-popup-proxy>
</q-field>
<order-preview
:travel="dataList"
:price="currentPrice"
......@@ -283,323 +295,357 @@
@changeCity="changeCityHandler"
v-if="currentPrice && currentPrice.startDate"
></order-preview>
</div>
</div>
<div class="text-h6 q-pt-lg" v-if="$q.platform.is.mobile">
所選方案詳情
</div>
<div
class="bg-white rounded-borders q-mt-md"
v-if="dataList.priceList.length > 0"
>
<div class="q-pa-md row">
<div class="col">
<div
class="text-subtitle1 text-weight-bold row items-center"
v-if="$q.platform.is.desktop"
>
<span class="q-mr-md">行程標準出行方案</span>
<q-chip
square
color="orange"
size="sm"
text-color="grey-2"
class="text-light"
label="取消需二次確認"
/>
</div>
<div class="text-grey f12">
<ul class="q-pl-md no-margin">
<li v-for="(x, i) in warnBuy" :class="{'q-mt-md':$q.platform.is.desktop|(i!=0&&$q.platform.is.mobile)}" :key="i">
{{ x }}
</li>
</ul>
</div>
</div>
<div class="" v-if="$q.platform.is.desktop">
<div class="row items-center">
<span class="product-price text-h6 q-mr-md"
>CNY
{{
moneyFormat(dataList.priceList[0].originalB2CPrice, 0)
}}</span
>
<q-btn
color="primary"
outline
:label="showOrderPreview ? '取消選擇' : '選擇'"
@click="changeShowOrderPreviewHandler"
class="q-px-lg"
/>
</div>
<div class="text-info q-mt-md text-right">
最早可預訂日期:{{ dataList.priceList[0].startDate }}
</div>
</div>
<div class="text-h6 q-pt-lg" v-if="$q.platform.is.mobile">
所選方案詳情
</div>
<div
class="q-pa-md"
style="border-top: 1px solid #eee"
v-if="showOrderPreview"
class="bg-white rounded-borders q-mt-md"
v-if="dataList.priceList.length > 0"
>
<div class="q-pa-md bg-grey-2 row items-center rounded-borders">
<div class="text-subtitle2 text-weight-bold q-mr-xl">
關於此方案
<div class="q-pa-md row">
<div class="col">
<div
class="text-subtitle1 text-weight-bold row items-center"
v-if="$q.platform.is.desktop"
>
<span class="q-mr-md">行程標準出行方案</span>
<q-chip
square
color="orange"
size="sm"
text-color="grey-2"
class="text-light"
label="取消需二次確認"
/>
</div>
<div class="text-grey f12">
<ul class="q-pl-md no-margin">
<li
v-for="(x, i) in warnBuy"
:class="{
'q-mt-md':
$q.platform.is.desktop
| (i != 0 && $q.platform.is.mobile),
}"
:key="i"
>
{{ x }}
</li>
</ul>
</div>
</div>
<div class="" v-if="$q.platform.is.desktop">
<div class="row items-center">
<span class="product-price text-h6 q-mr-md"
>CNY
{{
moneyFormat(dataList.priceList[0].originalB2CPrice, 0)
}}</span
>
<q-btn
color="primary"
outline
:label="showOrderPreview ? '取消選擇' : '選擇'"
@click="changeShowOrderPreviewHandler"
class="q-px-lg"
/>
</div>
<div class="text-info q-mt-md text-right">
最早可預訂日期:{{ dataList.priceList[0].startDate }}
</div>
</div>
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconcancel"
label="取消需二次確認"
/>
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconroundcheck"
label="6個工作日內(不含例休假)確認"
/>
</div>
<div class="q-mt-lg row" v-if="$q.platform.is.desktop">
<div class="col">
<calendar
:priceList="dataList.priceList"
@change="changeChosenDateHandler"
ref="calendar"
></calendar>
<div
class="q-pa-md"
style="border-top: 1px solid #eee"
v-if="showOrderPreview"
>
<div class="q-pa-md bg-grey-2 row items-center rounded-borders">
<div class="text-subtitle2 text-weight-bold q-mr-xl">
關於此方案
</div>
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconcancel"
label="取消需二次確認"
/>
<q-chip
class="transparent q-mr-xl no-padding"
square
icon="iconfont iconroundcheck"
label="6個工作日內(不含例休假)確認"
/>
</div>
<div class="col q-ml-xl">
<order-preview
:price="currentPrice"
@reset="resetHandler"
:travel="dataList"
@changeCity="changeCityHandler"
></order-preview>
<div class="q-mt-lg row" v-if="$q.platform.is.desktop">
<div class="col">
<calendar
:priceList="dataList.priceList"
@change="changeChosenDateHandler"
ref="calendar"
></calendar>
</div>
<div class="col q-ml-xl">
<order-preview
:price="currentPrice"
@reset="resetHandler"
:travel="dataList"
@changeCity="changeCityHandler"
></order-preview>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
v-if="dataList"
style="max-width: 1200px; margin-left: auto; margin-right: auto"
class="q-mt-xl row"
:class="{ 'q-px-md': $q.screen.width < 1220 && $q.screen.width > 760 }"
>
<div
class="col q-ml-xl position-relative"
v-if="
dataList.priceList.length>0&&(!(dataList.priceList && dataList.priceList[0].teamType==2)&&!(dataList.currentPrice && dataList.currentPrice.teamType==2)) &&
currentHeight > days[0].top - 60 &&
currentHeight < navs[2].top &&
$q.platform.is.desktop
"
>
<div style="position: sticky; top: 100px">
<div
class="trip-module text-subtitle2 cursor-pointer q-mb-lg"
v-for="(x, i) in days"
:key="i"
@click="goScrollHandler(x.top + 100)"
:class="{
'active-trip-moduleDay text-red active':
currentHeight >= x.top &&
(i == days.length - 1 || currentHeight < days[i + 1].top),
}"
>
{{ x.display }}
</div>
</div>
</div>
<div
:class="{ 'col-8': $q.platform.is.desktop, col: $q.platform.is.mobile }"
v-if="dataList"
style="max-width: 1200px; margin-left: auto; margin-right: auto"
class="q-mt-xl row"
:class="{ 'q-px-md': $q.screen.width < 1220 && $q.screen.width > 760 }"
>
<flight :price="currentPrice"></flight>
<div
class="text-h5 text-weight-bold text-left"
ref="feature"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
class="col q-ml-xl position-relative"
v-if="
dataList.priceList.length > 0 &&
!(dataList.priceList && dataList.priceList[0].teamType == 2) &&
!(dataList.currentPrice && dataList.currentPrice.teamType == 2) &&
currentHeight > days[0].top - 60 &&
currentHeight < navs[2].top &&
$q.platform.is.desktop
"
>
行程特色
<div style="position: sticky; top: 100px">
<div
class="trip-module text-subtitle2 cursor-pointer q-mb-lg"
v-for="(x, i) in days"
:key="i"
@click="goScrollHandler(x.top + 100)"
:class="{
'active-trip-moduleDay text-red active':
currentHeight >= x.top &&
(i == days.length - 1 || currentHeight < days[i + 1].top),
}"
>
{{ x.display }}
</div>
</div>
</div>
<div
class="q-mt-md trip-text q-pb-xl line-feature"
v-html="dataList.feature.featureContent"
v-if="dataList.feature.featureContent != ''"
></div>
<div
class="q-mt-md q-pb-xl line-feature"
ref="diyContext"
:style="{ zoom: zoomDiyContext }"
v-html="dataList.feature.featureHtml"
v-if="dataList.feature.featureHtml != ''"
></div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="product"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
'col-8': $q.platform.is.desktop,
col: $q.platform.is.mobile,
}"
>
行程介紹
</div>
<div class="q-pb-xl">
<smaple
v-if="dataList"
:trip="dataList"
<flight :price="currentPrice"></flight>
<div
class="text-h5 text-weight-bold text-left"
ref="feature"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.desktop,
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
></smaple>
<template v-if="dataList.priceList.length>0&&(dataList.priceList && dataList.priceList[0].teamType==2)||(dataList.currentPrice && dataList.currentPrice.teamType==2)">
<trip :trip="dataList" @change="changeTripShowHandler"></trip>
</template>
<template v-else>
<block
:currentHeightDay="currentHeight"
:days="days"
:tripList="dayList"
:isDirect="isDirect"
:clickDate="clickDate"
></block>
</template>
</div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="price"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
費用說明
</div>
<div
class="text-subtitle1 text-weight-bold q-my-md"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
費用包含
</div>
<div
class="q-mt-md trip-text"
v-html="dataList.feature.feeInclude"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
></div>
<div
class="text-subtitle1 text-weight-bold q-my-md"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
費用不含
</div>
<div
class="q-mt-md trip-text q-pb-xl"
v-html="dataList.feature.feeNonInclude"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
></div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="warning"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
購買須知
</div>
<div
class="q-mt-lg trip-text bg-orange-1 q-pa-md rounded-borders q-mb-xl"
style="border: 1px dashed var(--q-color-warning)"
v-html="
dataList.feature.importantTip
? dataList.feature.importantTip
: '暂无购买须知'
"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
></div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="tips"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
溫馨提示
</div>
<div
class="q-mt-lg trip-text bg-white q-pa-md rounded-borders q-mb-xl"
style="border: 1px dashed var(--q-color-info)"
v-html="
dataList.feature.warmTip ? dataList.feature.warmTip : '暂无溫馨提示'
"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
></div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="cancelTips"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
取消政策
</div>
<div
class="q-mt-lg trip-text q-mb-xl"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
<ul class="no-padding text-grey-9 q-ml-md">
<li>所选日期 15 天(含)之前取消,收取手续费 0%</li>
<li class="q-mt-sm">所选日期 8 ~ 14 天之间取消,收取手续费 30%</li>
<li class="q-mt-sm">所选日期 4 ~ 7 天之间取消,收取手续费 50%</li>
<li class="q-mt-sm">所选日期 1 ~ 3 天之间取消,收取手续费 80%</li>
<li class="q-mt-sm">所选日期 0 ~ 0 天之间取消,收取手续费 100%</li>
</ul>
<div class="q-mt-lg f12 text-grey-6">
<q-icon name="iconfont icontishi" class="q-mr-sm" />
<span
>注意:由于站内商品来自全球各地,订单取消时间将依该供应商所在时区判定。供应商需
2-5
个工作天进行取消流程,依照您购买的商品取消政策收取手续费,并于取消流程完成后14
个工作天内退款。</span
>
>
行程特色
</div>
</div>
</div>
<template v-if="$q.platform.is.desktop">
<div class="col-1"></div>
<div class="col q-ml-xl position-relative">
<div style="position: sticky; top: 100px">
<div
class="text-subtitle2 text-grey-6 cursor-pointer q-mb-md"
v-for="(x, i) in navs"
:key="i"
@click="goScrollHandler(x.top + 20)"
<div
class="q-mt-md trip-text q-pb-xl line-feature large-feature"
v-html="dataList.feature.featureContent"
v-if="dataList.feature.featureContent != ''"
></div>
<div
class="q-mt-md q-pb-xl line-feature"
ref="diyContext"
:style="{ zoom: zoomDiyContext }"
v-html="dataList.feature.featureHtml"
v-if="dataList.feature.featureHtml != ''"
></div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="product"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
行程介紹
</div>
<div class="q-pb-xl">
<smaple
v-if="dataList"
:trip="dataList"
:class="{
'active-trip-module':
currentHeight >= x.top &&
(i == navs.length - 1 || currentHeight < navs[i + 1].top),
'q-px-md': $q.screen.width < 1220 && $q.platform.is.desktop,
}"
></smaple>
<template
v-if="
(dataList.priceList.length > 0 &&
dataList.priceList &&
dataList.priceList[0].teamType == 2) ||
(dataList.currentPrice && dataList.currentPrice.teamType == 2)
"
>
{{ x.display }}
<trip :trip="dataList" @change="changeTripShowHandler"></trip>
</template>
<template v-else>
<block
:currentHeightDay="currentHeight"
:days="days"
:tripList="dayList"
:isDirect="isDirect"
:clickDate="clickDate"
></block>
</template>
</div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="price"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
費用說明
</div>
<div
class="text-subtitle1 text-weight-bold q-my-md"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
費用包含
</div>
<div
class="q-mt-md trip-text"
v-html="dataList.feature.feeInclude"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
></div>
<div
class="text-subtitle1 text-weight-bold q-my-md"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
費用不含
</div>
<div
class="q-mt-md trip-text q-pb-xl"
v-html="dataList.feature.feeNonInclude"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
></div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="warning"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
購買須知
</div>
<div
class="q-mt-lg trip-text bg-orange-1 q-pa-md rounded-borders q-mb-xl"
style="border: 1px dashed var(--q-color-warning)"
v-html="
dataList.feature.importantTip
? dataList.feature.importantTip
: '暂无购买须知'
"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
></div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="tips"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
溫馨提示
</div>
<div
class="q-mt-lg trip-text bg-white q-pa-md rounded-borders q-mb-xl"
style="border: 1px dashed var(--q-color-info)"
v-html="
dataList.feature.warmTip
? dataList.feature.warmTip
: '暂无溫馨提示'
"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
></div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="cancelTips"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
取消政策
</div>
<div
class="q-mt-lg trip-text q-mb-xl"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
<ul class="no-padding text-grey-9 q-ml-md">
<li>所选日期 15 天(含)之前取消,收取手续费 0%</li>
<li class="q-mt-sm">
所选日期 8 ~ 14 天之间取消,收取手续费 30%
</li>
<li class="q-mt-sm">所选日期 4 ~ 7 天之间取消,收取手续费 50%</li>
<li class="q-mt-sm">所选日期 1 ~ 3 天之间取消,收取手续费 80%</li>
<li class="q-mt-sm">
所选日期 0 ~ 0 天之间取消,收取手续费 100%
</li>
</ul>
<div class="q-mt-lg f12 text-grey-6">
<q-icon name="iconfont icontishi" class="q-mr-sm" />
<span
>注意:由于站内商品来自全球各地,订单取消时间将依该供应商所在时区判定。供应商需
2-5
个工作天进行取消流程,依照您购买的商品取消政策收取手续费,并于取消流程完成后14
个工作天内退款。</span
>
</div>
</div>
</div>
</template>
<template v-if="$q.platform.is.desktop">
<div class="col-1"></div>
<div class="col q-ml-xl position-relative">
<div style="position: sticky; top: 100px">
<div
class="text-subtitle2 text-grey-6 cursor-pointer q-mb-md"
v-for="(x, i) in navs"
:key="i"
@click="goScrollHandler(x.top + 20)"
:class="{
'active-trip-module':
currentHeight >= x.top &&
(i == navs.length - 1 || currentHeight < navs[i + 1].top),
}"
>
{{ x.display }}
</div>
</div>
</div>
</template>
</div>
</div>
<div v-if="!dataList && !$q.loading.isActive" class="text-center q-my-xl">
<none-data
iconType="order"
title="沒有找到您想要的商品哦"
subtitle="趕緊去挑選心儀的旅遊產品吧"
></none-data>
</div>
</div>
</template>
......@@ -613,7 +659,8 @@ import Trip from "src/components/trip/trip.vue";
import headStyle4 from "../components/trip/style4";
import headStyle5 from "../components/trip/style5";
import block from "src/components/trip/block/index";
import Flight from 'src/components/trip/flight.vue';
import Flight from "src/components/trip/flight.vue";
import NoneData from "src/components/common/noneData.vue";
export default {
props: [],
data() {
......@@ -629,8 +676,8 @@ export default {
tcid: 0,
teamType: 0,
isGetPriceFlight: true,
pType: 1,//类型 1 来源B2C
newConfigId: 0,//列表里的configId
pType: 1, //类型 1 来源B2C
newConfigId: 0, //列表里的configId
},
currentPrice: {},
isShow: false,
......@@ -724,7 +771,8 @@ export default {
smaple,
Trip,
block,
Flight
Flight,
NoneData
},
watch: {
days: {
......@@ -764,7 +812,7 @@ export default {
this.msg.tcid = decodeURIComponent(this.$route.params.tcid);
}
if (this.$route.params.newConfigId) {
this.msg.newConfigId = decodeURIComponent(this.$route.params.newConfigId)
this.msg.newConfigId = decodeURIComponent(this.$route.params.newConfigId);
}
},
mounted() {
......@@ -777,17 +825,17 @@ export default {
// this.getCarData();
},
methods: {
changeShowOrderPreviewHandler(){
this.showOrderPreview=!this.showOrderPreview
if(!this.showOrderPreview){
changeShowOrderPreviewHandler() {
this.showOrderPreview = !this.showOrderPreview;
if (!this.showOrderPreview) {
// this.currentPrice=null
if(this.currentPrice){
this.currentPrice.isSupportChildren=null
this.currentPrice.unionCityList=null
this.currentPrice.singleRoomPrice=0
this.currentPrice.originalB2CPrice=0
if (this.currentPrice) {
this.currentPrice.isSupportChildren = null;
this.currentPrice.unionCityList = null;
this.currentPrice.singleRoomPrice = 0;
this.currentPrice.originalB2CPrice = 0;
}
this.changeTripShowHandler()
this.changeTripShowHandler();
}
},
getTopNum(x) {
......@@ -881,34 +929,44 @@ export default {
},
resetHandler() {
// this.currentPrice=null;
if(this.currentPrice){
this.currentPrice.isSupportChildren=null
this.currentPrice.unionCityList=null
this.currentPrice.singleRoomPrice=0
this.currentPrice.originalB2CPrice=0
if (this.currentPrice) {
this.currentPrice.isSupportChildren = null;
this.currentPrice.unionCityList = null;
this.currentPrice.singleRoomPrice = 0;
this.currentPrice.originalB2CPrice = 0;
}
if(this.$q.platform.is.mobile)
this.$refs.calendarMobile.reset()
else
this.$refs.calendar.reset();
if (this.$q.platform.is.mobile) this.$refs.calendarMobile.reset();
else this.$refs.calendar.reset();
},
changeChosenDateHandler(val) {
val.price.version = new Date().getTime();
this.currentPrice = JSON.parse(JSON.stringify(val.price));
this.currentPrice.RealPrice = this.currentPrice.RealPrice?this.currentPrice.RealPrice:this.currentPrice.originalB2CPrice
this.currentPrice.originalB2CPrice = this.currentPrice.RealPrice
if(this.currentPrice.unionCityList && this.currentPrice.unionCityList.length>0 && this.dataList.startCityId!=0){
this.currentPrice.unionCityList.splice(0,0,{
cityId:this.dataList.startCityId,
cityName:this.dataList.startCityName
})
this.currentPrice.RealPrice = this.currentPrice.RealPrice
? this.currentPrice.RealPrice
: this.currentPrice.originalB2CPrice;
this.currentPrice.originalB2CPrice = this.currentPrice.RealPrice;
if (
this.currentPrice.unionCityList &&
this.currentPrice.unionCityList.length > 0 &&
this.dataList.startCityId != 0
) {
if (
this.currentPrice.unionCityList.findIndex(
(x) => x.cityId == this.dataList.startCityId
) == -1
) {
this.currentPrice.unionCityList.splice(0, 0, {
cityId: this.dataList.startCityId,
cityName: this.dataList.startCityName,
});
}
}
if(this.$q.platform.is.mobile){
if (this.$q.platform.is.mobile) {
this.$refs.qDateProxy.hide();
}
this.$forceUpdate()
this.$nextTick(()=>{
this.changeTripShowHandler()
this.$forceUpdate();
this.$nextTick(() => {
this.changeTripShowHandler();
});
},
showDialog() {
......@@ -920,133 +978,134 @@ export default {
},
getData() {
this.$q.loading.show();
console.log(this.$q.loading)
this.apipost(
"b2b_get_GetB2BTravelInfoV1",
this.msg,
(r) => {
if (r.data.resultCode == 1) {
this.dataList = r.data.data;
if (this.dataList.dayList && this.dataList.dayList.length > 0) {
this.dataList.dayList.forEach((item) => {
item.slide = 0;
});
if (r.data.data.scenicList) {
r.data.data.scenicList.forEach((x) => {
if (x.cityName) {
this.citys.push(x.cityName);
}
try {
if (r.data.resultCode == 1 && r.data.data.id>0) {
this.dataList = r.data.data;
if (this.dataList.dayList && this.dataList.dayList.length > 0) {
this.dataList.dayList.forEach((item) => {
item.slide = 0;
});
if(this.citys.length>0){
this.citys = Array.from(new Set(this.citys))
if (r.data.data.scenicList) {
r.data.data.scenicList.forEach((x) => {
if (x.cityName) {
this.citys.push(x.cityName);
}
});
if (this.citys.length > 0) {
this.citys = Array.from(new Set(this.citys));
}
}
}
}
this.dataList.imgCover = JSON.parse(this.dataList.imgCover);
this.dayList = this.dataList.dayList;
this.dataList.imgCover = JSON.parse(this.dataList.imgCover);
this.dayList = this.dataList.dayList;
this.isShow = true;
this.isDirect = this.dataList.isDirect;
if (this.dataList.videoStr && this.dataList.videoStr != "") {
this.options.loop = false;
this.options.currentPage = 1;
this.isShow = true;
this.isDirect = this.dataList.isDirect;
if (this.dataList.videoStr && this.dataList.videoStr != "") {
this.options.loop = false;
this.options.currentPage = 1;
this.$nextTick(() => {
setTimeout(() => {
let t = document.querySelectorAll(".slider-wrapper");
if (t.length > 0) {
let d = t[0].getBoundingClientRect();
this.videoPosition = d.top + d.height;
}
}, 1000);
});
}
this.$nextTick(() => {
setTimeout(() => {
let t = document.querySelectorAll(".slider-wrapper");
if (t.length > 0) {
let d = t[0].getBoundingClientRect();
this.videoPosition = d.top + d.height;
}
}, 1000);
});
}
this.$nextTick(() => {
if (this.dataList.feature.featureHtml != "") {
let tw =
parseFloat(
this.$refs.diyContext.getBoundingClientRect().width
) / 1123.0;
if (this.dataList.feature.featureHtml != "") {
let tw =
parseFloat(
this.$refs.diyContext.getBoundingClientRect().width
) / 1123.0;
let divArr = document.querySelectorAll("#setZoom>div");
for (let i = 0; i < divArr.length; i++) {
let div = divArr[i];
if (this.$q.platform.is.mobile) {
div.style.zoom =
div.offsetWidth > 1000
? 0.999
: document.documentElement.clientWidth / 1123.0;
} else {
div.style.zoom = 1;
let divArr = document.querySelectorAll("#setZoom>div");
for (let i = 0; i < divArr.length; i++) {
let div = divArr[i];
if (this.$q.platform.is.mobile) {
div.style.zoom =
div.offsetWidth > 1000
? 0.999
: document.documentElement.clientWidth / 1123.0;
} else {
div.style.zoom = 1;
}
}
}
this.zoomDiyContext = tw > 1 ? 1 : tw.toFixed(2);
}
setTimeout(() => {
this.navs.forEach((x) => {
x.top =
this.$refs[x.val].getBoundingClientRect().top +
this.zoomDiyContext = tw > 1 ? 1 : tw.toFixed(2);
}
setTimeout(() => {
this.navs.forEach((x) => {
x.top =
this.$refs[x.val].getBoundingClientRect().top +
this.currentHeight -
60;
});
this.priceListHeight =
this.$refs.pricelist.getBoundingClientRect().top +
this.currentHeight -
60;
});
this.priceListHeight =
this.$refs.pricelist.getBoundingClientRect().top +
this.currentHeight -
60;
this.days = [];
this.dayList.forEach((x) => {
let dayListObj = {
val: "day" + x.dayNum,
top: 0,
isActive: false,
display: x.dayNum > 9 ? x.dayNum : "0" + x.dayNum,
};
this.days.push(dayListObj);
});
}, 1000);
this.days = [];
this.dayList.forEach((x) => {
let dayListObj = {
val: "day" + x.dayNum,
top: 0,
isActive: false,
display: x.dayNum > 9 ? x.dayNum : "0" + x.dayNum,
};
this.days.push(dayListObj);
});
}, 1000);
try {
document
.querySelector("#scrollId .q-page-container")
.addEventListener("scroll", this.handleScrollDay);
} catch (error) {
// console.log(document.querySelector('#scrollId .q-page-container'))
// console.log('异常信息', error)
}
});
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
timeout: 2000, // 以毫秒为单位; 0意味着没有超时
});
}
try {
document
.querySelector("#scrollId .q-page-container")
.addEventListener("scroll", this.handleScrollDay);
} catch (error) {
// console.log(document.querySelector('#scrollId .q-page-container'))
// console.log('异常信息', error)
}
});
}
} catch (error) {}
this.$q.loading.hide();
},
null
e=>{
this.$q.loading.hide();
}
);
},
changeCityHandler(unionCity){
this.currentPrice.originalB2CPrice=this.currentPrice.RealPrice
if(unionCity.cityId!=this.dataList.startCityId){
if(unionCity.backFlight && unionCity.backFlight.addPrice){
this.currentPrice.originalB2CPrice+=unionCity.backFlight.addPrice
changeCityHandler(unionCity) {
this.currentPrice.originalB2CPrice = this.currentPrice.RealPrice;
if (unionCity.cityId != this.dataList.startCityId) {
if (unionCity.backFlight && unionCity.backFlight.addPrice) {
this.currentPrice.originalB2CPrice += unionCity.backFlight.addPrice;
}
if(unionCity.goFlight && unionCity.goFlight.addPrice){
this.currentPrice.originalB2CPrice+=unionCity.goFlight.addPrice
if (unionCity.goFlight && unionCity.goFlight.addPrice) {
this.currentPrice.originalB2CPrice += unionCity.goFlight.addPrice;
}
}
console.log(this.$refs)
if(this.$q.platform.is.desktop)
this.$refs.calendar.changePriceHandler(this.currentPrice.startDate,this.currentPrice.originalB2CPrice)
this.$forceUpdate()
console.log(this.$refs);
if (this.$q.platform.is.desktop)
this.$refs.calendar.changePriceHandler(
this.currentPrice.startDate,
this.currentPrice.originalB2CPrice
);
this.$forceUpdate();
},
// 获取车的详情
getCarData() {
this.$q.loading.show();
this.apipost(
"b2c_get_GetCarSingleProductDetail",
{ ProductId: '16' },
{ ProductId: "16" },
(r) => {
if (r.data.resultCode == 1) {
this.dataList = r.data.data;
......@@ -1165,7 +1224,7 @@ export default {
</script>
<style>
.line-feature *{
.line-feature * {
line-height: normal !important;
}
.slider-item {
......@@ -1240,4 +1299,7 @@ export default {
#setZoom > div {
zoom: calc(100 / 1000);
}
.large-feature img{
width:100% !important
}
</style>
......@@ -783,8 +783,8 @@ export default {
{
SurName: this.parameters.guestLastName?this.parameters.guestLastName:this.userInfo.Surname,
Name: this.parameters.guestFirstName?this.parameters.guestFirstName:this.userInfo.Name,
ContactNumber: this.userInfo.Mobile,// 联系电话
Mailbox: this.userInfo.Mailbox,//邮箱
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.parameters.HotelName,//商品名称
GoodsPic: this.parameters.HotelPic,//商品图片
......@@ -909,9 +909,7 @@ export default {
if (r.data.resultCode == 1) {
this.userInfo = r.data.data;
if(r.data.data.Moblie){
if(this.parameters.MailingState!=4){
this.parameters.Mobile = r.data.data.Moblie
}
this.parameters.guestEmail = r.data.data.Moblie
this.userInfo.Mobile = r.data.data.Moblie
}
} else {
......
......@@ -365,7 +365,7 @@
</div>
</div>
<div class="q-mt-md text-grey-6">
<div class="row">
<div class="row" v-if="(unionCity&&unionCity.cityName)||(trip&&trip.startCityName)">
<div style="width: 80px">出發城市:</div>
<div class="q-ml-md">
{{ unionCity ? unionCity.cityName : trip.startCityName }}起止
......
<style>
.login {
background: url("../assets/img/login-bg.png");
background: url("../assets/img/login-bg.jpg");
background-size: cover;
width: 100%;
height: 100%;
......
<style>
.login {
background: url("../assets/img/login-bg.png");
background: url("../assets/img/login-bg.jpg");
background-size: cover;
width: 100%;
height: 100%;
......
<style lang="scss" scoped>
</style>
<template>
<div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="assemblypoint"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
接送點範圍
</div>
<div
class="q-mt-lg trip-text rounded-borders q-mb-xl"
style="border: 1px dashed var(--q-color-warning)"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
v-for="(x,index) in dataList.PlaceList">
<div class="q-pa-md" style="border-bottom: 1px dashed var(--q-color-warning)">
<div class="text-weight-bold text-h6">地點名稱:{{x.Name}}</div>
<div class="text-grey-9">地址:{{x.Address}}</div>
</div>
<div class="q-pa-md" :class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}">
<componentsMap :AddressObj="x"/>
</div>
</div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="experiencelocation"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
機場地點
</div>
<div
class="q-mt-lg trip-text rounded-borders q-mb-xl"
style="border: 1px dashed var(--q-color-warning)"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
v-for="(x,index) in dataList.AirportList">
<div class="q-pa-md" style="border-bottom: 1px dashed var(--q-color-warning)">
<div class="text-weight-bold text-h6">地点名称:{{x.Name}}</div>
<div class="text-grey-9">地址:{{x.Address}}</div>
</div>
<div class="q-pa-md" :class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}">
<componentsMap :AddressObj="x"/>
</div>
</div>
</div>
</template>
<script>
import componentsMap from "../../../components/car/Map.vue";
export default {
props: {
orderInfo: {
type: Object,
default: () => ({})
}
},
components: {componentsMap},
data() {
return {
dataList: [],
details: null,
sumPrice: 0,//总金额
DiscountsMoney: 0,//优惠金额
Money: 0, // 支付金額
}
},
mounted() {
this.getCarData()
// this.getCarOrder()
},
methods: {
// 获取车的详情
getCarData() {
// this.$q.loading.show();
this.apipost(
"b2c_get_GetCarSingleProductDetail",
{ ProductId: this.orderInfo.GoodsId },
(r) => {
if (r.data.resultCode == 1) {
this.dataList = r.data.data;
this.details = r.data.data;
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
timeout: 2000, // 以毫秒为单位; 0意味着没有超时
});
}
// this.$q.loading.hide();
},
null
);
},
getCarOrder() {
this.$q.loading.show();
this.apipost(
"CarSingle_post_GetTYMyCarOrderInfo",
{ OrderId: this.orderInfo.ErpOrderId },
(r) => {
if (r.data.resultCode == 1) {
this.dataList = r.data.data;
this.Money = r.data.data.Money;
const {DiscountsMoney,Money} = r.data.data;
this.Money = Money;
this.DiscountsMoney = DiscountsMoney
this.sumPrice = Money + DiscountsMoney
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
timeout: 2000, // 以毫秒为单位; 0意味着没有超时
});
}
this.$q.loading.hide();
},
null
);
},
}
}
</script>
\ No newline at end of file
......@@ -2,9 +2,9 @@
</style>
<template>
<div>价格详情
<div>
<div
class="rounded-borders bg-white q-pa-md"
class="rounded-borders bg-white q-py-md"
style="width: 300px"
:style="{
width:
......@@ -15,7 +15,7 @@
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="q-mt-md text-grey-6">
<div class="row q-pb-xs no-wrap" v-if="AirportObj&&AirportObj.Name">
<div style="width: 80px">{{details.CarType==1?'接':'送'}}機機場:</div>
......@@ -48,31 +48,31 @@
<div>{{details.CurrencyCode}} {{ moneyFormat(OrderDate.originalB2CPrice,2) }}</div>
</div> -->
<hr
style="border: none; border-top: 1px dashed #eee !important"
style="border: none;"
class="bg-transparent q-mb-sm"
/>
<div class="row q-mb-sm items-center">
<div class="col">總金額</div>
<div class="text-subtitle2 text-weight-bolder text-primary">
<div class="q-mr-lg">總金額</div>
<div class="text-subtitle2 text-weight-bolder">
CNY {{ moneyFormat(sumPrice, 2) }}
</div>
</div>
<hr style="border:none;border-top:1px dashed #EEE !important;" class="bg-transparent q-mb-sm" />
<hr style="border:none;" class="bg-transparent q-mb-sm" />
<div class="row q-mb-sm items-center">
<div class="col">優惠金額</div>
<div class="q-mr-lg">優惠金額</div>
<div
class="text-subtitle2 text-weight-bolder text-teal"
class="text-subtitle2 text-weight-bolder"
v-if="DiscountsMoney > 0"
>
CNY - {{ moneyFormat(DiscountsMoney, 2) }}
</div>
<div class="text-grey-5" v-else>暫無優惠</div>
</div>
<hr style="border:none;border-top:1px dashed #EEE !important;" class="bg-transparent q-mb-sm" />
<!-- <hr style="border:none;" class="bg-transparent q-mb-sm" />
<div class="row q-mb-sm items-center">
<div class="col">支付金額</div>
<div class="text-h6 text-weight-bolder text-primary product-price">{{details.CurrencyCode}} {{ moneyFormat(Money,2) }}</div>
</div>
</div> -->
</div>
</div>
......@@ -99,29 +99,6 @@ export default {
this.getCarOrder()
},
methods: {
// 获取团的详情
getGroupData() {
// this.$q.loading.show();
this.apipost(
"b2c_get_GetCarSingleProductDetail",
{ ProductId: this.orderInfo.GoodsId },
(r) => {
if (r.data.resultCode == 1) {
this.dataList = r.data.data;
this.emitAddress()
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
timeout: 2000, // 以毫秒为单位; 0意味着没有超时
});
}
// this.$q.loading.hide();
},
null
);
},
// 获取车的详情
getCarData() {
// this.$q.loading.show();
......@@ -155,6 +132,10 @@ export default {
if (r.data.resultCode == 1) {
this.dataList = r.data.data;
this.Money = r.data.data.Money;
const {DiscountsMoney,Money} = r.data.data;
this.Money = Money;
this.DiscountsMoney = DiscountsMoney
this.sumPrice = Money + DiscountsMoney
} else {
this.$q.notify({
type: "negative",
......@@ -169,11 +150,6 @@ export default {
);
},
emitAddress() {
const {PlaceList} = this.dataList
PlaceList.findItem(item => item.id === this.id)
this.$emit('address', this.dataList)
}
}
}
</script>
\ No newline at end of file
<style lang="scss" scoped>
</style>
<template>
<div></div>
</template>
<script>
export default {
props: {
orderInfo: {
type: Object,
default: () => ({})
}
},
data() {
return {
dataList: null,
details: null,
sumPrice: 0,//总金额
DiscountsMoney: 0,//优惠金额
Money: 0, // 支付金額
}
},
mounted() {
this.getGroupData()
},
methods: {
getGroupData() {
this.$q.loading.show();
this.apipost(
"b2b_get_GetB2BTravelInfoV1",{ProductId: this.orderInfo.GoodsId},
(r) => {
if (r.data.resultCode == 1) {
this.dataList = r.data.data;
if (this.dataList.dayList && this.dataList.dayList.length > 0) {
this.dataList.dayList.forEach((item) => {
item.slide = 0;
});
if (r.data.data.scenicList) {
r.data.data.scenicList.forEach((x) => {
if (x.cityName) {
this.citys.push(x.cityName);
}
});
}
}
this.dataList.imgCover = JSON.parse(this.dataList.imgCover);
this.dayList = this.dataList.dayList;
this.isShow = true;
this.isDirect = this.dataList.isDirect;
if (this.dataList.videoStr && this.dataList.videoStr != "") {
this.options.loop = false;
this.options.currentPage = 1;
this.$nextTick(() => {
setTimeout(() => {
let t = document.querySelectorAll(".slider-wrapper");
if (t.length > 0) {
let d = t[0].getBoundingClientRect();
this.videoPosition = d.top + d.height;
}
}, 1000);
});
}
this.$nextTick(() => {
if (this.dataList.feature.featureHtml != "") {
let tw =
parseFloat(
this.$refs.diyContext.getBoundingClientRect().width
) / 1123.0;
let divArr = document.querySelectorAll("#setZoom>div");
for (let i = 0; i < divArr.length; i++) {
let div = divArr[i];
if (this.$q.platform.is.mobile) {
div.style.zoom =
div.offsetWidth > 1000
? 0.999
: document.documentElement.clientWidth / 1123.0;
} else {
div.style.zoom = 1;
}
}
this.zoomDiyContext = tw > 1 ? 1 : tw.toFixed(2);
}
setTimeout(() => {
this.navs.forEach((x) => {
x.top =
this.$refs[x.val].getBoundingClientRect().top +
this.currentHeight -
60;
});
this.priceListHeight =
this.$refs.pricelist.getBoundingClientRect().top +
this.currentHeight -
60;
this.days = [];
this.dayList.forEach((x) => {
let dayListObj = {
val: "day" + x.dayNum,
top: 0,
isActive: false,
display: x.dayNum > 9 ? x.dayNum : "0" + x.dayNum,
};
this.days.push(dayListObj);
});
}, 1000);
try {
document
.querySelector("#scrollId .q-page-container")
.addEventListener("scroll", this.handleScrollDay);
} catch (error) {
// console.log(document.querySelector('#scrollId .q-page-container'))
// console.log('异常信息', error)
}
});
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
timeout: 2000, // 以毫秒为单位; 0意味着没有超时
});
}
this.$q.loading.hide();
},
null
);
},
}
}
</script>
\ No newline at end of file
<style lang="scss" scoped>
</style>
<template>
<div>
<div
class="rounded-borders bg-white q-py-md"
style="width: 300px"
:style="{
width:
$q.platform.is.mobile
? 'unset'
: '300px',
position: $q.platform.is.mobile ? 'unset' : 'sticky',
top: $q.platform.is.mobile ? 'unset' : '50px',
}"
>
<div class="text-grey-9">
<div class="row q-mb-sm" v-if="chosenObj.ManNum > 0">
<div class="col">成人佔床 x {{ chosenObj.ManNum }}</div>
<div>CNY {{ moneyFormat(price.B2CMemberPrice, 2) }}</div>
</div>
<div class="row q-mb-sm" v-if="chosenObj.ChirdNeedBedNum > 0">
<div class="col">兒童佔床 x {{ chosenObj.ChirdNeedBedNum }}</div>
<div>
CNY
{{
moneyFormat(price.B2CMemberPrice + price.ChildNeedPrice, 2)
}}
</div>
</div>
<div class="row q-mb-sm" v-if="chosenObj.ChirdNum - chosenObj.ChirdNeedBedNum > 0">
<div class="col">兒童不佔床 x {{ chosenObj.ChirdNum - chosenObj.ChirdNeedBedNum }}</div>
<div>
CNY
{{
moneyFormat(
price.B2CMemberPrice - price.ChildNoNeedPrice,
2
)
}}
</div>
</div>
<div class="row q-mb-sm" v-if="chosenObj.BabyNum > 0">
<div class="col">嬰兒不佔床 x {{ chosenObj.BabyNum }}</div>
<div>CNY {{ moneyFormat(price.BabyPrice, 2) }}</div>
</div>
<div v-if="price.safeMoney > 0">
<div class="row q-mb-sm" v-if="price.safeMoney > 0">
<div class="col">保險費 x {{ price.safeMoney }}/人</div>
<div>
CNY
{{
moneyFormat(
price.safeMoney *
(chosenObj.ManNum +
chosenObj.ChirdNum +
chosenObj.BabyNum),
2
)
}}
</div>
</div>
</div>
<div v-if="price.VisaPrice > 0 || price.OtherPrice > 0">
<div class="row q-mb-sm" v-if="price.VisaPrice > 0">
<div class="col">簽證費 x {{ price.VisaPrice }}/人</div>
<div>
CNY
{{
moneyFormat(
price.VisaPrice *
(chosenObj.ManNum +
chosenObj.ChirdNum +
chosenObj.BabyNum),
2
)
}}
</div>
</div>
<div class="row q-mb-sm" v-if="price.OtherPrice > 0">
<div class="col">雜費 x {{ price.OtherPrice }}/人</div>
<div>
CNY
{{
moneyFormat(
price.OtherPrice *
(chosenObj.ManNum +
chosenObj.ChirdNum +
chosenObj.BabyNum),
2
)
}}
</div>
</div>
</div>
<div class="row q-mb-sm" v-if="chosenObj.ChirdNum > 0">
<div class="col">兒童附加費 x {{ chosenObj.ChirdNum }}</div>
<div>CNY {{ moneyFormat(price.BabyChargePrice, 2) }}</div>
</div>
<div class="row q-mb-sm" v-if="chosenObj.SingleRoomNum > 0">
<div class="col">單房差價 x {{ chosenObj.SingleRoomNum }}</div>
<div>CNY {{ moneyFormat(price.SingleRoomPrice, 2) }}</div>
</div>
<div class="row q-mb-sm items-center">
<div class="col">總金額</div>
<div class="text-subtitle2 text-weight-bolder text-primary">
CNY {{ moneyFormat(sumPrice, 2) }}
</div>
</div>
<div class="row q-mb-sm items-center">
<div class="col">優惠金額</div>
<div
class="text-subtitle2 text-weight-bolder text-teal"
v-if="price.discountPrice > 0"
>
CNY - {{ moneyFormat(price.discountPrice, 2) }}
</div>
<div class="text-grey-5" v-else>暫無優惠</div>
</div>
<!-- <div class="row q-mb-sm items-center">
<div class="col">支付金額</div>
<div
class="text-h6 text-weight-bolder text-primary product-price"
>
CNY {{ moneyFormat(sumPrice - price.discountPrice, 2) }}
</div>
</div> -->
</div>
</div>
</div>
</template>
<script>
export default {
props: {
orderInfo: {
type: Object,
default: () => ({})
}
},
data() {
return {
chosenObj: {},
price: {},
sumPrice: 0,
}
},
mounted() {
this.getOrder()
},
methods: {
getOrder() {
this.$q.loading.show();
this.apipost(
"sellorder_post_GetOrderEntity",
{ ID: this.orderInfo.ErpOrderId },
(r) => {
if (r.data.resultCode == 1) {
this.chosenObj = r.data.data.model;
this.price = r.data.data.modelPrice;
this.calcMoney()
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
timeout: 2000, // 以毫秒为单位; 0意味着没有超时
});
}
this.$q.loading.hide();
},
null
);
},
calcMoney() {
let money = this.price.B2CMemberPrice * this.chosenObj.ManNum;
console.log('money1', money, this.price.B2CMemberPrice * this.chosenObj.ManNum)
money +=
(this.price.B2CMemberPrice -
this.price.ChildNoNeedPrice +
this.price.BabyChargePrice) *(this.chosenObj.ChirdNum - this.chosenObj.ChirdNeedBedNum);
console.log('money2', money, (this.price.B2CMemberPrice -
this.price.ChildNoNeedPrice +
this.price.BabyChargePrice) *(this.chosenObj.ChirdNum - this.chosenObj.ChirdNeedBedNum))
money +=
(this.price.B2CMemberPrice +
this.price.ChildNeedPrice +
this.price.BabyChargePrice) *(this.chosenObj.ChirdNum - this.chosenObj.ChirdNeedBedNum)
console.log('money3', money, (this.price.B2CMemberPrice +
this.price.ChildNeedPrice +
this.price.BabyChargePrice) *(this.chosenObj.ChirdNum - this.chosenObj.ChirdNeedBedNum))
money += this.price.BabyPrice * this.chosenObj.BabyNum;
console.log('money4', money, this.price.BabyPrice * this.chosenObj.BabyNum)
money += this.price.SingleRoomPrice * this.chosenObj.SingleRoomNum;
console.log('money5', money, this.price.SingleRoomPrice * this.chosenObj.SingleRoomNum)
let sumCount = this.chosenObj.ManNum + this.chosenObj.ChirdNum;
money += (this.price.VisaPrice||0) * sumCount;
console.log('money6', money, (this.price.VisaPrice||0) * sumCount)
money += (this.price.safeMoney||0) * sumCount;
console.log('money7', money, (this.price.safeMoney||0) * sumCount)
money += (this.price.OtherPrice||0) * sumCount;
console.log('money8', money, (this.price.OtherPrice||0) * sumCount)
this.sumPrice = money;
},
}
}
</script>
\ No newline at end of file
<style lang="scss" scoped>
</style>
<template>
<div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="assemblypoint"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
酒店地址
</div>
<div
class="q-mt-lg trip-text rounded-borders q-mb-xl"
style="border: 1px dashed var(--q-color-warning)"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}">
<div class="q-pa-md" style="border-bottom: 1px dashed var(--q-color-warning)">
<div class="text-weight-bold text-h6">酒店名稱:{{hotelSummary.hotelName}}</div>
<div class="text-grey-9">地址:{{`${hotelSummary.address}`}}</div>
</div>
<div class="q-pa-md" :class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}" v-for="(x,index) in travelLngLat" :key="index">
<componentsMap v-if="x.Lng&&x.Lat" :AddressObj="x"/>
<div v-else class="card text-center">经纬度未知</div>
</div>
</div></div>
</template>
<script>
export default {
props: {
orderInfo: {
type: Object,
default: () => ({})
}
},
data() {
return {hotelSummary: {},
travelLngLat: []
}
},
mounted() {
this.getData()
},
methods: {
// 获取详情
getData() {
this.$q.loading.show();
this.apipost(
"dmc_post_Get_GetJAPAN_HotelDetail",
{ ProductId: this.orderInfo.GoodsId },
(res) => {
this.$q.loading.hide();
if (res.data.resultCode == 1) {
this.hotelDetails = res.data.data.hotelDetails;
this.hotelSummary = res.data.data.hotelSummary;
this.roomReviewRating = Number(this.hotelDetails.roomReviewRating);
this.travelLngLat.push({
Lat: this.hotelSummary.latitudeW,
Lng: this.hotelSummary.longitudeW,
Address: this.hotelSummary.hotelName
});
} else {
this.$message.error(res.data.message);
}
},
null
);
},
}
}
</script>
\ No newline at end of file
<style lang="scss" scoped>
</style>
<template>
<div>
<div class="row q-mb-sm items-center">
<div class="col">總金額</div>
<div class="text-subtitle2 text-weight-bolder text-primary">
CNY {{ moneyFormat(sumPrice, 2) }}
</div>
</div>
<hr style="border:none;border-top:1px dashed #EEE !important;" class="bg-transparent q-mb-sm" />
<div class="row q-mb-sm items-center" v-if="DiscountsMoney > 0">
<div class="col">優惠金額</div>
<div
class="text-subtitle2 text-weight-bolder text-teal"
v-if="DiscountsMoney > 0"
>
CNY - {{ moneyFormat(DiscountsMoney, 2) }}
</div>
<div class="text-grey-5" v-else>暫無優惠</div>
</div>
<div class="row q-mb-sm items-center">
<div class="col">支付金額</div>
<div class="text-h6 text-weight-bolder text-primary product-price">
CNY {{ moneyFormat(Money, 2) }}
</div>
</div>
</div>
</template>
<script>
export default {
props: {
orderInfo: {
type: Object,
default: () => ({})
}
},
data() {
return {
details: null,
sumPrice: 0,//总金额
DiscountsMoney: 0,//优惠金额
Money: 0, // 支付金額
}
},
mounted() {
this.getGroupData()
this.getCarOrder()
},
methods: {
// 获取团的详情
getGroupData() {
// this.$q.loading.show();
this.apipost(
"dmc_post_GetThirdHotelOrder",
{ ProductId: this.orderInfo.GoodsId },
(r) => {
if (r.data.resultCode == 1) {
this.dataList = r.data.data;
const {DiscountsMoney,MailingState,Money} = r.data.data;
console.log('getTicket Data', r.data.data,DiscountsMoney,MailingState,Money)
// sumPrice: 0,//总金额
// DiscountsMoney: 0,//优惠金额
// Money: 0, // 支付金額
// MailingState: '',//邮寄状态 1自取 2邮寄
this.Money = Money;
this.DiscountsMoney = DiscountsMoney
this.MailingState = MailingState;
this.sumPrice = Money + DiscountsMoney
// this.sumPrice = this.moneyFormat(this.sumPrice, 2)
// this.Money = this.moneyFormat(this.Money, 2)
// this.DiscountsMoney = this.moneyFormat(this.DiscountsMoney, 2)
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
timeout: 2000, // 以毫秒为单位; 0意味着没有超时
});
}
// this.$q.loading.hide();
},
null
);
},
}
}
</script>
\ No newline at end of file
......@@ -16,19 +16,33 @@
</div>
</div>
<q-separator color="grey-2" class="q-my-md" />
<div v-if="detail.OrderNo">
<carPriceDetail v-if="[12,13,14].includes(detail.GoodsType)" :orderInfo="detail"></carPriceDetail>
<groupPriceDetail v-if="[1,2,3].includes(detail.GoodsType)" :orderInfo="detail"></groupPriceDetail>
<hotelPriceDetail v-if="[8,9,10,11].includes(detail.GoodsType)" :orderInfo="detail"></hotelPriceDetail>
<ticketPriceDetail v-if="[4,5,6,7].includes(detail.GoodsType)" :orderInfo="detail"></ticketPriceDetail>
</div>
<div class="row">
<div class="text-subtitle1 col">
<span>應付金額:</span>
<span class="text-subtitle2">CNY</span>
<span class="q-ml-sm text-weight-bolder">{{ moneyFormat(detail.TotalPrice,2) }}</span>
</div>
<div class="">
<q-btn color="primary" outline dense class="q-mr-md q-px-md">
<div class="row items-center">
<q-btn color="primary" flat dense class="q-mr-md q-px-md">
<i class="iconfont iconmessage1"></i>联系客服</q-btn>
<q-btn color="primary" outline dense class="q-mr-md q-px-md">
<q-btn color="primary" dense flat class="q-mr-md q-px-md" @click="showCode = true">
<i class="iconfont iconiconfontscan"></i>扫码咨询</q-btn>
<q-btn color="primary" outline dense label="取消訂單" class="q-mr-md q-px-md"/>
<q-btn color="primary" unelevated dense label="前往付款" class="q-px-md"/>
<!-- <q-btn color="primary" outline dense label="取消訂單" @click="cancalOrder" class="q-mr-md q-px-md"/>
<q-btn color="primary" unelevated dense label="前往付款" @click="goPayOrder" class="q-px-md"/> -->
<div class="text-right" v-if="detail.OrderStatus==1">
<q-btn color="primary" dense outline class="q-px-sm" label="取消訂單" @click="cancalOrder(item.orderNo)" />
<q-btn color="primary" dense unelevated class="q-px-sm q-ml-sm" label="立即支付" @click="CommonJump('/pay/'+item.orderNo,{},'blank')" />
</div>
<div class="text-right" v-else>
<q-btn color="dark" dense flat class="q-px-sm" @click="CommonJump('/orderinfo/'+orderNo,{},'blank')" label="查看訂單" />
</div>
</div>
</div>
</q-card>
......@@ -44,12 +58,12 @@
/>
<div class="col">
<div class="text-body1 ellipsis">{{detail.GoodsName}}</div>
<div class="q-mt-sm text-grey-6">2023-03-15從成都出發 成人x2; </div>
<div class="q-mt-sm text-dark">
<div class="q-mt-sm text-grey-6">{{detail.OrderMake}}</div>
<!-- <div class="q-mt-sm text-dark">
出行日期:{{detail.SelectStartTime}}(本地时间)
</div>
</div> -->
<div class="q-mt-sm text-grey-6">
商品類型:{{detail.GoodsType}}
商品類型:{{goodTypeList[detail.GoodsType]}}
</div>
</div>
</div>
......@@ -84,17 +98,13 @@
</div>
</div>
</q-card>
<q-card class="rounded-borders q-pa-md q-mt-md" flat>
<div class="text-subtitle1 text-weight-bolder">使用地点</div>
<div class="q-pa-md" :class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}">
<componentsMap :AddressObj="detail"/>
<q-card class="rounded-borders q-pa-md q-mt-md" flat v-if="![1,2,3].includes(detail.GoodsType)">
<div v-if="detail.OrderNo">
<car-map v-if="[12,13,14].includes(detail.GoodsType)" :orderInfo="detail"></car-map>
<!-- <groupMap v-if="[1,2,3].includes(detail.GoodsType)" :orderInfo="detail"></groupMap> -->
<hotelMap v-if="[8,9,10,11].includes(detail.GoodsType)" :orderInfo="detail"></hotelMap>
<ticketMap v-if="[4,5,6,7].includes(detail.GoodsType)" :orderInfo="detail"></ticketMap>
</div>
<carPriceDetail v-if="detail.OrderNo" :orderInfo="detail"></carPriceDetail>
</q-card>
<div v-if="(!orderNo || orderNo == '') && !loading" class="text-center q-my-xl">
<none-data
......@@ -103,16 +113,29 @@
subtitle="趕緊去挑選心儀的旅遊產品吧,三秒後自動跳轉到首頁"
></none-data>
</div>
<q-dialog v-model="showCode">
<img src="../../../assets/img/kefu.png"/>
</q-dialog>
</div>
</template>
<script>
import componentsMap from "../../../components/car/Map.vue";
import carPriceDetail from './carPriceDetail.vue'
import groupPriceDetail from './groupPriceDetail.vue'
import hotelPriceDetail from './hotelPriceDetail.vue'
import ticketPriceDetail from './ticketPriceDetail.vue'
import carMap from './carMap.vue'
import groupMap from './groupMap.vue'
import hotelMap from './hotelMap.vue'
import ticketMap from './ticketMap.vue'
export default {
components: {componentsMap, carPriceDetail},
components: {componentsMap, carPriceDetail,groupPriceDetail,hotelPriceDetail,ticketPriceDetail,carMap,groupMap,hotelMap,ticketMap},
// GoodsType: this.productType,//商品类型(见枚举) 12包车 13 接机 14送机
data() {
return {
goodTypeList: ['','一日游','多日游','小包团','景点门票','主题乐园','博物馆','历史景点','温泉饭店','星级饭店','度假村','民宿','包车','接机','送机'],
showCode: false,
detail: {},
orderIcon: '',
iconColor: '',
......@@ -130,6 +153,29 @@ mounted() {
}
},
methods: {
goPayOrder() {
this.CommonJump('/pay/' + this.orderNo)
},
cancalOrder() {
console.log(this.$q.dialog)
this.$q.dialog({
title: '取消確認',
message: '訂單取消後,系統將立即釋放位置,請問是否執行?',
cancel: true,
persistent: true
}).onOk(() => {
this.apipost('GetCancelOrder_post',{OrderNo: this.orderNo},r=>{
if(r.data.resultCode==1){
this.$message.success('訂單取消成功')
this.getOrderList()
}else{
this.$message.error('訂單取消失敗,請重新嘗試')
}
})
}).onCancel(() => {
// console.log('>>>> Cancel')
})
},
goHomeHandler(){
this.loading=false
setTimeout(() => {
......@@ -147,7 +193,7 @@ methods: {
this.orderIcon = ["","icontime1","iconsuccess", "iconsuccess", "icontishi"][this.detail.OrderStatus]
this.iconColor = ["","blue","blue", "green", "grey"][this.detail.OrderStatus]
console.log('get detail', this.orderIcon, this.iconColor)
this.orderNo=OrderNo
this.orderNo=orderNo
this.orderInfo=r.data.data
this.loading=false
} else {
......
<style lang="scss" scoped>
</style>
<template>
<div>
<div
class="text-h5 text-weight-bold text-left q-mt-xl"
ref="assemblypoint"
:class="{
'q-px-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}"
>
景區地址
</div>
<div
class="q-mt-lg trip-text rounded-borders q-mb-xl"
style="border: 1px dashed var(--q-color-warning)"
:class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}">
<div class="q-pa-md" style="border-bottom: 1px dashed var(--q-color-warning)">
<div class="text-weight-bold text-h6">地點名稱:{{dataList.Name}}</div>
<div class="text-grey-9">地址:{{`${dataList.Address}`}}</div>
</div>
<div class="q-pa-md" :class="{
'q-mx-md': $q.screen.width < 1220 && $q.platform.is.mobile,
}">
<componentsMap v-if="AddressObj.Lng&&AddressObj.Lat" :AddressObj="AddressObj"/>
<div v-else class="card text-center">经纬度未知</div>
</div>
</div></div>
</template>
<script>
export default {
props: {
orderInfo: {
type: Object,
default: () => ({})
}
},
data() {
return {
dataList: {},
AddressObj: {},
details: null,
sumPrice: 0,//总金额
DiscountsMoney: 0,//优惠金额
Money: 0, // 支付金額
MailingMoney: 0, // 邮寄费
MailingState: '',//邮寄状态 1自取 2邮寄
}
},
mounted() {
this.getData()
// this.getOrder()
},
methods: {
// 获取商品详情
getData() {
this.$q.loading.show();
this.apipost(
"b2c_get_GetTicketCouponsDetail",
{ CouponsId: this.msg.configId },
(r) => {
if (r.data.resultCode == 1) {
let addList = function (arr) {
arr.forEach(item => {
item.checked = false
item.Count = 1
});
};
addList(r.data.data.TicketList);
this.dataList = r.data.data;
this.selectedId = this.dataList.TicketList.find(x=>x.Id)
this.dataList.imgCover = this.dataList.PicPathList;
this.AddressObj = this.dataList
this.AddressObj.Address = `${this.dataList.CountryName}-${this.dataList.CityName}-${this.dataList.ProvinceName}-${this.dataList.Address}`
this.isShow = true;
if (this.dataList.videoStr && this.dataList.videoStr != "") {
this.options.loop = false;
this.options.currentPage = 1;
this.$nextTick(() => {
setTimeout(() => {
let t = document.querySelectorAll(".slider-wrapper");
if (t.length > 0) {
let d = t[0].getBoundingClientRect();
this.videoPosition = d.top + d.height;
}
}, 1000);
});
}
this.$nextTick(() => {
this.getCarPriceData()
setTimeout(() => {
this.navs.forEach((x) => {
x.top =
this.$refs[x.val].getBoundingClientRect().top + this.currentHeight - 60;
});
this.priceListHeight =
this.$refs.pricelist.getBoundingClientRect().top +
this.currentHeight -
60;
}, 1000);
try {
document
.querySelector("#scrollId .q-page-container")
.addEventListener("scroll", this.handleScrollDay);
} catch (error) {
// console.log(document.querySelector('#scrollId .q-page-container'))
// console.log('异常信息', error)
}
});
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
});
}
this.$q.loading.hide();
},
null
);
},
}
}
</script>
\ No newline at end of file
<style lang="scss" scoped>
</style>
<template>
<div>
<div
class="rounded-borders bg-white q-py-md"
style="width: 300px"
:style="{
width:$q.platform.is.mobile
? 'unset'
: '300px',
position:$q.platform.is.mobile?'unset':'sticky',
top:$q.platform.is.mobile?'unset':'50px',
}"
>
<!-- <div class="text-subtitle1 text-weight-bolder">付款明細</div> -->
<!-- <q-separator color="grey-2" class="q-my-md"/> -->
<!-- <hr
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="q-mr-lg">總金額</div>
<div class="text-subtitle2 text-weight-bolder">
CNY {{sumPrice }}
</div>
</div>
<hr style="border:none;" class="bg-transparent q-mb-sm" />
<div class="row q-mb-sm items-center" v-if="MailingState==2&&MailingMoney>0">
<div class="q-mr-lg">邮寄费</div>
<div
class="text-subtitle2 text-weight-bolder text-grey-6"
>
CNY {{ MailingMoney }}
</div>
</div>
<div class="row q-mb-sm items-center">
<div class="q-mr-lg">優惠金額</div>
<div
class="text-subtitle2 text-weight-bolder text-teal"
v-if="DiscountsMoney > 0"
>
CNY - {{ DiscountsMoney }}
</div>
<div class="text-grey-5" v-else>暫無優惠</div>
</div>
<!-- <div class="row q-mb-sm items-center">
<div class="col">支付金額</div>
<div class="text-h6 text-weight-bolder text-primary product-price">
CNY {{ Money }}
</div>
</div> -->
</div>
</div>
</div>
</template>
<script>
export default {
props: {
orderInfo: {
type: Object,
default: () => ({})
}
},
data() {
return {
details: null,
sumPrice: 0,//总金额
DiscountsMoney: 0,//优惠金额
Money: 0, // 支付金額
MailingMoney: 0, // 邮寄费
MailingState: '',//邮寄状态 1自取 2邮寄
}
},
mounted() {
this.getData()
this.getOrder()
},
methods: {
// 获取商品详情
getData() {
this.$q.loading.show();
this.apipost("b2c_get_GetTicketCouponsDetail",
{ CouponsId: this.orderInfo.GoodsId },
(r) => {
if (r.data.resultCode == 1) {
this.details = r.data.data;
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
timeout: 2000, // 以毫秒为单位; 0意味着没有超时
});
}
this.$q.loading.hide();
},
null
);
},
getOrder() {
// http://dev.api.oytour.com/#/home/project/inside/api/detail?groupID=703&childGroupID=710&apiID=4256&projectName=REBORN&projectID=2
this.$q.loading.show();
this.apipost(
"ticket_post_GetSaleTicketOrderInfo",
{ OrderId: this.orderInfo.ErpOrderId },
(r) => {
if (r.data.resultCode == 1) {
this.dataList = r.data.data;
const {DiscountsMoney,MailingMoney,MailingState,Money} = r.data.data;
console.log('getTicket Data', r.data.data,DiscountsMoney,MailingMoney,MailingState,Money)
// sumPrice: 0,//总金额
// DiscountsMoney: 0,//优惠金额
// Money: 0, // 支付金額
// MailingMoney: 0, // 邮寄费
// MailingState: '',//邮寄状态 1自取 2邮寄
this.Money = Money;
this.DiscountsMoney = DiscountsMoney
this.MailingMoney = MailingMoney;
this.MailingState = MailingState;
this.sumPrice = Money + MailingMoney + DiscountsMoney
this.sumPrice = this.moneyFormat(this.sumPrice, 2)
this.Money = this.moneyFormat(this.Money, 2)
this.DiscountsMoney = this.moneyFormat(this.DiscountsMoney, 2)
this.MailingMoney = this.moneyFormat(this.MailingMoney, 2)
} else {
this.$q.notify({
type: "negative",
message: r.data.message,
position: "top",
timeout: 2000, // 以毫秒为单位; 0意味着没有超时
});
}
this.$q.loading.hide();
},
null
);
},
emitAddress() {
const {PlaceList} = this.dataList
PlaceList.findItem(item => item.id === this.id)
this.$emit('address', this.dataList)
}
}
}
</script>
\ No newline at end of file
......@@ -7644,7 +7644,7 @@ qs@~6.5.2:
resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz"
integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
quasar@^1.22.5:
quasar@1.22.5:
version "1.22.5"
resolved "https://registry.yarnpkg.com/quasar/-/quasar-1.22.5.tgz#7c33a02a5541b62b057f1d805b64cbcb59243152"
integrity sha512-cb/Q1Nvx1Lo3i2Gq+7j6kN/DJzZrTPG6JJKus3WJ0YpqsiovoWchnbDrGkTyL8nCnj2Im4SAX50DF0Vbd6pK3w==
......
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