H5支持微信支付

This commit is contained in:
Gaoxs
2020-08-20 17:55:27 +08:00
parent 48e073d573
commit 12238a98d6
7 changed files with 168 additions and 74 deletions

View File

@ -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>

View File

@ -150,15 +150,20 @@ export default {
});
} else {
uni.showToast({
title: "已取消绑定",
title: "操作成功",
icon: "none",
duration: 2000
});
// uni.showToast({
// title: "已取消绑定",
// icon: "none",
// duration: 2000
// });
// that.$yrouter.replace({
// path: "/pages/user/PersonalData/index"
// });
}
that.$yrouter.go(-1);
that.$yrouter.back();
});
} catch (err) {
uni.showToast({