9 changed files with 2357 additions and 1418 deletions
			
			
		- 
					2common/js/config.js
 - 
					6components/lf-price/lf-price.vue
 - 
					63pages.json
 - 
					54pages/article/details.vue
 - 
					596pages/coupon/index/index.vue
 - 
					445pages/coupon/index/index1.vue
 - 
					574pages/shop/goodsdetail.vue
 - 
					1079pages/store/cart/cart.vue
 - 
					956pages/store/cart/carttemplate.vue
 
@ -0,0 +1,54 @@ | 
				
			|||
<template> | 
				
			|||
	<view> | 
				
			|||
		<lf-nav :spreadOut="true" :showIcon="true" bgColor="#F8F8F8" title="文章详情"></lf-nav> | 
				
			|||
		<view style="height: 30rpx;"></view> | 
				
			|||
		<view class="lf-m-l-32 lf-m-r-32"> | 
				
			|||
			<view> | 
				
			|||
				<view class="lf-font-36 lf-color-222 lf-m-b-20 lf-font-bold"> | 
				
			|||
					苦等一年!阳澄湖大闸蟹又肥了,让你安心吃螃蟹的文章也来了 | 
				
			|||
				</view> | 
				
			|||
				<view class="lf-flex lf-m-b-24"> | 
				
			|||
					<view class="lf-font-28" style="color: #2D6361;"> | 
				
			|||
						金城优选线上商城 | 
				
			|||
					</view> | 
				
			|||
					<view class="lf-color-777 lf-font-28 lf-m-l-25"> | 
				
			|||
						2021.09.01 16:28:22 | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
			</view> | 
				
			|||
			<rich-text :nodes="content" v-if="content"></rich-text> | 
				
			|||
			<!-- <lf-nocontent v-else></lf-nocontent> --> | 
				
			|||
			<!-- 回到顶部 --> | 
				
			|||
			<u-back-top :scroll-top="pageScrollTop" :custom-style="{background: 'rgba(51, 51 51, 0.3)'}"></u-back-top> | 
				
			|||
		</view> | 
				
			|||
	</view> | 
				
			|||
</template> | 
				
			|||
 | 
				
			|||
<script> | 
				
			|||
	export default { | 
				
			|||
		data(){ | 
				
			|||
			return { | 
				
			|||
				content: '', | 
				
			|||
				notice_id: 0, | 
				
			|||
				title_content: '' | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		onLoad(e){ | 
				
			|||
			this.notice_id = e.notice_id; | 
				
			|||
			if(this.notice_id) { | 
				
			|||
				// this.getData(); | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		methods: { | 
				
			|||
			getData(){ | 
				
			|||
				this.$http(this.API.API_NOTICEDETAILS,{id:this.notice_id}).then(res => { | 
				
			|||
					this.content = res.data?.content; | 
				
			|||
					this.title_content = res.data | 
				
			|||
				}) | 
				
			|||
			} | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style> | 
				
			|||
</style> | 
				
			|||
@ -1,445 +1,161 @@ | 
				
			|||
<template> | 
				
			|||
    <view id="coupon-index"> | 
				
			|||
 | 
				
			|||
        <view class="navbar mx-1px-top"> | 
				
			|||
            <block v-for="(item, index) in tabList" :key="index"> | 
				
			|||
                <view :id="index" class="navbar-item activity" :hidden="activeIndex != index" | 
				
			|||
                      :style="'color: ' + config.mainColor" @tap="tabClick"> | 
				
			|||
                    <view class="navbar-title">{{item.title}}</view> | 
				
			|||
                </view> | 
				
			|||
 | 
				
			|||
                <view :id="index" :hidden="activeIndex == index" class="navbar-item" @tap="tabClick"> | 
				
			|||
                    <view class="navbar-title">{{item.title}}</view> | 
				
			|||
                </view> | 
				
			|||
            </block> | 
				
			|||
			 | 
				
			|||
            <view class="navbar-slider" | 
				
			|||
                  :style="'width: ' + width + 'px; transform: translateX(' + sliderOffset + 'px); -webkit-transform: translateX(' + sliderOffset + 'px); background: ' + config.mainColor"></view> | 
				
			|||
        </view> | 
				
			|||
		 | 
				
			|||
        <view class="tab-panel"> | 
				
			|||
            <view class="tab-content" :hidden="activeIndex != 0"> | 
				
			|||
				 | 
				
			|||
               <view class="no-list" v-if="(!dataList[0].length || !dataList[0][0].length) && tabList[0].init"> | 
				
			|||
                    <i class="iconfont icon-youhuiquan"></i> | 
				
			|||
                    <view>报告主人,您暂无 | 
				
			|||
                        <span v-if="is_coupon == 1">优惠券~</span> | 
				
			|||
                        <span v-else>促销活动</span> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
				 | 
				
			|||
                <view v-for="(items, idx) in dataList[0]" :key="idx"> | 
				
			|||
                    <view class="coupon" :data-id="item.discount.id" @tap="jumpDetailOn" | 
				
			|||
                          v-for="(item, index) in dataList[0][idx]" :key="index"> | 
				
			|||
                        <view class="coupon-left" :class="is_coupon != 1 ? 'discount' : ''" | 
				
			|||
                              :style="'background: ' + config.mainColor"> | 
				
			|||
                            <view class="text-wrap"> | 
				
			|||
                                <view class="text-box"> | 
				
			|||
                                    <view class="text"> | 
				
			|||
                                        <text class="money" v-if="item.discount.action_type.type == 'cash'">¥</text> | 
				
			|||
                                        <span>{{ item.discount.action_type.value }}</span> | 
				
			|||
 | 
				
			|||
                                        <text class="money" v-if="item.discount.action_type.type == 'discount'">折</text> | 
				
			|||
                                    </view> | 
				
			|||
                                    <text class="label text">{{ item.discount.label }}</text> | 
				
			|||
                                </view> | 
				
			|||
 | 
				
			|||
                            </view> | 
				
			|||
                            <view class="dot-wrap"> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
						 | 
				
			|||
                        <view class="coupon-right"> | 
				
			|||
                            <view class="top"> | 
				
			|||
                                <span class="type"> | 
				
			|||
                                    <span v-if="item.discount.channel == 'ec'">商城</span> | 
				
			|||
                                    <span v-else>门店</span> | 
				
			|||
                                </span> | 
				
			|||
                                <text class="info">{{item.discount.title}}</text> | 
				
			|||
                            </view> | 
				
			|||
							 | 
				
			|||
                            <view class="bottom"> | 
				
			|||
                                <view class="bottom-use"> | 
				
			|||
                                    <view class="tiem-box"> | 
				
			|||
                                        <text>{{item.discount.use_start_time}}至{{item.discount.use_end_time}}</text> | 
				
			|||
                                    </view> | 
				
			|||
                                    <view v-if="is_coupon == 1"> | 
				
			|||
 | 
				
			|||
                                        <!--<view class="btn use" data-code="item.discount.code" data-index="idx"--> | 
				
			|||
                                              <!--data-findex="index" v-if="!item.discount.has_get" @tap.stop="getCoupon">--> | 
				
			|||
                                            <!--点击领取--> | 
				
			|||
                                        <!--</view>--> | 
				
			|||
									<!----> | 
				
			|||
                                        <view class="btn already" | 
				
			|||
                                              :style="'color: ' + config.mainColor + '; border-color: ' + config.mainColor" | 
				
			|||
                                              :data-id="item.id" @tap.stop="jumpList"> | 
				
			|||
                                            去使用 | 
				
			|||
                                        </view> | 
				
			|||
                                    </view> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
						 | 
				
			|||
						 | 
				
			|||
						 | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
            <view class="tab-content" :hidden="activeIndex != 1"> | 
				
			|||
               <view class="no-list" v-if="(!dataList[1].length || !dataList[1][0].length) && tabList[1].init"> | 
				
			|||
                    <i class="iconfont icon-youhuiquan"></i> | 
				
			|||
                    <view>报告主人,您暂无 | 
				
			|||
                        <span v-if="is_coupon == 1">优惠券~</span> | 
				
			|||
                        <span v-else>促销活动</span> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
                <view v-for="(items, idx) in dataList[1]" :key="idx"> | 
				
			|||
                    <view class="coupon" :data-id="item.discount.id" :data-coupon="item.id" @tap="jumpDetail" | 
				
			|||
                          v-for="(item, index) in dataList[1][idx]" :key="index"> | 
				
			|||
                        <view class="coupon-left" :class="is_coupon != 1 ? 'discount' : ''" | 
				
			|||
                              :style="'background: ' + config.mainColor"> | 
				
			|||
                            <view class="text-wrap"> | 
				
			|||
                                <view class="text-box"> | 
				
			|||
                                    <view class="text"> | 
				
			|||
                                        <text class="money" v-if="item.discount.action_type.type == 'cash'">¥</text> | 
				
			|||
                                        <span>{{ item.discount.action_type.value }}</span> | 
				
			|||
 | 
				
			|||
                                        <text class="money" v-if="item.discount.action_type.type == 'discount'">折</text> | 
				
			|||
                                    </view> | 
				
			|||
                                    <text class="label text">{{ item.discount.label }}</text> | 
				
			|||
                                </view> | 
				
			|||
 | 
				
			|||
                            </view> | 
				
			|||
                            <view class="dot-wrap"> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                        <view class="coupon-right"> | 
				
			|||
                            <view class="top"> | 
				
			|||
                                <span class="type"> | 
				
			|||
                                    <span v-if="item.discount.channel == 'ec'">商城</span> | 
				
			|||
                                    <span v-else>门店</span> | 
				
			|||
                                </span> | 
				
			|||
                                <text class="info">{{item.discount.title}}</text> | 
				
			|||
                            </view> | 
				
			|||
                            <view class="bottom"> | 
				
			|||
                                <view class="bottom-use"> | 
				
			|||
                                    <view class="tiem-box"> | 
				
			|||
                                        <text>{{item.discount.use_start_time}}至{{item.discount.use_end_time}}</text> | 
				
			|||
                                    </view> | 
				
			|||
                                    <view v-if="is_coupon == 1"> | 
				
			|||
                                        <!--<view class="btn use" :data-code="item.discount.code" | 
				
			|||
                                                          :data-index="idx" :data-findex="index" | 
				
			|||
                                                          v-if="!item.discount.has_get" @tap.stop="getCoupon"> | 
				
			|||
                                        点击领取 | 
				
			|||
                                    </view>--> | 
				
			|||
                                        <view class="btn already" | 
				
			|||
                                              :style="'color: ' + config.mainColor + '; border-color: ' + config.mainColor" | 
				
			|||
                                              :data-id="item.discount.id" :data-coupon="item.id" @tap.stop="jumpDetail"> | 
				
			|||
                                            去使用 | 
				
			|||
                                        </view> | 
				
			|||
                                    </view> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
        </view> | 
				
			|||
        <view class="see-over" @tap="toast"> | 
				
			|||
            查看已失效优惠券 | 
				
			|||
        </view> | 
				
			|||
    </view> | 
				
			|||
 | 
				
			|||
	<view> | 
				
			|||
		<lf-nav :spreadOut="true" :showIcon="true" bgColor="white" title="优惠券"></lf-nav> | 
				
			|||
		<view class="special_tab"> | 
				
			|||
			<u-tabs :list="tab_list" active-color="#15716E" inactive-color='#777777' :is-scroll="true" :current="current" @change="tabChange"></u-tabs> | 
				
			|||
		</view> | 
				
			|||
		<view class="coupon-wrap"> | 
				
			|||
			<view class="coupon-card lf-m-b-30" v-for="i of 3"> | 
				
			|||
				<view class="coupon-circle-top"> | 
				
			|||
					<view class="coupon-circle1"></view> | 
				
			|||
				</view> | 
				
			|||
				<view class="coupon-circle-bottom"> | 
				
			|||
					<view class="coupon-circle1"></view> | 
				
			|||
				</view> | 
				
			|||
				<view class="coupon-radius"> | 
				
			|||
					<view class="coupon-left"> | 
				
			|||
						<view class="lf-font-24 lf-color-white">¥<text class="lf-font-36 lf-color-white lf-font-bold">200</text></view> | 
				
			|||
						<view class="coupon-tag"> | 
				
			|||
							待使用 | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
					<view class="coupon-right"> | 
				
			|||
						<view class="lf-font-32 lf-font-bold lf-color-white">满1200减200</view> | 
				
			|||
						<view class="lf-font-24 lf-color-white">有效期2021.09.09-2021-09.15</view> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
			</view> | 
				
			|||
		</view> | 
				
			|||
	</view> | 
				
			|||
</template> | 
				
			|||
<script> | 
				
			|||
    import {pageLogin, getUrl, config} from '@/common/js/utils.js'; | 
				
			|||
 | 
				
			|||
    export default { | 
				
			|||
        data() { | 
				
			|||
            return { | 
				
			|||
                activeIndex: 0, | 
				
			|||
                sliderOffset: 0, | 
				
			|||
                width: 0, | 
				
			|||
                tabList: [{ | 
				
			|||
                    title: '线上', | 
				
			|||
                    init: false, | 
				
			|||
                    page: 0, | 
				
			|||
                    more: true | 
				
			|||
                }, { | 
				
			|||
                    title: '线下', | 
				
			|||
                    init: false, | 
				
			|||
                    page: 0, | 
				
			|||
                    more: true | 
				
			|||
                }], | 
				
			|||
                dataList: { | 
				
			|||
                    0: [], | 
				
			|||
                    1: [] | 
				
			|||
                }, | 
				
			|||
                is_coupon: 1, | 
				
			|||
                // 用于判断是否为优惠券 1:优惠券 0:促销折扣 | 
				
			|||
                gbConfig: '', | 
				
			|||
            }; | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        onReachBottom(e) { | 
				
			|||
            var status = this.activeIndex; | 
				
			|||
            var page = this.tabList[status].page + 1; | 
				
			|||
            var tabList = `tabList[${status}]`; | 
				
			|||
 | 
				
			|||
            if (this.tabList[status].more) { | 
				
			|||
                this.queryCouponList(status, page); | 
				
			|||
            } else { | 
				
			|||
                wx.showToast({ | 
				
			|||
                    image: '../../../static/error.png', | 
				
			|||
                    title: '再拉也没有啦' | 
				
			|||
                }); | 
				
			|||
            } | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        onShow(e) { | 
				
			|||
            wx.getSystemInfo({ | 
				
			|||
                success: res => { | 
				
			|||
                    this.setData({ | 
				
			|||
                        width: res.windowWidth / this.tabList.length, | 
				
			|||
                        sliderOffset: res.windowWidth / this.tabList.length * this.activeIndex | 
				
			|||
                    }); | 
				
			|||
                } | 
				
			|||
            }); | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        onLoad(e) { | 
				
			|||
            // 第三方平台配置颜色 | 
				
			|||
            var gbConfig = this.$cookieStorage.get('globalConfig') || ''; | 
				
			|||
            //    this.setData({ | 
				
			|||
            //      config: gbConfig | 
				
			|||
            //    }); | 
				
			|||
            // | 
				
			|||
            this.config = gbConfig; | 
				
			|||
 | 
				
			|||
            if (e.type) { | 
				
			|||
                this.setData({ | 
				
			|||
                    activeIndex: e.type | 
				
			|||
                }); | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
            ; | 
				
			|||
            this.queryCouponList(); | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        components: {}, | 
				
			|||
        props: {}, | 
				
			|||
        methods: { | 
				
			|||
            tabClick(e) { | 
				
			|||
                var status = e.currentTarget.id; | 
				
			|||
                this.setData({ | 
				
			|||
                    sliderOffset: e.currentTarget.offsetLeft, | 
				
			|||
                    activeIndex: status | 
				
			|||
                }); | 
				
			|||
 | 
				
			|||
                if (!this.tabList[status].init) { | 
				
			|||
                    this.queryCouponList(status); | 
				
			|||
                } | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            jumpOff() { | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/over/over' | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            jumpDetailOn(e) { | 
				
			|||
                var id = e.currentTarget.dataset.id; | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/onDetail/onDetail?id=' + id + '&is_coupon=' + this.is_coupon | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            jumpDetail(e) { | 
				
			|||
                var id = e.currentTarget.dataset.id; | 
				
			|||
                var coupon_id = e.currentTarget.dataset.coupon; | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/offDetail/offDetail?id=' + id + '&is_coupon=' + this.is_coupon + '&coupon_id=' + coupon_id | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            jumpList(e) { | 
				
			|||
                var id = e.currentTarget.dataset.id; | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/goods/goods?id=' + id | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            convert() { | 
				
			|||
                var code = this.code; | 
				
			|||
 | 
				
			|||
                if (code == '') { | 
				
			|||
                    wx.showModal({ | 
				
			|||
                        title: '', | 
				
			|||
                        content: "请输入兑换码", | 
				
			|||
                        showCancel: false | 
				
			|||
                    }); | 
				
			|||
                } else { | 
				
			|||
                    this.convertCoupon(code); | 
				
			|||
                } | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            input(e) { | 
				
			|||
                var vlaue = e.detail.value; | 
				
			|||
                this.setData({ | 
				
			|||
                    code: vlaue | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            viewDetail(e) { | 
				
			|||
                var type = e.currentTarget.dataset.info.discount.type; | 
				
			|||
                var id = e.currentTarget.dataset.info.id; | 
				
			|||
 | 
				
			|||
                if (type == 0) { | 
				
			|||
                    wx.navigateTo({ | 
				
			|||
                        url: '/pages/coupon/onDetail/onDetail?id=' + id | 
				
			|||
                    }); | 
				
			|||
                } else { | 
				
			|||
                    wx.navigateTo({ | 
				
			|||
                        url: '/pages/coupon/offDetail/offDetail?id=' + id | 
				
			|||
                    }); | 
				
			|||
                } | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            // 查询优惠券列表 | 
				
			|||
            queryCouponList(type = 0, page = 1) { | 
				
			|||
                wx.showLoading({ | 
				
			|||
                    title: "加载中", | 
				
			|||
                    mask: true | 
				
			|||
                }); | 
				
			|||
                var token = this.$cookieStorage.get('user_token') || ''; | 
				
			|||
                this.$http.get({ | 
				
			|||
                    api: 'api/coupon', | 
				
			|||
                    header: { | 
				
			|||
                        Authorization: token | 
				
			|||
                    }, | 
				
			|||
                    data: { | 
				
			|||
                        page, | 
				
			|||
                        channel: type ? 'shop' : 'ec', | 
				
			|||
                        is_active: 1 | 
				
			|||
                    } | 
				
			|||
                }).then(res => { | 
				
			|||
                    if (res.statusCode == 200) { | 
				
			|||
                        res = res.data; | 
				
			|||
 | 
				
			|||
                        if (res.status) { | 
				
			|||
                            var pages = res.meta.pagination; | 
				
			|||
                            var current_page = pages.current_page; | 
				
			|||
                            var total_pages = pages.total_pages; | 
				
			|||
 | 
				
			|||
 | 
				
			|||
                            // var tabList = `tabList[${type}]`; | 
				
			|||
                            // this.setData({ | 
				
			|||
                            //   [`dataList.${type}[${page - 1}]`]: res.data, | 
				
			|||
                            //   [`${tabList}.init`]: true, | 
				
			|||
                            //   [`${tabList}.page`]: current_page, | 
				
			|||
                            //   [`${tabList}.more`]: current_page < total_pages | 
				
			|||
                            // }); | 
				
			|||
 | 
				
			|||
                            this.dataList[type][page - 1] = res.data; | 
				
			|||
                            this.tabList[type].init = true; | 
				
			|||
                            this.tabList[type].page = current_page; | 
				
			|||
                            this.tabList[type].more = current_page < total_pages; | 
				
			|||
 | 
				
			|||
 | 
				
			|||
                        } else { | 
				
			|||
                            wx.showModal({ | 
				
			|||
                                content: res.message || '请求失败', | 
				
			|||
                                showCancel: false | 
				
			|||
                            }); | 
				
			|||
                        } | 
				
			|||
                    } else { | 
				
			|||
                        wx.showModal({ | 
				
			|||
                            content: res.message || '请求失败', | 
				
			|||
                            showCancel: false | 
				
			|||
                        }); | 
				
			|||
                    } | 
				
			|||
 | 
				
			|||
                    wx.hideLoading(); | 
				
			|||
                }).catch(rej => { | 
				
			|||
                    wx.hideLoading(); | 
				
			|||
                    wx.showModal({ | 
				
			|||
                        content: res.message || '请求失败', | 
				
			|||
                        showCancel: false | 
				
			|||
                    }); | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            toast() { | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/over/over' | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            setData: function (obj) { | 
				
			|||
                let that = this; | 
				
			|||
                let keys = []; | 
				
			|||
                let val, data; | 
				
			|||
                Object.keys(obj).forEach(function (key) { | 
				
			|||
                    keys = key.split('.'); | 
				
			|||
                    val = obj[key]; | 
				
			|||
                    data = that.$data; | 
				
			|||
                    keys.forEach(function (key2, index) { | 
				
			|||
                        if (index + 1 == keys.length) { | 
				
			|||
                            that.$set(data, key2, val); | 
				
			|||
                        } else { | 
				
			|||
                            if (!data[key2]) { | 
				
			|||
                                that.$set(data, key2, {}); | 
				
			|||
                            } | 
				
			|||
                        } | 
				
			|||
 | 
				
			|||
                        data = data[key2]; | 
				
			|||
                    }); | 
				
			|||
                }); | 
				
			|||
            } | 
				
			|||
        }, | 
				
			|||
        computed: {}, | 
				
			|||
        watch: {} | 
				
			|||
    }; | 
				
			|||
<script> | 
				
			|||
	export default { | 
				
			|||
		data() { | 
				
			|||
			return { | 
				
			|||
				current: 0, | 
				
			|||
				tab_list: [ | 
				
			|||
					{name: '全部'}, | 
				
			|||
					{name: '待使用'}, | 
				
			|||
					{name: '已使用'}, | 
				
			|||
					{name: '已过期'} | 
				
			|||
				] | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		methods: { | 
				
			|||
			tabChange(index){ | 
				
			|||
				this.current = index; | 
				
			|||
			}, | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
</script> | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
    @import "index"; | 
				
			|||
 | 
				
			|||
<style scoped lang="scss"> | 
				
			|||
	.coupon-circle1 { | 
				
			|||
		width: 40rpx; | 
				
			|||
		height: 40rpx; | 
				
			|||
		background-color: white; | 
				
			|||
		border-radius: 50%; | 
				
			|||
	} | 
				
			|||
	.coupon-circle-top { | 
				
			|||
		width: 50rpx; | 
				
			|||
		height: 50rpx; | 
				
			|||
		border-radius: 50%; | 
				
			|||
		// background-color: red; | 
				
			|||
		position: absolute; | 
				
			|||
		border: 1px dashed #ccc; | 
				
			|||
		left: 190rpx; | 
				
			|||
		top: -20rpx; | 
				
			|||
		display: flex; | 
				
			|||
		align-items: center; | 
				
			|||
		text-align: center; | 
				
			|||
		justify-content: center; | 
				
			|||
	} | 
				
			|||
	.coupon-circle-bottom { | 
				
			|||
		width: 50rpx; | 
				
			|||
		height: 50rpx; | 
				
			|||
		border-radius: 50%; | 
				
			|||
		// background-color: red; | 
				
			|||
		position: absolute; | 
				
			|||
		border: 1px dashed #ccc; | 
				
			|||
		left: 190rpx; | 
				
			|||
		bottom: -20rpx; | 
				
			|||
		display: flex; | 
				
			|||
		align-items: center; | 
				
			|||
		text-align: center; | 
				
			|||
		justify-content: center; | 
				
			|||
	} | 
				
			|||
	.coupon-right { | 
				
			|||
		text-align: left; | 
				
			|||
		justify-content: center; | 
				
			|||
		align-items: flex-start; | 
				
			|||
		display: flex; | 
				
			|||
		flex-direction: column; | 
				
			|||
		margin-left: 84rpx; | 
				
			|||
	} | 
				
			|||
	.coupon-left { | 
				
			|||
		margin-left: 40rpx; | 
				
			|||
		display: flex; | 
				
			|||
		flex-direction: column; | 
				
			|||
		justify-content: center; | 
				
			|||
		align-items: center; | 
				
			|||
	} | 
				
			|||
	.coupon-tag { | 
				
			|||
		width: max-content; | 
				
			|||
		margin-top: 10rpx; | 
				
			|||
		padding: 0 24rpx; | 
				
			|||
		height: 43rpx; | 
				
			|||
		border-radius: 22rpx; | 
				
			|||
		border: 2rpx solid #FFFFFF; | 
				
			|||
		font-size: 24rpx; | 
				
			|||
		color: white; | 
				
			|||
	} | 
				
			|||
	.coupon-wrap { | 
				
			|||
		display: flex; | 
				
			|||
		justify-content: center; | 
				
			|||
		margin-top: 30rpx; | 
				
			|||
		flex-direction: column; | 
				
			|||
		align-content: center; | 
				
			|||
		align-items: center; | 
				
			|||
	} | 
				
			|||
	.coupon-card { | 
				
			|||
		overflow: hidden; | 
				
			|||
		position: relative; | 
				
			|||
		display: flex; | 
				
			|||
		align-items: center; | 
				
			|||
		justify-content: center; | 
				
			|||
		width: 674rpx; | 
				
			|||
		// display: flex; | 
				
			|||
		height: 171rpx; | 
				
			|||
		// opacity: 0.59; | 
				
			|||
		// border: 1rpx solid #FFFFFF; | 
				
			|||
		background: #15716E; | 
				
			|||
		border-radius: 20rpx; | 
				
			|||
	} | 
				
			|||
	.coupon-radius { | 
				
			|||
		width: 664rpx; | 
				
			|||
		display: flex; | 
				
			|||
		height: 161rpx; | 
				
			|||
		border: 1rpx dashed #ccc; | 
				
			|||
		// background: #15716E; | 
				
			|||
		border-radius: 20rpx; | 
				
			|||
	} | 
				
			|||
	/deep/.u-scroll-box { | 
				
			|||
		display: flex; | 
				
			|||
		justify-content: center; | 
				
			|||
		align-items: center; | 
				
			|||
		border-bottom: 1rpx solid rgba(0, 0, 0, 0.1); | 
				
			|||
	} | 
				
			|||
	/deep/.special_tab .u-tabs .u-scroll-box .u-tab-bar { | 
				
			|||
		background-color: #15716E!important; | 
				
			|||
		width: 80rpx!important; | 
				
			|||
		position: absolute; | 
				
			|||
		height: 10rpx; | 
				
			|||
		left: 0; | 
				
			|||
		border-radius: 8rpx 8rpx 0px 0px!important; | 
				
			|||
		bottom: -12rpx; | 
				
			|||
	} | 
				
			|||
	/deep/ .u-tab-item { | 
				
			|||
		font-size: 28rpx!important; | 
				
			|||
	} | 
				
			|||
</style> | 
				
			|||
@ -0,0 +1,445 @@ | 
				
			|||
<template> | 
				
			|||
    <view id="coupon-index"> | 
				
			|||
 | 
				
			|||
        <view class="navbar mx-1px-top"> | 
				
			|||
            <block v-for="(item, index) in tabList" :key="index"> | 
				
			|||
                <view :id="index" class="navbar-item activity" :hidden="activeIndex != index" | 
				
			|||
                      :style="'color: ' + config.mainColor" @tap="tabClick"> | 
				
			|||
                    <view class="navbar-title">{{item.title}}</view> | 
				
			|||
                </view> | 
				
			|||
 | 
				
			|||
                <view :id="index" :hidden="activeIndex == index" class="navbar-item" @tap="tabClick"> | 
				
			|||
                    <view class="navbar-title">{{item.title}}</view> | 
				
			|||
                </view> | 
				
			|||
            </block> | 
				
			|||
			 | 
				
			|||
            <view class="navbar-slider" | 
				
			|||
                  :style="'width: ' + width + 'px; transform: translateX(' + sliderOffset + 'px); -webkit-transform: translateX(' + sliderOffset + 'px); background: ' + config.mainColor"></view> | 
				
			|||
        </view> | 
				
			|||
		 | 
				
			|||
        <view class="tab-panel"> | 
				
			|||
            <view class="tab-content" :hidden="activeIndex != 0"> | 
				
			|||
				 | 
				
			|||
               <view class="no-list" v-if="(!dataList[0].length || !dataList[0][0].length) && tabList[0].init"> | 
				
			|||
                    <i class="iconfont icon-youhuiquan"></i> | 
				
			|||
                    <view>报告主人,您暂无 | 
				
			|||
                        <span v-if="is_coupon == 1">优惠券~</span> | 
				
			|||
                        <span v-else>促销活动</span> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
				 | 
				
			|||
                <view v-for="(items, idx) in dataList[0]" :key="idx"> | 
				
			|||
                    <view class="coupon" :data-id="item.discount.id" @tap="jumpDetailOn" | 
				
			|||
                          v-for="(item, index) in dataList[0][idx]" :key="index"> | 
				
			|||
                        <view class="coupon-left" :class="is_coupon != 1 ? 'discount' : ''" | 
				
			|||
                              :style="'background: ' + config.mainColor"> | 
				
			|||
                            <view class="text-wrap"> | 
				
			|||
                                <view class="text-box"> | 
				
			|||
                                    <view class="text"> | 
				
			|||
                                        <text class="money" v-if="item.discount.action_type.type == 'cash'">¥</text> | 
				
			|||
                                        <span>{{ item.discount.action_type.value }}</span> | 
				
			|||
 | 
				
			|||
                                        <text class="money" v-if="item.discount.action_type.type == 'discount'">折</text> | 
				
			|||
                                    </view> | 
				
			|||
                                    <text class="label text">{{ item.discount.label }}</text> | 
				
			|||
                                </view> | 
				
			|||
 | 
				
			|||
                            </view> | 
				
			|||
                            <view class="dot-wrap"> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
						 | 
				
			|||
                        <view class="coupon-right"> | 
				
			|||
                            <view class="top"> | 
				
			|||
                                <span class="type"> | 
				
			|||
                                    <span v-if="item.discount.channel == 'ec'">商城</span> | 
				
			|||
                                    <span v-else>门店</span> | 
				
			|||
                                </span> | 
				
			|||
                                <text class="info">{{item.discount.title}}</text> | 
				
			|||
                            </view> | 
				
			|||
							 | 
				
			|||
                            <view class="bottom"> | 
				
			|||
                                <view class="bottom-use"> | 
				
			|||
                                    <view class="tiem-box"> | 
				
			|||
                                        <text>{{item.discount.use_start_time}}至{{item.discount.use_end_time}}</text> | 
				
			|||
                                    </view> | 
				
			|||
                                    <view v-if="is_coupon == 1"> | 
				
			|||
 | 
				
			|||
                                        <!--<view class="btn use" data-code="item.discount.code" data-index="idx"--> | 
				
			|||
                                              <!--data-findex="index" v-if="!item.discount.has_get" @tap.stop="getCoupon">--> | 
				
			|||
                                            <!--点击领取--> | 
				
			|||
                                        <!--</view>--> | 
				
			|||
									<!----> | 
				
			|||
                                        <view class="btn already" | 
				
			|||
                                              :style="'color: ' + config.mainColor + '; border-color: ' + config.mainColor" | 
				
			|||
                                              :data-id="item.id" @tap.stop="jumpList"> | 
				
			|||
                                            去使用 | 
				
			|||
                                        </view> | 
				
			|||
                                    </view> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
						 | 
				
			|||
						 | 
				
			|||
						 | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
            <view class="tab-content" :hidden="activeIndex != 1"> | 
				
			|||
               <view class="no-list" v-if="(!dataList[1].length || !dataList[1][0].length) && tabList[1].init"> | 
				
			|||
                    <i class="iconfont icon-youhuiquan"></i> | 
				
			|||
                    <view>报告主人,您暂无 | 
				
			|||
                        <span v-if="is_coupon == 1">优惠券~</span> | 
				
			|||
                        <span v-else>促销活动</span> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
                <view v-for="(items, idx) in dataList[1]" :key="idx"> | 
				
			|||
                    <view class="coupon" :data-id="item.discount.id" :data-coupon="item.id" @tap="jumpDetail" | 
				
			|||
                          v-for="(item, index) in dataList[1][idx]" :key="index"> | 
				
			|||
                        <view class="coupon-left" :class="is_coupon != 1 ? 'discount' : ''" | 
				
			|||
                              :style="'background: ' + config.mainColor"> | 
				
			|||
                            <view class="text-wrap"> | 
				
			|||
                                <view class="text-box"> | 
				
			|||
                                    <view class="text"> | 
				
			|||
                                        <text class="money" v-if="item.discount.action_type.type == 'cash'">¥</text> | 
				
			|||
                                        <span>{{ item.discount.action_type.value }}</span> | 
				
			|||
 | 
				
			|||
                                        <text class="money" v-if="item.discount.action_type.type == 'discount'">折</text> | 
				
			|||
                                    </view> | 
				
			|||
                                    <text class="label text">{{ item.discount.label }}</text> | 
				
			|||
                                </view> | 
				
			|||
 | 
				
			|||
                            </view> | 
				
			|||
                            <view class="dot-wrap"> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                        <view class="coupon-right"> | 
				
			|||
                            <view class="top"> | 
				
			|||
                                <span class="type"> | 
				
			|||
                                    <span v-if="item.discount.channel == 'ec'">商城</span> | 
				
			|||
                                    <span v-else>门店</span> | 
				
			|||
                                </span> | 
				
			|||
                                <text class="info">{{item.discount.title}}</text> | 
				
			|||
                            </view> | 
				
			|||
                            <view class="bottom"> | 
				
			|||
                                <view class="bottom-use"> | 
				
			|||
                                    <view class="tiem-box"> | 
				
			|||
                                        <text>{{item.discount.use_start_time}}至{{item.discount.use_end_time}}</text> | 
				
			|||
                                    </view> | 
				
			|||
                                    <view v-if="is_coupon == 1"> | 
				
			|||
                                        <!--<view class="btn use" :data-code="item.discount.code" | 
				
			|||
                                                          :data-index="idx" :data-findex="index" | 
				
			|||
                                                          v-if="!item.discount.has_get" @tap.stop="getCoupon"> | 
				
			|||
                                        点击领取 | 
				
			|||
                                    </view>--> | 
				
			|||
                                        <view class="btn already" | 
				
			|||
                                              :style="'color: ' + config.mainColor + '; border-color: ' + config.mainColor" | 
				
			|||
                                              :data-id="item.discount.id" :data-coupon="item.id" @tap.stop="jumpDetail"> | 
				
			|||
                                            去使用 | 
				
			|||
                                        </view> | 
				
			|||
                                    </view> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
        </view> | 
				
			|||
        <view class="see-over" @tap="toast"> | 
				
			|||
            查看已失效优惠券 | 
				
			|||
        </view> | 
				
			|||
    </view> | 
				
			|||
 | 
				
			|||
</template> | 
				
			|||
<script> | 
				
			|||
    import {pageLogin, getUrl, config} from '@/common/js/utils.js'; | 
				
			|||
 | 
				
			|||
    export default { | 
				
			|||
        data() { | 
				
			|||
            return { | 
				
			|||
                activeIndex: 0, | 
				
			|||
                sliderOffset: 0, | 
				
			|||
                width: 0, | 
				
			|||
                tabList: [{ | 
				
			|||
                    title: '线上', | 
				
			|||
                    init: false, | 
				
			|||
                    page: 0, | 
				
			|||
                    more: true | 
				
			|||
                }, { | 
				
			|||
                    title: '线下', | 
				
			|||
                    init: false, | 
				
			|||
                    page: 0, | 
				
			|||
                    more: true | 
				
			|||
                }], | 
				
			|||
                dataList: { | 
				
			|||
                    0: [], | 
				
			|||
                    1: [] | 
				
			|||
                }, | 
				
			|||
                is_coupon: 1, | 
				
			|||
                // 用于判断是否为优惠券 1:优惠券 0:促销折扣 | 
				
			|||
                gbConfig: '', | 
				
			|||
            }; | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        onReachBottom(e) { | 
				
			|||
            var status = this.activeIndex; | 
				
			|||
            var page = this.tabList[status].page + 1; | 
				
			|||
            var tabList = `tabList[${status}]`; | 
				
			|||
 | 
				
			|||
            if (this.tabList[status].more) { | 
				
			|||
                this.queryCouponList(status, page); | 
				
			|||
            } else { | 
				
			|||
                wx.showToast({ | 
				
			|||
                    image: '../../../static/error.png', | 
				
			|||
                    title: '再拉也没有啦' | 
				
			|||
                }); | 
				
			|||
            } | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        onShow(e) { | 
				
			|||
            wx.getSystemInfo({ | 
				
			|||
                success: res => { | 
				
			|||
                    this.setData({ | 
				
			|||
                        width: res.windowWidth / this.tabList.length, | 
				
			|||
                        sliderOffset: res.windowWidth / this.tabList.length * this.activeIndex | 
				
			|||
                    }); | 
				
			|||
                } | 
				
			|||
            }); | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        onLoad(e) { | 
				
			|||
            // 第三方平台配置颜色 | 
				
			|||
            var gbConfig = this.$cookieStorage.get('globalConfig') || ''; | 
				
			|||
            //    this.setData({ | 
				
			|||
            //      config: gbConfig | 
				
			|||
            //    }); | 
				
			|||
            // | 
				
			|||
            this.config = gbConfig; | 
				
			|||
 | 
				
			|||
            if (e.type) { | 
				
			|||
                this.setData({ | 
				
			|||
                    activeIndex: e.type | 
				
			|||
                }); | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
            ; | 
				
			|||
            this.queryCouponList(); | 
				
			|||
        }, | 
				
			|||
 | 
				
			|||
        components: {}, | 
				
			|||
        props: {}, | 
				
			|||
        methods: { | 
				
			|||
            tabClick(e) { | 
				
			|||
                var status = e.currentTarget.id; | 
				
			|||
                this.setData({ | 
				
			|||
                    sliderOffset: e.currentTarget.offsetLeft, | 
				
			|||
                    activeIndex: status | 
				
			|||
                }); | 
				
			|||
 | 
				
			|||
                if (!this.tabList[status].init) { | 
				
			|||
                    this.queryCouponList(status); | 
				
			|||
                } | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            jumpOff() { | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/over/over' | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            jumpDetailOn(e) { | 
				
			|||
                var id = e.currentTarget.dataset.id; | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/onDetail/onDetail?id=' + id + '&is_coupon=' + this.is_coupon | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            jumpDetail(e) { | 
				
			|||
                var id = e.currentTarget.dataset.id; | 
				
			|||
                var coupon_id = e.currentTarget.dataset.coupon; | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/offDetail/offDetail?id=' + id + '&is_coupon=' + this.is_coupon + '&coupon_id=' + coupon_id | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            jumpList(e) { | 
				
			|||
                var id = e.currentTarget.dataset.id; | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/goods/goods?id=' + id | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            convert() { | 
				
			|||
                var code = this.code; | 
				
			|||
 | 
				
			|||
                if (code == '') { | 
				
			|||
                    wx.showModal({ | 
				
			|||
                        title: '', | 
				
			|||
                        content: "请输入兑换码", | 
				
			|||
                        showCancel: false | 
				
			|||
                    }); | 
				
			|||
                } else { | 
				
			|||
                    this.convertCoupon(code); | 
				
			|||
                } | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            input(e) { | 
				
			|||
                var vlaue = e.detail.value; | 
				
			|||
                this.setData({ | 
				
			|||
                    code: vlaue | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            viewDetail(e) { | 
				
			|||
                var type = e.currentTarget.dataset.info.discount.type; | 
				
			|||
                var id = e.currentTarget.dataset.info.id; | 
				
			|||
 | 
				
			|||
                if (type == 0) { | 
				
			|||
                    wx.navigateTo({ | 
				
			|||
                        url: '/pages/coupon/onDetail/onDetail?id=' + id | 
				
			|||
                    }); | 
				
			|||
                } else { | 
				
			|||
                    wx.navigateTo({ | 
				
			|||
                        url: '/pages/coupon/offDetail/offDetail?id=' + id | 
				
			|||
                    }); | 
				
			|||
                } | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            // 查询优惠券列表 | 
				
			|||
            queryCouponList(type = 0, page = 1) { | 
				
			|||
                wx.showLoading({ | 
				
			|||
                    title: "加载中", | 
				
			|||
                    mask: true | 
				
			|||
                }); | 
				
			|||
                var token = this.$cookieStorage.get('user_token') || ''; | 
				
			|||
                this.$http.get({ | 
				
			|||
                    api: 'api/coupon', | 
				
			|||
                    header: { | 
				
			|||
                        Authorization: token | 
				
			|||
                    }, | 
				
			|||
                    data: { | 
				
			|||
                        page, | 
				
			|||
                        channel: type ? 'shop' : 'ec', | 
				
			|||
                        is_active: 1 | 
				
			|||
                    } | 
				
			|||
                }).then(res => { | 
				
			|||
                    if (res.statusCode == 200) { | 
				
			|||
                        res = res.data; | 
				
			|||
 | 
				
			|||
                        if (res.status) { | 
				
			|||
                            var pages = res.meta.pagination; | 
				
			|||
                            var current_page = pages.current_page; | 
				
			|||
                            var total_pages = pages.total_pages; | 
				
			|||
 | 
				
			|||
 | 
				
			|||
                            // var tabList = `tabList[${type}]`; | 
				
			|||
                            // this.setData({ | 
				
			|||
                            //   [`dataList.${type}[${page - 1}]`]: res.data, | 
				
			|||
                            //   [`${tabList}.init`]: true, | 
				
			|||
                            //   [`${tabList}.page`]: current_page, | 
				
			|||
                            //   [`${tabList}.more`]: current_page < total_pages | 
				
			|||
                            // }); | 
				
			|||
 | 
				
			|||
                            this.dataList[type][page - 1] = res.data; | 
				
			|||
                            this.tabList[type].init = true; | 
				
			|||
                            this.tabList[type].page = current_page; | 
				
			|||
                            this.tabList[type].more = current_page < total_pages; | 
				
			|||
 | 
				
			|||
 | 
				
			|||
                        } else { | 
				
			|||
                            wx.showModal({ | 
				
			|||
                                content: res.message || '请求失败', | 
				
			|||
                                showCancel: false | 
				
			|||
                            }); | 
				
			|||
                        } | 
				
			|||
                    } else { | 
				
			|||
                        wx.showModal({ | 
				
			|||
                            content: res.message || '请求失败', | 
				
			|||
                            showCancel: false | 
				
			|||
                        }); | 
				
			|||
                    } | 
				
			|||
 | 
				
			|||
                    wx.hideLoading(); | 
				
			|||
                }).catch(rej => { | 
				
			|||
                    wx.hideLoading(); | 
				
			|||
                    wx.showModal({ | 
				
			|||
                        content: res.message || '请求失败', | 
				
			|||
                        showCancel: false | 
				
			|||
                    }); | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            toast() { | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                    url: '/pages/coupon/over/over' | 
				
			|||
                }); | 
				
			|||
            }, | 
				
			|||
 | 
				
			|||
            setData: function (obj) { | 
				
			|||
                let that = this; | 
				
			|||
                let keys = []; | 
				
			|||
                let val, data; | 
				
			|||
                Object.keys(obj).forEach(function (key) { | 
				
			|||
                    keys = key.split('.'); | 
				
			|||
                    val = obj[key]; | 
				
			|||
                    data = that.$data; | 
				
			|||
                    keys.forEach(function (key2, index) { | 
				
			|||
                        if (index + 1 == keys.length) { | 
				
			|||
                            that.$set(data, key2, val); | 
				
			|||
                        } else { | 
				
			|||
                            if (!data[key2]) { | 
				
			|||
                                that.$set(data, key2, {}); | 
				
			|||
                            } | 
				
			|||
                        } | 
				
			|||
 | 
				
			|||
                        data = data[key2]; | 
				
			|||
                    }); | 
				
			|||
                }); | 
				
			|||
            } | 
				
			|||
        }, | 
				
			|||
        computed: {}, | 
				
			|||
        watch: {} | 
				
			|||
    }; | 
				
			|||
</script> | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
    @import "index"; | 
				
			|||
</style> | 
				
			|||
@ -0,0 +1,574 @@ | 
				
			|||
<template> | 
				
			|||
	<view> | 
				
			|||
		<lf-nav :spreadOut="false" :showIcon="true" bgColor="transparent!important"></lf-nav> | 
				
			|||
		<skeleton :loading="skeletonLoading" :row="12" :showAvatar="false" :showTitle="true"> | 
				
			|||
			<block> | 
				
			|||
				<!-- 商品图片轮播 --> | 
				
			|||
				<swiper :current="current" :indicator-dots="2 > 1 ? false : true" :circular="true" class="swiper-box" indicator-active-color="#1998FE"> | 
				
			|||
					<swiper-item v-for="(item, index) in pictures" :key="index"> | 
				
			|||
						<image mode="aspectFill" :src="item" style="width: 100%; height: 100%;" @click="lookImg(index)"></image> | 
				
			|||
					</swiper-item> | 
				
			|||
				</swiper> | 
				
			|||
				<!-- 商品主要信息 --> | 
				
			|||
				<view class="head-info"> | 
				
			|||
					<view class="lf-row-between"> | 
				
			|||
						<lf-price :iftext="false" :price="111"></lf-price> | 
				
			|||
						<text class="lf-iconfont icon-fenxiang lf-font-40" @click="shareGraphic()"></text> | 
				
			|||
					</view> | 
				
			|||
					<view class="lf-row-between lf-font-24 lf-m-t-20 lf-p-b-20"> | 
				
			|||
						<view class="lf-font-bold lf-font-32 lf-color-222">颐莲喷雾 500ml</view> | 
				
			|||
					</view> | 
				
			|||
					<view class="lf-row-between lf-font-24 lf-p-b-30"> | 
				
			|||
						<view class="lf-font-28 lf-color-777">门店自提</view> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
				<self-line></self-line> | 
				
			|||
				<view class="bg-white"> | 
				
			|||
					<view class="cu-bar padding-lr"> | 
				
			|||
						<view class="lf-flex"> | 
				
			|||
							<text class="lf-color-777 lf-font-28">优惠</text> | 
				
			|||
							<view v-if="orderDetails.coupon == ''"> | 
				
			|||
								<text class="lf-color-price lf-font-28 lf-m-l-10" v-for="(item,index) of orderDetails.coupon">{{item.tag}}</text> | 
				
			|||
							</view> | 
				
			|||
							<view v-else> | 
				
			|||
								<text class="lf-color-222 lf-font-26 lf-m-l-30">化妆品教师节满1200减200</text> | 
				
			|||
							</view> | 
				
			|||
						</view> | 
				
			|||
						<view> | 
				
			|||
							<text class="lf-font-24 lf-color-777 lf-iconfont icon-xiangyou"></text> | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
				<self-line></self-line> | 
				
			|||
				<view class="bg-white"> | 
				
			|||
					<view class="cu-bar padding-lr"> | 
				
			|||
						<view class="lf-flex"> | 
				
			|||
							<text class="lf-color-777 lf-font-28">服务</text> | 
				
			|||
							<view style="width: 600rpx;flex-wrap: wrap;display: flex;margin-top: 32rpx;"> | 
				
			|||
								<view class="lf-m-l-30" v-for="i of 5"> | 
				
			|||
									<text class="lf-iconfont icon-xuanzhong lf-font-30" style="color: #15716E;"></text> | 
				
			|||
									<text class="lf-m-l-10 lf-font-26 lf-color-black">正品保障</text> | 
				
			|||
								</view> | 
				
			|||
							</view> | 
				
			|||
						</view> | 
				
			|||
						<view> | 
				
			|||
							<text class="lf-font-24 lf-color-777 lf-iconfont icon-xiangyou"></text> | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
				<view class="bg-white"> | 
				
			|||
					<view class="cu-bar padding-lr"> | 
				
			|||
						<view class="lf-flex"> | 
				
			|||
							<text class="lf-color-777 lf-font-28">已选</text> | 
				
			|||
							<text class="lf-color-222 lf-font-26 lf-m-l-30">已选500ml x1</text> | 
				
			|||
						</view> | 
				
			|||
						<view> | 
				
			|||
							<text class="lf-font-24 lf-color-777 lf-iconfont icon-xiangyou"></text> | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
				<self-line></self-line> | 
				
			|||
				<view> | 
				
			|||
					<view class="user-top"> | 
				
			|||
						<view class="lf-row-between lf-w-100"> | 
				
			|||
							<view class="lf-flex"> | 
				
			|||
								<view class="tag-father"> | 
				
			|||
									<image src="https://hainan.lanzulive.com/storage/images/v2-deb89623e0ee2a2dad34bcded6dfd1ed_1440w.png" mode="aspectFill" class="head-img"></image> | 
				
			|||
								</view> | 
				
			|||
								<view class="lf-flex-column lf-m-l-20"> | 
				
			|||
									<text class="lf-font-28 lf-color-black lf-font-bold">颐莲官方店</text> | 
				
			|||
									<view class="lf-font-24 lf-color-777"><u-icon name="map" class="lf-m-r-10"></u-icon>L2</view> | 
				
			|||
								</view> | 
				
			|||
							</view> | 
				
			|||
							<view> | 
				
			|||
								<button class="head-btn"><u-icon name="chat" class="lf-m-r-10"></u-icon>客服</button> | 
				
			|||
							</view> | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
					<scroll-view class="scroll-view" :scroll-x="true"> | 
				
			|||
						<view class="scroll-content"> | 
				
			|||
							<view class="goods-item" v-for="(item, index) in 5" :key="index"> | 
				
			|||
								<image class="goods-img"></image> | 
				
			|||
								<view class="goods-info"> | 
				
			|||
									<view class="lf-line-1">猪大肠卖咯 5毛钱一斤咯</view> | 
				
			|||
									<view>¥0.5</view> | 
				
			|||
								</view> | 
				
			|||
							</view> | 
				
			|||
							<view class="goods-item"> | 
				
			|||
								<view class="more-box"> | 
				
			|||
									<text>查看更多</text> | 
				
			|||
									<text class="lf-iconfont icon--2 lf-text-vertical"></text> | 
				
			|||
								</view> | 
				
			|||
							</view> | 
				
			|||
						</view> | 
				
			|||
					</scroll-view> | 
				
			|||
				</view> | 
				
			|||
				<!-- 商品详情 --> | 
				
			|||
				<view class="goods-detail"> | 
				
			|||
					<view class="lf-font-32 lf-font-bold lf-m-b-20">商品详情</view> | 
				
			|||
					<rich-text :nodes="formatRichText('商品详情商品详情商品详情商品详情商品详情商品详情商品详情商品详情商品详情商品详情商品详情商品详情')"></rich-text> | 
				
			|||
					<!-- <image class="goods-img" :src="item" v-for="(item, index) in goods_detail.content" :key="index" v-if="goods_detail.content_type == 'img'"></image> --> | 
				
			|||
				</view>  | 
				
			|||
				<!-- 修饰专用 --> | 
				
			|||
				<view class="extra"></view> | 
				
			|||
				<!-- 吸底操作按钮 --> | 
				
			|||
				<view class="lf-row-between fixed-bottom"> | 
				
			|||
					<view class="lf-flex lf-p-t-10 lf-p-b-10"> | 
				
			|||
						<view class="lf-flex-column lf-row-center icon-item" open-type="contact"> | 
				
			|||
							<text class="lf-iconfont icon-shoucang icon-img"></text> | 
				
			|||
							<view class="lf-m-t-1">客服</view> | 
				
			|||
						</view> | 
				
			|||
						<view class="lf-flex-column lf-row-center icon-item" @click="switchCollect"> | 
				
			|||
							<text class="lf-iconfont icon-shoucang icon-img" v-if="is_collect"></text> | 
				
			|||
							<text class="lf-iconfont icon-shoucang icon-img" v-else></text> | 
				
			|||
							<view class="lf-m-t-1">{{ is_collect ? '已收藏' : '收藏' }}</view> | 
				
			|||
						</view> | 
				
			|||
						<button class="lf-flex-column lf-row-center icon-item"> | 
				
			|||
							<text class="lf-iconfont icon-shoucang icon-img"></text> | 
				
			|||
							<view class="lf-m-t-1">购物车</view> | 
				
			|||
						</button> | 
				
			|||
					</view> | 
				
			|||
					<view class="lf-flex"> | 
				
			|||
						<button class="btn1" @click="toAddOrder">加入购物车</button> | 
				
			|||
						<button class="btn lf-m-l-15" @click="toAddOrder">立即购买</button> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
				<!-- 回到顶部 --> | 
				
			|||
				<!-- <u-back-top :scroll-top="pageScrollTop" :custom-style="{background: 'rgba(51, 51 51, 0.3)'}" :icon-style="{color: '#ffffff'}"></u-back-top> --> | 
				
			|||
				<u-back-top :scroll-top="pageScrollTop" :custom-style="{background: 'rgba(51, 51 51, 0.3)'}"></u-back-top> | 
				
			|||
			</block> | 
				
			|||
		</skeleton> | 
				
			|||
	</view> | 
				
			|||
</template> | 
				
			|||
 | 
				
			|||
<script> | 
				
			|||
	export default { | 
				
			|||
		data(){ | 
				
			|||
			return { | 
				
			|||
				current: 0, // 轮播下标 | 
				
			|||
				goods_id: 0, | 
				
			|||
				goods_detail: {}, | 
				
			|||
				is_collect: false, // 1为当前收藏商品了,0为否 | 
				
			|||
				skeletonLoading: false, | 
				
			|||
				pictures: [ | 
				
			|||
					'https://hainan.lanzulive.com/storage/images/v2-deb89623e0ee2a2dad34bcded6dfd1ed_1440w.png', | 
				
			|||
					'https://hainan.lanzulive.com/storage/images/v2-deb89623e0ee2a2dad34bcded6dfd1ed_1440w.png', | 
				
			|||
					'https://hainan.lanzulive.com/storage/images/v2-deb89623e0ee2a2dad34bcded6dfd1ed_1440w.png' | 
				
			|||
				] | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		onLoad(options){ | 
				
			|||
			this.goods_id = options.goods_id; | 
				
			|||
			 | 
				
			|||
			console.log('商品',this.goods_id) | 
				
			|||
			// this.getGoodsDetail(); | 
				
			|||
		}, | 
				
			|||
		computed: { | 
				
			|||
			isRight() { | 
				
			|||
				return function(val) { | 
				
			|||
					return this.$shared.isRight(val); | 
				
			|||
				} | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		methods: { | 
				
			|||
			shareGraphic(){ | 
				
			|||
				this.getCreateShareImg(); | 
				
			|||
			}, | 
				
			|||
			//请求h5的图片接口 | 
				
			|||
			getCreateShareImg(){ | 
				
			|||
				wx.showLoading({ | 
				
			|||
					title:"生成中", | 
				
			|||
					mask:true | 
				
			|||
				}) | 
				
			|||
				    let origin = window.location.origin; | 
				
			|||
					let share_url = origin+'/pages/store/detail/detail'; | 
				
			|||
				this.$http.get({ | 
				
			|||
					api:'api/distribution/createH5ShareImg', | 
				
			|||
					data:{ | 
				
			|||
						goods_id:this.id, | 
				
			|||
						share_url:share_url  | 
				
			|||
					} | 
				
			|||
				}).then(res=>{ | 
				
			|||
					res = res.data; | 
				
			|||
					if(res.status){ | 
				
			|||
						this.qr_code_image = res.data.image; | 
				
			|||
			 | 
				
			|||
						if(this.qr_code_image){ | 
				
			|||
							this.share_gaphic =!this.share_gaphic; | 
				
			|||
							this.is_toggle_share = false; | 
				
			|||
						} | 
				
			|||
					} else{ | 
				
			|||
						wx.showModal({ | 
				
			|||
							content: res.message || '请求失败,请重试', | 
				
			|||
							showCancel: false | 
				
			|||
						}); | 
				
			|||
					} | 
				
			|||
					wx.hideLoading() | 
				
			|||
				}).catch(rej=>{ | 
				
			|||
					wx.hideLoading() | 
				
			|||
					wx.showModal({ | 
				
			|||
						content: rej.message || '内部错误,请重试', | 
				
			|||
						showCancel: false | 
				
			|||
					}); | 
				
			|||
				}) | 
				
			|||
				 | 
				
			|||
			}, | 
				
			|||
			getGoodsDetail(){ | 
				
			|||
				this.$http(this.API.API_ADVICEDETAILS, {id: this.goods_id}).then(res => { | 
				
			|||
					this.skeletonLoading = false; | 
				
			|||
					this.goods_detail = res.data; | 
				
			|||
					this.is_collect = Boolean(res.data.is_collect) || false; | 
				
			|||
				}).catch(err => { | 
				
			|||
					this.skeletonLoading = false; | 
				
			|||
					setTimeout(() => { | 
				
			|||
						this.$toBack(); | 
				
			|||
					}, 1000); | 
				
			|||
				}) | 
				
			|||
			}, | 
				
			|||
			// 切换商品收藏 | 
				
			|||
			switchCollect(){ | 
				
			|||
				let userInfo = uni.getStorageSync('userinfo') || {}; | 
				
			|||
				if(!userInfo.id || !userInfo.nickname || !userInfo.avatar){ | 
				
			|||
					this.$url('/pages/login/index?type=userinfo'); | 
				
			|||
					return; | 
				
			|||
				} | 
				
			|||
				 | 
				
			|||
				if(this.is_collect) { | 
				
			|||
					this.$http(this.API.API_DELCOLLECT, {agent_product_id:this.goods_id}).then(res => { | 
				
			|||
						this.$msg('取消收藏成功!') | 
				
			|||
						this.is_collect = false | 
				
			|||
						console.log(res) | 
				
			|||
					}) | 
				
			|||
				}else { | 
				
			|||
					this.$http(this.API.API_ADDCOLLECT, {agent_product_id:this.goods_id}).then(res => { | 
				
			|||
						this.$msg('添加收藏成功!') | 
				
			|||
						this.is_collect = true | 
				
			|||
						console.log(res) | 
				
			|||
					}) | 
				
			|||
				} | 
				
			|||
			}, | 
				
			|||
			// 拨打电话 | 
				
			|||
			makePhoneCall(phoneStr){ | 
				
			|||
				uni.makePhoneCall({ | 
				
			|||
					phoneNumber: String(phoneStr) | 
				
			|||
				}) | 
				
			|||
			}, | 
				
			|||
			// 打开地图 | 
				
			|||
			openMap(){ | 
				
			|||
				let { address, lat, lng } = this.goods_detail?.store || {}; | 
				
			|||
				uni.openLocation({ | 
				
			|||
				  longitude: Number(lat), | 
				
			|||
				  latitude: Number(lng), | 
				
			|||
				  scale: 20, | 
				
			|||
				  name: address | 
				
			|||
			   }); | 
				
			|||
			}, | 
				
			|||
			// 跳转到确认下单页面 | 
				
			|||
			toAddOrder(){ | 
				
			|||
				let goods_id = this.goods_detail.id; | 
				
			|||
				this.$url('/pages/order/confirm_order?goods_id='+ goods_id); | 
				
			|||
			}, | 
				
			|||
			// 预览图片 | 
				
			|||
			lookImg(index){ | 
				
			|||
				this.$u.throttle(() => { | 
				
			|||
					let goods_banner = this.goods_detail.banners || []; | 
				
			|||
					let banners = goods_banner.map(item => item.cover); | 
				
			|||
					uni.previewImage({ | 
				
			|||
						urls: banners, | 
				
			|||
						current: index | 
				
			|||
					}) | 
				
			|||
				}, 200); | 
				
			|||
			}, | 
				
			|||
			// 富文本处理 | 
				
			|||
			formatRichText(richText){ | 
				
			|||
			  if(richText != null){ | 
				
			|||
					let newRichText= richText.replace(/<img[^>]*>/gi, function(match, capture){ | 
				
			|||
						match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, ''); | 
				
			|||
						match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, ''); | 
				
			|||
						match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, ''); | 
				
			|||
						return match; | 
				
			|||
					}); | 
				
			|||
					newRichText = newRichText.replace(/style="[^"]+"/gi,function(match, capture){ | 
				
			|||
						match = match.replace(/width:[^;]+;/gi, 'width:100%;').replace(/width:[^;]+;/gi, 'width:100%;'); | 
				
			|||
						return match; | 
				
			|||
					}); | 
				
			|||
					newRichText = newRichText.replace(/<br[^>]*\/>/gi, ''); | 
				
			|||
					newRichText = newRichText.replace(/\<img/gi, '<img style="width:100%;height:auto;display:block;margin:10px 0;"'); | 
				
			|||
					return newRichText; | 
				
			|||
				}else{ | 
				
			|||
					return null; | 
				
			|||
				} | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		onShareAppMessage(){ | 
				
			|||
			let goods = this.goods_detail; | 
				
			|||
			let title = goods.name; | 
				
			|||
			let imageUrl = goods.share_cover || goods.cover; | 
				
			|||
			let path = '/pages/route/index?route=goods_detail&id='+ goods.id; | 
				
			|||
			 | 
				
			|||
			return { | 
				
			|||
				title, | 
				
			|||
				path, | 
				
			|||
				imageUrl | 
				
			|||
			} | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style> | 
				
			|||
	page{ | 
				
			|||
		background-color: #f5f5f5; | 
				
			|||
		overflow-x: hidden; | 
				
			|||
	} | 
				
			|||
</style> | 
				
			|||
<style lang="scss" scoped="scoped"> | 
				
			|||
	//商品上去scrollview部分 | 
				
			|||
	.scroll-view{ | 
				
			|||
		height: 310rpx; | 
				
			|||
		width: 100%; | 
				
			|||
		// margin-top: 20rpx; | 
				
			|||
		padding: 0 30rpx 30rpx 30rpx; | 
				
			|||
		background-color: white; | 
				
			|||
		.scroll-content{ | 
				
			|||
			display: flex; | 
				
			|||
			width: 100%; | 
				
			|||
			.goods-item{ | 
				
			|||
				margin-right: 15rpx; | 
				
			|||
				width: 180rpx; | 
				
			|||
			} | 
				
			|||
			.goods-img{ | 
				
			|||
				width: 180rpx; | 
				
			|||
				height: 180rpx; | 
				
			|||
				background-color: #EEEEEE; | 
				
			|||
			} | 
				
			|||
			.goods-info{ | 
				
			|||
				text-align: center; | 
				
			|||
				color: #222222; | 
				
			|||
				&>view:nth-child(1n){ | 
				
			|||
					font-size: 24rpx; | 
				
			|||
				} | 
				
			|||
				&>view:nth-child(2n){ | 
				
			|||
					font-size: 28rpx; | 
				
			|||
					font-weight: bold; | 
				
			|||
					text-align: left; | 
				
			|||
					color: #F63434; | 
				
			|||
				} | 
				
			|||
			} | 
				
			|||
			.more-box{ | 
				
			|||
				width: 180rpx; | 
				
			|||
				height: 180rpx; | 
				
			|||
				background-color: #EEEEEE; | 
				
			|||
				text-align: center; | 
				
			|||
				line-height: 180rpx; | 
				
			|||
				font-size: 24rpx; | 
				
			|||
			} | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	//scrollview结束 | 
				
			|||
	.tag-father { | 
				
			|||
		position: relative; | 
				
			|||
	} | 
				
			|||
	.head-tag { | 
				
			|||
		color: white; | 
				
			|||
		display: flex; | 
				
			|||
		align-items: center; | 
				
			|||
		justify-content: center; | 
				
			|||
		text-align: center; | 
				
			|||
		font-size: 24rpx; | 
				
			|||
		width: 36rpx; | 
				
			|||
		height: 36rpx; | 
				
			|||
		border-radius: 50%; | 
				
			|||
		background-color: #15716E; | 
				
			|||
		border: 1rpx solid #FFFFFF; | 
				
			|||
		position: absolute; | 
				
			|||
		left: 76rpx; | 
				
			|||
		top: 86rpx; | 
				
			|||
		z-index: 99; | 
				
			|||
	} | 
				
			|||
	.qzone-img { | 
				
			|||
		width: 220rpx; | 
				
			|||
		height: 220rpx; | 
				
			|||
		border-radius: 10rpx; | 
				
			|||
		margin-right: 12rpx; | 
				
			|||
		&:nth-child(3n) { | 
				
			|||
			margin-right: 0; | 
				
			|||
		} | 
				
			|||
		&:nth-child(n + 4) { | 
				
			|||
			margin-top: 12rpx; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
	.user-top { | 
				
			|||
		background-color: #F3F8F8; | 
				
			|||
		padding: 30rpx; | 
				
			|||
		display: flex; | 
				
			|||
		align-items: center; | 
				
			|||
		background-color: white; | 
				
			|||
	} | 
				
			|||
	.head-img { | 
				
			|||
		width: 80rpx; | 
				
			|||
		height: 80rpx; | 
				
			|||
		border-radius: 50%; | 
				
			|||
	} | 
				
			|||
	.head-btn { | 
				
			|||
		display: flex; | 
				
			|||
		width: max-content; | 
				
			|||
		height: 45rpx; | 
				
			|||
		background: white; | 
				
			|||
		border: 2rpx solid #15716E; | 
				
			|||
		align-items: center; | 
				
			|||
		font-size: 22rpx; | 
				
			|||
		color: #15716E; | 
				
			|||
		justify-content: space-between; | 
				
			|||
		border-radius: 35rpx; | 
				
			|||
		padding: 10rpx!important; | 
				
			|||
	} | 
				
			|||
	.swiper-box{ | 
				
			|||
		width: 750rpx; | 
				
			|||
		height: 750rpx; | 
				
			|||
		background-color: #FFFFFF; | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.head-info{ | 
				
			|||
		width: 750rpx; | 
				
			|||
		height: auto; | 
				
			|||
		box-sizing: border-box; | 
				
			|||
		padding: 0 32rpx; | 
				
			|||
		padding-top: 20rpx; | 
				
			|||
		background-color: #FFFFFF; | 
				
			|||
		// .price>view:nth-of-type(1){ | 
				
			|||
		// 	color: #FF0000; | 
				
			|||
		// 	margin-right: 22rpx; | 
				
			|||
		// 	font-weight: bold; | 
				
			|||
		// } | 
				
			|||
		.price>view:nth-of-type(1){ | 
				
			|||
			text-decoration: line-through; | 
				
			|||
			color: #777777; | 
				
			|||
			margin-right: 22rpx; | 
				
			|||
		} | 
				
			|||
		.price>view:nth-of-type(2){ | 
				
			|||
			width: max-content; | 
				
			|||
			padding: 0 18rpx; | 
				
			|||
			height: 46rpx; | 
				
			|||
			background-color: #1998FE; | 
				
			|||
			border-radius: 10rpx; | 
				
			|||
			display: flex; | 
				
			|||
			justify-content: center; | 
				
			|||
			align-items: center; | 
				
			|||
			color: #FFFFFF; | 
				
			|||
		} | 
				
			|||
		.label-box{ | 
				
			|||
			min-height: 130rpx; | 
				
			|||
			width: 100%; | 
				
			|||
			border-top: 1rpx solid #E5E5E5; | 
				
			|||
			display: flex; | 
				
			|||
			flex-wrap: wrap; | 
				
			|||
			padding: 30rpx 0 10rpx 0; | 
				
			|||
			.label-item{ | 
				
			|||
				width: max-content; | 
				
			|||
				padding: 20rpx; | 
				
			|||
				height: 70rpx; | 
				
			|||
				border-radius: 10rpx; | 
				
			|||
				border: 2rpx solid #1998FE; | 
				
			|||
				display: flex; | 
				
			|||
				justify-content: center; | 
				
			|||
				align-items: center; | 
				
			|||
				font-size: 28rpx; | 
				
			|||
				color: #1998FE; | 
				
			|||
				margin-right: 20rpx; | 
				
			|||
				margin-bottom: 20rpx; | 
				
			|||
			} | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.address-box{ | 
				
			|||
		width: 750rpx; | 
				
			|||
		height: auto; | 
				
			|||
		box-sizing: border-box; | 
				
			|||
		background-color: #FFFFFF; | 
				
			|||
		padding: 32rpx; | 
				
			|||
		margin-top: 20rpx; | 
				
			|||
		.shop-img{ | 
				
			|||
			width: 60rpx; | 
				
			|||
			height: 60rpx; | 
				
			|||
			border-radius: 50%; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.goods-detail{ | 
				
			|||
		width: 750rpx; | 
				
			|||
		height: auto; | 
				
			|||
		background-color: #FFFFFF; | 
				
			|||
		padding: 32rpx; | 
				
			|||
		box-sizing: border-box; | 
				
			|||
		margin-top: 20rpx; | 
				
			|||
		.goods-img{ | 
				
			|||
			width: 100%; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.extra{ | 
				
			|||
		width: 100%; | 
				
			|||
		height: 110rpx; | 
				
			|||
		padding-bottom: constant(safe-area-inset-bottom); | 
				
			|||
		padding-bottom: env(safe-area-inset-bottom); | 
				
			|||
		box-sizing: content-box; | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.fixed-bottom{ | 
				
			|||
		position: fixed; | 
				
			|||
		bottom: 0; | 
				
			|||
		left: 0; | 
				
			|||
		background-color: #FFFFFF; | 
				
			|||
		width: 100%; | 
				
			|||
		height: auto; | 
				
			|||
		padding: 0 32rpx; | 
				
			|||
		border-top: 1rpx solid #e5e5e5; | 
				
			|||
		padding-bottom: constant(safe-area-inset-bottom); | 
				
			|||
		padding-bottom: env(safe-area-inset-bottom); | 
				
			|||
		.icon-item{ | 
				
			|||
			text-align: center; | 
				
			|||
			margin-right: 16rpx; | 
				
			|||
			background-color: transparent; | 
				
			|||
			margin: 0; | 
				
			|||
			line-height: initial; | 
				
			|||
			font-size: 28rpx; | 
				
			|||
			font-weight: inherit; | 
				
			|||
			margin-right: 10rpx; | 
				
			|||
			padding: 0; | 
				
			|||
			width: 88rpx; | 
				
			|||
			position: relative; | 
				
			|||
			&:first-child{ | 
				
			|||
				padding-left: 0; | 
				
			|||
			} | 
				
			|||
			.icon-img{ | 
				
			|||
				height: 50rpx; | 
				
			|||
				width: 50rpx; | 
				
			|||
			} | 
				
			|||
		} | 
				
			|||
		.btn1{ | 
				
			|||
			margin: 0; | 
				
			|||
			width: max-content; | 
				
			|||
			height: 80rpx; | 
				
			|||
			background-color: rgba(21, 113, 110, 0.1); | 
				
			|||
			color: #15716E; | 
				
			|||
			line-height: 80rpx; | 
				
			|||
			font-size: 32rpx; | 
				
			|||
			padding: 0 20rpx; | 
				
			|||
			border-radius: 42rpx; | 
				
			|||
			font-size: 26rpx; | 
				
			|||
			border: 2rpx solid #15716E; | 
				
			|||
		} | 
				
			|||
		.btn{ | 
				
			|||
			margin: 0; | 
				
			|||
			padding: 0 20rpx; | 
				
			|||
			width: max-content; | 
				
			|||
			height: 80rpx; | 
				
			|||
			background-color: #15716E; | 
				
			|||
			color: #FFFFFF; | 
				
			|||
			line-height: 80rpx; | 
				
			|||
			font-size: 26rpx; | 
				
			|||
			border-radius: 42rpx; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
</style> | 
				
			|||
						
							
						
						
							1079
	
						
						pages/store/cart/cart.vue
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						@ -0,0 +1,956 @@ | 
				
			|||
<template> | 
				
			|||
<view id="store-cart"> | 
				
			|||
	<lf-nav title="购物车"></lf-nav> | 
				
			|||
    <view class="discount-box"> | 
				
			|||
        <!--登录状态--> | 
				
			|||
        <view class="is-login" v-if="(is_login && discounts.length) || (is_login && coupons.length)"> | 
				
			|||
            <view class="promotion-box"> | 
				
			|||
                <view class="promotion" @tap="changeDiscounts" v-if="discounts.length"> | 
				
			|||
                    <view class="title" :style="'color: ' + config.mainColor + '; border-color: ' + config.mainColor"> | 
				
			|||
                        {{discounts[0].tags}} | 
				
			|||
                    </view> | 
				
			|||
                    <view> | 
				
			|||
                        {{discounts[0].label}} > | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
            <view class="coupon mx-1px-left" :style="'color: ' + config.mainColor + ';'" @tap="changeCoupons" v-if="coupons.length"> | 
				
			|||
                优惠券 | 
				
			|||
            </view> | 
				
			|||
        </view> | 
				
			|||
        <!--未登录状态--> | 
				
			|||
        <div class="no-login" v-if="!is_login" @tap="goLogin"> | 
				
			|||
            <div class="left"> | 
				
			|||
                <i class="iconfont icon-warning"></i> | 
				
			|||
                <div> | 
				
			|||
                    <span>登录</span>后查看是否享受优惠 | 
				
			|||
                </div> | 
				
			|||
            </div> | 
				
			|||
            <div class="right"> | 
				
			|||
                登录 > | 
				
			|||
            </div> | 
				
			|||
        </div> | 
				
			|||
    </view> | 
				
			|||
	<view class="no-goods" v-if="list && list.length == 0"> | 
				
			|||
		<image mode="widthFix" src="https://cdn.guojiang.club/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20200323164958.png"></image> | 
				
			|||
	</view> | 
				
			|||
    <view class="goods-box" v-if="list && list.length"> | 
				
			|||
        <checkbox-group @change="changeCheck"> | 
				
			|||
            <view class="goods-item mx-1px-bottom" v-for="(item, index) in list" :key="index"> | 
				
			|||
                <view class="input"> | 
				
			|||
                    <label class="checkbox"> | 
				
			|||
                        <!-- #ifdef APP-PLUS --> | 
				
			|||
                        <checkbox :value="String(index)" color="red" :checked="item.checked"></checkbox> | 
				
			|||
                        <!-- #endif --> | 
				
			|||
						<!-- #ifdef MP-WEIXIN --> | 
				
			|||
						<checkbox :value="String(index)" color="#FFFFFF" :checked="item.checked"></checkbox> | 
				
			|||
						<!-- #endif --> | 
				
			|||
						<!-- #ifdef H5 --> | 
				
			|||
						<checkbox :value="String(index)" color="red" :checked="item.checked"></checkbox> | 
				
			|||
						<!-- #endif --> | 
				
			|||
						{{item.value!=undefined?item.value:''}} | 
				
			|||
                    </label> | 
				
			|||
                </view> | 
				
			|||
                <view class="img-box" :data-id="item.com_id" @tap.stop="jump"> | 
				
			|||
                    <image :src="item.img"></image> | 
				
			|||
                </view> | 
				
			|||
                <view class="item-info"> | 
				
			|||
                    <view class="name" :data-id="item.com_id" @tap.stop="jump"> | 
				
			|||
                        {{item.name}} | 
				
			|||
                    </view> | 
				
			|||
                    <view class="money-box" :data-id="item.com_id" @tap.stop="jump"> | 
				
			|||
                        <view class="model"> | 
				
			|||
                            {{item.color}} <span v-if="item.color && item.size">,</span> {{item.size}} | 
				
			|||
                        </view> | 
				
			|||
                        <view class="money"> | 
				
			|||
                            ¥{{item.total}} | 
				
			|||
                        </view> | 
				
			|||
                    </view> | 
				
			|||
                    <view class="mun-box"> | 
				
			|||
                        <view class="change-num"> | 
				
			|||
                            <view class="ul-list-content"> | 
				
			|||
                                <view class="item" :data-index="index" data-change="0" @tap="changeCount">-</view> | 
				
			|||
                                <view class="item"><input type="number" :value="item.qty" :data-index="index" @change="modifyCount" /></view> | 
				
			|||
                                <view class="item" :data-index="index" data-change="1" @tap="changeCount">+</view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                        <view class="remove" @tap="removeFromCart" :data-index="index"> | 
				
			|||
                            移除 | 
				
			|||
 | 
				
			|||
                        </view> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
 | 
				
			|||
        </checkbox-group> | 
				
			|||
    </view> | 
				
			|||
    <view class="buy-box"> | 
				
			|||
        <label class="checkbox"> | 
				
			|||
           <!-- #ifdef APP-PLUS --> | 
				
			|||
            <checkbox value="all" color="red" :checked="allCheck" @tap="selectAll"></checkbox> | 
				
			|||
           <!-- #endif --> | 
				
			|||
		   <!-- #ifdef MP-WEIXIN --> | 
				
			|||
		   <checkbox value="all" color="#FFFFFF" :checked="allCheck" @tap="selectAll"></checkbox> | 
				
			|||
		   <!-- #endif --> | 
				
			|||
		   <!-- #ifdef H5 --> | 
				
			|||
		   <checkbox value="all" color="red" :checked="allCheck" @tap="selectAll"></checkbox> | 
				
			|||
		   <!-- #endif --> | 
				
			|||
            <text>全选</text> | 
				
			|||
        </label> | 
				
			|||
        <view class="money-box"> | 
				
			|||
            商品总计:<text>¥{{select_products.total!=undefined?select_products.total:''}}</text> | 
				
			|||
        </view> | 
				
			|||
        <button class="num-box" :style="'background: ' + config.mainColor" @tap="order" :loading="loading"> | 
				
			|||
            结算<text>{{'('+ select_products.count + ')' || 0}}</text> | 
				
			|||
        </button> | 
				
			|||
    </view> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    <!--选择优惠券部分--> | 
				
			|||
    <view class="maks" :class="show_coupons ? 'cur' : ''" @tap="showCoupons"> | 
				
			|||
 | 
				
			|||
    </view> | 
				
			|||
    <view class="select-coupon-box" :class="show_coupons ? 'cur' : ''"> | 
				
			|||
        <view class="select-coupon"> | 
				
			|||
            <view class="select-coupon-top"> | 
				
			|||
                <view class="title"> | 
				
			|||
                    领取优惠券 | 
				
			|||
 | 
				
			|||
                    <view class="close" @tap="showCoupons"> | 
				
			|||
                        X | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
 | 
				
			|||
            <view class="select-coupon-bottom"> | 
				
			|||
                <view class="title"> | 
				
			|||
                    可领优惠券 | 
				
			|||
                </view> | 
				
			|||
                <view class="coupon-box"> | 
				
			|||
                    <view class="coupon-item" v-for="(item, index) in coupons" :key="index" v-if="item.is_open"> | 
				
			|||
                        <view class="coupon"> | 
				
			|||
                            <view class="coupon-left"> | 
				
			|||
                                <view class="text-wrap"> | 
				
			|||
                                    <view class="text-box"> | 
				
			|||
                                        <view class="text"> | 
				
			|||
                                            <span class="money" v-if="item.action_type.type == 'cash'">¥</span> | 
				
			|||
                                            <span class="num">{{ item.action_type.value }}</span> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
                                            <span class="money" v-if="item.action_type.type == 'discount'">折</span> | 
				
			|||
                                        </view> | 
				
			|||
                                        <span class="label text">{{ item.label }}</span> | 
				
			|||
                                    </view> | 
				
			|||
 | 
				
			|||
                                </view> | 
				
			|||
                                <view class="dot-wrap"> | 
				
			|||
                                    <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                    </view> | 
				
			|||
                                    <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                    </view> | 
				
			|||
                                    <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                    </view> | 
				
			|||
                                    <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                    </view> | 
				
			|||
                                    <view class="dot-item"> | 
				
			|||
 | 
				
			|||
                                    </view> | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                            <view class="coupon-right"> | 
				
			|||
                                <view class="top"> | 
				
			|||
                                <span> | 
				
			|||
                                    <span class="type" v-if="item.channel == 'ec'">商店</span> | 
				
			|||
                                    <span class="type" v-if="item.channel == 'shop'">门店</span> | 
				
			|||
                                </span> | 
				
			|||
                                    <span class="info">{{item.title}}</span> | 
				
			|||
                                </view> | 
				
			|||
                                <view class="bottom"> | 
				
			|||
                                    <view class="bottom-use"> | 
				
			|||
                                        <view class="tiem-box"> | 
				
			|||
                                            <text>{{item.use_start_time}}至{{item.use_end_time}}</text> | 
				
			|||
                                        </view> | 
				
			|||
                                        <view class="btn use" :style="'background: ' + config.mainColor + '; border-color: ' + config.mainColor" :data-code="item.code" :data-index="index" v-if="!coupons[index].receive" @tap="getCoupon"> | 
				
			|||
                                            点击领取 | 
				
			|||
 | 
				
			|||
                                        </view> | 
				
			|||
                                        <view class="btn already" v-else> | 
				
			|||
                                            已领取 | 
				
			|||
 | 
				
			|||
                                        </view> | 
				
			|||
 | 
				
			|||
                                    </view> | 
				
			|||
                                </view> | 
				
			|||
                            </view> | 
				
			|||
                        </view> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
 | 
				
			|||
            </view> | 
				
			|||
 | 
				
			|||
        </view> | 
				
			|||
    </view> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    <!--查看促销部分--> | 
				
			|||
 | 
				
			|||
    <view class="maks" :class="show_discounts ? 'cur' : ''" @tap="showDiscounts"> | 
				
			|||
 | 
				
			|||
    </view> | 
				
			|||
 | 
				
			|||
    <view class="see-discounts-box" :class="show_discounts ? 'cur' : ''"> | 
				
			|||
        <view class="select-discounts"> | 
				
			|||
            <view class="select-discounts-top"> | 
				
			|||
                <view class="title"> | 
				
			|||
                    促销 | 
				
			|||
                    <view class="close" @tap="showDiscounts"> | 
				
			|||
                        X | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
 | 
				
			|||
            <view class="select-discounts-bottom"> | 
				
			|||
                <view class="discounts-box"> | 
				
			|||
                    <view class="disconts-item mx-1px-bottom" v-for="(item, index) in discounts" :key="index"> | 
				
			|||
                        <view class="discounts-tags-title" :style="'color: ' + config.mainColor + '; border-color: ' + config.mainColor"> | 
				
			|||
                            {{item.tags}} | 
				
			|||
                        </view> | 
				
			|||
                        <view class="tags-item"> | 
				
			|||
                            {{item.label}} | 
				
			|||
                        </view> | 
				
			|||
                    </view> | 
				
			|||
                </view> | 
				
			|||
            </view> | 
				
			|||
 | 
				
			|||
        </view> | 
				
			|||
    </view> | 
				
			|||
	<lf-tabbar></lf-tabbar> | 
				
			|||
</view> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
</template> | 
				
			|||
<script> | 
				
			|||
import {pageLogin, getUrl,config} from '@/common/js/utils.js'; | 
				
			|||
import lfNav from '@/components/lf-nav/lf-nav.vue'; | 
				
			|||
import lfTabbar from '@/components/lf-tabbar/lf-tabbar.vue'; | 
				
			|||
 | 
				
			|||
export default { | 
				
			|||
  data() { | 
				
			|||
    return { | 
				
			|||
      is_login: '', | 
				
			|||
      list: [], | 
				
			|||
      groupList: [], | 
				
			|||
      select_products: {}, | 
				
			|||
      allCheck: true, | 
				
			|||
      channel: 'normal', | 
				
			|||
      loading: false, | 
				
			|||
      show_coupons: false, | 
				
			|||
      // 领取优惠券 | 
				
			|||
      show_discounts: false, | 
				
			|||
      // 查看促销活动 | 
				
			|||
      goodsList: [], | 
				
			|||
      // 购物车里存在的商品id | 
				
			|||
      config: '', | 
				
			|||
      author: config.PACKAGES.author, | 
				
			|||
	  discounts:'', | 
				
			|||
	  coupons:'' | 
				
			|||
    }; | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onShow() { | 
				
			|||
    // var oauth = Cache.get(cache_keys.token); | 
				
			|||
    // var locals = Cache.get(cache_keys.cart); | 
				
			|||
    var is_login = this.$cookieStorage.get('user_token'); | 
				
			|||
    this.setData({ | 
				
			|||
      is_login: is_login, | 
				
			|||
      loading: false | 
				
			|||
    }); | 
				
			|||
    var oauth = this.is_login;  | 
				
			|||
 | 
				
			|||
    var locals = this.$cookieStorage.get('cart'); | 
				
			|||
 | 
				
			|||
    if (oauth && locals && locals.length) { | 
				
			|||
      // 提交本地购物车 | 
				
			|||
      this.appendToCart(locals); | 
				
			|||
    } else { | 
				
			|||
      this.queryCartList(); | 
				
			|||
    } // let app =getApp(); | 
				
			|||
    // app.isBirthday().then(()=>{ | 
				
			|||
    //     if(this.$cookieStorage.get("birthday_gift")){ | 
				
			|||
    //         var giftData=this.$cookieStorage.get("birthday_gift").data; | 
				
			|||
    //         new app.ToastPannel().__page.showText(giftData); | 
				
			|||
    //     } | 
				
			|||
    // }); | 
				
			|||
 | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  onLoad() { | 
				
			|||
    // 第三方平台配置颜色 | 
				
			|||
    var bgConfig = this.$cookieStorage.get('globalConfig') || ''; | 
				
			|||
    this.setData({ | 
				
			|||
      config: bgConfig | 
				
			|||
    }); | 
				
			|||
  }, | 
				
			|||
 | 
				
			|||
  components: { | 
				
			|||
	  lfNav, | 
				
			|||
	  lfTabbar | 
				
			|||
  }, | 
				
			|||
  props: {}, | 
				
			|||
  methods: { | 
				
			|||
    jump(e) { | 
				
			|||
      var id = e.currentTarget.dataset.id; | 
				
			|||
      wx.navigateTo({ | 
				
			|||
        url: '/pages/store/detail/detail?id=' + id | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    select_product() { | 
				
			|||
      var data = { | 
				
			|||
        count: 0, | 
				
			|||
        total: 0, | 
				
			|||
        __ids: [] | 
				
			|||
      }; | 
				
			|||
      this.list.forEach(v => { | 
				
			|||
        if (v.checked) { | 
				
			|||
          data.count += parseInt(v.qty); | 
				
			|||
          data.total += Number(v.total); | 
				
			|||
 | 
				
			|||
          data.__ids.push(v.__raw_id || v.index); | 
				
			|||
        } else { | 
				
			|||
          this.setData({ | 
				
			|||
            allCheck: false | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
      }); | 
				
			|||
      this.setData({ | 
				
			|||
        select_products: data | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    addCart(success, message) { | 
				
			|||
      // this.$refs.button.finish(); | 
				
			|||
	   | 
				
			|||
      // this.setData({ | 
				
			|||
      //   loading: false | 
				
			|||
      // }); | 
				
			|||
	   | 
				
			|||
	  console.log(success); | 
				
			|||
	   | 
				
			|||
	  this.loading=false; | 
				
			|||
 | 
				
			|||
      if (success) { | 
				
			|||
        this.$cookieStorage.clear('cart'); // wx.removeStorageSync('cart') | 
				
			|||
        // TODO | 
				
			|||
        //this.$emit('readyCheckout'); | 
				
			|||
 | 
				
			|||
        this.queryCartList(); | 
				
			|||
      } else { | 
				
			|||
        this.$cookieStorage.clear('cart'); // wx.removeStorageSync('cart') | 
				
			|||
 | 
				
			|||
        wx.showModal({ | 
				
			|||
          title: message || '保存本地购物车失败,请重试!' | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    order() { | 
				
			|||
      var data = this.select_products; | 
				
			|||
 | 
				
			|||
      if (!data.count) { | 
				
			|||
        // this.$refs.button.finish(); | 
				
			|||
        return; | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      ; | 
				
			|||
      this.setData({ | 
				
			|||
        loading: true | 
				
			|||
      }); | 
				
			|||
      var oauth = this.is_login; | 
				
			|||
 | 
				
			|||
      if (!oauth) { | 
				
			|||
        // 滚去登录 | 
				
			|||
        var url = getUrl(); // this.$router.go({ name: 'user-quick-login', query: { source: this.$route.path } }); | 
				
			|||
 | 
				
			|||
        wx.navigateTo({ | 
				
			|||
          url: '/pages/user/register/register?url=' + url | 
				
			|||
        }); | 
				
			|||
        return; | 
				
			|||
      } // var locals = wx.getStorageSync('cart'); | 
				
			|||
 | 
				
			|||
 | 
				
			|||
      var locals = this.$cookieStorage.get('cart'); | 
				
			|||
 | 
				
			|||
      if (locals && locals.length) { | 
				
			|||
        // 提交本地购物车 | 
				
			|||
        this.appendToCart(locals); | 
				
			|||
        return; | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      this.readyCheckout(); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    readyCheckout() { | 
				
			|||
      var ids = this.select_products.__ids; | 
				
			|||
      var type = this.channel; | 
				
			|||
      this.checkoutOrder(ids, type); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    checkoutOrder(ids, type) { | 
				
			|||
      var oauth = this.is_login; | 
				
			|||
      var cart_ids = ids.filter(id => id); | 
				
			|||
      var wechat_group_id = this.$cookieStorage.get('openGId') || ''; | 
				
			|||
      var that = this; | 
				
			|||
      this.$http.post({ | 
				
			|||
        api: `api/shopping/order/checkout`, | 
				
			|||
        data: { | 
				
			|||
          cart_ids, | 
				
			|||
          type, | 
				
			|||
          wechat_group_id | 
				
			|||
        }, | 
				
			|||
        header: { | 
				
			|||
          Authorization: oauth | 
				
			|||
        }, | 
				
			|||
        method: 'POST' | 
				
			|||
      }).then(res => { | 
				
			|||
        res = res.data; | 
				
			|||
 | 
				
			|||
        if (res.status) { | 
				
			|||
          // Cache.set(cache_keys.order, res.data); | 
				
			|||
          // wx.setStorageSync('local_order',res.data) | 
				
			|||
          this.$cookieStorage.set('local_order', res.data); | 
				
			|||
          that.checkout(true); | 
				
			|||
        } else { | 
				
			|||
          that.checkout(false, res.message); | 
				
			|||
        } | 
				
			|||
      }).catch(() => { | 
				
			|||
        that.checkout(false); | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    checkout(success, message) { | 
				
			|||
      // this.$refs.button.finish(); | 
				
			|||
      this.setData({ | 
				
			|||
        loading: false | 
				
			|||
      }); | 
				
			|||
 | 
				
			|||
      if (success) { | 
				
			|||
        // this.$router.go({ name: 'store-order'}); | 
				
			|||
        wx.navigateTo({ | 
				
			|||
          url: '/pages/store/order/order' | 
				
			|||
        }); | 
				
			|||
      } else { | 
				
			|||
        // this.$Alert(message || '结算失败,请重试!'); | 
				
			|||
        if (message == 'User unbind mobile') { | 
				
			|||
          wx.showModal({ | 
				
			|||
            content: '请先绑定手机号', | 
				
			|||
            showCancel: false, | 
				
			|||
            success: res => { | 
				
			|||
              if (res.confirm || !res.cancel && !res.confirm) { | 
				
			|||
                wx.navigateTo({ | 
				
			|||
                  url: '/pages/user/phone/phone?url=' + getUrl() | 
				
			|||
                }); | 
				
			|||
              } | 
				
			|||
            } | 
				
			|||
          }); | 
				
			|||
        } else { | 
				
			|||
          wx.showModal({ | 
				
			|||
            content: message || '结算失败,请重试!', | 
				
			|||
            showCancel: false | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    queryCartList() { | 
				
			|||
      // var data = wx.getStorageSync('cart') || []; | 
				
			|||
      var data = this.$cookieStorage.get('cart') || []; // var oauth = Cache.get(cache_keys.token); | 
				
			|||
 | 
				
			|||
      var oauth = this.is_login; | 
				
			|||
 | 
				
			|||
      if (!oauth) { | 
				
			|||
        this.setData({ | 
				
			|||
          list: data | 
				
			|||
        }); | 
				
			|||
        this.select_product(); | 
				
			|||
        this.groupListF(); | 
				
			|||
        return; | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      var that = this; | 
				
			|||
      this.$http.get({ | 
				
			|||
        api: `api/shopping/cart`, | 
				
			|||
        header: { | 
				
			|||
          Authorization: oauth | 
				
			|||
        } | 
				
			|||
      }).then(res => { | 
				
			|||
        res = res.data; | 
				
			|||
        var data = []; | 
				
			|||
 | 
				
			|||
        if (res.status && res.data) { | 
				
			|||
          data = Object.keys(res.data).map(key => { | 
				
			|||
            res.data[key].checked = true; | 
				
			|||
            return res.data[key]; | 
				
			|||
          }).concat(data); // 购物车领券 | 
				
			|||
 | 
				
			|||
          if (data.length) { | 
				
			|||
            var list = []; | 
				
			|||
            data.forEach(v => { | 
				
			|||
              if (that.goodsList.indexOf(v.com_id) == -1) { | 
				
			|||
                list.push(v.com_id); | 
				
			|||
              } | 
				
			|||
 | 
				
			|||
              ; | 
				
			|||
            }); | 
				
			|||
            this.setData({ | 
				
			|||
              goodsList: list | 
				
			|||
            }); | 
				
			|||
            this.cardDiscount(list); | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        that.setData({ | 
				
			|||
          list: data | 
				
			|||
        }); | 
				
			|||
        that.select_product(); | 
				
			|||
        that.groupListF(); | 
				
			|||
      }).catch(rej=> { | 
				
			|||
        this.addCart(false); | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    updated(success, data, item, index) { | 
				
			|||
      if (success) { | 
				
			|||
        item.qty = data.qty; | 
				
			|||
        item.total = data.total; | 
				
			|||
      } else { | 
				
			|||
        // TODO; | 
				
			|||
        item.qty = data.qty; | 
				
			|||
        item.total = item.qty * Number(item.price); | 
				
			|||
        wx.showToast({ | 
				
			|||
          title: '超过最大库存', | 
				
			|||
          image: '../../../static/error.png' | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      var list = this.list; | 
				
			|||
      list[index] = item; | 
				
			|||
      this.setData({ | 
				
			|||
        list: list | 
				
			|||
      }); | 
				
			|||
      this.select_product(); | 
				
			|||
      this.groupListF(); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    change(item, data, index) { | 
				
			|||
       | 
				
			|||
 | 
				
			|||
      if (item.local) { | 
				
			|||
        var locals = uni.getStorageInfo('cart') || []; | 
				
			|||
        locals[item.index].qty = data.qty; | 
				
			|||
        locals[item.index].total = data.total; // Cache.set(cache_keys.cart, locals, 0, null); | 
				
			|||
        // wx.setStorageSync('cart',locals) | 
				
			|||
 | 
				
			|||
        this.$cookieStorage.set('cart', locals); // this.$emit('updated', true, data, item); | 
				
			|||
 | 
				
			|||
        this.updated(true, data, item, index); | 
				
			|||
      } else { | 
				
			|||
        // clearTimeout(this.countTimer); | 
				
			|||
        // | 
				
			|||
        // this.countTimer = setTimeout(() => { | 
				
			|||
        //     this.updateToCart(data, item); | 
				
			|||
        // }, 200); | 
				
			|||
        this.updateToCart(data, item, index); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    modifyCount(e) { | 
				
			|||
      var index = e.currentTarget.dataset.index; | 
				
			|||
      var item = this.list[index]; | 
				
			|||
      var val = e.detail.value; | 
				
			|||
      var store_count = item.store_count; | 
				
			|||
 | 
				
			|||
      if (!val) { | 
				
			|||
        val = 1; | 
				
			|||
      } else if (!/^[1-9]\d*$/.test(val)) { | 
				
			|||
        val = val.replace(/[^\d].*$/, ''); | 
				
			|||
        val = parseInt(val) || 1; | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      if (store_count != undefined) { | 
				
			|||
        if (val > store_count) { | 
				
			|||
          val = store_count; | 
				
			|||
          wx.showToast({ | 
				
			|||
            title: '超过最大库存' | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      var data = { | 
				
			|||
        qty: val, | 
				
			|||
        total: val * Number(item.price) | 
				
			|||
      }; | 
				
			|||
      this.change(item, data); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    updateToCart(attr, data, index) { | 
				
			|||
      var oauth = this.is_login; | 
				
			|||
      var that = this; | 
				
			|||
      this.$http.ajax({ | 
				
			|||
        api: `api/shopping/cart/${data.__raw_id}`, | 
				
			|||
        data: { | 
				
			|||
          attributes: { | 
				
			|||
            qty: attr.qty | 
				
			|||
          } | 
				
			|||
        }, | 
				
			|||
        method: 'PUT', | 
				
			|||
        header: { | 
				
			|||
          Authorization: oauth | 
				
			|||
        } | 
				
			|||
      }).then(res => { | 
				
			|||
        res = res.data; | 
				
			|||
 | 
				
			|||
        if (res.status !== false) { | 
				
			|||
          // this.$emit('updated', true, attr, data); | 
				
			|||
          that.updated(true, attr, data, index); | 
				
			|||
        } else { | 
				
			|||
          // this.$emit('updated', false, { qty: res.data.stock_qty }, data); | 
				
			|||
          that.updated(false, { | 
				
			|||
            qty: res.data.stock_qty | 
				
			|||
          }, data, index); | 
				
			|||
        } | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    changeCount(e) { | 
				
			|||
		 | 
				
			|||
		 | 
				
			|||
      var index = e.currentTarget.dataset.index, | 
				
			|||
          change = e.currentTarget.dataset.change, | 
				
			|||
          list = this.list, | 
				
			|||
          val = (parseInt(list[index].qty) || 0) + (parseInt(change) ? 1 : -1), | 
				
			|||
          store_count = list[index].store_count; | 
				
			|||
		   | 
				
			|||
      if (store_count == undefined) { | 
				
			|||
        if (val > 0 && val <= 99) { | 
				
			|||
          var data = { | 
				
			|||
            qty: val, | 
				
			|||
            total: val * Number(list[index].price) | 
				
			|||
          }; | 
				
			|||
          this.change(list[index], data, index); | 
				
			|||
        } | 
				
			|||
      } else { | 
				
			|||
        if (val > 0 && val <= store_count) { | 
				
			|||
          var data = { | 
				
			|||
            qty: val, | 
				
			|||
            total: val * Number(list[index].price) | 
				
			|||
          }; | 
				
			|||
          this.change(list[index], data, index); | 
				
			|||
        } else { | 
				
			|||
          wx.showToast({ | 
				
			|||
            title: '超过最大库存', | 
				
			|||
            image: '../../../static/error.png' | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    groupListF() { | 
				
			|||
      if (this.list) { | 
				
			|||
        var data = []; | 
				
			|||
        var groups = {}; | 
				
			|||
        this.list.forEach((v, i) => { | 
				
			|||
          let channel = v.channel || 'normal'; | 
				
			|||
 | 
				
			|||
          if (groups[channel] !== undefined) { | 
				
			|||
            data[groups[channel]].items.push(v); | 
				
			|||
            data[groups[channel]].index.push(i); | 
				
			|||
          } else { | 
				
			|||
            groups[channel] = data.length; | 
				
			|||
            data.push({ | 
				
			|||
              channel, | 
				
			|||
              items: [v], | 
				
			|||
              checked: [], | 
				
			|||
              index: [i] | 
				
			|||
            }); | 
				
			|||
          } | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      this.setData({ | 
				
			|||
        groupList: data | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    appendToCart(data) { | 
				
			|||
      // var oauth = Cache.get(cache_keys.token); | 
				
			|||
      var oauth = this.is_login; | 
				
			|||
      if (!oauth) return; | 
				
			|||
 | 
				
			|||
      if (!Array.isArray(data)) { | 
				
			|||
        data = [data]; | 
				
			|||
      } | 
				
			|||
 | 
				
			|||
      var json = {}; | 
				
			|||
      data.forEach((v, i) => json[i] = v); | 
				
			|||
      data = json; | 
				
			|||
      var that = this; | 
				
			|||
      this.$http.post({ | 
				
			|||
        api: `api/shopping/cart`, | 
				
			|||
        data: data, | 
				
			|||
        header: { | 
				
			|||
          Authorization: oauth | 
				
			|||
        } | 
				
			|||
      }).then(res => { | 
				
			|||
        res = res.data; | 
				
			|||
 | 
				
			|||
        if (res.status) { | 
				
			|||
          that.addCart(true); | 
				
			|||
        } else { | 
				
			|||
          that.addCart(false, res.message); | 
				
			|||
        } | 
				
			|||
      }).catch(rej => { | 
				
			|||
        that.addCart(false); | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    removeFromCart(e) { | 
				
			|||
      var oauth = this.is_login; | 
				
			|||
      var index = e.currentTarget.dataset.index; | 
				
			|||
      var list = this.list; | 
				
			|||
      var data = list[index]; | 
				
			|||
 | 
				
			|||
      if (list[index].local) { | 
				
			|||
        // var locals = wx.getStorageSync('cart') || []; | 
				
			|||
        var locals = this.$cookieStorage.get('cart') || []; | 
				
			|||
 | 
				
			|||
        for (let i = 0; i < locals.length; i++) { | 
				
			|||
          if (locals[i].index === list[index].index) { | 
				
			|||
            locals.splice(i, 1); | 
				
			|||
            break; | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        if (locals.length) { | 
				
			|||
          this.$cookieStorage.set('cart', locals); // wx.setStorageSync('cart',locals) | 
				
			|||
        } else { | 
				
			|||
          this.$cookieStorage.clear('cart'); // wx.removeStorageSync('cart') | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        this.removed(true, index); | 
				
			|||
      } else { | 
				
			|||
        this.$http.ajax({ | 
				
			|||
          api: `api/shopping/cart/${data.__raw_id}`, | 
				
			|||
          header: { | 
				
			|||
            Authorization: oauth | 
				
			|||
          }, | 
				
			|||
          method: 'DELETE' | 
				
			|||
        }).then(res => { | 
				
			|||
          res = res.data; | 
				
			|||
          this.removed(true, index); | 
				
			|||
        }).catch(rej => { | 
				
			|||
          this.removed(false); | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    removed(success, index) { | 
				
			|||
      if (success) { | 
				
			|||
        var list = this.list; | 
				
			|||
        var product = list.splice(index, 1)[0]; | 
				
			|||
        this.setData({ | 
				
			|||
          list: list | 
				
			|||
        }); | 
				
			|||
        this.select_product(); | 
				
			|||
        this.groupListF(); | 
				
			|||
      } else { | 
				
			|||
        wx.showToast({ | 
				
			|||
          title: '删除购物车商品失败!', | 
				
			|||
          image: '../../../static/error.png' | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    changeCheck(e) { | 
				
			|||
      var ids = e.detail.value; | 
				
			|||
      var list = this.list; | 
				
			|||
      list.forEach(item => { | 
				
			|||
        item.checked = false; | 
				
			|||
      }); | 
				
			|||
      ids.forEach(item => { | 
				
			|||
        list[item].checked = true; | 
				
			|||
      }); | 
				
			|||
      this.setData({ | 
				
			|||
        list: list | 
				
			|||
      }); | 
				
			|||
      this.select_product(); | 
				
			|||
      this.groupListF(); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    selectAll(e) { | 
				
			|||
      var allCheck = this.allCheck; | 
				
			|||
      var list = this.list; | 
				
			|||
      this.setData({ | 
				
			|||
        allCheck: !allCheck | 
				
			|||
      }); | 
				
			|||
      list.forEach(item => { | 
				
			|||
        item.checked = this.allCheck ? true : false; | 
				
			|||
      }); | 
				
			|||
      this.setData({ | 
				
			|||
        list: list | 
				
			|||
      }); | 
				
			|||
      this.select_product(); | 
				
			|||
      this.groupListF(); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    showCoupons() { | 
				
			|||
      this.setData({ | 
				
			|||
        show_coupons: !this.show_coupons | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    showDiscounts() { | 
				
			|||
      this.setData({ | 
				
			|||
        show_discounts: !this.show_discounts | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    getCoupon(e) { | 
				
			|||
      var is_login = this.$cookieStorage.get('user_token'); | 
				
			|||
      var code = e.currentTarget.dataset.code; | 
				
			|||
      var index = e.currentTarget.dataset.index; | 
				
			|||
 | 
				
			|||
      if (is_login) { | 
				
			|||
        this.goodsConvertCoupon(code, index); | 
				
			|||
      } else { | 
				
			|||
        var url = getUrl(); | 
				
			|||
        wx.showModal({ | 
				
			|||
          tiele: '', | 
				
			|||
          content: '请先登录', | 
				
			|||
          success: res => { | 
				
			|||
            if (res.confirm) { | 
				
			|||
              wx.navigateTo({ | 
				
			|||
                url: '/pages/user/register/register?url=' + url | 
				
			|||
              }); | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
        }); | 
				
			|||
      } | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    // 领取优惠券 | 
				
			|||
    goodsConvertCoupon(code, index) { | 
				
			|||
      var token = this.$cookieStorage.get('user_token'); | 
				
			|||
      this.$http.post({ | 
				
			|||
        api: 'api/coupon/convert', | 
				
			|||
        header: { | 
				
			|||
          Authorization: token  | 
				
			|||
        }, | 
				
			|||
        data: { | 
				
			|||
          coupon_code: code | 
				
			|||
        } | 
				
			|||
      }).then(res => { | 
				
			|||
        if (res.statusCode == 200) { | 
				
			|||
          res = res.data; | 
				
			|||
 | 
				
			|||
          if (res.status) { | 
				
			|||
			this.coupons[index].receive = true; | 
				
			|||
            wx.showToast({ | 
				
			|||
              title: '领取成功' | 
				
			|||
            }); | 
				
			|||
          } else { | 
				
			|||
            wx.showToast({ | 
				
			|||
              title: res.message, | 
				
			|||
              image: '../../../static/error.png' | 
				
			|||
            }); | 
				
			|||
          } | 
				
			|||
        } else { | 
				
			|||
          wx.showToast({ | 
				
			|||
            title: '领取失败', | 
				
			|||
            image: '../../../static/error.png' | 
				
			|||
          }); | 
				
			|||
        } | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    goLogin() { | 
				
			|||
      var url = getUrl(); | 
				
			|||
      wx.navigateTo({ | 
				
			|||
        url: '/pages/user/register/register?url=' + url | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    changeCoupons() { | 
				
			|||
      this.setData({ | 
				
			|||
        show_coupons: !this.show_coupons | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    changeDiscounts() { | 
				
			|||
      this.setData({ | 
				
			|||
        show_discounts: !this.show_discounts | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    // 购物车领券 | 
				
			|||
    cardDiscount(ids) { | 
				
			|||
      var wechat_group_id = this.$cookieStorage.get('openGId') || ''; | 
				
			|||
      wx.request({ | 
				
			|||
        url: config.GLOBAL.baseUrl + 'api/shoppingCart/discount', | 
				
			|||
        method: 'POST', | 
				
			|||
        data: { | 
				
			|||
          ids: ids, | 
				
			|||
          wechat_group_id: wechat_group_id | 
				
			|||
        }, | 
				
			|||
        success: res => { | 
				
			|||
          if (res.statusCode == 200) { | 
				
			|||
            res = res.data; | 
				
			|||
 | 
				
			|||
            if (res.status && res.data) { | 
				
			|||
              res.data.coupons.forEach(v => v.receive = false); | 
				
			|||
              // this.setData({ | 
				
			|||
              //   coupons: res.data.coupons, | 
				
			|||
              //   discounts: res.data.discounts | 
				
			|||
              // }); | 
				
			|||
			   this.coupons=res.data.coupons; | 
				
			|||
			   this.discounts=res.data.discounts; | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
        } | 
				
			|||
      }); | 
				
			|||
    }, | 
				
			|||
 | 
				
			|||
    setData: function (obj) { | 
				
			|||
      let that = this; | 
				
			|||
      let keys = []; | 
				
			|||
      let val, data; | 
				
			|||
      Object.keys(obj).forEach(function (key) { | 
				
			|||
        keys = key.split('.'); | 
				
			|||
        val = obj[key]; | 
				
			|||
        data = that.$data; | 
				
			|||
        keys.forEach(function (key2, index) { | 
				
			|||
          if (index + 1 == keys.length) { | 
				
			|||
            that.$set(data, key2, val); | 
				
			|||
          } else { | 
				
			|||
            if (!data[key2]) { | 
				
			|||
              that.$set(data, key2, {}); | 
				
			|||
            } | 
				
			|||
          } | 
				
			|||
 | 
				
			|||
          data = data[key2]; | 
				
			|||
        }); | 
				
			|||
      }); | 
				
			|||
    } | 
				
			|||
  }, | 
				
			|||
  computed: {}, | 
				
			|||
  watch: {} | 
				
			|||
}; | 
				
			|||
</script> | 
				
			|||
<style rel="stylesheet/less" lang="less"> | 
				
			|||
    @import "cart"; | 
				
			|||
</style> | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue