|
|
|
@ -197,16 +197,16 @@ import {
|
|
|
|
|
getProductDetail, |
|
|
|
|
postCartAdd, |
|
|
|
|
getCartCount, |
|
|
|
|
getProductCode |
|
|
|
|
getProductCode, |
|
|
|
|
} from "@/api/store"; |
|
|
|
|
import { |
|
|
|
|
getCoupon, |
|
|
|
|
getCollectAdd, |
|
|
|
|
getCollectDel, |
|
|
|
|
getUserInfo |
|
|
|
|
getUserInfo, |
|
|
|
|
} from "@/api/user"; |
|
|
|
|
import { isWeixin, PosterCanvas, handleQrCode } from "@/utils"; |
|
|
|
|
// import { wechatEvevt } from "@/libs/wechat"; |
|
|
|
|
import { wechatEvevt } from "@/libs/wechat"; |
|
|
|
|
import { imageBase64 } from "@/api/public"; |
|
|
|
|
import { mapGetters } from "vuex"; |
|
|
|
|
|
|
|
|
@ -220,9 +220,9 @@ export default {
|
|
|
|
|
CouponPop, |
|
|
|
|
ProductWindow, |
|
|
|
|
StorePoster, |
|
|
|
|
ShareInfo |
|
|
|
|
ShareInfo, |
|
|
|
|
}, |
|
|
|
|
data: function() { |
|
|
|
|
data: function () { |
|
|
|
|
return { |
|
|
|
|
shareInfoStatus: false, |
|
|
|
|
weixinStatus: false, |
|
|
|
@ -232,18 +232,18 @@ export default {
|
|
|
|
|
image: "", |
|
|
|
|
title: "", |
|
|
|
|
price: "", |
|
|
|
|
code: "" |
|
|
|
|
code: "", |
|
|
|
|
}, |
|
|
|
|
posterImageStatus: false, |
|
|
|
|
animated: false, |
|
|
|
|
coupon: { |
|
|
|
|
coupon: false, |
|
|
|
|
list: [] |
|
|
|
|
list: [], |
|
|
|
|
}, |
|
|
|
|
attr: { |
|
|
|
|
cartAttr: false, |
|
|
|
|
productAttr: [], |
|
|
|
|
productSelect: {} |
|
|
|
|
productSelect: {}, |
|
|
|
|
}, |
|
|
|
|
isOpen: false, //是否打开属性组件 |
|
|
|
|
productValue: [], |
|
|
|
@ -263,23 +263,23 @@ export default {
|
|
|
|
|
swiperRecommend: { |
|
|
|
|
pagination: { |
|
|
|
|
el: ".swiper-pagination", |
|
|
|
|
clickable: true |
|
|
|
|
clickable: true, |
|
|
|
|
}, |
|
|
|
|
autoplay: false, |
|
|
|
|
loop: false, |
|
|
|
|
speed: 1000, |
|
|
|
|
observer: true, |
|
|
|
|
observeParents: true |
|
|
|
|
observeParents: true, |
|
|
|
|
}, |
|
|
|
|
goodList: [], |
|
|
|
|
systemStore: {}, |
|
|
|
|
qqmapsdk: null, |
|
|
|
|
productConClass: "product-con", |
|
|
|
|
tempName: "全国包邮" |
|
|
|
|
tempName: "全国包邮", |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
computed: mapGetters(["isLogin", "location"]), |
|
|
|
|
mounted: function() { |
|
|
|
|
mounted: function () { |
|
|
|
|
let url = handleQrCode(); |
|
|
|
|
if (url && url.productId) { |
|
|
|
|
this.id = url.productId; |
|
|
|
@ -287,6 +287,7 @@ export default {
|
|
|
|
|
this.id = this._route.query.id; |
|
|
|
|
} |
|
|
|
|
this.productCon(); |
|
|
|
|
this.setOpenShare(); |
|
|
|
|
}, |
|
|
|
|
watch: { |
|
|
|
|
posterImageStatus(status) { |
|
|
|
@ -296,7 +297,7 @@ export default {
|
|
|
|
|
} else { |
|
|
|
|
this.productConClass = "product-con"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
goShoppingCart() { |
|
|
|
@ -304,48 +305,48 @@ export default {
|
|
|
|
|
}, |
|
|
|
|
goCustomerList() { |
|
|
|
|
this.$yrouter.push({ |
|
|
|
|
path: "/pages/user/CustomerList/index" |
|
|
|
|
path: "/pages/user/CustomerList/index", |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
goStoreList() { |
|
|
|
|
this.$yrouter.push({ |
|
|
|
|
path: "/pages/shop/StoreList/index" |
|
|
|
|
path: "/pages/shop/StoreList/index", |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
goEvaluateList(id) { |
|
|
|
|
this.$yrouter.push({ |
|
|
|
|
path: "/pages/shop/EvaluateList/index", |
|
|
|
|
query: { |
|
|
|
|
id |
|
|
|
|
} |
|
|
|
|
id, |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
showChang: function(data) { |
|
|
|
|
showChang: function (data) { |
|
|
|
|
this.$yrouter.push({ |
|
|
|
|
path: "/pages/map/index", |
|
|
|
|
query: data |
|
|
|
|
query: data, |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
updateTitle() { |
|
|
|
|
// document.title = this.storeInfo.storeName || this.$yroute.meta.title; |
|
|
|
|
}, |
|
|
|
|
setShareInfoStatus: function() { |
|
|
|
|
setShareInfoStatus: function () { |
|
|
|
|
this.shareInfoStatus = !this.shareInfoStatus; |
|
|
|
|
this.posters = false; |
|
|
|
|
}, |
|
|
|
|
shareCode: function() { |
|
|
|
|
shareCode: function () { |
|
|
|
|
var that = this; |
|
|
|
|
getProductCode(that.id).then(res => { |
|
|
|
|
getProductCode(that.id).then((res) => { |
|
|
|
|
that.posterData.code = res.data.code; |
|
|
|
|
that.listenerActionSheet(); |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
setPosterImageStatus: function() { |
|
|
|
|
setPosterImageStatus: function () { |
|
|
|
|
this.posterImageStatus = !this.posterImageStatus; |
|
|
|
|
this.posters = false; |
|
|
|
|
}, |
|
|
|
|
//产品详情接口; |
|
|
|
|
productCon: function() { |
|
|
|
|
productCon: function () { |
|
|
|
|
let that = this; |
|
|
|
|
let from = this.location; |
|
|
|
|
if (this.$deviceType == "app") { |
|
|
|
@ -353,7 +354,7 @@ export default {
|
|
|
|
|
} |
|
|
|
|
uni.showLoading({ title: "加载中", mask: true }); |
|
|
|
|
getProductDetail(that.id, from) |
|
|
|
|
.then(res => { |
|
|
|
|
.then((res) => { |
|
|
|
|
res.data.storeInfo.description = res.data.storeInfo.description.replace( |
|
|
|
|
/\<img/gi, |
|
|
|
|
'<img style="max-width:100%;height:auto;"' |
|
|
|
@ -385,7 +386,7 @@ export default {
|
|
|
|
|
var list = good_list.slice(i * 6, 6); |
|
|
|
|
if (list.length) |
|
|
|
|
goodArray.push({ |
|
|
|
|
list: list |
|
|
|
|
list: list, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
that.mapKay = res.data.mapKay; |
|
|
|
@ -394,12 +395,12 @@ export default {
|
|
|
|
|
that.DefaultSelect(); |
|
|
|
|
that.getCartCount(); |
|
|
|
|
}) |
|
|
|
|
.catch(err => { |
|
|
|
|
.catch((err) => { |
|
|
|
|
uni.showToast({ |
|
|
|
|
title: |
|
|
|
|
err.msg || err.response.data.msg || err.response.data.message, |
|
|
|
|
icon: "none", |
|
|
|
|
duration: 2000 |
|
|
|
|
duration: 2000, |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
.finally(() => { |
|
|
|
@ -407,7 +408,7 @@ export default {
|
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
//默认选中属性; |
|
|
|
|
DefaultSelect: function() { |
|
|
|
|
DefaultSelect: function () { |
|
|
|
|
let productAttr = this.attr.productAttr; |
|
|
|
|
let value = []; |
|
|
|
|
for (let i = 0; i < productAttr.length; i++) { |
|
|
|
@ -462,7 +463,7 @@ export default {
|
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
//购物车; |
|
|
|
|
ChangeCartNum: function(changeValue) { |
|
|
|
|
ChangeCartNum: function (changeValue) { |
|
|
|
|
//changeValue:是否 加|减 |
|
|
|
|
//获取当前变动属性 |
|
|
|
|
let productSelect = this.productValue[this.attrValue]; |
|
|
|
@ -495,52 +496,52 @@ export default {
|
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
//将父级向子集多次传送的函数合二为一; |
|
|
|
|
changeFun: function(opt) { |
|
|
|
|
changeFun: function (opt) { |
|
|
|
|
if (typeof opt !== "object") opt = {}; |
|
|
|
|
let action = opt.action || ""; |
|
|
|
|
let value = opt.value === undefined ? "" : opt.value; |
|
|
|
|
this[action] && this[action](value); |
|
|
|
|
}, |
|
|
|
|
//打开优惠券插件; |
|
|
|
|
couponTap: function() { |
|
|
|
|
couponTap: function () { |
|
|
|
|
let that = this; |
|
|
|
|
that.coupons(); |
|
|
|
|
that.coupon.coupon = true; |
|
|
|
|
}, |
|
|
|
|
changecoupon: function(msg) { |
|
|
|
|
changecoupon: function (msg) { |
|
|
|
|
this.coupon.coupon = msg; |
|
|
|
|
this.coupons(); |
|
|
|
|
}, |
|
|
|
|
currentcoupon: function(res) { |
|
|
|
|
currentcoupon: function (res) { |
|
|
|
|
let that = this; |
|
|
|
|
that.coupon.coupon = false; |
|
|
|
|
that.$set(that.coupon.list[res], "is_use", true); |
|
|
|
|
}, |
|
|
|
|
//可领取优惠券接口; |
|
|
|
|
coupons: function() { |
|
|
|
|
coupons: function () { |
|
|
|
|
let that = this, |
|
|
|
|
q = { |
|
|
|
|
page: 1, |
|
|
|
|
limit: 20 |
|
|
|
|
limit: 20, |
|
|
|
|
}; |
|
|
|
|
getCoupon(q).then(res => { |
|
|
|
|
getCoupon(q).then((res) => { |
|
|
|
|
that.$set(that, "couponList", res.data || []); |
|
|
|
|
that.$set(that.coupon, "list", res.data); |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
//打开属性插件; |
|
|
|
|
selecAttrTap: function() { |
|
|
|
|
selecAttrTap: function () { |
|
|
|
|
this.attr.cartAttr = true; |
|
|
|
|
this.isOpen = true; |
|
|
|
|
}, |
|
|
|
|
changeattr: function(msg) { |
|
|
|
|
changeattr: function (msg) { |
|
|
|
|
// 修改了规格 |
|
|
|
|
console.log(msg); |
|
|
|
|
this.attr.cartAttr = msg; |
|
|
|
|
this.isOpen = false; |
|
|
|
|
}, |
|
|
|
|
//选择属性; |
|
|
|
|
ChangeAttr: function(res) { |
|
|
|
|
ChangeAttr: function (res) { |
|
|
|
|
// 修改了规格 |
|
|
|
|
console.log(res); |
|
|
|
|
let productSelect = this.productValue[res.value]; |
|
|
|
@ -564,27 +565,27 @@ export default {
|
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
//收藏商品 |
|
|
|
|
setCollect: function() { |
|
|
|
|
setCollect: function () { |
|
|
|
|
let that = this, |
|
|
|
|
id = that.storeInfo.id, |
|
|
|
|
category = "product"; |
|
|
|
|
if (that.storeInfo.userCollect) { |
|
|
|
|
getCollectDel(id, category).then(function() { |
|
|
|
|
getCollectDel(id, category).then(function () { |
|
|
|
|
that.storeInfo.userCollect = !that.storeInfo.userCollect; |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
getCollectAdd(id, category).then(function() { |
|
|
|
|
getCollectAdd(id, category).then(function () { |
|
|
|
|
that.storeInfo.userCollect = !that.storeInfo.userCollect; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
// 点击加入购物车按钮 |
|
|
|
|
joinCart: function() { |
|
|
|
|
joinCart: function () { |
|
|
|
|
//0=加入购物车 |
|
|
|
|
this.goCat(0); |
|
|
|
|
}, |
|
|
|
|
// 加入购物车; |
|
|
|
|
goCat: function(news) { |
|
|
|
|
goCat: function (news) { |
|
|
|
|
let that = this, |
|
|
|
|
productSelect = that.productValue[this.attrValue]; |
|
|
|
|
//打开属性 |
|
|
|
@ -607,7 +608,7 @@ export default {
|
|
|
|
|
uni.showToast({ |
|
|
|
|
title: "产品库存不足,请选择其它", |
|
|
|
|
icon: "none", |
|
|
|
|
duration: 2000 |
|
|
|
|
duration: 2000, |
|
|
|
|
}); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
@ -618,18 +619,18 @@ export default {
|
|
|
|
|
uniqueId: |
|
|
|
|
that.attr.productSelect !== undefined |
|
|
|
|
? that.attr.productSelect.unique |
|
|
|
|
: "" |
|
|
|
|
: "", |
|
|
|
|
}; |
|
|
|
|
postCartAdd(q) |
|
|
|
|
.then(function(res) { |
|
|
|
|
.then(function (res) { |
|
|
|
|
that.isOpen = false; |
|
|
|
|
that.attr.cartAttr = false; |
|
|
|
|
if (news) { |
|
|
|
|
that.$yrouter.push({ |
|
|
|
|
path: "/pages/order/OrderSubmission/index", |
|
|
|
|
query: { |
|
|
|
|
id: res.data.cartId |
|
|
|
|
} |
|
|
|
|
id: res.data.cartId, |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
uni.showToast({ |
|
|
|
@ -638,32 +639,32 @@ export default {
|
|
|
|
|
duration: 2000, |
|
|
|
|
complete: () => { |
|
|
|
|
that.getCartCount(true); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.catch(error => { |
|
|
|
|
.catch((error) => { |
|
|
|
|
that.isOpen = false; |
|
|
|
|
uni.showToast({ |
|
|
|
|
title: error.response.data.msg, |
|
|
|
|
icon: "none", |
|
|
|
|
duration: 2000 |
|
|
|
|
duration: 2000, |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
//获取购物车数量 |
|
|
|
|
getCartCount: function(isAnima) { |
|
|
|
|
getCartCount: function (isAnima) { |
|
|
|
|
let that = this; |
|
|
|
|
const isLogin = that.isLogin; |
|
|
|
|
if (isLogin) { |
|
|
|
|
getCartCount({ |
|
|
|
|
numType: 0 |
|
|
|
|
}).then(res => { |
|
|
|
|
numType: 0, |
|
|
|
|
}).then((res) => { |
|
|
|
|
that.CartCount = res.data.count; |
|
|
|
|
//加入购物车后重置属性 |
|
|
|
|
if (isAnima) { |
|
|
|
|
that.animated = true; |
|
|
|
|
setTimeout(function() { |
|
|
|
|
setTimeout(function () { |
|
|
|
|
that.animated = false; |
|
|
|
|
}, 500); |
|
|
|
|
} |
|
|
|
@ -671,20 +672,75 @@ export default {
|
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
//立即购买; |
|
|
|
|
tapBuy: function() { |
|
|
|
|
tapBuy: function () { |
|
|
|
|
// 1=直接购买 |
|
|
|
|
this.goCat(1); |
|
|
|
|
}, |
|
|
|
|
listenerActionSheet: function() { |
|
|
|
|
listenerActionSheet: function () { |
|
|
|
|
if (isWeixin() === true) { |
|
|
|
|
this.weixinStatus = true; |
|
|
|
|
} |
|
|
|
|
this.posters = true; |
|
|
|
|
}, |
|
|
|
|
listenerActionClose: function() { |
|
|
|
|
listenerActionClose: function () { |
|
|
|
|
this.posters = false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
setOpenShare: function () { |
|
|
|
|
var data = this.storeInfo; |
|
|
|
|
var href = location.href; |
|
|
|
|
if (this.$deviceType == "weixin") { |
|
|
|
|
if (this.isLogin) { |
|
|
|
|
getUserInfo().then((res) => { |
|
|
|
|
href = |
|
|
|
|
href.indexOf("?") === -1 |
|
|
|
|
? href + "?spread=" + res.data.uid |
|
|
|
|
: href + "&spread=" + res.data.uid; |
|
|
|
|
var configAppMessage = { |
|
|
|
|
desc: data.storeInfo, |
|
|
|
|
title: data.storeName, |
|
|
|
|
link: href, |
|
|
|
|
imgUrl: data.image, |
|
|
|
|
}; |
|
|
|
|
wechatEvevt( |
|
|
|
|
["updateAppMessageShareData", "updateTimelineShareData"], |
|
|
|
|
configAppMessage |
|
|
|
|
) |
|
|
|
|
.then((res) => { |
|
|
|
|
console.log(res); |
|
|
|
|
}) |
|
|
|
|
.catch((res) => { |
|
|
|
|
console.log(res); |
|
|
|
|
if (res.is_ready) { |
|
|
|
|
res.wx.updateAppMessageShareData(configAppMessage); |
|
|
|
|
res.wx.updateTimelineShareData(configAppMessage); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
var configAppMessage = { |
|
|
|
|
desc: data.storeInfo, |
|
|
|
|
title: data.storeName, |
|
|
|
|
link: href, |
|
|
|
|
imgUrl: data.image, |
|
|
|
|
}; |
|
|
|
|
wechatEvevt( |
|
|
|
|
["updateAppMessageShareData", "updateTimelineShareData"], |
|
|
|
|
configAppMessage |
|
|
|
|
) |
|
|
|
|
.then((res) => { |
|
|
|
|
console.log(res); |
|
|
|
|
}) |
|
|
|
|
.catch((res) => { |
|
|
|
|
console.log(res); |
|
|
|
|
if (res.is_ready) { |
|
|
|
|
res.wx.updateAppMessageShareData(configAppMessage); |
|
|
|
|
res.wx.updateTimelineShareData(configAppMessage); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}; |
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|