// 商品详情业务 import { Weixin } from '@/common/js/wx-jssdk.js'; export default { data() { return { skuId: 0, goodsId: 0, isIphoneX: false, //判断手机是否是iphoneX以上 whetherCollection: 0, //是否开启预览,0:不开启,1:开启 preview: 0, videoContext: '', // 媒体,图片,视频 // 解决每个商品SKU图片数量不同时,无法切换到第一个,导致轮播图显示不出来 swiperInterval: 1, swiperAutoplay: false, swiperCurrent: 1, switchMedia: 'img', //评价 goodsEvaluate: [{ member_headimg: '', member_name: '', content: '', images: [], create_time: 0, sku_name: '' }], evaluateConfig: { evaluate_audit: 1, evaluate_show: 0, evaluate_status: 1 }, // 是否可分享到好物圈 goodsCircle: false, service: null, shareUrl: '', // 分享链接 source_member: 0, //分享人的id isCommunity: false, //社群弹窗 poster: "-1", //海报 posterMsg: "", //海报错误信息 posterHeight: 0, posterParams: {}, //海报所需参数 goodsRoute: '', posterApi: '', goodsAttrShow: false, // 商品属性是否展开 //门店列表 storeList: { data: [], page: 1, page_size: 10 }, isShowStore: false, latitude: null, // 纬度 longitude: null, // 经度 evaluateCount: 0, // 商品评论数量 deliveryType: null, // 配送方式 isVirtual: 0 //是否为虚拟商品 } }, created() { this.isIphoneX = this.$util.uniappIsIPhoneX(); if (this.location) { this.latitude = this.location.latitude; this.longitude = this.location.longitude; } else { this.$util.getLocation(); } this.getStoreData(); }, watch: { location: function (nVal) { if (nVal) { this.latitude = nVal.latitude; this.longitude = nVal.longitude; this.getStoreData(); } } }, methods: { init(params) { this.skuId = params.sku_id; this.goodsId = params.goods_id; this.preview = params.preview; this.source_member = params.source_member; this.whetherCollection = params.whetherCollection; this.posterParams = params.posterParams; this.shareUrl = params.shareUrl; this.goodsRoute = params.goodsRoute; this.posterApi = params.posterApi; this.isVirtual = params.isVirtual; this.deliveryType = params.deliveryType; this.evaluateConfig = params.evaluateConfig; if (this.evaluateConfig.evaluate_show == 1) { //商品评论 this.getGoodsEvaluate(params.evaluateList); this.evaluateCount = params.evaluateCount; } for (let k in this.deliveryType) { if (k == 'store') { this.isShowStore = true; } } this.getService(); this.videoContext = uni.createVideoContext('goodsVideo'); // #ifdef MP-WEIXIN this.goodsSyncToGoodsCircle(); // #endif }, swiperChange(e) { this.swiperCurrent = e.detail.current + 1; }, //-------------------------------------服务------------------------------------- openMerchantsServicePopup() { this.$refs.merchantsServicePopup.open(); }, closeMerchantsServicePopup() { this.$refs.merchantsServicePopup.close(); }, //-------------------------------------门店列表------------------------------------- openStoreListPopup() { this.$refs.storeListPopup.open(); }, closeStoreListPopup() { this.$refs.storeListPopup.close(); }, getStoreData() { //门店列表 let data = { page: this.storeList.page, page_size: this.storeList.page_size }; if (this.latitude && this.longitude) { data.latitude = this.latitude; data.longitude = this.longitude; } this.$api.sendRequest({ url: '/api/store/page', data: data, success: res => { if (this.storeList.page == 1) this.storeList.data == []; if (res.code >= 0 && res.data) { this.storeList.data = this.storeList.data.concat(res.data.list); } else { this.$util.showToast({ title: res.message }); } } }); }, selectStore(item) { this.$util.redirectTo('/pages_tool/store/detail', { store_id: item.store_id }); this.closeStoreListPopup(); }, //-------------------------------------属性------------------------------------- switchGoodsAttr() { this.goodsAttrShow = !this.goodsAttrShow; }, //-------------------------------------评价------------------------------------- //商品评论列表 getGoodsEvaluate(list) { if (list) { this.goodsEvaluate = list; this.goodsEvaluate.forEach((item, index) => { if (this.goodsEvaluate[index].images) this.goodsEvaluate[index].images = this.goodsEvaluate[index].images.split(","); if (this.goodsEvaluate[index].is_anonymous == 1) this.goodsEvaluate[index].member_name = this.goodsEvaluate[index].member_name.replace(this.goodsEvaluate[index].member_name.substring(1, this.goodsEvaluate[index].member_name.length - 1), '***') }) // if (this.goodsEvaluate.images) this.goodsEvaluate.images = this.goodsEvaluate.images.split(","); // if (this.goodsEvaluate.is_anonymous == 1) this.goodsEvaluate.member_name = this.goodsEvaluate.member_name.replace( // this.goodsEvaluate.member_name.substring(1, this.goodsEvaluate.member_name.length - 1), '***') } }, // 预览评价图片 previewEvaluate(index, img_index, field) { var paths = []; for (let i = 0; i < this.goodsEvaluate[index][field].length; i++) { paths.push(this.$util.img(this.goodsEvaluate[index][field][i])); } uni.previewImage({ current: img_index, urls: paths }); }, //-------------------------------------关注------------------------------------- async collection() { if (this.preview) return; // 开启预览,禁止任何操作和跳转 if (this.storeToken) { //未关注添加关注 if (this.whetherCollection == 0) { let res = await this.$api.sendRequest({ url: "/api/goodscollect/add", data: { sku_id: this.skuId, goods_id: this.goodsSkuDetail.goods_id, sku_name: this.goodsSkuDetail.sku_name, sku_price: this.goodsSkuDetail.show_price, sku_image: this.goodsSkuDetail.sku_image }, async: false, }); var data = res.data; if (data > 0) { this.whetherCollection = 1; } } else { //已关注取消关注 let res = await this.$api.sendRequest({ url: "/api/goodscollect/delete", data: { goods_id: this.goodsSkuDetail.goods_id }, async: false, }); var data = res.data; if (data > 0) { this.whetherCollection = 0; } } return this.whetherCollection; } else { if (this.source_member) { this.$refs.login.open(this.shareUrl + '&source_member=' + this.source_member); } else { this.$refs.login.open(this.shareUrl); } } }, //-------------------------------------分享------------------------------------- // 打开分享弹出层 openSharePopup() { this.$refs.sharePopup.open(); }, // 关闭分享弹出层 closeSharePopup() { this.$refs.sharePopup.close(); }, copyUrl() { let text = this.$config.h5Domain + this.shareUrl; if (this.memberInfo && this.memberInfo.member_id) text += '&source_member=' + this.memberInfo.member_id; this.$util.copy(text, () => { this.closeSharePopup(); }); }, //-------------------------------------海报------------------------------------- // 打开海报弹出层 openPosterPopup() { this.getGoodsPoster(); this.$refs.sharePopup.close(); }, // 关闭海报弹出层 closePosterPopup() { this.$refs.posterPopup.close(); this.poster = '' }, //生成海报 getGoodsPoster() { uni.showLoading({ 'title': '海报生成中...' }) //活动海报信息 if (this.memberInfo && this.memberInfo.member_id) this.posterParams.source_member = this.memberInfo.member_id; this.$api.sendRequest({ url: this.posterApi, data: { page: this.goodsRoute, qrcode_param: JSON.stringify(this.posterParams) }, success: res => { if (res.code == 0) { this.$refs.posterPopup.open(); this.poster = res.data.path + "?time=" + new Date().getTime(); } else { this.posterMsg = res.message; this.$util.showToast({ title: res.message }) } uni.hideLoading(); }, fail: err => { uni.hideLoading(); } }); }, // 预览图片 previewMedia(index) { var paths = []; for (let i = 0; i < this.goodsSkuDetail.sku_images.length; i++) { paths.push(this.$util.img(this.goodsSkuDetail.sku_images[i], { size: 'big' })); } uni.previewImage({ current: index, urls: paths, // longPressActions: { // itemList: ['发送给朋友', '保存图片', '关注'], // success: function(data) { // console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片'); // }, // fail: function(err) { // console.log(err.errMsg); // } // } }); }, swiperImageError(index) { this.goodsSkuDetail.sku_images[index] = this.$util.getDefaultImage().goods; this.$forceUpdate(); }, // #ifdef MP || APP-PLUS //小程序中保存海报 saveGoodsPoster() { let url = this.$util.img(this.poster); uni.downloadFile({ url: url, success: (res) => { if (res.errMsg == "downloadFile:ok") { uni.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: () => { this.$util.showToast({ title: "保存成功" }); }, fail: (err) => { this.$util.showToast({ title: "保存失败,请稍后重试" }); } }); } }, fail: (err) => { this.$util.showToast({ title: "保存失败,请稍后重试" }); } }); }, // #endif //售后保障查询 getService() { this.$api.sendRequest({ url: '/api/goods/aftersale', success: res => { if (res.code == 0 && res.data) { this.service = res.data; } } }); }, // #ifdef MP-WEIXIN /** * 将商品同步到微信圈子 */ goodsSyncToGoodsCircle() { this.$api.sendRequest({ url: '/goodscircle/api/goods/sync', data: { goods_id: this.goodsSkuDetail.goods_id }, success: res => { if (res.code == 0) { this.goodsCircle = true; } } }) }, /** * 将商品推荐到微信圈子 */ openBusinessView() { if (wx.openBusinessView) { wx.openBusinessView({ businessType: 'friendGoodsRecommend', extraData: { product: { item_code: this.goodsSkuDetail.goods_id, title: this.goodsSkuDetail.sku_name, image_list: this.goodsSkuDetail.sku_images.map((ele) => { return this.$util.img(ele); }) } }, success: function (res) { console.log('success', res); }, fail: function (res) { console.log('fail', res); } }) } }, // #endif toEvaluateDetail(id) { this.$util.redirectTo('/pages_tool/goods/evaluate', { goods_id: id }); }, showImg(e) { //拿到图片的路径里面的内容放在我们数组中 let contentimg = e.target.dataset.nodes; let arrImg = []; for (var i = 0; i < contentimg.length; i++) { var img = contentimg[i].children; if (Array.isArray(img)) { for (var j = 0; j < img.length; j++) { if (img[j].attrs && img[j].name == "img") { if (img[j].attrs.src) { arrImg.push(img[j].attrs.src) } } } } } //最后一步就是把我们的所有图片放在预览的api中就可以了 uni.previewImage({ current: arrImg, urls: arrImg, }) }, //-------------------------------------社群------------------------------------- //添加福利群 onCommunity() { this.isCommunity = true }, onCloseCommunity() { this.isCommunity = false }, } }