export default { data() { return { goodsRoute: '/pages/goods/detail', couponList: [], //优惠券列表 couponBtnSwitch: false, //获取优惠券防止重复提交 posterApi: '/api/goods/poster', //满减活动 manjian: { type: 0, manjian_name: "", rule_json: null }, //组合套餐 bundlingType: false, bundling: [{ bundling_goods: { bl_name: '', sku_image: '' } }], membercard: null, // 会员卡信息 hackReset: true, cardOff: false, informationform:[]//留言表单 } }, computed: { showDiscount() { var flag = false; if ( this.preview == 0 && this.addonIsExist.discount && this.goodsSkuDetail.promotion_type == 1 && this.goodsSkuDetail.discountTimeMachine && (!this.goodsSkuDetail.member_price || (this.goodsSkuDetail.member_price > 0 && Number(this.goodsSkuDetail.member_price) > Number(this.goodsSkuDetail.discount_price)) ) ) { flag = true; } return flag; }, memberCardDiscount() { let discount = 0, showPrice = this.goodsSkuDetail.member_price > 0 && Number(this.goodsSkuDetail.member_price) < Number(this.goodsSkuDetail.discount_price) ? this.goodsSkuDetail.member_price : this.goodsSkuDetail.discount_price; if (this.membercard && this.membercard.member_price > 0 && (parseFloat(showPrice) > parseFloat(this.membercard.member_price))) { discount = parseFloat(showPrice) - parseFloat(this.membercard.member_price); } return discount.toFixed(2); }, //表单高度 FormHeight(){ let height = 48; if (this.goodsForm && this.goodsForm.length) { height += this.goodsForm.length * 5; } height += 'vh'; return height; } }, onLoad(data) { // #ifdef MP-ALIPAY let options = my.getLaunchOptionsSync(); options.query && Object.assign(data, options.query) // #endif this.skuId = data.sku_id || 0; this.goodsId = data.goods_id || 0; // 小程序扫码进入 if (data.scene) { var sceneParams = decodeURIComponent(data.scene); sceneParams = sceneParams.split('&'); if (sceneParams.length) { sceneParams.forEach(item => { if (item.indexOf('goods_id') != -1) this.goodsId = item.split('-')[1]; }); } } // #ifdef MP-WEIXIN this.getShareImg(); // #endif }, async onShow() { //同步获取商品详情 await this.getGoodsSkuDetail(); }, onHide() { this.couponBtnSwitch = false; }, methods: { //拨打电话 phoneClick(mobile){ uni.makePhoneCall({ phoneNumber: mobile+'', success(){}, fail(){} }) }, setSkuId(val) { if (val) { this.skuId = val; this.getBundling(); } }, // 获取商品详情 async getGoodsSkuDetail() { let res = await this.$api.sendRequest({ url: '/api/goodssku/detail', async: false, data: { sku_id: this.skuId, goods_id: this.goodsId, } }); let data = res.data; if (data.goods_sku_detail != null) { if (data.goods_sku_detail.promotion_type == 'presale' && data.goods_sku_detail.presale_id) { this.$util.redirectTo('/pages_promotion/presale/detail', { id: data.goods_sku_detail.presale_id, sku_id: this.skuId }, 'reLaunch'); return; } if(uni.getStorageSync('lang') == 'en-us') data.goods_sku_detail.goods_name = data.goods_sku_detail.en_goods_name this.goodsSkuDetail = data.goods_sku_detail; if (!this.skuId) this.skuId = this.goodsSkuDetail.sku_id; if (!this.goodsId) this.goodsId = this.goodsSkuDetail.goods_id; // 分享参数、链接 this.shareQuery = 'goods_id=' + this.goodsSkuDetail.goods_id; this.shareUrl = this.goodsRoute + '?' + this.shareQuery; // 在线客服聊天参数 this.chatRoomParams = { sku_id: this.goodsSkuDetail.sku_id }; let typeId = this.goodsSkuDetail.goods_promotion[0]; if (typeId) { // 限时折扣 if (typeId.discount_id) { this.chatRoomParams.type = 'discount' this.chatRoomParams.type_id = typeId.discount_id } } // 海报参数 this.posterParams = { goods_id: this.goodsId }; // 处理商品数据 this.handleGoodsSkuData(); // 限时折扣 if (this.goodsSkuDetail.promotion_type == 1 && this.addonIsExist.discount) { //检测倒计时 if ((this.goodsSkuDetail.end_time - res.timestamp) > 0) { this.goodsSkuDetail.discountTimeMachine = this.$util.countDown(this.goodsSkuDetail.end_time - res.timestamp); } else { this.goodsSkuDetail.promotion_type = 0; } } if (this.goodsSkuDetail.promotion_type == 1 && this.goodsSkuDetail.discountTimeMachine) { if (this.goodsSkuDetail.member_price > 0 && Number(this.goodsSkuDetail.member_price) <= Number(this.goodsSkuDetail.discount_price)) { this.goodsSkuDetail.show_price = this.goodsSkuDetail.member_price; } else { this.goodsSkuDetail.show_price = this.goodsSkuDetail.discount_price; } } else { if (this.goodsSkuDetail.member_price > 0) { this.goodsSkuDetail.show_price = this.goodsSkuDetail.member_price; } else { this.goodsSkuDetail.show_price = this.goodsSkuDetail.price; } } // 满减 if (this.goodsSkuDetail.manjian) { this.getManjian(this.goodsSkuDetail.manjian); } // 会员卡 if (this.goodsSkuDetail.membercard) { this.membercard = this.goodsSkuDetail.membercard; } // 优惠券 if (this.goodsSkuDetail.coupon_list) { this.couponList = this.goodsSkuDetail.coupon_list; this.couponList.forEach(v => { if (v.count == v.lead_count) v.useState = 2; else if (v.max_fetch != 0 && v.member_coupon_num && v.member_coupon_num >= v.max_fetch) v.useState = 1; else v.useState = 0; }); this.couponList = this.couponList.sort(this.sortBy('useState')) } // 组合套餐 // if (this.goodsSkuDetail.bundling_list) { // this.handleBundlingData(this.goodsSkuDetail.bundling_list); // } if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); } else { this.$util.redirectTo('/pages_tool/goods/not_exist', {}, 'redirectTo'); } }, choiceSku() { this.$refs.goodsSku.show("buy_now", () => { this.$store.dispatch('getCartNumber'); }); }, //商品留言打开 showinformation(){ this.informationform = this.goodsSkuDetail.goods_form this.$refs.informationPopup.open(); }, //商品留言关闭 closeinformationPopup(){ this.$refs.informationPopup.close(); }, //保存商品留言 saveubfirnation(){ //缺少 if (!this.$refs.form.verify()) return; // uni.setStorageSync('goodFormData', { // goods_id: this.goodsSkuDetail.goods_id, // form_data: this.$refs.form.formData // }); this.$api.sendRequest({ url: '/api/goods/information', data: { goods_id: this.goodsSkuDetail.goods_id, form_data: JSON.stringify(this.$refs.form.formData) }, success: res => { var data = res.data; if (res.code == 0) { }else{ this.$util.showToast({ title: res.msg }); } }, }); }, // 加入购物车 joinCart() { if (!this.storeToken && this.preview == 0) { this.$refs.login.open(this.shareUrl); return; } if (this.goodsSkuDetail.is_virtual == 1) { this.$refs.goodsSku.show("buy_now", () => { this.$store.dispatch('getCartNumber'); }); } else { this.$refs.goodsSku.show("join_cart", () => { this.$store.dispatch('getCartNumber'); }); } }, // 立即购买 buyNow() { if (!this.storeToken && this.preview == 0) { this.$refs.login.open(this.shareUrl); return; } this.$refs.goodsSku.show("buy_now", () => { }); }, sortBy(field) { //根据传过来的字段进行排序,y-x 得分从高到低,x-y 从低到高 return (y, x) => { return y[field] - x[field] } }, // 打开优惠券弹出层 openCouponPopup() { this.$refs.couponPopup.open(); }, // 关闭优惠券弹出层 closeCouponPopup() { this.$refs.couponPopup.close(); }, // 领取优惠券 receiveCoupon(item) { let that = this; if (this.preview) return; // 开启预览,禁止任何操作和跳转 if (this.couponBtnSwitch) return; this.couponBtnSwitch = true; if (this.storeToken) { this.$api.sendRequest({ url: '/coupon/api/coupon/receive', data: { coupon_type_id: item.coupon_type_id, get_type: 2 //获取方式:1订单2.直接领取3.活动领取 }, success: res => { var data = res.data; let msg = ''; let list = this.couponList; if (res.data.is_exist == 1 && res.code < 0) { msg = '您已领取过该优惠券,快去使用吧'; } else if (res.code == 0) { msg = '领取成功,快去使用吧'; } else { msg = res.message; } if (res.data.is_exist == 1) { for (let i = 0; i < list.length; i++) { if (list[i].coupon_type_id == item.coupon_type_id) { that.$set(that.couponList[i], 'useState', 1); } } } else { for (let i = 0; i < list.length; i++) { if (list[i].coupon_type_id == item.coupon_type_id) { that.$set(that.couponList[i], 'useState', 2); } } } this.$util.showToast({ title: msg }); that.$forceUpdate() this.hackReset = false; this.$nextTick(() => { this.hackReset = true; }) this.couponBtnSwitch = false; }, }); } else { this.$refs.login.open(this.shareUrl); this.couponBtnSwitch = false; } }, //-------------------------------------满减------------------------------------- //获取满减信息 getManjian(data) { this.manjian = data; let limit = data.type == 0 ? '元' : '件'; Object.keys(data.rule_json).forEach((key) => { var item = data.rule_json[key]; if (item.coupon_data) { for (var i = 0; i < item.coupon_data.length; i++) { item.coupon_data[i].coupon_num = item.coupon_num[i] } } item.limit = data.type == 0 ? parseFloat(item.limit).toFixed(2) : parseInt(item.limit); // 满减 if (item.discount_money != undefined) { if (this.manjian.manjian == undefined) { this.manjian.manjian = '满' + item.limit + limit + '减' + item.discount_money + '元'; } else { this.manjian.manjian += ';满' + item.limit + limit + '减' + item.discount_money + '元'; } } // 满送 if (item.point != undefined || item.coupon != undefined) { let text = ''; if (item.point != undefined) { text = '送' + item.point + '积分'; } if (item.coupon != undefined && item.coupon_data != undefined) { item.coupon_data.forEach((couponItem, couponIndex) => { if (couponItem.type == 'discount') { if (text == '') text = '送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.discount) + '折优惠券'; else text += '、送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.discount) + '折优惠券'; } else { if (text == '') text = '送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.money) + '元优惠券'; else text += '、送' + item.coupon_num[couponIndex] + '张' + parseFloat(couponItem.money) + '元优惠券'; } }) } if (this.manjian.mansong == undefined) { this.manjian.mansong = '满' + item.limit + limit + text; } else { this.manjian.mansong += ';' + '满' + item.limit + limit + text; } } // 包邮 if (item.free_shipping != undefined) { if (this.manjian.free_shipping == undefined) { this.manjian.free_shipping = '满' + item.limit + limit + '包邮'; } else { this.manjian.free_shipping += ';满' + item.limit + limit + '包邮'; } } }); }, openManjianPopup() { this.$refs.manjianPopup.open(); }, closeManjianPopup() { this.$refs.manjianPopup.close(); }, //-------------------------------------组合套餐------------------------------------- //获取当前商品关联的组合套餐 getBundling() { // 连锁门店没有营销活动 if (this.globalStoreConfig && this.globalStoreConfig.store_business == 'store') return; this.$api.sendRequest({ url: "/bundling/api/bundling/lists", data: { sku_id: this.skuId }, success: res => { // this.handleBundlingData(res.data); } }); }, handleBundlingData(data) { this.bundling = data; if (this.bundling.length) { for (var i = 0; i < this.bundling[0].bundling_goods.length; i++) { if (this.bundling[0].bundling_goods[i].sku_id == this.skuId) { this.bundlingType = true; break; } else { this.bundlingType = false; } } for (var i = 0; i < this.bundling.length; i++) { for (var j = 0; j < this.bundling[i].bundling_goods.length; j++) { if (this.bundling[i].bundling_goods[j].sku_id == this.skuId) { this.bundling[i].bundling_goods.splice(j, 1); } } } } }, // 打开组合套餐弹出层 openBundlingPopup() { this.$refs.bundlingPopup.open(); }, // 关闭组合套餐弹出层 closeBundlingPopup() { this.$refs.bundlingPopup.close(); }, imageError() { this.goodsSkuDetail.sku_image = this.$util.getDefaultImage().goods; this.$forceUpdate(); }, bundlingImageError(index, goods_index) { this.bundling[index].bundling_goods[goods_index].sku_image = this.$util.getDefaultImage().goods; this.$forceUpdate(); }, fenxiao() { this.$refs.fenxiaoPopup.show() }, toGoodsDetail(item) { this.$util.redirectTo(this.goodsRoute, { sku_id: item }); }, toComoDetail(id) { this.$util.redirectTo('/pages_promotion/bundling/detail', { bl_id: id }); }, /** * 获取分享图 */ getShareImg() { let posterParams = { goods_id: this.goodsId }; this.$api.sendRequest({ url: '/api/goods/shareimg', data: { qrcode_param: JSON.stringify(posterParams) }, success: res => { if (res.code == 0) this.shareImg = res.data.path + '?no=' + parseInt((new Date()).getTime() / 1000); } }) }, /** * 金额格式化输出 * @param {Object} money */ decimalPointFormat(money) { if (isNaN(parseFloat(money))) return money; let arr = money.toString().split("."); let arr1 = arr[1].split("").reverse(); let arr2 = []; arr1.forEach((item, index) => { if (item > 1) { arr2 = arr1.splice(index); } }); let str = arr2.length ? (arr[0] + "." + arr2.reverse().join("")) : arr[0]; return str; } } }