java-mall-app/pages/product/detail.vue

6670 lines
188 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="page">
<block v-if="(isdata)">
<header-nav-menu ref="headerNavMenu" :menu="nav_nemu"></header-nav-menu>
<scroll-view class='u-pa1 fix-titlenview-trans' scroll-y="true" :scroll-top="scposition" @scroll="scrolltoupper">
<view class="m-banner-ad">
<swiper :indicator-dots="false" autoplay="true" interval="3000" duration="300" @change="swiperImg">
<swiper-item v-for="(item, ii) in ProductInfo.productPicList" :key="ii">
<view class="no_goods" v-if="product_freight_info.if_store==0">
<view class="no_shadow"></view>
<text class="no_goods_tip">{{ __('售罄,补货中') }}</text>
</view>
<image lazy-load class="slide-image" mode="aspectFill" :src="(item.Path)" :data-src="(item.Path)" @click="previewProductImg" />
</swiper-item>
</swiper>
<navigator v-if="(ProductInfo.product_video)" :url="ProductInfo.pv_url" class="video">
<image lazy-load src="/static/images/play.png" style="width:100rpx;height:100rpx"></image>
</navigator>
<view class="indicator-point" v-if="ProductInfo.productPicList.length">
{{ currentSwipperImageIndex }}/{{ ProductInfo.productPicList.length }}
</view>
<view class="u-p-opt">
<view style='position:relative'>
<view :class="'navtext'" @click="PDCollection" :data-id="(ProductInfo.item_id)" v-if="false">
<view class="quicknav">
<view :class="['iconfont', isCollection?'icon-favoritesfilling':'icon-favorite', isCollection?' highlight ':'']"></view>
</view>
</view>
<view :class="'navtext'" @click="addToWestore" :data-id="(ProductInfo.item_id)" v-if="Config.PLANTFORM_FX_WESTORE_ENABLE">
<view class="quicknav">
<view :class="['iconfont zc zc-add']"></view>
</view>
</view>
</view>
</view>
</view>
<view :class="['product-info', ProductInfo.activity_base_row ? 'activity-fixtop' : '']">
<view class="seckill" v-if="(ProductInfo.isShowCountdown || ProductInfo.is_pa)">
<view class="seckill-left">
<view class="discountPrice">{{ __('¥') }}
<text>{{ number_format(ProductInfo.ShowPrice, 2) }}</text>
<label class="m-price-tip" v-if="(ProductInfo.activityType=='GROUPBOOKING')">
{{ sprintf(__('%s人团省¥%s'), ProductInfo.UserLimit, number_format(ProductInfo.SavePrice)) }}
</label>
<text v-else class="m-info-delprice">
{{ __('¥') }} {{ number_format(ProductInfo.product_unit_price, 2) }}
</text>
</view>
</view>
<view class="seckill-right">
<view style="display: flex;flex-direction: row-reverse;">
<image lazy-load src="/static/images/seckill.png" v-if="ProductInfo.activityType!=='GROUPBOOKING'"></image>
<image lazy-load src="/static/images/groupbook.png" v-if="ProductInfo.activityType=='GROUPBOOKING'"></image>
</view>
<view class="Time">
<text style="margin-right: 5px;">{{ __('还剩') }}</text>
<text class="time">{{ hours }}</text>
<text class="time-tip">:</text>
<text class="time">{{ minutes }}</text>
<text class="time-tip">:</text>
<text class="time">{{ seconds }}</text>
</view>
</view>
</view>
<view class="m-cells" style="margin-top:0rpx" v-if="true">
<view class="m-cell m-info-box">
<view class="m-cell-bd">
<view class="m-info-price" v-if="!ProductInfo.isShowCountdown">
<block v-if="ProductInfo.ShowPrice">
<text>{{ __('¥') }}</text>
{{ number_format(ProductInfo.ShowPrice, 2) }}
<text class="m-info-delprice" v-if="(ProductInfo.activityType=='GROUPBOOKING')">
{{ __('¥') }}{{ number_format(ProductInfo.ItemSalePrice, 2) }}
</text>
</block>
<text class="m-info-delprice" v-if="(ProductInfo.MarketPrice) && !(ProductInfo.activityType=='GROUPBOOKING')">
{{ __('¥') }}{{ number_format(ProductInfo.MarketPrice, 2) }}
</text>
<block v-if="ProductInfo.item_unit_points">
<text style="margin-left: 20rpx;">+
<text style="font-size:32rpx">{{ ProductInfo.item_unit_points }}</text>
{{ __('积分') }}
</text>
</block>
<block v-if="ProductInfo.item_unit_sp">
<text style="margin-left: 20rpx;">+
<text style="font-size:32rpx">{{ ProductInfo.item_unit_sp }}</text>
{{ __('众宝') }}
</text>
</block>
<view class="tag-view" v-if="ProductInfo.item_rebate > 0">
<uni-tag :text="sprintf(__('返利¥%.2f'), number_format(ProductInfo.item_rebate, 2))" type="lancerdt" size="small" inverted="1" circle="true" data-type="groupbuy" style="height: 40rpx;line-height: 40rpx;"></uni-tag>
</view>
<view class="tag-view" v-if="ProductInfo.item_fx_cps > 0">
<uni-tag :text="sprintf(__('佣金¥%.2f'), number_format(ProductInfo.item_fx_cps, 2))" type="lancerdt" size="small" inverted="1" circle="true" data-type="groupbuy" style="height: 40rpx;line-height: 40rpx;"></uni-tag>
</view>
<view style="display: flex;flex-flow: column;">
<label class="m-price-tip" v-if="(ProductInfo.activityType=='GROUPBOOKING')">
{{ sprintf(__('%s人团省¥%s'), ProductInfo.UserLimit, number_format(ProductInfo.SavePrice, 2)) }}
</label>
<!--拼团倒计时-->
<view class="progressBarBox" v-if="(ProductInfo.activityType=='GROUPBOOKING')">
{{ __('距离结束还剩:') }}
<block v-if="(days>1)">
<text class="m-FGB-time">{{ days }}</text>
<text class="m-FGB-time-tip">{{ __('天') }}</text>
</block>
<block v-else>
<text class="m-FGB-time-tip">:</text>
<text class="m-FGB-time">{{ hours }}</text>
<text class="m-FGB-time-tip">:</text>
<text class="m-FGB-time">{{ minutes }}</text>
<text class="m-FGB-time-tip">:</text>
<text class="m-FGB-time">{{ seconds }}</text>
</block>
</view>
</view>
<view class="progressBarBox" v-if="(ProductInfo.activityType=='GROUPBOOKING' && isJoin)">
<view class="progressBarBox-content">
<label :style="'width:' + ((ProductInfo.UserNum/ProductInfo.UserLimit)*100) + '%'"></label>
<view class="progressBarBox-text">
<text>
{{ sprintf(__('还差%s人成团'), ProductInfo.UserLimit - ProductInfo.UserNum) }}
</text>
</view>
</view>
</view>
<!--拼团倒计时-->
<block v-if="plantformInfo.config.product_salenum_flag">
<view class="selled" v-if="(ProductInfo.is_virtual && ProductInfo.analytics_row && ProductInfo.analytics_row.product_sale_num>0)">
<view class="num">{{ __('已服务') }}
<text style="color:red">{{ ProductInfo.analytics_row.product_sale_num || 0 }}</text>
{{ __('人次') }}
</view>
</view>
<view class="selled" v-if="(!ProductInfo.is_virtual && ProductInfo.analytics_row && ProductInfo.analytics_row.product_sale_num>0)">
<view class="num">{{ __('已售') }}
<text style="color:red;margin-left: 2px;">
{{ ProductInfo.analytics_row.product_sale_num || 0 }}
</text>
{{ __('') }}
</view>
</view>
</block>
<view class="favorite-share">
<label @click="PDCollection" :data-id="(ProductInfo.item_id)" :class="['iconfont', isCollection?'icon-favoritesfilling':'icon-favorite', isCollection?' highlight ':'']">
</label>
<label class="iconfont zc zc-share" @click='onShareBox(1)'></label>
</view>
</view>
<view class="name-box">
<view class="m-info-name" style="font-weight: bold;">{{ ProductInfo.product_name }}</view>
<view class="favorite-share" v-if="(ProductInfo.isShowCountdown)">
<label @click="PDCollection" :data-id="(ProductInfo.item_id)" :class="['iconfont', isCollection?'icon-favoritesfilling':'icon-favorite', isCollection?' highlight ':'']">
</label>
<label class="iconfont zc zc-share" @click='onShareBox(1)'></label>
</view>
</view>
<label class="name-subtitle" v-if="ProductInfo.ProductTips">{{ ProductInfo.product_tips || " " }}</label>
</view>
</view>
<view class="m-cell m-cell-access m-info-sp" v-if="(ProductInfo.activity_item_row.activity_type_id == StateCode.ACTIVITY_TYPE_ONE_PIECE_DISCOUNT)">
<view class="m-cell-bd">
<text class="m-info-tip" style="color:#0a0322;font-weight:800">{{ __('活动') }}</text>
<label class="m-imfo-sp-selext" style="color:#0a0322;font-weight:800;font-size:20rpx">
{{ __('单件折扣 ') }}{{ ProductInfo.one_piece_discount }}{{ __('折') }}
<block v-if="ProductInfo.activity_item_row.activity_use_level_name">
{{ __(',需会员等级 ') }}{{ ProductInfo.activity_item_row.activity_use_level_name }}
</block>
</label>
</view>
</view>
<view v-if="(ProductInfo.SpecLst.length>0)" class="m-cell m-cell-access m-info-sp" @click="ckselectsp">
<view class="m-cell-bd">
<text class="m-info-tip">{{ __('已选') }}</text>
<label class="m-imfo-sp-selext m-panel-sp-labellist">
<block v-for="(items, i) in ProductInfo.SpecLst" :key="i">
<!-- #ifdef H5 -->
<block v-for="(item, ii) in items.svLst" :key="i + '_' + ii">
<label v-if="(item.IsChecked)" class="m-panel-sp-sellabel" style="margin: 0;margin-left:10rpx;padding: 0 8rpx;">{{ item.Name }}</label>
</block>
<!-- #endif -->
<!-- #ifndef H5 -->
<block v-for="(item, ii) in items.svLst" :key="ii">
<label v-if="(item.IsChecked)" class="m-panel-sp-sellabel" style="margin: 0;margin-left:10rpx;padding: 0 8rpx;">{{ item.Name }}</label>
</block>
<!-- #endif -->
</block>
</label>
</view>
<view class="m-cell-ft"></view>
</view>
<view v-if="false" class="m-cell m-cell-access m-info-sp" @click="onSelectAddress">
<view class="m-cell-bd">
<text class="m-info-tip">{{ __('产地') }}</text>
<label class="m-imfo-sp-selext">
南京
</label>
<label class="m-imfo-sp-selext" style="float: right;">
溯源
</label>
</view>
<view class="m-cell-ft"></view>
</view>
<view v-if="ProductInfo.activity_item_row.activity_type_id == StateCode.ACTIVITY_TYPE_GIFTBAG" class="m-cell m-cell-access m-info-sp" @click="showActivityDetail(1132)">
<view class="m-cell-bd" style="color:red">
<text class="m-info-tip">{{ __('组合购') }}</text>
<label class="m-imfo-sp-selext">
{{ ProductInfo.activity_item_row.activity_name }}
</label>
</view>
<view class="m-cell-ft">{{ __('查看详情') }}</view>
</view>
<view v-if="ProductInfo.activity_item_row.activity_type_id == StateCode.ACTIVITY_TYPE_GIFT" class="m-cell m-cell-access m-info-sp" @click="showActivityDetail(1102)">
<view class="m-cell-bd" style="color:red">
<text class="m-info-tip">{{ __('满即送') }}</text>
<label class="m-imfo-sp-selext">
{{ ProductInfo.activity_item_row.activity_name }}
</label>
</view>
<view class="m-cell-ft">{{ __('查看详情') }}</view>
</view>
<view v-if="ProductInfo.activity_item_row.activity_type_id == StateCode.ACTIVITY_TYPE_BARGAIN" class="m-cell m-cell-access m-info-sp" @click="showActivityDetail(1101)">
<view class="m-cell-bd" style="color:red">
<text class="m-info-tip">{{ __('加价购') }}</text>
<label class="m-imfo-sp-selext">
{{ ProductInfo.activity_item_row.activity_name }}
</label>
</view>
<view class="m-cell-ft">{{ __('查看详情') }}</view>
</view>
<view v-if="ProductInfo.activity_item_row.activity_type_id == StateCode.ACTIVITY_TYPE_MANHUI" class="m-cell m-cell-access m-info-sp" @click="showActivityDetail(1108)">
<view class="m-cell-bd" style="color:red">
<text class="m-info-tip">{{ __('满返') }}</text>
<label class="m-imfo-sp-selext">
{{ ProductInfo.activity_item_row.activity_name }}
</label>
</view>
<view class="m-cell-ft">{{ __('查看详情') }}</view>
</view>
<view v-if="ProductInfo.activity_item_row.activity_type_id == StateCode.ACTIVITY_TYPE_MULTIPLE_FOLD" class="m-cell m-cell-access m-info-sp" @click="showActivityDetail(1133)">
<view class="m-cell-bd" style="color:red">
<text class="m-info-tip">{{ __('多件折') }}</text>
<label class="m-imfo-sp-selext">
{{ ProductInfo.activity_item_row.activity_name }}
</label>
</view>
<view class="m-cell-ft">{{ __('查看详情') }}</view>
</view>
<view v-if="ProductInfo.activity_item_row.activity_type_id == StateCode.ACTIVITY_TYPE_REDUCTION" class="m-cell m-cell-access m-info-sp" @click="showActivityDetail(1107)">
<view class="m-cell-bd" style="color:red">
<text class="m-info-tip">{{ __('满减') }}</text>
<label class="m-imfo-sp-selext">
{{ ProductInfo.activity_item_row.activity_name }}
</label>
</view>
<view class="m-cell-ft">{{ __('查看详情') }}</view>
</view>
<view v-if="ProductInfo.activity_item_row.activity_type_id == StateCode.ACTIVITY_TYPE_REDUCTION_AGAIN" class="m-cell m-cell-access m-info-sp" @click="showActivityDetail(1140)">
<view class="m-cell-bd" style="color:red">
<text class="m-info-tip">{{ __('折上折') }}</text>
<label class="m-imfo-sp-selext">
{{ ProductInfo.activity_item_row.activity_name }}
</label>
</view>
<view class="m-cell-ft">{{ __('查看详情') }}</view>
</view>
<view v-if="ProductInfo.activity_item_row.activity_type_id == StateCode.ACTIVITY_TYPE_DOUBLE_POINTS" class="m-cell m-cell-access m-info-sp" @click="showActivityDetail(1136)">
<view class="m-cell-bd" style="color:red">
<text class="m-info-tip">{{ __('多倍积分') }}</text>
<label class="m-imfo-sp-selext">
{{ ProductInfo.activity_item_row.activity_name }}
</label>
</view>
<view class="m-cell-ft">{{ __('查看详情') }}</view>
</view>
<view class="m-cell m-cell-access m-info-sp" @click="onSelectAddress" v-if="!(ProductInfo.is_virtual)">
<view class="m-cell-bd">
<text class="m-info-tip">{{ __('送至') }}</text>
<label class="m-imfo-sp-selext">
{{ product_freight_info.district_info }}
</label>
<label class="m-imfo-sp-selext">
{{ product_freight_info.if_store_cn }}
</label>
<label class="m-imfo-sp-selext">
{{ product_freight_info.if_freight_label || '' }}
</label>
</view>
<view class="m-cell-ft"></view>
</view>
<view class="m-policy" v-if="(wholesale_policy_rows.length > 0)">
<view class="m-cell-bd" style="padding:20rpx 30rpx;display:flex;flex-wrap: nowrap;">
<view class="m-imfo-sp-title" style="width:50%;">
{{ __('价格') }}
</view>
<view class="m-imfo-sp-title">
{{ __('起批量') }}
</view>
</view>
<view class="m-cell-bd" style="padding:20rpx 30rpx;display:flex;flex-wrap: nowrap;" v-for="(row,ii) in wholesale_policy_rows" :key="ii">
<label class="m-imfo-sp-money" style="width:50%;">
<span>{{ __('¥') }}</span>{{ row.policy_wholesale_price }}
</label>
<label class="m-imfo-sp-selext">
{{ row.item_quantity_str }}
</label>
</view>
</view>
<view v-if="true" class="m-cell m-cell-access m-info-sp">
<view class="m-cell-bd">
<text class="m-info-tip">{{ __('服务') }}</text>
<label class="m-imfo-sp-selext" style="">
{{ sprintf(__('由 %s 发货并提供售后服务'), store_info.store_name) }}
</label>
<view style="margin-left:56rpx;" v-if="ProductInfo.contractlist.length > 0">
<label style="margin-left: 12rpx;margin-right: 0rpx;font-size: 12px;" v-for="(ct, ci) in ProductInfo.contractlist" :key="ci">
<image lazy-load :src="(ct.contract_type_icon)" style="margin-top:-6rpx;margin-right: 6rpx;width: 30rpx;height: 30rpx;vertical-align: middle;" />
{{ ct.contract_type_name }}
</label>
</view>
</view>
</view>
</view>
<!-- 优惠券展示 -->
<view class="m-cells" style="margin-top:0;" v-if="(voucherList.length>0)">
<view class="m-cell m-cell-access m-info-sp">
<view class="m-cell-bd coupon">
<text class="m-info-tip">{{ __('优惠') }}</text>
<view style="position: relative;">
<view class="m-coupon-item1" v-for="(item, ii) in voucherList" :key="ii">
<view class="m-coupon-info">
<view class="m-coupon-text" style="display: flex;">
<label style="font-size: 12px;">{{ item.activity_name }}</label>
<text>
{{sprintf(__('满¥%s 减¥%s'), item.activity_rule.requirement.buy.subtotal, item.activity_rule.voucher_price)}}{{ item.activity_remark }}
</text>
<!-- <text>
{{sprintf(__('有效日期至:%s'), item.activity_endtime)}}
</text> -->
</view>
<!-- <view class="m-coupon-price">
<view class="price-content-box ">
<label>{{__('¥')}}</label>{{number_format(item.activity_rule.voucher_price,1)}}
</view>
</view> -->
</view>
<!-- <view v-if="(0)" @click="receivenowWeixin" :data-cardId="(item.CardId)" class="m-coupon-btn" :data-id="(item.Id)"
:data-isreceive="(item.IsCanReceive)">
<label :class="'btn-coupon ' + ( item.if_gain ? '' : 'btn-coupon-gray')">{{item.IsCanReceive == 0 ? __('立即领取'):__('已经领取') }}</label>
</view>
<view class="m-coupon-btn" @click="doReceive" :data-isreceive="(item.if_gain ? '1' : '-1')" :data-id="(item.activity_id)"
:data-point="(item.activity_rule.requirement.points.needed)">
<label :class="'btn-coupon ' + ( item.if_gain ? '' : 'btn-coupon-gray')">{{item.if_gain ? __('立即领取'):__('已经领取') }}</label>
</view> -->
</view>
<button @click="showCouponDetail()" type="warn" size="mini" style="position: absolute;top: 50%;right: 0rpx;transform: translateY(-50%);">{{ __('领取') }}
</button>
</view>
</view>
</view>
</view>
<uni-popup ref="popup2" type="bottom">
<view class="m-coupon-list" v-if="(voucherList.length>0)" style="box-shadow: 2px 9px 11px #001;background:#FFFFFF;border-radius: 7px;height:700rpx;display: flex;flex-direction: column;padding:30rpx">
<scroll-view scroll-y style="height: calc(100% - 60px)">
<view class="m-coupon-item" v-for="(item, ii) in voucherList" :key="ii">
<view class="m-coupon-info">
<view class="m-coupon-text">
<label>{{ item.activity_name }}</label>
<text>
{{sprintf(__('满¥%s 减¥%s'), item.activity_rule.requirement.buy.subtotal, item.activity_rule.voucher_price)}}{{ item.activity_remark }}
</text>
<text>
{{ sprintf(__('有效日期至:%s'), item.activity_endtime) }}
</text>
</view>
<view class="m-coupon-price">
<view class="price-content-box ">
<label>{{ __('¥') }}</label>{{ number_format(item.activity_rule.voucher_price, 1) }}
</view>
</view>
</view>
<view v-if="(0)" @click="receivenowWeixin" :data-cardId="(item.CardId)" class="m-coupon-btn" :data-id="(item.Id)" :data-isreceive="(item.IsCanReceive)">
<label :class="'btn-coupon ' + ( item.if_gain ? '' : 'btn-coupon-gray')">{{
item.IsCanReceive == 0 ? __('立即领取') : __('已经领取')
}}</label>
</view>
<view class="m-coupon-btn" @click="doReceive" :data-isreceive="(item.if_gain ? '1' : '-1')" :data-id="(item.activity_id)" :data-point="(item.activity_rule.requirement.points.needed)">
<label :class="'btn-coupon ' + ( item.if_gain ? '' : 'btn-coupon-gray')">{{
item.if_gain ? __('立即领取') : __('已经领取')
}}</label>
</view>
</view>
</scroll-view>
<button v-if="!voucherReceiveAllFlag" class="u-btn u-btn-default" style="margin-top:20rpx;margin:0;padding:0" @click="getCoupon">
{{ __('一键领取') }}
</button>
</view>
</uni-popup>
<view class="m-panel m-panel-access m-comment m-fg-comment" v-if="(ProductInfo.activityType=='GROUPBOOKING' && GB_rows.length>0)">
<view class="m-panel-hd">{{ __('进行中的拼团') }}</view>
<view class="m-panel-bd" :style="(!isAll?'max-height:382rpx;overflow:hidden;':'')">
<view @click="groupBuying" v-for="(item, ii) in GB_rows" :key="ii" :data-gb_id="(item.gb_id)" class="m-media-box m-media-box-appmsg">
<view class="m-media-box-hd">
<image lazy-load class="m-media-box-thumb" :src="(item.user_avatar)" />
</view>
<view class="m-media-box-bd">
<label class="m-media-box-title">{{ item.user_nickname }}</label>
<text class="m-media-box-desc">{{ __('正在开团中') }}</text>
</view>
<view class="m-media-box-bd m-media-box-bd-tip">
<label class="m-media-box-title m-media-box-title-tip">
{{ sprintf(__('还差%s人成团'), item.gb_quantity - item.gb_amount_quantity) }}
</label>
<text v-if="(item.Time.days>=1)" class="m-media-box-desc m-media-box-desc-tip">
{{ sprintf(__('剩余%s天 结束'), item.Time.days) }}
</text>
<text v-else class="m-media-box-desc m-media-box-desc-tip">
{{ sprintf(__('剩余%s:%s:%s结束'), item.Time.hour, item.Time.min, item.Time.sec) }}
</text>
</view>
<view class="m-media-box-bd">
<button class="u-btn u-btn-default" style="margin-top:20rpx">{{ __('立即参团') }}</button>
</view>
</view>
</view>
<view class="m-panel-ft" @click="lookall" v-if="(ProductInfo.activityType=='GROUPBOOKING' && GB_rows.length>2)">
<a href="javascript:void(0);" class="m-cell m-cell-access m-cell-link">
<view class="m-cell-bd" v-if="(!isAll)">{{ __('查看全部参团') }}</view>
<view class="m-cell-bd" v-else>{{ __('收起') }}</view>
<text class="m-cell-ft"></text>
</a>
</view>
</view>
<!--参团部分-->
<!--评论-->
<view class="evaluate" v-if="ProductInfo.last_comment_rows.length > 0 ">
<view class="evaluate-top">
<label class="left">{{ __('用户评价') }}({{ ProductInfo.analytics_row ? ProductInfo.analytics_row.product_evaluation_num : 0 }})</label>
<navigator :url="'/pages/product/commentlist?id=' + (proId)" class="evaluate-right">
<label class="right">{{ __('全部评价') }}</label>
</navigator>
</view>
<view class="evaluate-bottom">
<scroll-view scroll-x="true" class="scroll-view_H" style="background:rgba(255,255,255,1);">
<view class="scroll-view-item_H" v-for="(item, i) in ProductInfo.last_comment_rows" :key="i" style="width: auto;">
<view class="uesr-evaluate">
<view class="uesr-evaluate-center">
<view class="center-top">
<view class="user-image">
<image style="width:100%;height:100%;border-radius:50%;" :src="(item.user_avatar)" />
</view>
<label class="user-name">{{ item.user_name }}</label>
</view>
<view class="user-text"><label>{{ item.comment_content || __('无评论') }}</label></view>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
<!--店铺信息-->
<view class="m-store" v-if="(Config.MULTISHOP_ENABLE && !if_saas_status && !isStoreFlag)">
<view class="m-store-info">
<view class="m-store-radi">
<image :src="store_info.store_logo" style="width: 100%;height: 100%;">
</view>
<label style="height:29rpx;font-size:30rpx;font-family:Alibaba PuHuiTi;font-weight:500;color:rgba(51,51,51,1);position: absolute;margin-top:14rpx;margin-left:139rpx">{{ store_info.store_name }}</label>
<label style="width:200rpx;height:23rpx;font-size:24rpx;font-family:Alibaba PuHuiTi;font-weight:400;color:rgba(102,102,102,1);position: absolute;margin-top:60rpx;margin-left:139rpx">{{ sprintf(__('在售商品%s件'), store_info.store_product_num) }}</label>
<navigator :url="'/pagesub/index/store' + '?store_id=' + (ProductInfo.store_id)" hover-class="none" class="evaluate-right" style="margin-top:32rpx;">
<label class="right">{{ __('进店看看') }}</label>
</navigator>
</view>
<view v-if="store_info.store_o2o_flag==1 && store_info.store_latitude && store_info.store_longitude && store_info.store_address" style="height: 100rpx;">
<view style="padding: 0 30rpx;height: 44rpx;">
<view class="m-cell-bd" style="width: 100%;">
<text class="m-info-tip" style="margin-right: 10rpx;font-size: 12px;">{{ __('营业时间') }} :</text>
<text class="m-info-tip" style="font-size: 12px;">{{ store_info.store_opening_hours || '00:00' }} - {{ store_info.store_close_hours || '00:00' }}</text>
</view>
</view>
<view style="padding: 0 30rpx;">
<view class="m-cell-bd" style="display: flex;" @click.stop="gotomap" :data-address="(store_info.store_address)" :data-name="(store_info.store_name)" :data-lat="(store_info.store_latitude)" :data-lng="(store_info.store_longitude)">
<view class="m-info-tip location-addr" style="display: flex;flex:1;margin-right: 10rpx;width: 500rpx;float:left;font-size: 12px;">
{{ store_info.store_address }}
</view>
<label style="display: flex;float:right;">
<image style="width:20rpx;height:26rpx;margin-top:10rpx;" src='https://static.lancerdt.com/xcxfile/appicon/img/location.png'></image>
<label class="u-font" style="line-height: 1.8;font-size: 12px;">{{ __('距您') }}
{{ store_info.distance }}</label>
</label>
</view>
</view>
</view>
<scroll-view class="scroll-view_H" scroll-x="true" style="height:390rpx;margin-top: 0px">
<navigator :url="(store_info.store_type==3?'/pages/product/details':'/pages/product/detail') + '?pid=' + (item.item_id)" v-for="(item,i) in store_product_list" :key="i" hover-class="none" class="scroll-view-item_H" style="width:210rpx;height:340rpx;margin-left:30rpx;margin-top:20rpx;">
<view class="m-store-item-image">
<image :src="item.product_image" style="width: 100%;height: 100%;">
</view>
<view class="m-store-item-name"><label class="ellipsis">{{ item.product_name }}</label></view>
<view class="m-store-item-price">
<label>{{ __('¥') }}{{ sprintf(__('%.2f'), number_format(item.item_unit_price, 2)) }}</label>
</view>
</navigator>
</scroll-view>
</view>
<!--店铺信息-->
<view class="m-panel m-panel-access goods-detail-store" v-if="(chain_rows.length>0)">
<block v-if="(chain_rows.length>0)">
<view class="m-panel-hd store_name">
{{ __('门店信息') }}
</view>
<view class="m-panel-bd" style="height: 200rpx;">
<scroll-view class="m-nearbylist" scroll-y="true" @scrolltolower="scrollbottom">
<view class='list-box' @click="gopage" :data-chain_id="(item.chain_id)" v-for="(item, index) in chain_rows" :key="index">
<view class='item-box'>
<view class='flex-box'>
<image :src='item.chain_img' class='flex-shop'></image>
<label class='flex-title'>{{ item.chain_name }}</label>
<view class='flex-postion'>
<image src='https://static.lancerdt.com/xcxfile/appicon/img/location.png'></image>
<label>{{ item.distance }}</label>
</view>
</view>
<view class='flex-info'>
<view class='flex-info-box' @click.stop="call" :data-phone="item.chain_mobile"><label class='flex-info-title'>{{ __('商家电话:') }}</label><label style='color:#0095fd'>{{ item.chain_mobile }}</label></view>
<view class='flex-info-box' @click.stop="gotomap" :data-address="(item.chain_district_info)" :data-name="(item.chain_name)" :data-lat="(item.chain_lat)" :data-lng="(item.chain_lng)">
<label class='flex-info-title'>{{ __('商家地址:') }}</label><label>{{ item.chain_district_info }}</label>
</view>
<image src='https://static.lancerdt.com/xcxfile/appicon/img/right.png'></image>
</view>
</view>
</view>
</scroll-view>
</view>
</block>
</view>
<view v-if="(chain_rows.length>0)" class="m-panel-hd store_name" @click="gochainlist" :data-store_id="(ProductInfo.store_id)" :data-item_id="(ProductInfo.item_id)">
{{ sprintf(__('查看全部%s家门店地址'), chain_rows.length) }}
</view>
<!--店铺信息-->
<view class="m-panel m-panel-access goods-detail-store" v-if="(Config.MULTISHOP_ENABLE && !if_saas_status && !isStoreFlag) && false">
<navigator redirect="true" :url="'/pagesub/index/store?store_id=' + (ProductInfo.store_id)">
<view class="m-panel-hd store_name" style="height: 44rpx;">
<label class="iconfont icon-store"></label>
<label class="icon-mall" v-if="(store_info.store_is_selfsupport)">{{ __('自营') }}</label>
<label class="icon-mall" style="color:#333;">{{ store_info.store_name }}</label>
</view>
<view class="m-panel-bd" style="clear: both;"> <!-- v-if="(!store_info.store_is_selfsupport)" -->
<view class="store-rate">
<label class="equal" style="width: 33%;">{{ __('描述相符') }}
<view style="padding-left: 10rpx;">{{ store_info.store_credit.store_desccredit.credit }}</view>
<!--<i></i>-->
</label>
<label class="equal" style="width: 33%;text-align: center;">{{ __('服务态度') }}
<view style="padding-left: 10rpx;">
{{ store_info.store_credit.store_servicecredit.credit || '--' }}
</view>
<!--<i></i>-->
</label>
<label class="equal" style="width: 33%;text-align: right;">{{ __('发货速度') }}
<view style="padding-left: 10rpx;">
{{ store_info.store_credit.store_deliverycredit.credit || '--' }}
</view>
<!--<i></i>-->
</label>
</view>
<view class="item-more"></view>
</view>
</navigator>
</view>
<!--评论-->
<view :class="'m-panel m-panel-access m-comment ' + ((ProductInfo.analytics_row && ProductInfo.analytics_row.product_evaluation_num>0)?'':'hide')" v-if="false">
<view class="m-panel-hd">
{{ __('评价') }}{{ ProductInfo.analytics_row ? ProductInfo.analytics_row.product_evaluation_num : 0 }}
<label v-if="(ProductInfo.analytics_row && ProductInfo.analytics_row.evaluation_percent)">{{ __('好评度') }}
<text>{{ ProductInfo.analytics_row.evaluation_percent }}%</text>
</label>
</view>
<view class="m-panel-bd">
<view class="m-media-box m-media-box-appmsg" v-if="(ProductInfo.last_comment_row)">
<view class="m-media-box-hd">
<image lazy-load class="m-media-box-thumb" :src="(ProductInfo.last_comment_row.user_avatar)" />
</view>
<view class="m-media-box-bd">
<label class="m-media-box-title">{{ ProductInfo.last_comment_row.user_nickname }}</label>
<view class="m-media-box-desc">
<view style="margin-bottom:10rpx;">
<label style="margin-right:10rpx;font-size:20rpx;">
{{ ProductInfo.last_comment_row.item_name }}
</label>
</view>
<label v-if="(ProductInfo.last_comment_row.comment_content!=null)">
{{ ProductInfo.last_comment_row.comment_content }}
</label>
</view>
<view class="m-media-box-info">
<view class="m-media-box-info-meta m-start" v-for="(itemIndex, i) in [1, 2, 3, 4, 5]" :key="i">
<label :class="'iconfont icon-start ' + ((itemIndex<=ProductInfo.last_comment_row.comment_scores)?'sel':'')" :data-index="(itemIndex)" :data-type="1"></label>
</view>
<view class="m-media-box-info-meta m-tiem">{{ ProductInfo.last_comment_row.comment_time }}</view>
<view class="m-media-list">
<image lazy-load v-for="(item, ii) in ProductInfo.last_comment_row.comment_image" :key="ii" :src="(item)" @click="ImgTap"></image>
</view>
</view>
</view>
</view>
</view>
<view class="m-panel-ft" v-if="(ProductInfo.analytics_row && ProductInfo.analytics_row.product_evaluation_num>1)">
<navigator :url="'/pages/product/commentlist?id=' + (proId)" class="m-cell m-cell-access m-cell-link">
<view class="m-cell-bd">{{ __('查看全部评论') }}</view>
<text class="m-cell-ft"></text>
</navigator>
</view>
</view>
<block v-if="false">
<!--问答-->
<view :class="'m-panel m-panel-access m-comment'" v-if="(faq_rows.length>0)" :data-product_id="proId" @click="listFaq">
<view class="m-cell m-cell-access m-info-sp">
<view class="m-cell-bd">
<text class="m-info-tip">
{{ __('问大家') }}{{ ProductInfo.analytics_row ? ProductInfo.analytics_row.product_ask_num : 0 }}
</text>
</view>
<view class="m-cell-ft">{{ __('查看全部') }}</view>
</view>
<view class="m-panel-bd">
<view class="m-media-box m-media-box-appmsg" style="padding-top: 20rpx;padding-bottom: 20rpx;" v-for="(faq_row, idx) in faq_rows" :key="idx">
<view class="m-media-box-bd">
<view class="m-media-box-desc">
<label style="padding:6rpx;font-size:20rpx;background-color: #f30213;color: #fff;">
{{ __('问') }}
</label>
<label style="margin-left:10rpx;font-size:20rpx;">
{{ faq_row.story_title }}
</label>
<label style="float: right;">
{{ sprintf(__('%d 个回答'), faq_row.story_comment_count) }}
</label>
</view>
</view>
</view>
</view>
</view>
<view :class="'m-panel m-panel-access m-comment'" v-else>
<view class="m-panel-hd">{{ __('暂无问答') }}
</view>
</view>
<view :class="'m-panel m-panel-access m-comment'">
<view class="m-panel-bd">
<view class="m-media-box m-media-box-appmsg" style="padding-top: 16rpx;padding-bottom: 16rpx;">
<view class="m-media-box-bd">
<view class="m-media-box-desc">
<label style="padding:6rpx;font-size:20rpx;background-color: #f30213;color: #fff;">
{{ __('问大家') }}
</label>
<label style="margin-left:10rpx;font-size:20rpx;">
{{ __('宝贝好不好,问过已买过的人') }}
</label>
<navigator :url="'/community/community/post?pid=' + proId" class="u-link-btn" style="padding: 5px 10px;border: 1px solid #DB384C;font-size: 11px;color: #DB384C;border-radius: 25px;float: right;">
{{ __('去提问') }}
</navigator>
</view>
</view>
</view>
</view>
</view>
</block>
</view>
<view>
<view class="m-panel-access m-detail">
<view class="m-tab">
<view class="m-navbar">
<view :class="'m-navbar-item ' + (tapindex==1?'m-navbar-item-on':'')" v-if="(ProductInfo.product_detail)" @click="picDetail">
{{ __('商品详情') }}
</view>
<view :class="'m-navbar-item ' + (tapindex==2?'m-navbar-item-on':'')" v-if="(ProductInfo.product_extension)" @click="spcParam">
{{ __('规格参数') }}
</view>
<view :class="'m-navbar-item ' + (tapindex==3?'m-navbar-item-on':'')" v-if="(ProductInfo.product_param)" @click="packingList">
{{ __('包装清单') }}
</view>
<block v-if="(ProductInfo.activityType=='GROUPBOOKING')">
<view :class="'m-navbar-item ' + (tapindex==4?'m-navbar-item-on':'')" @click="showFightGroup">
{{ __('拼团玩法') }}
</view>
</block>
<block v-else>
</block>
<view :class="'m-navbar-item ' + (tapindex==5?'m-navbar-item-on':'')" v-if="(ProductInfo.product_service)" @click="showServiceTab">
{{ __('售后服务') }}
</view>
<view :class="'m-navbar-item ' + (tapindex==6?'m-navbar-item-on':'')" v-if="(isVoucher)" @click="showVoucherTab">
{{ __('优惠信息') }}
</view>
</view>
</view>
<view :class="'m-RichText ' + (tapindex==1?'':'hide')" v-if="ProductInfo.product_detail">
<wxParse :content="ProductInfo.product_detail" :imageProp="{lazyLoad:true, mode:'widthFix'}" />
</view>
<view :class="'m-RichText ' + (tapindex==2?'':'hide')" v-if="ProductInfo.product_extension">
<wxParse :content="ProductInfo.product_extension" :imageProp="{lazyLoad:true, mode:'widthFix'}" />
</view>
<view :class="'m-RichText ' + 'm-Packinglist ' + (tapindex==3?'':'hide')" v-if="ProductInfo.product_param">
<wxParse :content="ProductInfo.product_param" :imageProp="{lazyLoad:true, mode:'widthFix'}" />
</view>
<view v-if="(ProductInfo.activity_type_id == StateCode.ACTIVITY_TYPE_GROUPBOOKING)" :class="'m-Packinglist ' + (tapindex==4?'':'hide')" style="background-color:#fff;font-size:12px;">
<view class="groupbooking-rule">
<view class="groupbooking-rule-title">
<span class="red-dot"></span>{{ __('开团玩法') }}
</view>
<view class="groupbooking-rule-line"></view>
<view class="flex-container">
<view class="flex-item">
<image lazy-load class="flex-item-img" src="/static/images/groupbooking/ptg.png" />
<view>{{ __('开团/参团') }}</view>
</view>
<view class="arrow">
<image lazy-load class="right-arrow" src="/static/images/groupbooking/right_arrow.png" />
</view>
<view class="flex-item">
<image lazy-load class="flex-item-img" src="/static/images/groupbooking/yqhy.png" />
<view>{{ __('邀请好友') }}</view>
</view>
<view class="arrow">
<image lazy-load class="right-arrow" src="/static/images/groupbooking/right_arrow.png" />
</view>
<view class="flex-item">
<image lazy-load class="flex-item-img" src="/static/images/groupbooking/cg.png" />
<view>{{ __('拼团完成') }}</view>
</view>
</view>
<view style="font-size:12px;line-height:50rpx;">
<view style="text-align:left;">
{{ __('活动时间') }}{{ ProductInfo.activity_item_row.activity_starttime }} -
{{ ProductInfo.activity_item_row.activity_endtime }}
</view>
<view style="text-align:left;">
{{ sprintf(__('开团支付后,需在%s天内邀请%s人参团人数不足自动退款。'), ProductInfo.DayLimit, ProductInfo.UserLimit) }}
</view>
<view style="text-align:left;">{{ __('拼团商品会尽快发货。') }}</view>
<view style="text-align:left;line-height: 20px;" class="highlight">
<view>{{ __('① 选择商品') }}</view>
<view>{{ __('② 支付开团或参团') }}</view>
<view>{{ __('③ 等待好友参团支付') }}</view>
<view>{{ __('④ 达到人数拼团成功') }}</view>
</view>
<view style="text-align:left;">{{ __('如在限定时间内参团人数没达成,系统自动退款。') }}</view>
</view>
</view>
</view>
<view :class="' m-Packinglist ' + (tapindex==5?'':'hide')" v-if="ProductInfo.product_service">
<rich-text type="text" :nodes="(ProductInfo.product_service)" />
</view>
<view :class="(tapindex==6?'':'hide')">
<view class="m-coupon-list">
<block v-if="(voucherList.length>0)">
<view class="m-coupon-item" v-for="(item, ii) in voucherList" :key="ii">
<view class="m-coupon-info">
<view class="m-coupon-text">
<label>{{ item.activity_name }}</label>
<text>
{{sprintf(__('满¥%s 减¥%s'), item.activity_rule.requirement.buy.subtotal, item.activity_rule.voucher_price)}}{{ item.activity_remark }}
</text>
<text>
{{ sprintf(__('有效日期至:%s'), item.activity_endtime) }}
</text>
</view>
<view class="m-coupon-price">
<view class="price-content-box ">
<label>{{ __('¥') }}</label>{{ item.activity_rule.voucher_price }}
</view>
</view>
</view>
<view v-if="(0)" @click="receivenowWeixin" :data-cardId="(item.CardId)" class="m-coupon-btn" :data-id="(item.Id)" :data-isreceive="(item.IsCanReceive)">
<label :class="'btn-coupon ' + ( item.if_gain ? '' : 'btn-coupon-gray')">{{
item.IsCanReceive == 0 ? __('立即领取') : __('已经领取')
}}</label>
</view>
<view class="m-coupon-btn" @click="doReceive" :data-isreceive="(item.if_gain ? '1' : '-1')" :data-id="(item.activity_id)" :data-point="(item.activity_rule.requirement.points.needed)">
<label :class="'btn-coupon ' + ( item.if_gain ? '' : 'btn-coupon-gray')">{{
item.if_gain ? __('立即领取') : __('已经领取')
}}</label>
</view>
</view>
</block>
<view class="m-nullcontent" v-else>
<view class="m-nullpage-middle">
<label class="iconfont icon-meiyougengduo"></label>
<view class="m-null-tip">
<text>{{ __('亲~什么都没有') }}</text>
<text>{{ __('没有可领的优惠券~') }}</text>
</view>
</view>
</view>
</view>
<!--<view class="msk1" v-if="(0)" @click.stop="outertouch">
<view class="m-coupon-box" @click.stop="innertouch">
<view class="m-coupon-box-top">
</view>
<view class="m-coupon-box-content">
<view class="m-coupon-box-title">
优惠券领取成功
<view class="m-coupon-box-tip">点击右上角分享给好友</view>
</view>
<scroll-view scroll-y="true" class="m-coupon-box-list">
<view class="m-coupon-box-item" v-for="(Coupons)">
<label>{{item.activity_rule.voucher_price}}</label>
<text>{{item.activity_name}}</text>
</view>
</scroll-view>
</view>
<view class="m-coupon-box-bottom">
</view>
<view class="u-close-btn" @click.stop="outertouch">✕</view>
</view>
</view>-->
</view>
</view>
<view class="m-tips" v-if="(!IsChannel)">
<view class="m-tips-logo">
<image lazy-load mode="aspectFit" src="/static/images/logo_tech.png"></image>
</view>
<view class="m-tips-str">{{ __('商城套件系统提供技术支持') }} {{ versionNumber }}</view>
</view>
</view>
<view class="u-cleanbox"></view>
</scroll-view>
<view class="is-rest" v-if="store_info.store_biz_state == 2"></view>
<view class="m-footer-btn bottom-safearea" :class="ProductInfo.is_virtual ? 'm-fg-btn' : ''" v-if="(ProductInfo.activityType!='GROUPBOOKING') && store_info.store_biz_state == 1">
<block v-if="(ProductInfo.is_virtual)">
<view class="m-footer-btn-list">
<view class="m-footer-btn-item" style="width: 50%;" :data-id="(proId)" :data-name="(store_info.store_name)" :data-keyword="(ProductInfo.keyWord)" :data-appid="(AppId)" :data-appurl="(chatUrl)" v-if="(Config.MULTISHOP_ENABLE && !if_saas_status && !isStoreFlag)">
<navigator redirect="true" :url="'/pagesub/index/store?store_id=' + (ProductInfo.store_id)" class="u-go-home1">
<view class="m-footer-btn-icon">
<!--<contact-button size="27" type="default-dark" session-from="weapp">
</contact-button>-->
<label class="iconfont icon-store "></label>
</view>
<text>{{ __('店铺') }}</text>
</navigator>
</view>
<view class="m-footer-btn-item" style="width: 50%;" @click="PDCollection" :data-id="(ProductInfo.item_id)">
<view class="m-footer-btn-icon">
<label :class="['iconfont', isCollection?'icon-favoritesfilling':'icon-favorite', isCollection?' highlight ':'']"></label>
</view>
<text>{{ isCollection ? __('已收藏') : __('收藏') }}</text>
</view>
<view class="m-footer-btn-item" :data-id="(ProductInfo.item_id)" :data-name="(store_info.store_name)" :data-keyword="(ProductInfo.keyWord)" :data-appid="(AppId)" :data-appurl="(chatUrl)" :data-type="10" @click="tplGoToPage" v-if="(chatUrl)" style="width: 50%;">
<view class="m-footer-btn-icon">
<!--<contact-button size="27" type="default-dark" session-from="weapp">
</contact-button>-->
<label class="iconfont icon-more "></label>
</view>
<text>{{ __('客服') }}</text>
</view>
</view>
<block v-if="(!ProductInfo.normalStatus)">
<view class="m-footer-btn-main m-footer-desable" style="width: 70%;">
{{ __('立即预约') }}
</view>
<view class="m-footer-btn-main m-footer-desable" style="width: 70%;">
{{ __('商品已下架') }}
</view>
</block>
<block v-else-if="(!ProductInfo.ifStore)">
<view class="m-footer-btn-main m-footer-desable" style="width: 70%;">
{{ __('立即预约') }}
</view>
<view class="m-footer-btn-main m-footer-desable" style="width: 70%;">
{{ __('库存不足') }}
</view>
</block>
<block v-else-if="(ProductInfo.Status=='offline'||ProductInfo.Pstatus=='offline'||ProductInfo.IsDelete)">
<view class="m-footer-btn-main m-footer-desable" style="width: 70%;">
{{ __('立即预约') }}
</view>
<view class="m-footer-btn-main m-footer-desable" style="width: 70%;">
{{ __('商品已下架') }}
</view>
</block>
<block v-else>
<view v-if="(ProductInfo.SpecLst.length>0)" class="m-footer-btn-main m-now" style="width: 70%;" @click="ckselectsp1">
{{ __('立即预约') }}
</view>
<view v-else class="m-footer-btn-main m-now" style="width: 70%;" @click.stop="buynow">
{{ __('立即预约') }}
</view>
<!--<view v-if="(ProductInfo.SpecLst.length>0)" class="m-footer-btn-main" @click="ckselectsp">
{{__('加入购物车')}}
</view>
<view v-else class="m-footer-btn-main" @click.stop="addCart">
{{__('加入购物车')}}
</view>-->
</block>
</block>
<block v-else>
<view class="m-footer-btn-list">
<view class="m-footer-btn-item" :data-id="(proId)" :data-name="(store_info.store_name)" :data-keyword="(ProductInfo.keyWord)" :data-appid="(AppId)" :data-appurl="(chatUrl)" v-if="(Config.MULTISHOP_ENABLE && !if_saas_status && !isStoreFlag)">
<navigator redirect="true" :url="'/pagesub/index/store?store_id=' + (ProductInfo.store_id)" class="u-go-home1">
<view class="m-footer-btn-icon">
<!--<contact-button size="27" type="default-dark" session-from="weapp">
</contact-button>-->
<label class="iconfont icon-store "></label>
</view>
<text>{{ __('店铺') }}</text>
</navigator>
</view>
<view class="m-footer-btn-item" @click="PDCollection" :data-id="(ProductInfo.item_id)" v-if="(!chatUrl)">
<view class="m-footer-btn-icon">
<label :class="['iconfont', isCollection?'icon-favoritesfilling':'icon-favorite', isCollection?'highlight ':'']"></label>
</view>
<text>{{ isCollection ? __('已收藏') : __('收藏') }}</text>
</view>
<view class="m-footer-btn-item" :data-id="(proId)" :data-name="(store_info.store_name)" :data-keyword="(ProductInfo.keyWord)" :data-appid="(AppId)" :data-appurl="(chatUrl)" :data-type="10" @click="tplGoToPage" v-if="(chatUrl)">
<view class="m-footer-btn-icon">
<!--<contact-button size="27" type="default-dark" session-from="weapp">
</contact-button>-->
<label class="iconfont icon-more "></label>
</view>
<text>{{ __('客服') }}</text>
</view>
<view data-url="/pages/index/cart" class="m-footer-btn-item" @click="goTabBar">
<view class="m-footer-btn-icon">
<label class="iconfont icon-cart "></label>
<uni-badge v-if="cartNum>0" :text="cartNum" type="danger" style="margin-top: -12rpx;margin-left: -12rpx;"></uni-badge>
</view>
<text>{{ __('购物车') }}</text>
</view>
</view>
<block v-if="(!ProductInfo.normalStatus)">
<view class="m-footer-btn-main m-footer-desable m-footer-btn-main-left">
{{ __('立即购买') }}
</view>
<view class="m-footer-btn-main m-footer-desable m-footer-btn-main-right">
{{ __('商品已下架') }}
</view>
</block>
<block v-else-if="(!ProductInfo.ifStore)">
<view class="m-footer-btn-main m-footer-desable m-footer-btn-main-left">
{{ __('立即购买') }}
</view>
<view class="m-footer-btn-main m-footer-desable m-footer-btn-main-right">
{{ __('库存不足') }}
</view>
</block>
<block v-else>
<block v-if="ProductInfo.activity_type_id == StateCode.ACTIVITY_TYPE_GROUPBOOKING">
<view v-if="true" class="m-footer-btn-main m-footer-btn-main-left" :data-type="1" @click="ckselectsp">
{{ __('加入购物车') }}
</view>
<view v-if="(ProductInfo.SpecLst.length>0)" class="m-footer-btn-main m-footer-btn-main-right m-now" @click="ckselectsp1">
{{ isJoin ? __('立即参团') : __('发起拼团') }}
</view>
<view v-else class="m-footer-btn-main m-footer-btn-main-right m-now" @click.stop="immediatelyGroupbooking">
<!-- 不需要选择数量使用: buynow -->
{{ isJoin ? __('立即参团') : __('发起拼团') }}
</view>
</block>
<block v-else>
<view class="m-footer-btn-main m-footer-btn-main-left" @click="ckselectsp">
{{ __('加入购物车') }}
</view>
<view v-if="(ProductInfo.SpecLst.length>0)" class="m-footer-btn-main m-footer-btn-main-right m-now" @click="ckselectsp1">
{{ __('立即购买') }}
</view>
<view v-else class="m-footer-btn-main m-footer-btn-main-right m-now" @click.stop="ckselectsp1">
<!-- 不需要选择数量使用: buynow -->
{{ __('立即购买') }}
</view>
</block>
</block>
</block>
</view>
<view class="m-footer-btn m-fg-btn bottom-safearea" v-if="(ProductInfo.activityType=='GROUPBOOKING') && store_info.store_biz_state == 1">
<view class="m-footer-btn-list">
<view class="m-footer-btn-item" style="width: 50%;" :data-id="(proId)" :data-name="(store_info.store_name)" :data-keyword="(ProductInfo.keyWord)" :data-appid="(AppId)" :data-appurl="(chatUrl)" v-if="(Config.MULTISHOP_ENABLE && !if_saas_status && !isStoreFlag)">
<navigator redirect="true" :url="'/pagesub/index/store?store_id=' + (ProductInfo.store_id)" class="u-go-home1">
<view class="m-footer-btn-icon">
<!--<contact-button size="27" type="default-dark" session-from="weapp">
</contact-button>-->
<label class="iconfont icon-store "></label>
</view>
<text>{{ __('店铺') }}</text>
</navigator>
</view>
<view class="m-footer-btn-item" style="width: 50%;" @click="PDCollection" :data-id="(proId)" v-if="(!chatUrl)">
<view class="m-footer-btn-icon">
<label :class="'iconfont ' + (isCollection?'icon-favoritesfilling':'icon-favorite') + (isCollection?' highlight ':'')"></label>
</view>
<text>{{ isCollection ? __('已收藏') : __('收藏') }}</text>
</view>
<view class="m-footer-btn-item" style="width: 50%;" :data-id="(proId)" :data-name="(store_info.store_name)" :data-keyword="(ProductInfo.keyWord)" :data-appid="(AppId)" :data-appurl="(chatUrl)" :data-type="10" @click="tplGoToPage" v-if="(chatUrl)">
<view class="m-footer-btn-icon">
<!--<contact-button size="27" type="default-dark" session-from="weapp">
</contact-button>-->
<label class="iconfont icon-more "></label>
</view>
<text>{{ __('客服') }}</text>
</view>
</view>
<block v-if="ProductInfo.activity_type_id == StateCode.ACTIVITY_TYPE_GROUPBOOKING">
<view v-if="true" class="m-footer-btn-main m-footer-btn-main-left" :data-type="1" @click="ckselectsp">
<view style="height: 16px;line-height: 26px;font-size: 12px;">{{ __('¥') }}{{ number_format(ProductInfo.ItemSalePrice, 2) }}</view>
<view style="height: 30px;line-height: 30px;">{{ __('加入购物车') }}</view>
</view>
<view v-if="(ProductInfo.SpecLst.length>0)" class="m-footer-btn-main m-footer-btn-main-right m-now" @click="ckselectsp1">
<view style="height: 16px;line-height: 26px;font-size: 12px;">{{ __('¥') }}{{ number_format(ProductInfo.ShowPrice, 2) }}</view>
<view style="height: 30px;line-height: 30px;">{{ isJoin ? __('立即参团') : __('发起拼团') }}</view>
</view>
<view v-else class="m-footer-btn-main m-footer-btn-main-right m-now" @click.stop="immediatelyGroupbooking">
<view style="height: 16px;line-height: 26px;font-size: 12px;">{{ __('¥') }}{{ number_format(ProductInfo.ShowPrice, 2) }}</view>
<!-- 不需要选择数量使用: buynow -->
<view style="height: 30px;line-height: 30px;">{{ isJoin ? __('立即参团') : __('发起拼团') }}</view>
</view>
</block>
<block v-else>
<view class="m-footer-btn-main m-footer-btn-main-left" @click="ckselectsp">
{{ __('加入购物车') }}
</view>
<view v-if="(ProductInfo.SpecLst.length>0)" class="m-footer-btn-main m-footer-btn-main-right m-now" @click="ckselectsp1">
{{ __('立即购买') }}
</view>
<view v-else class="m-footer-btn-main m-footer-btn-main-right m-now" @click.stop="ckselectsp1">
<!-- 不需要选择数量使用: buynow -->
{{ __('立即购买') }}
</view>
</block>
</view>
<view :class="'m-panel-sp ' + (selectsp==0?'hide':'') " @click.stop="closesp">
<view :class="'m-panel-sp-content ' + (selectct==0?'bounceOutDown animated':'bounceInUp animated')" @click.stop>
<view class="m-panel-sp-pinfo">
<view class="m-panel-sp-pimg">
<image lazy-load :src="(selectimg||ProductInfo.productPicList[0].Path)" />
</view>
<view class="m-panel-sp-pname">
<view class="m-pprice" v-if="(ProductInfo.activityType=='GROUPBOOKING'&&isModified)">
{{ __('¥') }}{{ number_format(ProductInfo.ItemSalePrice, 2) }}
</view>
<view class="m-pprice" v-if="(ProductInfo.activityType!='GROUPBOOKING')">
<block v-if="ProductInfo.ShowPrice">
{{ __('¥') }}{{ number_format(ProductInfo.ShowPrice, 2) }}
</block>
<block v-if="ProductInfo.item_unit_points">
<text style="margin-left: 20rpx;font-size: 22rpx;">+
<text style="font-size:26rpx">{{ ProductInfo.item_unit_points }}</text>
{{ __('积分') }}
</text>
</block>
<block v-if="ProductInfo.item_unit_sp">
<text style="margin-left: 20rpx;font-size: 22rpx;">+
<text style="font-size:26rpx">{{ ProductInfo.item_unit_sp }}</text>
{{ __('众宝') }}
</text>
</block>
</view>
<view class="m-pprice" v-if="(ProductInfo.activityType=='GROUPBOOKING'&&!isModified)">
{{ __('¥') }}{{ number_format(ProductInfo.ShowPrice, 2) }}
</view>
<view class="m-pstock">{{ sprintf(__('库存%s件'), ProductInfo.ifStore ? ProductInfo.item_quantity : 0) }}
</view>
<view v-if="(ProductInfo.SpecLst.length)" class="m-pspec">{{ __('已选择:') }}
<block v-for="(items, i) in ProductInfo.SpecLst" :key="i">
<!-- #ifdef H5 -->
<block v-for="(item, ii) in items.svLst" :key="i + '_' + ii">
<span v-if="(item.IsChecked)" style="margin-left: 4rpx;">{{ item.Name }}</span>
</block>
<!-- #endif -->
<!-- #ifndef H5 -->
<block v-for="(item, ii) in items.svLst" :key="ii">
<span v-if="(item.IsChecked)" style="margin-left: 4rpx;">{{ item.Name }}</span>
</block>
<!-- #endif -->
</block>
</view>
</view>
<view class="uni-icon uni-icon-closeempty m-panel-sp-icon" color="#888" @click="closesp"></view>
</view>
<scroll-view class="m-panel-sp-listbox" scroll-y="true">
<block v-if="b2bFlag && ProductInfo.product_spec.length>0">
<view class="m-panel-sp-listbox-item">
<block v-if="(ProductInfo.product_spec[0])">
<text>{{ ProductInfo.product_spec[0].name }}</text>
<block v-for="(items, key1) in ProductInfo.product_spec[0].item" :key="key1">
<view class="m-panel-sp-labellist1">
<!-- {{key1}}
{{ProductInfo.product_spec[0].item}}
{{typeof(ProductInfo.item_spec[key1])}} :data-unit_id="ProductInfo.item_spec[key1].id"-->
<label :class="items.select ? 'm-panel-sp-sellabel' : 'm-panel-sp-sellabel-no'" @click="selectS(items, key1, items.name, $event)" :data-ckid="items.select ? ProductInfo.SpecLst[0].svLst[key1].Id : items.id" :data-unit_id="1" :data-spid="items.id" :data-enable="(ProductInfo.spec_item_map[items.id])">{{ items.name }}</label>
<!-- ckid-颜色id unitid-规格id spid 规格商品id-->
</view>
<view class="m-panel-sp-labellist" :class="items.select ? 'm-panel-sp-labellist' : 'm-panel-sp-labellist2'">
</view>
</block>
</block>
<block v-for="(item, ii) in product_uniqid" :key="ii">
<label :class="item[6] == color ? 'm-panel-sp-sellabel m-ys' : 'm-panel-sp-sellabel1 m-ys'" style="width:94%;float:left;height:50rpx;line-height:50rpx;overflow:hidden;padding-left:10rpx;">
{{ item[4] }}
<view class="u-cart-num" style="margin-top:-6rpx;float:right">
<view class="example-body" style="height:100%">
<uni-number-box :min="0" :max="item[5]" :value="numberValue" :id="ii" @change="changes($event, ii)" />
</view>
</view>
<text style="float:right">{{ sprintf(__('库存%s件'), item[5] ? item[5] : 0) }}</text>
</label>
</block>
</view>
</block>
<block v-for="(items, key1) in ProductInfo.SpecLst" :key="key1" v-else>
<view class="m-panel-sp-listbox-item">
<view class="m-cells-title">{{ items.Name }}</view>
<view class="m-panel-sp-labellist">
<text>{{ ProductInfo.product_spec[key1].name }}</text>
<!-- #ifdef H5 -->
<block v-for="(item, ii) in items.svLst" :key="key1 + '_' + ii">
<label v-if="(item.IsChecked)" class="m-panel-sp-sellabel">{{ item.Name }}</label>
<label v-else :data-ckid="(items.ckid)" :data-unit_id="(items.unit_id)" :data-spid="(item.Id)" :data-enable="(ProductInfo.spec_item_map[item.Id])" :class="(ProductInfo.spec_item_map[item.Id] ? ' ' : 'item_disabled')" @click.stop="selectSpec">{{ item.Name }}
</label>
</block>
<!-- #endif -->
<!-- #ifndef H5 -->
<block v-for="(item, ii) in items.svLst" :key="ii">
<label v-if="(item.IsChecked)" class="m-panel-sp-sellabel">{{ item.Name }}</label>
<label v-else :data-ckid="(items.ckid)" :data-unit_id="(items.unit_id)" :data-spid="(item.Id)" :data-enable="(ProductInfo.spec_item_map[item.Id])" :class="(ProductInfo.spec_item_map[item.Id] ? ' ' : 'item_disabled')" @click.stop="selectSpec">{{ item.Name }}
</label>
</block>
<!-- #endif -->
</view>
</view>
</block>
<!-- <view style="height:96rpx;width:100%;"></view> -->
</scroll-view>
<view style="height:calc(140rpx + env(safe-area-inset-bottom))"></view>
<view :class="['m-m-panel-sp-btn', (ProductInfo.ifStore && ProductInfo.normalStatus) ? '' : 'm-footer-desable']">
<view class="m-pprice" style="width:50%;float:left;height:100rpx;line-height:100rpx;text-align:center" v-if="b2bFlag && ProductInfo.product_spec.length>0">
{{ __('¥') }}{{ number_format(price, 2) }}&nbsp;&nbsp;&nbsp;&nbsp;{{ __('数量:') }} {{ quantity }}
</view>
<view class="m-m-panel-sp-lbtn" :style="(ProductInfo.activity_type_id == StateCode.ACTIVITY_TYPE_GROUPBOOKING&&isModified==false?'display:none':'')" v-else>
<view style="width: 100rpx">{{ __('数量') }}</view>
<view class="u-cart-num" style="margin-top:10rpx">
<view class="u-num-btn" @click.stop="sub">-</view>
<input type="number" v-model="numval" @blur="writenum" />
<view class="u-num-btn" @click.stop="add">+</view>
</view>
</view>
<block v-if="(ProductInfo.activity_type_id == StateCode.ACTIVITY_TYPE_GROUPBOOKING)">
<view v-if="(!ProductInfo.normalStatus)" class="m-m-panel-sp-rbtn m-footer-btn-main-right m-footer-desable" style="width:100%">
{{ __('商品已下架') }}
</view>
<view v-else-if="(!ProductInfo.ifStore)" class="m-m-panel-sp-rbtn m-footer-btn-main-right m-footer-desable" style="width:100%">
{{ __('库存不足') }}
</view>
<block v-else>
<block v-if="(addCartFlag)">
<view v-if="(b2bFlag && ProductInfo.product_spec.length>0)" class="m-m-panel-sp-rbtn m-footer-btn-main" style="width:100%" @click.stop="addCart">
{{ __('加入购物车') }}
</view>
<view v-else class="m-m-panel-sp-rbtn m-footer-btn-main-right" style="width:100%" @click.stop="addCart">
{{ __('加入购物车') }}
</view>
</block>
<view class="m-m-panel-sp-rbtn m-footer-btn-main-right" style="width:100%" @click.stop="immediatelyGroupbooking" v-else-if="(!isJoin)">
{{ __('立即开团') }}
</view>
<view class="m-m-panel-sp-rbtn m-footer-btn-main-right" style="width:100%" @click.stop="immediatelyGroupbooking" v-else-if="(isJoin)">
{{ __('立即参团') }}
</view>
</block>
</block>
<block v-else>
<view v-if="(!ProductInfo.normalStatus)" class="m-m-panel-sp-rbtn m-footer-btn-main-right m-footer-desable" style="width:100%">
{{ __('商品已下架') }}
</view>
<view v-else-if="(!ProductInfo.ifStore)" class="m-m-panel-sp-rbtn m-footer-btn-main-right m-footer-desable" style="width:100%">
{{ __('库存不足') }}
</view>
<block v-else-if="ProductInfo.kind_id != 1201">
<view class="m-m-panel-sp-rbtn m-footer-btn-main-right" @click.stop="buynow">
{{ __('立即预约') }}
</view>
</block>
<block v-else>
<block v-if="(addCartFlag)">
<view v-if="(b2bFlag && ProductInfo.product_spec.length>0)" class="m-m-panel-sp-rbtn m-footer-btn-main" @click.stop="addCart">
{{ __('加入购物车') }}
</view>
<view v-else class="m-m-panel-sp-rbtn m-footer-btn-main-right" @click.stop="addCart">
{{ __('加入购物车') }}
</view>
</block>
<block v-else-if="(buyFlag)">
<view v-if="(b2bFlag && ProductInfo.product_spec.length>0)" class="m-m-panel-sp-rbtn m-footer-btn-main" @click.stop="buynow">
{{ __('立即购买') }}
</view>
<view v-else class="m-m-panel-sp-rbtn m-footer-btn-main-right" @click.stop="buynow">
<label v-if="ProductInfo.kind_id != 1201">{{ __('立即预约') }}</label>
<label v-else>{{ __('立即购买') }}</label>
</view>
</block>
</block>
</block>
</view>
</view>
</view>
</block>
<view class="m-nullpage" v-else>
<view class="m-nullpage-middle" v-if="loaded">
<label class="iconfont icon-meiyougengduo"></label>
<view class="m-null-tip">
<text>{{ __('什么都没有!') }}</text>
</view>
</view>
<view class="m-nullpage-middle" v-else>
<loading></loading>
</view>
</view>
<!-- 弹出层 -->
<uni-popup ref="popup" type="center">
<block v-if="activity_type_id == StateCode.ACTIVITY_TYPE_GIFTBAG">
<view class="uni-banner giftbag" v-if="ProductInfo.giftbag_item_data" style="box-shadow: 2px 9px 11px #001;background:#FFFFFF;border-radius: 7px;width: 680rpx;height:700rpx;padding:26rpx;">
<label class="activity-title">{{ ProductInfo.activity_item_row.activity_name }}</label>
<scroll-view class="scroll-view_H" scroll-x="true">
<view class="scroll-view-item_H" v-for="(g_b_item,i) in ProductInfo.giftbag_item_data" :key="i">
<view>
<view hover-class="none" :data-pid="(g_b_item.item_id)" :data-state="(g_b_item.product_state_id)" @click="gotoDetail">
<view class="product-l-img">
<image style="width:100%;height:100%" :src="g_b_item.product_image" />
</view>
<view class="product-l-price">
<view class="product_name">
<label>{{ g_b_item.product_name }}</label>
</view>
<view class="m-project-tips" v-if="false">
<label>X{{ (g_b_item.activity_quantity) }}</label>
</view>
<view class="price-new" style="color:#c0a080;">
<label>{{ __('¥') }}{{ number_format(g_b_item.item_unit_price, 2) }}</label>
<label style="margin-left: 10rpx">x {{ (g_b_item.activity_quantity) }}</label>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="gift-rule">
{{ __('套餐内包含以上商品,原价共') }}
<span style="color: red;font-size: 16px;font-weight: bold;">{{ ProductInfo.activity_old_price }}</span>
{{ __('元,组合购买价') }}
<span style="color: red;font-size: 16px;font-weight: bold;">{{ ProductInfo.activity_item_row.activity_rule.giftbag_amount }}</span>
{{ __('元,可省去') }}<span style="color: red;font-size: 16px;font-weight: bold;">{{ ProductInfo.activity_diff_price }}</span>{{ __('元') }}
</view>
<view class="go_buy">
<button type="warn" class="mini-btn" @click="goGiftBag" style="border-radius:7px!important;line-height:96rpx;height: 48px;background:#2c394d;font-size:18px;width: 100%;">
{{ __('立即购买') }}
</button>
</view>
</view>
</block>
<block v-if="activity_type_id == StateCode.ACTIVITY_TYPE_GIFT">
<view class="uni-banner giftbag" v-if="ProductInfo.gift_rows" style="box-shadow: 2px 9px 11px #001;background:#FFFFFF;border-radius: 7px;width: 680rpx;height:700rpx;padding:26rpx;">
<label class="activity-title">{{ ProductInfo.activity_item_row.activity_name }}</label>
<scroll-view class="scroll-view_H" scroll-x="true">
<view class="scroll-view-item_H" v-for="(g_item,i) in ProductInfo.activity_item_row.activity_rule.item_rows" :key="i">
<view>
<view hover-class="none" :data-pid="(g_item.item_id)" :data-state="(g_item.product_state_id)" @click="gotoDetail">
<view class="product-l-img">
<image style="width:100%;height:100%" :src="g_item.product_image" />
</view>
<view class="product-l-price">
<view class="product_name">
<label>{{ g_item.product_name }}</label>
</view>
<view class="m-project-tips">
<label></label>
</view>
<view class="price-new" style="color:#c0a080;">
<label>{{ __('¥') }}{{ number_format(g_item.item_unit_price, 2) }}</label>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<block v-if="ProductInfo.activity_item_row.activity_rule.activity_join_mode == 1">
<view class="gift-rule" v-for="(rule,r) in ProductInfo.activity_item_row.activity_rule.rule" :key="r">
<!--按数量-->
{{ sprintf(__('当前商品购买%s件赠送以上商品自选最多%s件'), rule.total, rule.max_num) }}
</view>
</block>
<block v-else>
<view class="gift-rule" v-for="(rule,r) in ProductInfo.activity_item_row.activity_rule.rule" :key="r">
<!--按数量-->
{{ sprintf(__('当前商品购买满%s元赠送以上商品自选最多%s件'), rule.total, rule.max_num) }}
</view>
</block>
</view>
</block>
<block v-if="activity_type_id == StateCode.ACTIVITY_TYPE_BARGAIN">
<view class="uni-banner giftbag" v-if="ProductInfo.activity_item_row" style="box-shadow: 2px 9px 11px #001;background:#FFFFFF;border-radius: 7px;width: 680rpx;height:700rpx;padding:26rpx;">
<label class="activity-title">{{ ProductInfo.activity_item_row.activity_name }}</label>
<scroll-view class="scroll-view_H" scroll-x="true">
<view class="scroll-view-item_H" v-for="(g_item,i) in ProductInfo.activity_item_row.activity_rule.item_rows" :key="i">
<view>
<view hover-class="none" :data-pid="(g_item.item_id)" :data-state="(g_item.product_state_id)" @click="gotoDetail">
<view class="product-l-img">
<image style="width:100%;height:100%" :src="g_item.product_image" />
</view>
<view class="product-l-price">
<view class="product_name">
<label>{{ g_item.product_name }}</label>
</view>
<view class="m-project-tips">
<label></label>
</view>
<view class="price-new" style="color:#c0a080;">
<label>{{ __('¥') }}{{ number_format(g_item.item_replace_price, 2) }}</label>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<block>
<view class="gift-rule" v-for="(rule,r) in ProductInfo.activity_item_row.activity_rule.rule" :key="r">
<!--按数量-->
{{ sprintf(__('购买同一加价购活动商品满%s元可换购商品%s件'), rule.total, rule.max_num) }}
</view>
</block>
</view>
</block>
<block v-if="activity_type_id == StateCode.ACTIVITY_TYPE_REDUCTION">
<view class="uni-banner giftbag" v-if="ProductInfo.activity_item_row" style="box-shadow: 2px 9px 11px #001;background:#FFFFFF;border-radius: 7px;width: 680rpx;padding:26rpx;">
<label class="activity-title">{{ ProductInfo.activity_item_row.activity_title }}</label>
<scroll-view class="scroll-view_H" scroll-x="true">
<view class="scroll-view-item_H" v-if="ProductInfo.activity_item_row" v-for="(reduction_again_item,i) in ProductInfo.activity_item_row.reduction_item_data" :key="i">
<view>
<view hover-class="none" :data-pid="(reduction_again_item.item_id)" :data-state="(reduction_again_item.product_state_id)" @click="gotoDetail">
<view class="product-l-img">
<image style="width:100%;height:100%" :src="reduction_again_item.product_image" />
</view>
<view class="product-l-price">
<view class="product_name">
<label>{{ reduction_again_item.product_name }}</label>
</view>
<view class="price-new" style="color:#c0a080;">
<label>{{ __('¥') }}{{ number_format(reduction_again_item.item_unit_price, 2) }}</label>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="gift-rule">
<view v-if="ProductInfo.activity_item_row.reduction_rule" v-for="(rule_items, r) in ProductInfo.activity_item_row.reduction_rule" :key="r">
满<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.total }}</span>元,可省去<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.max_num }}</span>元
</view>
</view>
</view>
</block>
<block v-if="activity_type_id == StateCode.ACTIVITY_TYPE_MANHUI">
<view class="uni-banner giftbag" v-if="ProductInfo.activity_item_row" style="box-shadow: 2px 9px 11px #001;background:#FFFFFF;border-radius: 7px;width: 680rpx;padding:26rpx;">
<label class="activity-title">{{ ProductInfo.activity_item_row.activity_title }}</label>
<scroll-view class="scroll-view_H" scroll-x="true">
<view class="scroll-view-item_H" v-if="ProductInfo.activity_item_row" v-for="(reduction_again_item,i) in ProductInfo.activity_item_row.activity_rule.item_rows" :key="i">
<view>
<view hover-class="none" :data-pid="(reduction_again_item.item_id)" :data-state="(reduction_again_item.product_state_id)" @click="gotoDetail">
<view class="product-l-img">
<image style="width:100%;height:100%" :src="reduction_again_item.product_image" />
</view>
<view class="product-l-price">
<view class="product_name">
<label>{{ reduction_again_item.product_name }}</label>
</view>
<view class="price-new" style="color:#c0a080;">
<label>{{ __('¥') }}{{ number_format(reduction_again_item.item_unit_price, 2) }}</label>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="gift-rule">
<view v-if="ProductInfo.activity_item_row.activity_rule" v-for="(rule_items, r) in ProductInfo.activity_item_row.activity_rule.rule" :key="r">
单笔订单满<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.total }}</span>元,可返<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.activity_title }}</span>满返券
</view>
</view>
</view>
</block>
<block v-if="activity_type_id == StateCode.ACTIVITY_TYPE_MULTIPLE_FOLD">
<view class="uni-banner giftbag" v-if="ProductInfo.fold_rows" style="box-shadow: 2px 9px 11px #001;background:#FFFFFF;border-radius: 7px;width: 680rpx;padding:26rpx;">
<label class="activity-title">{{ ProductInfo.activity_item_row.activity_title }}</label>
<scroll-view class="scroll-view_H" scroll-x="true">
<view class="scroll-view-item_H" v-if="ProductInfo.fold_rows" v-for="(fold_rows_item,i) in ProductInfo.fold_rows" :key="i">
<view>
<view hover-class="none" :data-pid="(fold_rows_item.item_id)" :data-state="(fold_rows_item.product_state_id)" @click="gotoDetail">
<view class="product-l-img">
<image style="width:100%;height:100%" :src="fold_rows_item.product_image" />
</view>
<view class="product-l-price">
<view class="product_name">
<label>{{ fold_rows_item.product_name }}</label>
</view>
<view class="price-new" style="color:#c0a080;">
<label>{{ __('¥') }}{{ number_format(fold_rows_item.item_unit_price, 2) }}</label>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="gift-rule">
<view v-if="ProductInfo.activity_item_row.activity_rule.rule" v-for="(rule_items, r) in ProductInfo.activity_item_row.activity_rule.rule" :key="r">
购买活动任意产品满<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.total }}</span>件,可打<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.max_num / 10 }}</span>折
</view>
</view>
</view>
</block>
<block v-if="activity_type_id == StateCode.ACTIVITY_TYPE_REDUCTION_AGAIN">
<view class="uni-banner giftbag" v-if="ProductInfo.activity_item_row" style="box-shadow: 2px 9px 11px #001;background:#FFFFFF;border-radius: 7px;width: 680rpx;padding:26rpx;">
<label class="activity-title">{{ ProductInfo.activity_item_row.activity_title }}</label>
<scroll-view class="scroll-view_H" scroll-x="true">
<view class="scroll-view-item_H" v-for="(reduction_again_item,i) in ProductInfo.activity_item_row.activity_rule.item_rows" :key="i">
<view>
<view hover-class="none" :data-pid="(reduction_again_item.item_id)" :data-state="(reduction_again_item.product_state_id)" @click="gotoDetail">
<view class="product-l-img">
<image style="width:100%;height:100%" :src="reduction_again_item.product_image" />
</view>
<view class="product-l-price">
<view class="product_name">
<label>{{ reduction_again_item.product_name }}</label>
</view>
<view class="price-new" style="color:#c0a080;">
<label>{{ __('¥') }}{{ number_format(reduction_again_item.item_unit_price, 2) }}</label>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="gift-rule">
<view v-if="ProductInfo.activity_item_row.activity_rule.rule" v-for="(rule_items, r) in ProductInfo.activity_item_row.activity_rule.rule" :key="r">
单笔订单满<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.total }}</span>元,可折上折<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.max_num }}</span>元
</view>
</view>
</view>
</block>
<block v-if="activity_type_id == StateCode.ACTIVITY_TYPE_DOUBLE_POINTS">
<view class="uni-banner giftbag" v-if="ProductInfo.activity_item_row" style="box-shadow: 2px 9px 11px #001;background:#FFFFFF;border-radius: 7px;width: 680rpx;padding:26rpx;">
<label class="activity-title">{{ ProductInfo.activity_item_row.activity_title }}</label>
<scroll-view class="scroll-view_H" scroll-x="true">
<view class="scroll-view-item_H" v-for="(reduction_again_item,i) in ProductInfo.activity_item_row.activity_rule.item_rows" :key="i">
<view>
<view hover-class="none" :data-pid="(reduction_again_item.item_id)" :data-state="(reduction_again_item.product_state_id)" @click="gotoDetail">
<view class="product-l-img">
<image style="width:100%;height:100%" :src="reduction_again_item.product_image" />
</view>
<view class="product-l-price">
<view class="product_name">
<label>{{ reduction_again_item.product_name }}</label>
</view>
<view class="price-new" style="color:#c0a080;">
<label>{{ __('¥') }}{{ number_format(reduction_again_item.item_unit_price, 2) }}</label>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="gift-rule">
<view v-if="ProductInfo.activity_item_row.activity_rule.rule" v-for="(rule_items, r) in ProductInfo.activity_item_row.activity_rule.rule" :key="r">
<view v-if="ProductInfo.activity_item_row.activity_rule.activity_join_mode == 2">
单笔订单满<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.total }}</span>元,可返积分倍数<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.points_double }}</span>
返积分基数<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.points_standard }}</span>
</view>
<view v-else>
单笔订单该活动商品件数满<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.total }}</span>件,可返积分倍数<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.points_double }}</span>
返积分基数<span style="color: red;font-size: 16px;font-weight: bold;">{{ rule_items.points_standard }}</span>
</view>
</view>
</view>
</view>
</block>
</uni-popup>
<view :class="'m-panel-sp ' + (shareBoxFlag==0?'hide':'') " @click.stop="closeNativeShare">
<view :class="'m-panel-sp-content ' + (shareContetnFlag==0?'bounceOutDown animated':'bounceInUp animated')" @click.stop>
<view class="page-body">
<!-- #ifdef APP-PLUS -->
<view class="btn-area" v-if="providerList.length > 0">
<block v-for="(value,index) in providerList" :key="index">
<button type="primary" v-if="value" :disabled="shareType === 5 && value.name !== '分享到微信好友'" @tap="share(value)">{{ value.name }}
</button>
</block>
</view>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<view class="btn-area">
<button type="primary" open-type="share">{{ __('分享') }}</button>
</view>
<!-- #endif -->
<view class="uni-icon uni-icon-closeempty m-panel-sp-icon" color="#888" @click="closeNativeShare"></view>
</view>
</view>
</view>
<!-- #ifdef APP-PLUS -->
<share-box-app :shareDataDefault="shareData" ref="shareBoxApp"></share-box-app>
<!-- #endif -->
<!-- #ifdef H5 -->
<share-box-h5 :shareDataDefault="shareData" ref="shareBoxH5"></share-box-h5>
<!-- #endif -->
<!-- #ifndef APP-PLUS -->
<share-box-mp :shareDataDefault="shareData" @cancelShare="cancelShare" @showCodeImg="showCodeImg" @shareQRCode="shareQRCode" @saveImg="saveImg" ref="shareBoxMp"></share-box-mp>
<!-- #endif -->
<mpvue-city-picker :themeColor="themeColor" ref="mpvueCityPicker" :pickerValueDefault="cityPickerValueDefault" @onCancel="onCancel" @onConfirm="onConfirm"></mpvue-city-picker>
<quick-nav @onReturnTop="onReturnTop" @onShareBox="onShareBox" :isquicknav="isquicknav" v-show="selectsp==0"></quick-nav>
<loginPopup :show="showLoginPopup" @close="closeLoginPopup"></loginPopup>
</view>
</template>
<script>
function getNowFormatDate() {
var e = new Date(),
t = "-",
n = e.getMonth() + 1,
r = e.getDate();
n >= 1 && n <= 9 && (n = "0" + n), r >= 0 && r <= 9 && (r = "0" + r);
var i = e.getFullYear() + t + n + t + r;
return i;
}
import uniPopup from "../../components/uni-popup/uni-popup.vue";
import mpvueCityPicker from "../../components/mpvue-citypicker/mpvueCityPicker.vue";
import wxParse from "@/components/u-parse/u-parse.vue";
import shareBoxMp from "../../components/share-box-mp.vue";
import shareBoxApp from "../../components/share-box-app.vue";
import shareBoxH5 from "../../components/share-box-h5.vue";
import quickNav from "../../components/quick-nav.vue";
import headerNavMenu from "../../components/header-nav-menu.vue";
import uniBadge from "../../components/uni-badge.vue";
import uniNumberBox from "@/components/uni-number-box/uni-number-box.vue";
import uniTag from "@/components/uni-tag/uni-tag.vue";
import loading from "@/components/loading.vue";
import { mapMutations, mapState } from "vuex";
import loginPopup from "../../components/loginPopup.vue";
var intervalDate;
var intervalPt;
var intervalCt;
var intervalTimeAct;
export default {
data() {
return {
numberValue: 0,
b2bFlag: 0,
proIds: [],
product_uniqid: [],
ss: ["ss1", "ss2", "ss3", "ss4", "ss5"],
color: "",
price: 0,
quantity: 0,
options: {},
isMore: false,
selectsp: 0,
selectct: 0,
proId: 0,
CommentImgList: [],
splist: [],
splistStr: [],
numval: 1,
stock: 1,
inputval: 1,
skuid: 0,
selectimg: "",
pname: "",
desc: "",
isCollection: false,
MEID: 0,
activity_id: 0,
activity_type_id: 0,
gb_id: null,
eventId: 0,
Parameters: [],
acticity_ids: [],
isdata: false,
loaded: false,
tapindex: 1,
IsChannel: true,
FGInfo: {},
GB_rows: [],
isAll: false,
Time: {},
ProductInfo: {
productPicList: [],
last_comment_row: {},
last_comment_rows: [],
analytics_row: {},
contractlist: [],
},
store_product_list: [],
store_product_num: 0,
faq_rows: [],
store_info: {},
chain_rows: [],
Coupons: [],
isCancelSuccess: true,
isCancel: true,
CouponAmount: 0,
user_is_new: 0,
addCartFlag: false, //{{__('加入购物车')}}标记
buyFlag: false, //{{__('立即购买')}}标记
isVoucher: false,
virtual_flag: false,
versionNumber: "",
CashData: {},
PageQRCodeInfo: {
Path: "",
IsShare: false,
IsShareBox: false,
IsJT: false,
},
isModified: true,
timer: null,
days: "",
hours: "",
minutes: "",
seconds: "",
isShare: true,
if_saas_status: false,
isStoreFlag: 0, //店铺内打开
voucherList: [],
voucherReceiveAllFlag: false,
AppId: "",
chatUrl: "",
isJoin: false,
ispage: false,
shareData: {
shareText: "澜驰商城系统支持原生App、微信小程序邀请你一起体验",
shareTitle: "澜驰商城系统支持原生App、微信小程序邀请你一起体验",
href: "https://www.suteshop.com",
image: "",
price: 0,
},
shareText: "澜驰商城系统支持原生App、微信小程序邀请你一起体验",
shareTitle: "澜驰商城系统支持原生App、微信小程序邀请你一起体验",
href: "https://www.suteshop.com",
image: "",
shareBoxFlag: 0,
shareContetnFlag: 0,
shareType: 0,
providerList: [],
wholesale_policy_rows: [],
scposition: 0,
old: {
scposition: 0,
},
isnav: true,
screenHeight: 0,
isquicknav: false,
Id: 0,
needed_point: 0,
cityPickerValueDefault: [1, 2, 3],
themeColor: "#007AFF",
product_freight_info: {
content: "无货",
district_info: "上海市/上海市",
if_store: false,
},
latitude: "",
longitude: "",
url: "",
is_chain: 0,
currentSwipperImageIndex: 1,
showLoginPopup: false,
};
},
metaInfo() {
return {
meta: [
{
name: "og:url",
content: this.$.sprintf(
"%s/h5/pages/product/detail?pid=%d&uid=%d",
this.Config.SiteUrl,
this.proId,
this.userInfo.user_id
),
},
{
name: "og:type",
content: "article",
},
{
name: "og:title",
content: this.pname,
},
{
name: "og:description",
content: this.desc || this.pname,
},
{
name: "og:image",
content: this.ProductInfo.productPicList.length
? this.ProductInfo.productPicList[0].Path
: "",
},
],
title: this.pname,
};
},
components: {
shareBoxMp,
shareBoxApp,
shareBoxH5,
quickNav,
uniBadge,
mpvueCityPicker,
wxParse,
uniTag,
uniNumberBox,
loading,
headerNavMenu,
uniPopup,
loginPopup,
},
computed: {
...mapState([
"Config",
"StateCode",
"notice",
"plantformInfo",
"shopInfo",
"userInfo",
"hasLogin",
"cartNum",
]),
nav_nemu: function () {
return [
{
url: "/pages/index/index",
type: "switchTab",
icon: "zc-dianpu",
name: this.__("首页"),
},
{
url: "/member/member/message",
type: "navigate",
icon: "zc-zaixian-im",
name: this.__("消息"),
},
{
url: "/member/member/favorites",
type: "navigate",
icon: "zc-shoucang11",
name: this.__("我的关注"),
},
{
url: "/member/member/browse",
type: "navigate",
icon: "zc-zuji",
name: this.__("浏览记录"),
},
];
},
},
onLoad: async function (options) {
uni.setNavigationBarTitle({
title: this.__("商品详情"),
});
await this.$onLaunched;
var that = this;
if (options.scene) {
var scene = decodeURIComponent(options.scene);
var opts = {};
opts = that.$.parse_str(scene);
options = Object.assign(options, opts);
}
that.$.getSystemInfo({
success: function (t) {
that.setData({
screenHeight: t.screenHeight,
});
},
});
this.setData({
options: options,
isStoreFlag: options.is_store_flag ? parseInt(options.is_store_flag) : 0,
if_saas_status: this.Config.SAAS_STATUS,
});
/*
this.setData({
versionNumber: this.plantformInfo.versionNumber
});
*/
var n = {
productId: options.pid,
};
that.InitData(options);
this.getPlantformInfo(function (plantformInfo) {
that.setData({
b2bFlag: plantformInfo.config.b2b_flag,
});
});
},
onShareAppMessage() {
// #ifdef MP-WEIXIN
wx.showShareMenu({
withShareTicket: true,
menus: ["shareAppMessage", "shareTimeline"],
});
// #endif
return {
imageUrl: this.ProductInfo.productPicList[0].Path,
title: this.pname,
path:
"/pages/product/detail?pid=" +
this.proId +
"&uid=" +
this.userInfo.user_id,
};
},
/**
* 用户点击右上角分享朋友圈
*/
onShareTimeline: function () {
return {
title: this.pname,
query: {
uid: this.userInfo.user_id,
pid: this.proId,
},
imageUrl: this.ProductInfo.productPicList[0].Path,
};
},
onBackPress() {
if (this.$refs.mpvueCityPicker.showPicker) {
this.$refs.mpvueCityPicker.pickerCancel();
return true;
}
// #ifdef APP-PLUS
if (this.$refs.shareBoxApp.showBoxView) {
this.$refs.shareBoxApp.cancel();
return true;
}
// #endif
// #ifdef H5
if (this.$refs.shareBoxH5.showBoxView) {
this.$refs.shareBoxH5.cancel();
return true;
}
// #endif
// #ifdef MP-WEIXIN
if (this.$refs.shareBoxMp.showBoxView) {
this.$refs.shareBoxMp.cancel();
return true;
}
// #endif
},
onUnload() {
clearInterval(intervalDate);
clearInterval(intervalPt);
clearInterval(intervalCt);
clearInterval(intervalTimeAct);
this.showLoginPopup = false;
if (this.$refs.mpvueCityPicker.showPicker) {
this.$refs.mpvueCityPicker.pickerCancel();
}
// #ifdef APP-PLUS
if (this.$refs.shareBoxApp.showBoxView) {
this.$refs.shareBoxApp.cancel();
}
// #endif
// #ifdef H5
if (this.$refs.shareBoxH5.showBoxView) {
this.$refs.shareBoxH5.cancel();
}
// #endif
// #ifdef MP-WEIXIN
if (this.$refs.shareBoxMp.showBoxView) {
this.$refs.shareBoxMp.cancel();
}
// #endif
},
onNavigationBarButtonTap(e) {
var that = this;
if (e.index === 0) {
that.onMenu(e);
} else if (e.index === 1) {
that.onShareBox(e);
} else {
uni.showToast({
title: "你点了收藏按钮",
icon: "none",
});
}
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.InitProduct(true);
},
methods: {
...mapMutations([
"login",
"logout",
"getPlantformInfo",
"forceUserInfo",
"getUserInfo",
"setCartNum",
]),
//生成的海报图片
createPoster(e) {
this.productPoster = e;
if (this.productPoster) {
uni.hideLoading();
this.$refs.shareBoxMp.path = this.productPoster;
}
},
swiperImg: function (e) {
this.currentSwipperImageIndex = e.detail.current + 1;
},
InitData: function (options) {
var that = this;
this.setData({
proId: options.pid,
splistStr: [],
gb_id: parseInt(options.gb_id),
isJoin:
!that.$.isNull(options.gb_id) && options.gb_id != 0 ? true : false,
});
that.$.isNull(this.userInfo)
? this.getUserInfo(function (user) {
that.InitProduct(false);
that.setData({
IsChannel: this.shopInfo.IsChannel,
});
that.setData({
user_is_new: 0,
//user_is_new: this.userInfo.user_is_new,
CouponAmount: 10,
//CouponAmount: this.userInfo.CouponAmount
});
})
: that.InitProduct(false);
//that.notice.postNotificationName("RefreshProduct", false)
},
initChain: function () {
let that = this;
that.$.getLocation({
type: "wgs84",
success: function (response) {
that.setData({
latitude: response.latitude,
longitude: response.longitude,
});
that.getNearChain();
},
fail: function () {
that.setData({
isdata: true,
});
that.$.confirm(that.__("手机定位失败"));
that.getNearChain();
},
});
},
getNearChain: function () {
let that = this;
let chain_params = {
store_id: that.store_info.store_id,
item_id: that.proId,
lat: that.latitude,
lng: that.longitude,
};
that.$.request({
url: that.Config.URL.store.getNearChain,
data: chain_params,
loading: false,
success: function (data, status, msg, code) {
if (status == 200) {
for (let i = 0; i < data.items.length; i++) {
data.items[i]["distance"] = that.$.distanceFormat(
data.items[i]["distance"]
);
let coord = that.$.bMapTransQQMap(
data.items[i]["chain_lng"],
data.items[i]["chain_lat"]
);
data.items[i]["chain_lng"] = coord.lng;
data.items[i]["chain_lat"] = coord.lat;
}
that.setData({
chain_rows: data.items,
});
}
},
});
},
gotomap: function (e) {
console.info(e);
var that = this;
that.$.openLocation({
latitude: parseFloat(e.currentTarget.dataset.lat),
longitude: parseFloat(e.currentTarget.dataset.lng),
name: e.currentTarget.dataset.name,
address: e.currentTarget.dataset.address,
scale: 28,
});
},
gopage: function (e) {
var that = this;
this.$.gotopage(
"/chain/chain/index?chain_id=" + e.currentTarget.dataset.chain_id
);
},
call: function (e) {
let that = this;
that.$.makePhoneCall({
phoneNumber: e.currentTarget.dataset.phone,
});
},
InitProduct: function (force_refresh) {
if (typeof force_refresh == "undefined") {
force_refresh = true;
}
var that = this;
//存入本地
let district_id = uni.getStorageSync("district_id");
var params = {
item_id: that.proId,
gb_id: that.gb_id,
comment_flag: 1, //如果有,则读取一条评论
};
if (district_id) {
params.district_id = district_id;
}
that.$.request({
url: this.Config.URL.product.item,
data: params,
loading: false,
ajaxCache: {
timeout: this.Config.CACHE_EXPIRE,
forceRefresh: force_refresh,
},
success: function (data, status, msg, code) {
if (200 == status) {
clearInterval(intervalDate);
clearInterval(intervalPt);
clearInterval(intervalCt);
clearInterval(intervalTimeAct);
that.$report("fb_mobile_content_view", data.item_row);
that.setData({
product_freight_info: data.product_freight_info,
});
data.item_row.ProductName = data.item_row.product_item_name;
data.item_row.ProductTips = data.item_row.product_tips;
data.item_row.MarketPrice = Math.max(
data.item_row.item_unit_price,
data.item_row.item_sale_price,
data.item_row.item_market_price
);
data.item_row.ItemSalePrice = data.item_row.item_unit_price;
data.item_row.ShowPrice = data.item_row.item_sale_price;
if (data.item_row.MarketPrice <= data.item_row.ItemSalePrice) {
data.item_row.MarketPrice = 0;
}
data.item_row.normalStatus =
data.item_row.product_state_id ==
that.StateCode.PRODUCT_STATE_NORMAL;
data.item_row.ifStore = data.product_freight_info.if_store;
data.item_row.isShowCountdown =
that.StateCode.ACTIVITY_TYPE_LIMITED_DISCOUNT ==
data.item_row.activity_type_id ||
that.StateCode.ACTIVITY_TYPE_GROUPBOOKING ==
data.item_row.activity_type_id
? true
: false;
data.item_row.activityType =
that.StateCode.ACTIVITY_TYPE_GROUPBOOKING ==
data.item_row.activity_type_id
? "GROUPBOOKING"
: false;
data.item_row.productPicList = [];
data.item_row.pv_url =
"/pagesub/video/video?pid=" +
data.item_row.product_id +
"&url=" +
encodeURIComponent(data.item_row.product_video) +
"&title=" +
encodeURIComponent(data.item_row.product_name);
for (var i = 0; i < data.item_row.item_image_row.length; i++) {
data.item_row.productPicList[i] = {};
data.item_row.productPicList[i].Path =
data.item_row.item_image_row[i];
data.item_row.productPicList[i].Video = false;
}
data.item_row.SpecLst = [];
//for b2b
data.item_row.Ids = [];
for (var t in data.item_row.product_spec) {
for (var s in data.item_row.product_spec[t].item) {
if (data.item_row.product_spec[t].item[s].select == 1) {
that.setData({
color: data.item_row.product_spec[0].item[0].name,
});
}
}
}
for (var n in data.item_row.product_spec) {
data.item_row.SpecLst[n] = {};
data.item_row.SpecLst[n].svLst = [];
data.item_row.SpecLst[n].unit_id =
data.item_row.product_spec[n].id;
//for b2b
data.item_row.Ids[n] = {};
data.item_row.Ids[n].info = [];
data.item_row.Ids[n].id = data.item_row.product_spec[n].id;
for (var r in data.item_row.product_spec[n].item) {
data.item_row.SpecLst[n].svLst[r] = {};
data.item_row.SpecLst[n].svLst[r].Id =
data.item_row.product_spec[n].item[r].id;
data.item_row.SpecLst[n].svLst[r].Name =
data.item_row.product_spec[n].item[r].name;
data.item_row.Ids[n].info[r] =
data.item_row.product_spec[n].item[r].id; //for b2b
if (
data.item_row.item_spec[n].item.id ==
data.item_row.product_spec[n].item[r].id
) {
data.item_row.SpecLst[n].svLst[r].IsChecked = true;
} else {
data.item_row.SpecLst[n].svLst[r].IsChecked = false;
}
if (
!that.selectimg &&
data.item_row.product_spec_image_row[
data.item_row.product_spec[n].item[r].id
]
) {
data.item_row.SpecLst[n].svLst[r].imagePath =
data.item_row.product_spec_image_row[
data.item_row.product_spec[n].item[r].id
];
} else {
//data.item_row.SpecLst[n].svLst[r].imagePath = data.item_row.product_image;
data.item_row.SpecLst[n].svLst[r].imagePath =
data.item_row.product_image ||
data.item_row.product_spec_image_row[
data.item_row.product_spec[n].item[r].id
];
}
}
}
//倒计时
//activity_item_row.activity_endtime
if (data.item_row.isShowCountdown || data.item_row.is_pa) {
if (data.item_row.is_pa) {
data.item_row.product_sale_time = that.$.strtotime(
data.item_row.pa_endtime
);
} else {
data.item_row.product_sale_time = that.$.strtotime(
data.item_row.activity_item_row.activity_endtime
);
}
let end_diff_time =
data.item_row.product_sale_time * 1000 - new Date().getTime();
intervalCt = setInterval(function () {
var n = (end_diff_time -= 1e3);
n < 0
? (clearInterval(),
that.setData({
hours: "00",
minutes: "00",
seconds: "00",
}))
: that.setData({
hours: that.$.doubleNum(Math.floor(n / 1e3 / 60 / 60)),
minutes: that.$.doubleNum(
Math.floor((n / 1e3 / 60) % 60)
),
seconds: that.$.doubleNum(Math.floor((n / 1e3) % 60)),
});
}, 1e3);
}
//拼团
if (data.item_row.activityType == "GROUPBOOKING") {
data.item_row.EventStartTime =
data.item_row.activity_item_row.activity_rule.activity_starttime;
data.item_row.EventEndTime =
data.item_row.activity_item_row.activity_rule.activity_endtime;
data.item_row.DayLimit =
data.item_row.activity_item_row.activity_rule.group_days_limit;
data.item_row.UserLimit =
data.item_row.activity_item_row.activity_rule.group_quantity;
data.item_row.SavePrice =
data.item_row.item_unit_price - data.item_row.item_sale_price;
data.item_row.UserNum =
data.item_row.activity_item_row.gb_amount_quantity;
//data.item_row.end_diff_time = (new Date(data.item_row.activity_item_row.activity_endtime.replace(/-/g, "/")))
data.item_row.end_diff_time =
new Date(
data.item_row.activity_item_row.activity_endtime
).getTime() - new Date().getTime();
that.setData({
activity_id: data.item_row.activity_id,
});
/*
intervalPt = setInterval(function(clear) {
var n = data.item_row.end_diff_time -= 1e3;
if (n < 0) {
clearInterval(clear);
that.setData({
days: "00",
hours: "00",
minutes: "00",
seconds: "00",
});
} else {
that.setData({
days: that.$.doubleNum(Math.floor(n / 1e3 / 60 / 60 / 24)),
hours: that.$.doubleNum(Math.floor(n / 1e3 / 60 / 60 % 24)),
minutes: that.$.doubleNum(Math.floor(n / 1e3 / 60 % 60)),
seconds: that.$.doubleNum(Math.floor(n / 1e3 % 60)),
});
}
}, 1e3);
*/
}
if (!that.$.isNull(data.item_row.activityType)) {
if (
data.item_row.activityType == "GROUPBOOKING" &&
data.item_row.activity_id > 0
) {
that.findOffered(data.item_row.activity_id);
clearInterval(intervalTimeAct);
intervalTimeAct = setInterval(function () {
that.setData({
Time: that.$.FormatTime(
data.item_row.activity_item_row.activity_endtime
),
MEID: data.item_row.activity_id,
});
}, 1e3);
}
}
if (data.item_row.SpecLst.length > 0) {
for (var n in data.item_row.SpecLst) {
for (var r in data.item_row.SpecLst[n].svLst) {
data.item_row.SpecLst[n].svLst[r].IsChecked &&
((data.item_row.SpecLst[n].ckid =
data.item_row.SpecLst[n].svLst[r].Id),
that.splist.push(data.item_row.SpecLst[n].svLst[r].Id),
that.splistStr.push(data.item_row.SpecLst[n].svLst[r].Name),
that.setData({
selectimg: data.item_row.SpecLst[n].svLst[r].imagePath,
}));
data.item_row.product_spec[n].item[r].IsChecked &&
((data.item_row.product_spec[n].ckid =
data.item_row.product_spec[n].item[r].id),
that.splist.push(data.item_row.product_spec[n].item[r].id),
that.splistStr.push(
data.item_row.product_spec[n].item[r].name
),
that.setData({
selectimg:
data.item_row.product_spec[n].item[r].imagePath,
}));
}
}
} else {
that.setData({
selectimg: data.item_row.product_image,
});
}
var perm_id = that.$.getStorageSync("uid");
var perm_key = that.$.getStorageSync("ukey");
that.$.setNavigationBarTitle({
title: data.item_row.product_item_name,
});
//data.item_row.product_detail = '<style>img{max-width:100%!important;height:auto;}</style>' + data.item_row.product_detail;
//data.item_row.product_detail = data.item_row.product_detail.replace(/\<img/gi, '<img style="max-width:100%;height:auto" ')
data.item_row.product_detail &&
(data.item_row.product_detail =
data.item_row.product_detail.replace(
new RegExp("<img ", "gm"),
'<img style="max-width:100%;height:auto;display: flex;" '
));
data.item_row.product_param &&
(data.item_row.product_param =
data.item_row.product_param.replace(
new RegExp("<img ", "gm"),
'<img style="max-width:100%;height:auto;display: flex;" '
));
data.item_row.product_extension &&
(data.item_row.product_extension =
data.item_row.product_extension.replace(
new RegExp("<img ", "gm"),
'<img style="max-width:100%;height:auto;display: flex;" '
));
data.item_row.product_service &&
(data.item_row.product_service =
data.item_row.product_service.replace(
new RegExp("<img ", "gm"),
'<img style="max-width:100%;height:auto;display: flex;" '
));
let chat_url = that.$.sprintf(
"/im/chat/chat?uid=%s&item_id=%s",
data.store_info.user_id,
data.item_row.item_id
);
that.setData({
chatUrl: chat_url,
});
if (true) {
/*
that.$.request({
url: that.Config.URL.user.kefu_config,
data: {user_id: data.store_info.user_id, store_id:data.store_info.store_id},
loading: false,
success: function(rd, r_status, r_msg, code) {
if (r_status == 200) {
let chat_url = that.$.sprintf("/im/chat/chat?uid=%s&item_id=%s", rd.friend_id, data.item_row.item_id);
that.setData({
chatUrl: chat_url
});
}
else
{
that.$.alert(r_msg);
}
}
});
*/
} else {
}
that.setData({
ProductInfo: data.item_row,
product_uniqid: data.item_row.product_uniqid,
store_info: data.store_info,
isCollection: data.is_favorite > 0 ? true : false,
skuid: data.item_row.item_id,
Parameters: data.item_row.product_param,
desc: data.item_row.ProductTips,
pname: data.item_row.product_item_name,
stock: data.item_row.item_quantity,
});
that.store_info.distance = 0;
/*
var i = data.item_row.product_detail;
i = i.replace(/&amp;nbsp;/g, "");
//WxParse.wxParse("pinfo", "html", i, that);
var p = data.item_row.product_param;
p = p.replace(/&amp;nbsp;/g, "");
//WxParse.wxParse("product_param", "html", p, that);
var c = data.item_row.product_extension;
c = c.replace(/&amp;nbsp;/g, "");
WxParse.wxParse("product_extension", "html", c, that);
var s = data.item_row.product_service;
s = s.replace(/&amp;nbsp;/g, "");
//WxParse.wxParse("Services", "html", s, that);
*/
that.setData({
isdata: true,
});
that.getCouponlist();
if (that.Config.CHAIN_ENABLE) {
that.initChain();
}
//读取帮助信息
that.getFaq(data.item_row.product_id);
//计算店铺距离
/**
* 计算两个经纬度的距离(米)
*/
let getDistance = function (lat1, lng1, lat2, lng2) {
var radLat1 = (lat1 * Math.PI) / 180.0;
var radLat2 = (lat2 * Math.PI) / 180.0;
var a = radLat1 - radLat2;
var b = (lng1 * Math.PI) / 180.0 - (lng2 * Math.PI) / 180.0;
var s =
2 *
Math.asin(
Math.sqrt(
Math.pow(Math.sin(a / 2), 2) +
Math.cos(radLat1) *
Math.cos(radLat2) *
Math.pow(Math.sin(b / 2), 2)
)
);
s = s * 6378.137; // EARTH_RADIUS;
s = Math.round(s * 10000) / 10;
return s;
};
that.store_info.store_o2o_flag = 1;
if (that.store_info.store_o2o_flag) {
that.$.getLocation({
type: "wgs84",
success: function (response) {
that.setData({
latitude: response.latitude,
longitude: response.longitude,
});
//that.store_info.distance = 100;
let d = getDistance(
that.latitude,
that.longitude,
that.store_info.store_latitude,
that.store_info.store_longitude
);
console.info(
that.latitude,
that.longitude,
that.store_info.store_latitude,
that.store_info.store_longitude
);
console.info(d);
that.store_info.distance = that.$.distanceFormat(d || 0);
},
fail: function () {},
});
}
} else {
that.setData({
isdata: false,
});
}
if (200 != status) {
} else {
//初始化微信分享
let $title = that.pname;
let $desc = that.desc;
let $link = that.$.sprintf(
"%s/h5/pages/product/detail?pid=%s",
that.Config.SiteUrl,
that.proId
);
let $img_url = that.ProductInfo.productPicList[0].Path;
//初始化微信分享
that.$.wxShare($title, $desc, $link, $img_url);
that.getStoreProdcutList();
}
that.setData({
loaded: true,
});
that.$.stopPullDownRefresh();
},
complete: function (res, status) {},
});
},
getFaq: function (product_id) {
let that = this;
let faq_params = {
product_id: product_id,
rows: 2,
};
that.$.request({
url: this.Config.URL.sns.story_lists,
data: faq_params,
loading: false,
/*
ajaxCache: {
timeout: Config.CACHE_EXPIRE
}, */
success: function (data, status, msg, code) {
if (status == 200) {
that.faq_rows = data.items;
if ("analytics_row" in that.ProductInfo) {
if (
that.ProductInfo.analytics_row &&
"product_ask_num" in that.ProductInfo.analytics_row
) {
that.ProductInfo.analytics_row.product_ask_num = data.records;
}
}
}
},
});
},
listFaq: function (e) {
//this.$.gopage(this.$.sprintf('/community/community/lists?pid=%s', e.currentTarget.dataset.product_id));
this.$.gopage(
this.$.sprintf(
"/community/community/lists?pid=%s",
this.ProductInfo.product_id
)
);
},
ckselectsp: function (e) {
this.setData({
//change: e.currentTarget.offsetLeft,
selectsp: 1,
selectct: 1,
addCartFlag: true,
buyFlag: false,
}),
e.currentTarget.dataset.type == 1
? this.setData({
isModified: true,
})
: this.setData({
isModified: false,
});
},
ckselectsp1: function (e) {
if (!this.hasLogin) {
this.showLoginPopup = true;
return;
}
// console.log(this)
this.setData({
//change: e.currentTarget.offsetLeft,
selectsp: 1,
selectct: 1,
buyFlag: true,
addCartFlag: false,
});
},
closesp: function (e) {
var that = this;
that.setData({
selectct: 0,
/*flag: false*/
});
setTimeout(function () {
that.setData({
selectsp: 0,
});
}, 1e2);
},
selectSpec: function (e) {
let that = this;
if (!e.target.dataset.enable) {
return;
}
/*
this.setData({
buyFlag: true,
addCartFlag: false
})
*/
/*$(self).addClass("current").siblings().removeClass("current");
//拼接属性
var curEle = $(".spec").find("a.current");
var curSpec = [];
that.$.each(curEle, function (i, v)
{
// convert to int type then sort
curSpec.push(parseInt($(v).attr("specs_value_id")) || 0);
});
var spec_string = curSpec.sort(function (a, b)
{
return a - b;
}).join("-");
//获取商品ID
window.item_id = myData.product_uniqid[spec_string][0];
get_detail(window.item_id);*/
var params = {
spid: e.target.dataset.spid,
ckid: e.target.dataset.ckid,
unit_id: e.target.dataset.unit_id,
},
n = [],
r = this.splist;
var uniqid,
spec_ids = [];
for (var spec_key in that.ProductInfo.item_spec) {
if (params.unit_id == that.ProductInfo.item_spec[spec_key].id) {
spec_ids.push(params.spid);
} else {
spec_ids.push(that.ProductInfo.item_spec[spec_key].item.id);
}
}
uniqid = spec_ids
.sort(function (a, b) {
return a - b;
})
.join("-");
var item_id = that.ProductInfo.product_uniqid[uniqid][0];
if (that.b2bFlag) {
return;
}
that.setData({
proId: item_id,
});
that.InitProduct(false);
/*
that.$.xsr(that.$.makeUrl(api.GetProductlistSpc, params), function (t) {
that.$.isNull(t.Info[0].activityType) || t.Info[0].activityType == "GROUPBOOKING" && t.Info[0].activity_id > 0 && that.findOffered(t.Info[0].activity_id);
for (var n in t.Info[0].SpecLst) for (var r in t.Info[0].SpecLst[n].svLst) t.Info[0].SpecLst[n].svLst[r].IsChecked && (t.Info[0].SpecLst[n].ckid = t.Info[0].SpecLst[n].svLst[r].Id, that.splist.push(t.Info[0].SpecLst[n].svLst[r].Id), that.splistStr.push(t.Info[0].SpecLst[n].svLst[r].Name)), t.Info[0].SpecLst[n].svLst[r].Id == e.target.dataset.spid && that.setData({selectimg: t.Info[0].SpecLst[n].svLst[r].imagePath});
that.$.setNavigationBarTitle({title: t.Info[0].SalesName}), that.setData({
ProductInfo: t.Info[0],
skuid: t.Info[0].item_id,
pname: t.Info[0].ProductName,
Parameters: t.Info[0].ProductParameters ? that.Grouping(t.Info[0].ProductParameters) : [],
stock: t.Info[0].Stock
})
})
*/
},
sub: function () {
this.unifiedNum(2);
},
add: function () {
this.unifiedNum(1);
},
writenum: function (e) {
this.setData({
inputval: e.detail.value,
}),
this.unifiedNum(3);
},
unifiedNum: function (e) {
let that = this;
var t = {
value: parseInt(this.numval),
stock: parseInt(this.stock),
inputval: parseInt(this.inputval),
};
if (t.stock <= 0) {
that.$.alert(that.__("亲~商品没有库存啦!"));
return;
}
e == 1
? (t.value = t.value + 1)
: e == 2
? (t.value = t.value - 1)
: ((t.value = t.inputval),
this.setData({
numval: t.inputval,
}));
if (t.value > t.stock) {
this.setData({
numval: t.stock,
});
return;
}
if (t.value <= 0) {
this.setData({
numval: 1,
});
return;
}
this.setData({
numval: t.value,
});
},
addCart: async function () {
var that = this;
if (that.b2bFlag) {
that.addCartBat();
return;
}
var params = {
item_id: that.proId,
proName: that.pname,
cart_quantity: that.numval,
activity_id: that.ProductInfo.activity_id,
SKU_Id: that.skuid,
};
if (that.stock <= 0) {
that.$.alert("亲~商品没有库存啦!");
return;
}
await this.$store.dispatch(`addCart`, {
params: params,
callback: (data, status, msg, code) => {
if (status == 200) {
that.$.alert(that.__("添加购物车成功"));
that.setData({
numval: 1,
inputval: 1,
});
if (that.plantformInfo.prodcut_addcart_flag) {
that.$store.dispatch(`getCartList`, function (data) {});
}
}
that.setData({
selectct: 0,
});
setTimeout(function () {
that.setData({
selectsp: 0,
});
}, 1e3);
},
});
/*
that.$.request({
url: this.Config.URL.cart.add,
data: params,
success: function (data, status, msg, code) {
if (status == 200) {
//that.notice.postNotificationName("RefreshProduct", true);
that.$report('fb_mobile_add_to_cart', data);
//
that.notice.postNotificationName("RefreshCart", parseInt(that.numval));
that.setCartNum({
type: 'add',
num: parseInt(that.numval)
});
that.$.alert(that.__('添加购物车成功'));
that.setData({
numval: 1,
inputval: 1
})
}
that.setData({
selectct: 0
});
setTimeout(function () {
that.setData({
selectsp: 0
})
}, 1e3);
}
});
*/
},
//for b2b
//商品数量
changes(e, id) {
var that = this;
var t = that.product_uniqid[id][0];
that.proIds[id] = {
item_id: t,
quantity: e,
};
this.setprice();
},
//计算价格
setprice: function () {
var that = this;
var price = 0;
var quantity = 0;
for (var i in that.proIds) {
price = price + that.proIds[i].quantity * that.product_uniqid[i][1];
quantity += that.proIds[i].quantity;
}
this.setData({
price: price,
quantity: quantity,
});
},
selectS: function (e, k, d, evnet) {
var that = this;
that.setData({
color: d,
});
if (e.select == 1) {
return true;
}
// evnet.target.dataset.unit_id = 1002;
var p = that.ProductInfo.product_spec[0].item;
for (var l = 0; l < p.length; l++) {
if (p[l].select == 1) {
p[l].select = 0;
}
}
e.select = 1;
// this.setData({
// proId: items.id
// });
that.selectSpec(evnet);
},
addCartBat: function () {
var that = this;
var pat = [];
if (that.ProductInfo.SpecLst.length > 0) {
for (var i in that.proIds) {
if (that.proIds[i].quantity > 0) {
pat.push(that.proIds[i]);
}
}
if (pat.length <= 0) {
that.$.alert("亲~请选择商品!");
return;
}
} else {
pat = [
{
item_id: that.options.pid,
quantity: 1,
},
];
}
var params = {
par: JSON.stringify(pat),
prd: that.options.pid,
};
that.$.request({
url: this.Config.URL.cart.batchadd,
data: params,
success: function (data, status, msg, code) {
if (status == 200) {
//that.notice.postNotificationName("RefreshProduct", true);
//
that.notice.postNotificationName("RefreshCart", that.numval);
that.setCartNum({
type: "add",
num: that.numval,
});
that.$.alert("添加进货车成功");
that.setData({
numval: 1,
inputval: 1,
});
} else {
that.$.alert(msg);
}
that.setData({
selectct: 0,
});
setTimeout(function () {
that.setData({
selectsp: 0,
});
}, 1e3);
},
});
},
PDCollection: function (e) {
var that = this;
if (this.isCollection) {
var params = {
item_id: e.currentTarget.dataset.id,
};
that.$.request({
url: this.Config.URL.user.wish_item_remove,
data: params,
success: function (data, status, msg, code) {
if (200 == status) {
that.setData({
isCollection: false,
});
}
that.$.alert(that.__("已取消收藏!"));
},
});
} else {
var params = {
item_id: e.currentTarget.dataset.id,
};
that.$.request({
url: this.Config.URL.user.wish_item_add,
data: params,
success: function (data, status, msg, code) {
if (200 == status) {
that.setData({
isCollection: true,
});
}
that.$.alert(that.__("已收藏!"));
},
});
}
},
addToWestore: function (e) {
var that = this;
var params = {
item_id: e.currentTarget.dataset.id,
store_id: this.store_info.store_id,
product_id: this.ProductInfo.product_id,
};
that.$.request({
url: this.Config.URL.user.direct_store_add,
data: params,
success: function (data, status, msg, code) {
if (status == 200) {
that.$.alert(msg);
} else {
that.$.alert(msg);
}
},
});
},
picDetail: function () {
this.setData({
tapindex: 1,
});
},
spcParam: function () {
this.setData({
tapindex: 2,
});
},
packingList: function () {
this.setData({
tapindex: 3,
});
},
showFightGroup: function () {
this.setData({
tapindex: 4,
});
},
showServiceTab: function () {
this.setData({
tapindex: 5,
});
},
showVoucherTab: function () {
//this.getCouponlist()
this.setData({
tapindex: 6,
});
},
Grouping: function (e) {
var t = {},
n = [];
for (var r = 0; r < e.length; r++) {
var i = e[r];
if (!t[i.ParameterGroupId])
n.push({
ParameterGroupId: i.ParameterGroupId,
name: i.ParameterGroupName,
data: [i],
}),
(t[i.ParameterGroupId] = i);
else
for (var s = 0; s < n.length; s++) {
var o = n[s];
if (o.ParameterGroupId == i.ParameterGroupId) {
o.push(i);
break;
}
}
}
return n;
},
//单规格,不需要选规格,默认购买一个。
buynow: function (e) {
var that = this;
var params = {
item_id: that.proId,
proName: that.pname,
cart_quantity: that.numval,
activity_id: that.ProductInfo.activity_id,
SKU_Id: that.skuid,
};
//for b2b
if (that.b2bFlag && that.ProductInfo.SpecLst.length > 0) {
var pat = [];
for (var i in that.proIds) {
if (that.proIds[i].quantity > 0) {
var t = that.proIds[i].item_id + "|" + that.proIds[i].quantity;
pat.push(t);
}
}
if (pat.length <= 0) {
that.$.alert("亲~请选择商品!");
return;
}
var str = pat.join(",");
that.$.navigateTo({
url:
"/pages/checkout/checkout?ifcart=0&cart_id=" +
str +
"&prd=" +
that.options.pid,
}),
this.setData({
selectct: 0,
});
} else {
that.$.navigateTo({
url:
"/pages/checkout/checkout?ifcart=0&cart_id=" +
params.item_id +
"|" +
params.cart_quantity,
}),
this.setData({
selectct: 0,
});
}
var n = this;
setTimeout(function () {
n.setData({
selectsp: 0,
});
}, 1e3);
},
checkChainProduct: function (e) {
var that = this;
var params = {
item_id: that.proId,
proName: that.pname,
cart_quantity: that.numval,
activity_id: that.ProductInfo.activity_id,
SKU_Id: that.skuid,
};
that.$.request({
url: that.Config.URL.isProduct,
data: params,
dataType: "json",
success: function (data, status, msg, code) {
if (data.length == 0) {
that.$.showModal({
title: that.__("提示"),
content: that.__("您的默认门店没有该商品,是否继续购买?"),
success: function (res) {
if (res.confirm) {
that.setData({
url:
"/pages/checkout/checkout?ifcart=0&cart_id=" +
params.item_id +
"|" +
params.cart_quantity,
});
}
},
});
} else {
that.setData({
url:
"/pages/checkout/checkout?ifcart=0&cart_id=" +
params.item_id +
"|" +
params.cart_quantity +
"&chain_id=" +
data.chain_id,
});
}
},
});
},
ILObuynow: function (e) {
let that = this;
var t = {
Amount: this.numval,
ProductId: this.proId,
item_id: this.skuid,
AddTime: getNowFormatDate(),
orderType: 0,
isFightGroup: "1",
ProductSaleName: this.pname,
speStr: JSON.stringify(this.splistStr)
.replace("[", "")
.replace("]", "")
.replace(/\,/g, " ")
.replace(/\"/g, ""),
};
that.$.navigateTo({
url:
"/pages/checkout/checkout?ifcart=0&cart_id=" +
this.proId +
"|" +
this.numval,
});
},
immediatelyGroupbooking: function () {
var that = this;
var e = {
Amount: 1,
ProductId: this.proId,
orderType: 1,
activity_id: this.MEID,
isOwner: "true",
isFightGroup: "2",
item_id: this.skuid,
AddTime: getNowFormatDate(),
ownGroupId: 0,
ProductSaleName: this.pname,
speStr: JSON.stringify(this.splistStr)
.replace("[", "")
.replace("]", "")
.replace(/\,/g, " ")
.replace(/\"/g, ""),
};
//console.info("/pages/checkout/checkout?single_activity=1&ifcart=0&cart_id=" + that.proId + "|" + 1 + "&activity_id=" + this.activity_id + "&gb_id=" + this.gb_id);
that.$.navigateTo({
url:
"/pages/checkout/checkout?single_activity=1&ifcart=0&cart_id=" +
that.proId +
"|" +
1 +
"&activity_id=" +
this.activity_id +
"&gb_id=" +
this.gb_id,
success: function () {
//console.info('success');
},
fail: function () {
//console.info('fail');
},
complete: function () {
//console.info('complete');
},
});
},
groupBuying: function (e) {
var that = this,
gb_id = e.currentTarget.dataset.gb_id;
that.$.navigateTo({
url:
"/pages/checkout/checkout?single_activity=1&ifcart=0&cart_id=" +
that.proId +
"|" +
1 +
"&activity_id=" +
that.activity_id +
"&gb_id=" +
gb_id,
});
},
findOffered: function (activity_id) {
var that = this;
var params = {
activity_id: activity_id,
rows: 4,
};
that.setData({
GB_rows: [],
});
that.$.request({
url: this.Config.URL.user.listsGroupbooking,
data: params,
loading: false,
success: function (data, status, msg, code) {
if (200 == status && data.items.length > 0) {
intervalDate = setInterval(function () {
data.items.forEach(function (e) {
e.Time = {};
e.end_diff_time =
new Date(e.gb_endtime.replace(/-/g, "/")).getTime() -
new Date().getTime();
var n = e.end_diff_time - 1e3;
if (n < 0) {
e.Time.days = "00";
e.Time.hour = "00";
e.Time.min = "00";
e.Time.sec = "00";
} else {
e.Time.days = that.$.doubleNum(
Math.floor(n / 1e3 / 60 / 60 / 24)
);
e.Time.hour = that.$.doubleNum(
Math.floor((n / 1e3 / 60 / 60) % 24)
);
e.Time.min = that.$.doubleNum(
Math.floor((n / 1e3 / 60) % 60)
);
e.Time.sec = that.$.doubleNum(Math.floor((n / 1e3) % 60));
}
// e.Time = that.$.FormatTime(e.activity_endtime)
});
that.setData({
GB_rows: data.items,
});
}, 1e3);
} else {
that.setData({
/*flag: false,*/
ispage: false,
});
}
},
});
/* 拼团 that.$.xsr(that.$.makeUrl(fgapi.GetGoingGroupEventByEventId, {EventId: e}), function (e) {
e.Info.length > 0 && (intervalDate = setInterval(function () {
e.Info.forEach(function (e) {
e.Time = that.$.FormatTime(e.EventEndTimeStr)
}), that.setData({GB_rows: e.Info})
},
1e3))
})*/
},
lookall: function () {
this.isAll
? this.setData({
isAll: false,
})
: this.setData({
isAll: true,
});
},
userFGType: function (e, t) {
let that = this;
var n = {
OwnGroupId: e,
};
/* 加入拼团that.$.xsr(that.$.makeUrl(fgapi.IsUserJoinGroupEvnet, n), function (e) {
that.$.isNull(e) ? t() || "" : e.Code != 1 ? e.Info[0].IsSuccess ? that.$.alert("恭喜您已经参团成功!") : e.Info[0].IsPaySuccess ? that.$.alert("您已经参加过该团!") : that.$.alert("您已经参加过该团,请尽快支付!") : t() || ""
})*/
},
/*
doReceive: function () {
this.cancel(), this.userReceiveCoupon()
},*/
cancel: function () {
this.setData({
isCancel: false,
});
},
cancelsuccess: function () {
this.setData({
isCancelSuccess: true,
});
},
//优惠券一键领取
getCoupon() {
const counPonList = this.voucherList.filter((item) => {
if (item.if_gain) {
return item.activity_id;
}
});
if (counPonList.length == 0) {
this.voucherReceiveAllFlag = false;
}
const couponIds = counPonList.map((item) => item.activity_id);
couponIds.forEach((id, index) => {
this.addVoucher(id, index === couponIds.length - 1);
});
},
doReceive: function (e) {
var that = this;
if (e.currentTarget.dataset.isreceive == -1) {
return;
}
that.setData({
Id: e.currentTarget.dataset.id,
needed_point: e.currentTarget.dataset.point,
});
that.getUserReceiveCoupon();
},
getUserReceiveCoupon: function () {
var point = this.voucherList.needed_point,
that = this;
if (point > 0) {
that.$.confirm(
that.sprintf(that.__("确定消耗 %d 兑换优惠券?"), point),
function (e) {
if (e.confirm) {
that.addVoucher();
}
},
true
);
} else {
that.addVoucher();
}
},
addVoucher: function () {
var that = this;
var params = {
activity_id: this.Id,
Code: this.Code,
user_is_new: 0,
};
that.$.request({
url: this.Config.URL.user.voucher_add,
data: params,
success: function (data, status, msg, code) {
if (200 == status) {
that.$.alert(that.__("领取成功!"));
that.getCouponlist();
} else {
that.$.alert(msg);
}
},
});
},
gotoDetail: function (e) {
console.log(e);
var state = e.currentTarget.dataset.state;
var pid = e.currentTarget.dataset.pid;
this.$.navigateTo({
url: "/pages/product/detail?pid=" + pid,
});
},
ImgTap: function (e) {
var that = this,
n = [];
for (var r in this.ProductInfo.last_comment_row.comment_image)
n.push(this.ProductInfo.last_comment_row.comment_image[r]);
var i = e.target.dataset.src;
that.$.previewImage({
current: i,
urls: n,
});
},
previewProductImg: function (e) {
var that = this,
n = [];
for (var r in this.ProductInfo.productPicList) {
n.push(this.ProductInfo.productPicList[r].Path);
}
var i = e.target.dataset.src;
that.$.previewImage({
current: i,
urls: n,
});
},
goTabBar: function (e) {
var that = this;
that.$.goToTabBar(that, e.currentTarget.dataset.url);
},
cancelShare: function (e) {},
showCodeImg: function (e) {},
shareQRCode: function (e) {},
saveImg: function (e) {},
shareBox: function (e) {
// 如允许点击超链接跳转则应该打开一个新页面并传入href由新页面内嵌webview组件负责显示该链接内容
// #ifdef APP-PLUS
this.setData({
shareBoxFlag: 1,
shareContetnFlag: 1,
});
// #endif
// #ifdef MP-WEIXIN
this.setData({
PageQRCodeInfo: {
Path: "",
IsShare: true,
IsShareBox: true,
IsJT: false,
},
});
// #endif
},
//跳转门店列表
gochainlist: function (e) {
this.$.gotopage(
"/chain/chain/list?store_id=" +
e.currentTarget.dataset.store_id +
"&item_id=" +
e.currentTarget.dataset.item_id
);
},
/* 商品优惠券 */
getCouponlist: function () {
var params = {
store_id: this.store_info.store_id,
// item_id: this.skuid
},
that = this;
that.$.request({
url: this.Config.URL.point.voucher,
data: params,
loading: false,
success: function (data, status, msg, code) {
for (let i = 0; data.items.length > i; i++) {
data.items[i].activity_endtime = that.$.dateFormat(
data.items[i].activity_endtime,
"yyyy-MM-dd"
);
}
if (200 == status && data.items.length > 0) {
that.setData({
voucherList: data.items,
isVoucher: true,
});
const counPonList = that.voucherList.filter((item) => {
if (item.if_gain) {
return item.activity_id;
}
});
if (counPonList.length > 0) {
that.voucherReceiveAllFlag = false;
} else {
that.voucherReceiveAllFlag = true;
}
//判断是否显示
if (6 == that.tapindex) {
} else {
//判断是否显示代金券
if (
that.ProductInfo.product_detail ||
that.ProductInfo.product_extension ||
that.ProductInfo.product_param ||
that.ProductInfo.activityType == "GROUPBOOKING" ||
that.ProductInfo.product_service
) {
} else {
that.setData({
tapindex: 6,
});
}
}
} else {
that.setData({
isVoucher: false,
});
}
},
fail: function (data) {
that.setData({
isVoucher: false,
});
},
});
},
getStoreProdcutList: function () {
var that = this;
var params = {
store_id: this.ProductInfo.store_id,
};
// console.log(params)
that.$.request({
url: this.Config.URL.store.product,
data: params,
loading: false,
ajaxCache: {
timeout: this.Config.CACHE_EXPIRE,
},
success: function (data, status, msg, code) {
that.setData({
store_product_list: data.items,
store_product_num:
data.items.length >= 30
? data.items.length + "+"
: data.items.length, //在售商品
});
},
});
},
outertouch: function () {
this.setData({
virtual_flag: true,
});
},
innertouch: function () {
this.setData({
virtual_flag: false,
});
},
tplGoToPage: function (e) {
let that = this;
if (!this.hasLogin) {
this.showLoginPopup = true;
return;
}
//先判断是否登录
this.forceUserInfo(function (user) {
var t = e.currentTarget.dataset;
//that.$.gopage(t.appurl);
that.$.request({
url: that.Config.URL.user.kefu_config,
data: {
user_id: that.store_info.user_id,
store_id: that.store_info.store_id,
},
loading: false,
success: function (rd, r_status, r_msg, code) {
if (r_status == 200) {
let chat_url = that.$.sprintf(
"/im/chat/chat?uid=%s&item_id=%s",
rd.friend_id,
that.skuid
);
that.setData({
chatUrl: chat_url,
});
that.$.gopage(chat_url);
} else {
that.$.alert(r_msg);
}
},
});
});
return;
switch (parseInt(t.type)) {
case 1:
that.$.gopage("/pages/product/detail?pid=" + t.id);
break;
case 2:
that.$.gopage(
"/pages/product/list?store_category_id=" +
(t.id || 0) +
"&cname=" +
t.name
);
break;
case 3:
that.$.gopage("/pages/product/list?pname=" + t.keyword);
break;
case 4:
that.$.gopage(t.appurl);
break;
case 5:
that.$.gopage(t.appurl);
break;
case 6:
that.$.gopage(t.appurl);
break;
case 7:
that.$.navigateToMiniProgram({
appId: t.appid,
path: t.appurl,
});
break;
case 8:
that.$.gopage("/pagesub/diy-page/diy-page?id=" + t.id);
break;
case 9:
that.$.gopage(
"/pagesub/webpage/webpage?u=" +
encodeURIComponent(t.appurl) +
"&tn=" +
t.name +
"&tc=" +
t.appid +
"&tb=" +
t.keyword
);
break;
case 10:
that.$.gopage(
"/pagesub/webpage/web?u=" +
encodeURIComponent(t.appurl) +
"&tn=" +
t.name +
"&tc=" +
t.appid +
"&tb=" +
t.keyword
);
}
},
closeNativeShare: function () {
var that = this;
that.setData({
shareContetnFlag: 0,
flag: false,
});
setTimeout(function () {
that.setData({
shareBoxFlag: 0,
});
}, 1e2);
},
scrolltoupper: function (t) {
this.old.scposition = t.detail.scrollTop;
t.detail.scrollTop >= this.screenHeight
? this.setData({
isquicknav: true,
})
: this.setData({
isquicknav: false,
});
},
onMenu: function (t) {
this.$refs.headerNavMenu.showBoxView =
!this.$refs.headerNavMenu.showBoxView;
},
onShareBox: function (e) {
let that = this;
var $href = that.$.sprintf(
"%s/tmpl/product_detail.html?item_id=%d&FX=%d",
this.Config.WapSiteUrl,
this.skuid,
this.userInfo.user_id
);
$href = that.$.sprintf(
"%s/h5/pages/product/detail?pid=%d&uid=%d",
that.Config.SiteUrl,
this.proId,
this.userInfo.user_id
);
// 如允许点击超链接跳转则应该打开一个新页面并传入href由新页面内嵌webview组件负责显示该链接内容
// #ifdef APP-PLUS
// #endif
// #ifdef MP-WEIXIN
$href = that.$.sprintf(
"%s/pages/product/detail?pid=%d&uid=%d",
this.Config.WapSiteUrl,
this.proId,
this.userInfo.user_id
);
// #endif
this.setData({
shareData: {
shareTitle: this.pname,
shareText: this.desc,
href: $href,
image: this.ProductInfo.productPicList[0].Path,
price: this.number_format(this.ProductInfo.ItemSalePrice, 2),
},
});
// 如允许点击超链接跳转则应该打开一个新页面并传入href由新页面内嵌webview组件负责显示该链接内容
// #ifdef APP-PLUS
this.$refs.shareBoxApp.show();
// #endif
//海报
if (e == 3) {
// #ifndef APP-PLUS
this.$refs.shareBoxMp.show();
// #endif
} else {
// #ifdef H5
if (that.$.ifUniApp()) {
this.$refs.shareBoxH5.show();
} else {
this.$refs.shareBoxMp.show();
}
// #endif
// #ifdef MP-WEIXIN
this.$refs.shareBoxMp.show();
// #endif
}
},
onReturnTop: function () {
let that = this;
// 清除上一次的定时器
if (that.timer !== null) {
clearInterval(that.timer);
}
that.setData({
scposition: this.old.scposition,
});
that.timer = setInterval(function () {
let speed = that.scposition / 4;
speed = Math.ceil(speed);
if (that.scposition <= 0 || !that.scposition) {
clearInterval(that.timer);
}
that.scposition = that.scposition - speed;
}, 30);
},
scrollbottom: function () {
if (this.flag) {
var e = this;
e.setData({
flag: false,
}),
clearTimeout(t);
var t = setTimeout(function () {
e.setData({
type: e.type,
page: parseInt(e.page) + 1,
rows: 10,
}),
e.getNearChain();
}, 500);
}
},
// 三级联动选择
onSelectAddress(e) {
this.$refs.mpvueCityPicker.show();
},
onCancel(e) {
//console.log(e)
},
onConfirm(e) {
let that = this;
let district_info = that.$.isNull(e.label.toString())
? that.__("请选择地址")
: e.label.toString();
let product_freight_info = this.product_freight_info;
product_freight_info.district_info = district_info;
let item_row = this.ProductInfo;
this.setData({
product_freight_info: product_freight_info,
});
var params = {
item_id: this.proId,
district_id: e.value[1],
};
//
//存入本地
uni.setStorageSync("district_id", params.district_id);
that.$.request({
url: this.Config.URL.product.shipping_district,
data: params,
success: function (data, status, msg, code) {
if (200 == status) {
item_row.ifStore = data.product_freight_info.if_store;
that.setData({
product_freight_info: data.product_freight_info,
ProductInfo: item_row,
});
}
},
});
},
showActivityDetail(e) {
var that = this;
that.activity_type_id = e;
that.$refs.popup.open();
},
showCouponDetail() {
var that = this;
that.$refs.popup2.open();
},
goGiftBag() {
var that = this;
uni.navigateTo({
url: "/activity/giftbag/detail?aid=" + that.ProductInfo.activity_id,
});
},
closeLoginPopup() {
this.showLoginPopup = false;
},
},
};
</script>
<style lang="scss">
@import "../../styles/_variables.scss";
.page-body {
padding: 40rpx;
button {
margin: 20rpx 20rpx;
}
.m-panel-sp-icon {
position: absolute;
right: 20rpx;
top: 10rpx;
color: #888;
}
}
.discuss-evaluate {
background: #fff;
margin-top: 10rpx;
.discuss-evaluate-top {
position: relative;
height: 70rpx;
background: rgba(255, 255, 255, 1);
margin-top: 24rpx;
margin-left: 30rpx;
padding-top: 10rpx;
}
}
.discuss-item {
.user-evaluate-center {
height: 200rpx;
border-bottom: 1px dotted #ccc;
.user-text {
height: auto;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin-right: 20rpx;
text-indent: 1em;
}
.user-no-text {
text-align: center;
}
}
}
.m-banner-ad {
width: 750rpx;
height: 750rpx;
position: relative;
background-color: #fff;
}
.m-banner-ad swiper {
width: 100%;
height: 100%;
}
.slide-image {
width: 100%;
height: 100%;
}
.m-detail {
/*min-height: 500rpx;*/
}
.m-info-box {
font-size: 32rpx;
}
.m-cells {
margin-top: 20rpx;
background: transparent;
border-radius: 12rpx;
.m-cell {
background: #ffffff;
padding: 24rpx 24rpx;
margin-bottom: 20rpx;
border-radius: 12rpx;
}
}
.m-info-box label {
color: $default-skin-bg;
display: block;
font-size: 28rpx;
}
.m-info-price {
color: $secondary-skin-color;
font-size: 48rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
line-height: 66rpx;
span {
padding: 0 8rpx;
}
}
.m-info-price text {
font-size: 12px;
font-family: PingFangSC-Light, PingFang SC;
font-weight: 300;
//color: #888888;
line-height: 40rpx;
}
.m-info-delprice {
color: #888;
margin-left: 10rpx;
text-decoration: line-through;
position: relative;
}
/*优惠券样式 start*/
.m-coupon-list {
margin-top: 36rpx;
}
.m-coupon-item {
width: 700rpx;
height: 192rpx;
margin: 10rpx auto;
background: url(https://static.lancerdt.com/xcxfile/appicon/Coupon_V2.png)
no-repeat;
background-size: contain;
box-sizing: border-box;
padding: 12rpx;
}
.m-coupon-info {
float: left;
width: 486rpx;
margin-left: 30rpx;
margin-top: 9.5rpx;
}
.m-coupon-btn {
float: left;
width: 110rpx;
margin-left: 30rpx;
line-height: 36rpx;
text-align: center;
font-size: 24rpx;
color: #fff;
}
.btn-coupon {
display: inline-block;
width: 28rpx;
}
.btn-coupon-gray {
//color: #888;
}
.m-coupon-text {
float: left;
width: 300rpx;
}
.m-coupon-text label {
display: inline-block;
color: #333;
font-size: 28rpx;
width: 250rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
line-height: 32rpx;
}
.m-coupon-text text {
display: inline-block;
width: 350rpx;
font-size: 24rpx;
color: #888;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
line-height: 32rpx;
}
.m-coupon-price {
float: left;
height: 132rpx;
color: $default-skin-bg;
font-weight: bold;
line-height: 132rpx;
width: 180rpx;
position: relative;
font-size: 75rpx;
}
.price-content-box {
position: absolute;
left: -35rpx;
text-align: center;
width: 280rpx;
font-size: 40rpx;
}
.price-content-box label {
font-size: 32rpx;
}
/*优惠券样式 end*/
.dis {
display: flex;
justify-content: flex-end;
/*width: 360rpx;*/
flex: 1;
float: right;
line-height: 74rpx;
}
.dis .num {
font-size: 24rpx;
font-weight: bold;
color: #717171;
padding-right: 20rpx;
text-align: right;
}
.selled {
display: flex;
justify-content: flex-end;
width: 180rpx;
float: right;
line-height: 74rpx;
flex: 1;
}
.selled .num {
font-size: 24rpx;
color: #717171;
padding-right: 20rpx;
text-align: right;
}
.m-info-tip {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #888888;
//line-height: 60rpx;
}
.m-info-sp {
font-size: 28rpx;
}
.m-info-sp label {
margin-left: 20rpx;
}
.m-comment .m-media-box-title {
font-size: 28rpx;
}
.m-comment .m-media-box-hd {
border-radius: 100%;
overflow: hidden;
vertical-align: top;
}
.m-start label {
font-size: 24rpx;
}
.m-media-box-info-meta {
padding-right: 5rpx;
}
.sel {
color: $default-skin-bg;
font-size: 24rpx;
}
.m-tiem {
float: right;
}
.m-panel-hd label {
float: right;
}
.m-panel-hd text {
color: $default-skin-bg;
margin-left: 10rpx;
}
.m-comment .m-media-box-info-meta {
font-size: 24rpx;
font-weight: 100;
}
.g-flex-item {
font-size: 28rpx;
padding: 10rpx;
border-top: 1rpx solid #d5d5d5;
border-right: 1rpx solid #d5d5d5;
}
.m-Packinglist {
font-size: 28rpx;
padding: 20rpx;
}
/*底部按钮 start*/
.m-footer-btn {
width: 94%;
padding: 0rpx 24rpx;
position: fixed;
bottom: 0;
left: 0;
background-color: #fff;
text-align: center;
z-index: 3;
display: flex;
flex-direction: row;
align-items: center;
border-top: 2rpx solid #eeeeee;
.iconfont {
font-size: 20px;
font-weight: 600;
}
}
.m-footer-btn-list {
/*width: 50%;*/
height: 100%;
position: relative;
float: left;
display: flex;
flex-direction: row;
}
.m-footer-btn-list::before {
// content: " ";
position: absolute;
left: 0;
top: -2rpx;
right: 0;
height: 2rpx;
border-bottom: 2rpx solid #d5d5d5;
color: #cccccc;
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
// z-index: 3;
}
.m-footer-btn-item {
position: relative;
float: left;
width: 110rpx;
font-size: 24rpx;
color: #888;
line-height: 40rpx;
padding: 8rpx 0;
// border-right: 1rpx solid #d5d5d5;
box-sizing: border-box;
flex: 1;
}
.no_goods {
.no_shadow {
height: 100%;
width: 100%;
position: absolute;
z-index: 11;
opacity: 0.7;
background-color: #b2b2b2;
}
.no_goods_tip {
height: 100%;
width: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 12;
text-align: center;
height: 120rpx;
line-height: 120rpx;
}
position: absolute;
z-index: 10;
height: 120rpx;
line-height: 120rpx;
color: #fff;
font-size: 26rpx;
width: 100%;
bottom: 0;
left: 0;
width: 100%;
}
.m-footer-btn-item:last-child {
border: none;
}
.m-footer-btn-icon {
width: 50rpx;
height: 50rpx;
line-height: 50rpx;
margin: 0 auto;
position: relative;
}
.m-footer-btn-item image {
width: 40rpx;
height: 40rpx;
}
.m-footer-btn-item contact-button {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
opacity: 0;
}
.m-footer-btn-main {
width: 25%;
// height: 100%;
float: left;
background-color: #ff9402;
color: #fff;
height: 48px;
line-height: 92rpx;
font-weight: 500;
font-size: 32rpx;
flex: 1;
border-radius: 18rpx;
}
.m-footer-desable {
-webkit-filter: grayscale(1);
filter: grayscale(1);
}
.m-now {
background-color: #ff0136;
}
/*底部按钮 end*/
/*选择规格遮罩 start*/
.m-panel-sp {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 4;
background-color: rgba(0, 0, 0, 0.2);
}
.m-panel-sp-content {
background-color: #fff;
position: absolute;
width: 100%;
bottom: 0;
box-shadow: 0px -10rpx 15rpx rgba(0, 0, 0, 0.35);
border-radius: 20rpx;
}
.m-panel-sp-pinfo {
height: 170rpx;
box-sizing: border-box;
padding: 20rpx;
position: relative;
padding-bottom: 0;
}
.m-panel-sp-pimg {
width: 200rpx;
height: 200rpx;
position: absolute;
top: -50rpx;
background-color: #fff;
border-radius: 8rpx;
box-sizing: border-box;
padding: 10rpx;
box-shadow: 0px 0rpx 10rpx rgba(0, 0, 0, 0.35);
float: left;
}
.m-panel-sp-pimg image {
width: 100%;
height: 100%;
}
.m-panel-sp-pname {
float: left;
margin-left: 216rpx;
font-size: 28rpx;
line-height: 40rpx;
margin-top: 6rpx;
}
.m-panel-sp-pname .m-pprice {
color: $default-skin-bg;
font-size: 32rpx;
line-height: 50rpx;
font-weight: bold;
display: inline;
}
.m-panel-sp-icon {
position: absolute;
right: 10rpx;
top: 10rpx;
z-index: 9999;
}
/* .m-panel-sp-listbox{height: 604rpx;} */
.m-panel-sp-listbox-item {
//border-top: 1rpx solid #d5d5d5;
box-sizing: border-box;
padding: 10rpx 20rpx;
}
.m-panel-sp-listbox-item .m-cells-title {
color: black;
padding-left: 0;
}
.m-panel-sp-labellist {
}
.m-panel-sp-labellist label {
display: inline-block;
font-size: 24rpx;
padding: 10rpx 15rpx;
border-radius: 8rpx;
margin: 10rpx;
color: #888;
border: 1rpx solid #d5d5d5;
}
/* for b2b */
.m-panel-sp-labellist1 label {
display: block;
font-size: 24rpx;
padding: 10rpx 15rpx;
border-radius: 8rpx;
margin: 10rpx;
color: #888;
border: 1rpx solid #d5d5d5;
float: left;
/*width: 8%;*/
text-align: center;
margin-top: 13px;
margin-bottom: 25px;
}
.m-panel-sp-sellabel-no {
/*
color: #d5d5d5 !important;
border: 1rpx solid #d5d5d5 !important;
*/
float: left !important;
// position: absolute;
left: 20%;
top: 9.3%;
}
.uni-numbox {
// margin-left: 64%;
display: inline-flex;
height: 100% !important;
width: 100%;
}
.uni-numbox__plus {
height: 100%;
}
.m-panel-sp-labellist2 {
display: none;
}
.m-panel-sp-sellabel1 {
display: none !important;
}
.m-ys {
float: left;
height: 35px;
line-height: 35px;
overflow: hidden;
width: 100%;
border-radius: 5px;
margin: 5px;
}
/* end for b2b */
.product-info {
.m-panel-sp-sellabel {
border: 0 !important;
color: #888 !important;
margin: 0 5px;
padding: 0;
font-size: 14px;
}
}
.activity-fixtop {
padding-top: 1px !important;
}
.m-panel-sp-sellabel {
color: $default-skin-bg !important;
border: 1rpx solid $default-skin-bg !important;
}
.m-panel-sp-sellabel-b2b {
color: #888 !important;
border: 1px solid #d5d5d5 !important;
}
.m-panel-sp-sellabel-b2b-h {
color: $default-skin-bg !important;
border: 1rpx solid $default-skin-bg !important;
}
.m-m-panel-sp-btn {
height: 80rpx;
//width: 100%;
width: 94%;
position: absolute;
bottom: 0;
left: 0;
background-color: #fff;
bottom: 0;
bottom: constant(safe-area-inset-bottom);
bottom: env(safe-area-inset-bottom);
padding: 24rpx;
display: flex;
}
.m-m-panel-sp-lbtn {
float: left;
width: 50%;
//border-top: 1rpx solid #d5d5d5;
border: 2rpx solid $default-skin-bg;
border-right: 0;
text-align: center;
border-radius: 9px 0px 0px 9px;
display: flex;
line-height: 76rpx;
height: 76rpx;
}
.m-m-panel-sp-rbtn {
width: 50%;
float: left;
background-color: $default-skin-bg;
line-height: 80rpx;
font-size: 32rpx;
color: #fff;
text-align: center;
font-weight: 500;
}
/*选择规格遮罩 end*/
.m-null-product {
color: #888;
font-size: 32rpx;
text-align: center;
position: absolute;
top: 50%;
left: 50%;
margin-left: -80rpx;
margin-top: -76rpx;
}
.m-null-product label {
font-size: 100rpx;
}
.m-navbar {
background-color: transparent;
}
.m-navbar-item {
padding: 20rpx 0;
font-size: 14px;
}
.m-navbar-item:after {
border: none;
}
.m-navbar-item.m-navbar-item-on {
background-color: transparent;
//background-color: #fff;
//color: $default-skin-bg;
}
.m-navbar-item.m-navbar-item-on::before {
content: " ";
position: absolute;
left: 0;
bottom: 0;
right: 0;
height: 6rpx;
//border-bottom: 6rpx solid $default-skin-bg;
color: #cccccc;
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
z-index: 3;
}
/*拼团*/
.progressBarBox {
float: right;
color: #888;
font-size: 24rpx;
margin-right: 20rpx;
font-weight: 200;
line-height: 64rpx;
}
.progressBarBox label {
color: #333;
font-weight: 200;
font-size: 24rpx;
}
.m-FGB-time {
display: inline-block;
background-color: #666666;
padding: 5rpx;
color: #fff !important;
border-radius: 4rpx;
min-width: 28rpx;
height: 28rpx;
line-height: 28rpx;
text-align: center;
}
.m-FGB-time-tip {
margin: 0 4rpx;
}
.m-fightGroupsBox .m-media-box-bd {
font-size: 24rpx;
color: #888;
padding: 10rpx 30rpx;
line-height: 40rpx;
}
.u-fg {
font-size: 32rpx;
line-height: 40rpx;
box-sizing: border-box;
padding: 10rpx;
}
.u-fg view:first-child {
font-size: 24rpx;
}
.m-fg-btn .m-footer-btn-list {
width: 30%;
}
.m-fg-btn .m-footer-btn-main {
width: 35%;
}
.m-fg-comment {
margin-bottom: 20rpx;
margin-top: 0px;
}
.m-fg-comment .m-media-box {
padding: 24rpx 15rpx;
}
.m-fg-comment .m-media-box-bd {
line-height: 50rpx;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.m-media-box-title-tip {
color: $default-skin-bg;
font-size: 24rpx !important;
}
.m-media-box-desc-tip {
color: #333;
font-size: 24rpx;
}
.m-media-box-bd .u-btn {
padding: 0;
margin: 0 20rpx;
width: 160rpx;
float: right;
font-size: 24rpx;
line-height: 50rpx;
margin-top: 10rpx;
}
.m-fg-comment .m-media-box-hd {
margin-right: 10rpx;
width: 80rpx;
height: 80rpx;
}
.m-media-box-bd-tip {
text-align: center;
}
.m-price-tip {
padding: 5rpx 10rpx;
color: #fff !important;
background-color: $default-skin-bg;
display: inline-block !important;
font-weight: 200;
font-size: 24rpx !important;
position: relative;
margin-left: 10rpx;
border-radius: 4rpx;
top: -10rpx;
}
.m-price-tip::after {
position: absolute;
content: "";
border: solid 10rpx $default-skin-bg;
border-color: transparent $default-skin-bg transparent transparent;
left: -15rpx;
top: 50%;
margin-top: -10rpx;
}
.progressBarBox-content {
width: 160rpx;
height: 15rpx;
background-color: #d5d5d5;
border-radius: 20rpx;
}
.progressBarBox-content label {
height: 15rpx;
background-color: #ffc001;
border-radius: 20rpx;
}
.progressBarBox-text {
text-align: center;
}
.progressBarBox-text text {
font-size: 24rpx !important;
font-weight: 200;
}
/*拼团*/
/*当前拼团*/
.currentFG {
padding: 20rpx;
background-color: #fff;
margin-top: 20rpx;
text-align: center;
}
.currentFG-item {
display: inline-block;
width: 100rpx;
height: 100rpx;
border-radius: 100%;
overflow: hidden;
}
.currentFG-item image {
width: 100%;
height: 100%;
}
/*当前拼团*/
.u-tap-btn {
position: fixed;
right: 20rpx;
bottom: 150rpx;
z-index: 3;
}
.u-go-home {
border-radius: 100%;
width: 80rpx;
height: 80rpx;
border: 1px solid #eee;
font-size: 20rpx;
text-align: center;
background-color: #fff;
box-shadow: 0px 4rpx 8rpx rgba(0, 0, 0, 0.35);
z-index: 2;
opacity: 0.8;
line-height: 80rpx;
margin-bottom: 20rpx;
}
.u-go-home .iconfont {
font-size: 40rpx;
}
.m-media-list {
float: left;
width: 100%;
}
.m-media-list image {
width: 115rpx;
height: 115rpx;
box-sizing: border-box;
margin: 10rpx;
border: 1rpx solid #eee;
}
.m-media-box-appmsg {
align-items: initial;
}
.wxParse-p image {
vertical-align: top;
}
.video {
position: absolute;
bottom: 40rpx;
left: 44%;
}
.seckill {
display: flex;
height: 120rpx;
color: #fff;
background: linear-gradient(270deg, #db384c 0%, #ff7495 100%);
border-radius: 11px 11px 0 0;
position: relative;
//bottom: -11px;
//padding-bottom: 11px;
}
.seckill-left {
width: 70%;
padding-left: 20rpx;
//background: #ff0136;
display: flex;
flex-flow: column;
margin: auto;
}
.seckill-right {
width: 35%;
//background: rgb(254, 234, 233);
display: flex;
//align-items: center;
justify-content: center;
flex-flow: column;
text-align: right;
padding-right: 20rpx;
margin-top: 10rpx;
image {
width: 166rpx;
height: 44rpx;
}
}
.seckill-left .discountPrice {
margin-top: 2rpx;
text.m-info-delprice {
font-size: 12px;
color: #fff;
}
}
.seckill-left .discountPrice text {
font-size: 56rpx;
}
.seckill-left .Price {
display: flex;
margin-bottom: 10rpx;
}
.seckill-left .Price image {
width: 166rpx;
height: 44rpx;
}
.seckill-left .Price view {
text-decoration: line-through;
margin-left: 20rpx;
font-size: 28rpx;
display: flex;
align-items: center;
}
.seckill-right .endTime {
//color: #ff0136;
margin-bottom: 16rpx;
}
.seckill-right .Time {
font-size: 12px;
padding-top: 4rpx;
}
.seckill-right .time {
//padding: 8rpx 8rpx;
font-size: 14px;
border-radius: 10rpx;
//background: #ff0136
}
.seckill-right .time-tip {
//color: #ff0136;
//margin: 0 6rpx
}
// 拼团信息
.groupbooking {
display: flex;
height: 140rpx;
color: #fff;
background: linear-gradient(270deg, #ff3055 0%, #ff564e 100%);
height: 160rpx;
.m-info-price {
color: $secondary-skin-color;
font-size: 48rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
span {
padding: 0 8rpx;
}
}
.m-info-price text {
font-size: 28rpx;
font-weight: 300;
}
.progressBarBox {
position: relative;
bottom: 0rpx;
left: 140rpx;
}
}
.groupbooking .label .userLimt {
background-color: #fff;
padding: 20rpx 30rpx;
width: 80rpx;
height: 22rpx;
border-radius: 100rpx;
font-size: 22rpx;
font-weight: bold;
display: flex;
color: $default-skin-bg;
justify-content: center;
align-items: center;
position: relative;
left: 200rpx;
bottom: 65rpx;
}
.groupbooking .label {
color: #fff;
margin: 10rpx;
}
.groupbooking .endlabel {
color: #febea1;
}
.groupbooking .m-info-delprice {
color: #ffb2b2;
position: relative;
top: 40rpx;
right: 180rpx;
font-size: 24rpx;
}
.groupbooking-name {
background: #fff;
height: 100rpx;
padding: 20rpx;
margin-bottom: 20rpx;
}
.groupbooking-rule {
background: #fff;
padding: 20rpx;
margin-bottom: 20rpx;
font-size: 30rpx;
.groupbooking-rule-title {
padding: 10rpx;
display: flex;
align-items: center;
}
.red-dot {
content: "";
width: 6rpx;
height: 32rpx;
background-color: red;
margin-right: 8px;
}
.groupbooking-rule-line {
border-bottom: 2rpx solid #eee;
}
.flex-container {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx;
}
.flex-item {
text-align: center;
}
.arrow {
display: flex;
align-items: center;
}
.flex-item-img {
width: 50rpx;
height: 50rpx;
}
.right-arrow {
width: 40rpx;
height: 40rpx;
}
}
/* 店铺信息 */
.goods-detail-store .store_name {
font-size: 32rpx;
color: #333;
}
.m-cells::after {
height: 0;
border-bottom: 0;
}
.goods-detail-store label {
font-size: 44rpx;
float: left;
line-height: 48rpx;
}
.goods-detail-store label.icon-mall {
color: #f30213;
font-size: 32rpx !important;
margin: auto 6rpx;
}
.goods-detail-store .store-rate {
margin: 6rpx 30rpx 0rpx;
}
.goods-detail-store .store-rate label {
display: inline-block;
width: 33.33%;
height: 80rpx;
font-size: 26rpx;
line-height: 80rpx;
color: #999999;
padding: auto 60rpx;
}
.goods-detail-store .store-rate label view {
display: inline-block;
vertical-align: middle;
font-size: 26rpx;
font-weight: 600;
}
.goods-detail-store .store-rate label i {
display: inline-block;
vertical-align: middle;
width: 0.7rem;
height: 0.7rem;
font-size: 0.45rem;
line-height: 0.7rem;
font-style: normal;
text-align: center;
border-radius: 0.1rem;
}
.goods-detail-store .store-rate label.equal view,
.goods-detail-store .store-rate label.high view {
margin-left: 4rpx;
color: #f30213;
}
.goods-detail-store .store-rate label.equal i,
.goods-detail-store .store-rate label.high i {
color: #fff;
background-color: #f30213;
}
.goods-detail-store .store-rate label.low view {
color: #48cfae;
}
.goods-detail-store .store-rate label.low i {
color: #fff;
background-color: #48cfae;
}
/* share */
.textarea-wrp {
padding: 0 20rpx;
}
.page-section {
margin-bottom: 20rpx;
}
.textarea {
border: 2rpx solid #d8d8d8;
padding: 10rpx;
height: 90rpx;
width: 690rpx;
}
.uni-input {
border: 2rpx solid #d8d8d8;
padding: 0 10rpx;
width: 690rpx;
}
.uni-uploader-body {
display: flex;
justify-content: center;
}
radio-group {
box-sizing: border-box;
width: 100%;
padding: 0 30rpx;
display: flex;
justify-content: space-between;
}
.item_disabled {
background-color: #ddd !important;
cursor: not-allowed;
}
.m-footer-btn-icon .uni-badge {
position: absolute;
z-index: 9;
margin-left: -4rpx;
margin-top: -10rpx;
}
/* */
.u-p-opt {
position: absolute;
right: 20rpx;
bottom: 110rpx;
}
.navtext {
margin-bottom: 20rpx;
}
.quicknav {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
border: 1rpx solid #eee;
.iconfont {
text-align: center;
vertical-align: middle;
line-height: 80rpx;
height: 80rpx;
font-size: 40rpx;
}
.iconfont.zc {
text-align: center;
vertical-align: middle;
line-height: 80rpx;
height: 80rpx;
font-size: 40rpx;
color: #7a7a7a;
}
}
.u-p-opt .navtext:first-child {
}
.u-p-opt .navtext:last-child {
margin-bottom: 0rpx;
}
/* 修正"app-plus": {
"titleNView": {
"type": "transparent"
scroll view 问题
*/
.fix-titlenview-trans {
height: calc(100% + 88rpx);
}
/* near chain*/
.m-nearbylist label {
font-size: 26rpx;
}
.list-box {
background-color: #fff;
color: #333;
}
.item-box {
padding: 20rpx;
border-bottom: 1rpx solid #eee;
}
.flex-box {
display: flex;
align-items: center;
position: relative;
}
.flex-shop {
width: 30rpx;
height: 30rpx;
}
.m-imfo-sp-selext-name {
margin-left: 25rpx;
max-width: 60%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
}
.flex-title {
font-size: 30rpx;
margin-left: 10rpx;
max-width: 75%;
overflow: hidden;
height: 40rpx;
text-overflow: ellipsis;
white-space: nowrap;
}
.flex-postion {
display: flex;
align-items: center;
position: absolute;
right: 0;
}
.flex-postion image {
width: 20rpx;
height: 26rpx;
}
.flex-postion label {
font-size: 24rpx;
color: #9b9b9b;
margin-left: 10rpx;
}
.m-nearbylist {
position: absolute;
width: 100%;
height: 100%;
}
.flex-info {
display: flex;
flex-direction: column;
justify-content: center;
}
.flex-info view {
margin: 10rpx 0 0 0;
font-size: 28rpx;
}
.flex-info-box {
display: flex;
align-items: flex-start;
}
.flex-info label {
display: inline-block;
vertical-align: top;
word-wrap: break-word;
width: 520rpx;
}
.flex-info image {
width: 40rpx;
height: 40rpx;
position: absolute;
right: 10rpx;
}
.flex-info-title {
flex-basis: 145rpx;
}
.open_ba {
width: 80%;
margin: 0 auto;
}
.open_dl {
width: 34%;
height: 79rpx;
background: #33cc66;
border-radius: 20rpx;
text-align: center;
color: #fff;
margin: 79rpx auto 0 auto;
line-height: 75rpx;
}
.nearbylist-item {
padding: 20rpx 30rpx;
border-bottom: 1px solid #eee;
background: white;
}
.nearbylist-item:last-child {
border: none;
}
.item-info {
position: relative;
font-size: 28rpx;
}
.item-name {
display: inline-block;
font-size: 30rpx;
}
.item-phone {
line-height: 45rpx;
display: flex;
align-items: center;
}
.item-distance {
float: right;
font-size: 26rpx;
color: #bbb;
}
.item-address {
position: relative;
font-size: 26rpx;
color: #bbb;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
margin-right: 40rpx;
line-height: 40rpx;
}
.item-info::after {
content: " ";
display: inline-block;
height: 12rpx;
width: 12rpx;
border-width: 4rpx 4rpx 0 0;
border-color: #ebebe7;
border-style: solid;
-webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
top: -4rpx;
position: absolute;
top: 72%;
right: 4rpx;
padding: 3rpx;
}
.m-nearbylist {
height: 100%;
position: absolute;
}
.tag-view {
/* #ifndef APP-PLUS-NVUE */
display: inline-flex;
/* #endif */
flex-direction: column;
margin: 10rpx 15rpx;
justify-content: center;
}
.evaluate {
height: 360rpx;
background: rgba(255, 255, 255, 1);
margin-bottom: 10px;
border-radius: 6px;
}
.evaluate-top {
position: relative;
height: 80rpx;
background: rgba(255, 255, 255, 1);
padding-top: 20rpx;
margin-left: 30rpx;
}
.right {
width: 150rpx;
height: 24rpx;
font-size: 26rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: $main-skin-color;
margin-right: 8rpx;
}
.evaluate-right {
position: absolute;
margin-top: -52rpx;
right: 56rpx;
&:after {
content: " ";
display: inline-block;
height: 12rpx;
width: 12rpx;
border-width: 4rpx 4rpx 0 0;
border-color: #999999;
border-style: solid;
-webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
position: relative;
top: -4rpx;
position: absolute;
top: 50%;
margin-top: -8rpx;
/*right: 4rpx;*/
}
}
.evaluate-bottom {
background: rgba(255, 255, 255, 1);
//position: absolute;
//margin-top: 80rpx;
}
.uesr-evaluate {
width: 644rpx;
height: 200rpx;
// background:rgba(244,244,244,1);
border-radius: 8rpx;
float: left;
padding-top: 20rpx;
padding-left: 30rpx;
}
.uesr-evaluate-center {
width: 100%;
height: 200rpx;
background: rgba(244, 244, 244, 1);
border-radius: 0rpx 8rpx 8rpx 0rpx;
float: left;
}
.more-items {
}
.more-items-title {
width: 100%;
height: 100rpx;
background: rgba(244, 244, 244, 1);
}
.uesr-evaluate-image {
width: 200rpx;
height: 200rpx;
border-radius: 0rpx 8rpx 8rpx 0rpx;
background: rgba(255, 255, 255, 1);
float: left;
}
.center-top {
width: 360rpx;
height: 60rpx;
// background:rgba(255,255,255,1);
margin: 20rpx 20rpx;
text-align: left;
}
.user-image {
width: 60rpx;
height: 60rpx;
background: rgba(244, 244, 244, 1);
border-radius: 50%;
float: left;
}
.user-name {
width: 176rpx;
height: 24rpx;
font-size: 26rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: rgba(153, 153, 153, 1);
margin: 0 20rpx;
overflow: hidden;
}
.user-text {
/* width:360rpx; */
height: 80rpx;
// background:rgba(255,255,255,1);
margin-left: 20rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.user-text label {
width: 360rpx;
height: 80rpx;
font-size: 32rpx;
font-family: Alibaba PuHuiTi;
line-height: 22rpx;
font-weight: 400;
color: rgba(51, 51, 51, 1);
word-wrap: break-word;
word-break: normal;
}
.p-adds {
width: 750rpx;
height: 100rpx;
background: rgba(255, 255, 255, 1);
margin-top: 20rpx;
}
.p-adds-left {
width: 100rpx;
height: 100rpx;
float: left;
}
.p-adds-left label {
width: 60rpx;
height: 25rpx;
font-size: 26rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: rgba(153, 153, 153, 1);
position: absolute;
margin-left: 30rpx;
margin-top: 30rpx;
}
.p-adds-right {
width: 600rpx;
height: 100rpx;
float: right;
}
.p-adds-right label {
position: absolute;
margin-top: 30rpx;
font-size: 26rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: rgba(51, 51, 51, 1);
}
.evaluate-top .left {
width: 228rpx;
height: 31rpx;
font-size: 32rpx;
font-family: Alibaba PuHuiTi;
font-weight: 500;
color: rgba(51, 51, 51, 1);
}
.m-store {
//width: 100%;
//height: 460rpx;
background: rgba(255, 255, 255, 1);
margin-bottom: 20rpx;
border-radius: 6px;
}
.is-rest{
position: fixed;
height: 10%;
width: 100%;
bottom: 0;
&::before{
content: "门店已打烊";
position: absolute;
bottom: 0;
height: 100%;
width: 100%;
text-align: center;
line-height: 100rpx;
background-color: rgba(0, 0, 0, 0.7);
color: #fff;
}
}
.m-store-info {
position: relative;
//width: 750rpx;
height: 120rpx;
background: rgba(255, 255, 255, 1);
padding: 24rpx;
padding-left: 0px;
padding-bottom: 0px;
background: #ffffff;
border-radius: 12rpx;
.info-brand {
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #888888;
line-height: 40rpx;
padding: 20rpx 0;
label {
padding: 0 20rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #222222;
}
}
.m-store-name {
padding: 0 30rpx;
.m-name {
font-size: 32rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #222222;
line-height: 44rpx;
}
.m-quantity {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #555555;
line-height: 40rpx;
padding: 6rpx 0;
}
}
}
.m-store-radi {
width: 80rpx;
height: 80rpx;
background: linear-gradient(
45deg,
rgba(105, 178, 25, 1),
rgba(121, 202, 32, 1)
);
border-radius: 50%;
position: absolute;
margin: 20rpx 30rpx;
}
.m-store-radi label {
width: 58rpx;
height: 28rpx;
font-size: 30rpx;
font-family: Alibaba PuHuiTi;
font-weight: 500;
color: rgba(255, 255, 255, 1);
position: absolute;
margin: 12rpx;
}
.m-store-items {
width: 100%;
height: 380rpx;
background: rgba(255, 255, 255, 1);
white-space: normal;
}
.m-store-item {
width: 210rpx;
height: 340rpx;
// background:rgba(244,255,232,1);
float: left;
margin-top: 20rpx;
margin-left: 30rpx;
}
.m-store-item-image {
width: 210rpx;
height: 210rpx;
border-radius: 8rpx;
background: rgba(242, 242, 242, 1);
}
.m-store-item-name label {
/* width:150rpx; */
height: 60rpx;
font-size: 26rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: rgba(51, 51, 51, 1);
line-height: 60rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
}
.m-store-item-price label {
width: 100px;
height: 30px;
font-size: 20rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #ff5a00;
text-align: center;
}
.scroll-view_H {
white-space: nowrap;
width: 100%;
background-color: #fff;
margin-top: 24rpx;
border-radius: 12rpx;
}
.scroll-view-item {
height: 300rpx;
line-height: 300rpx;
text-align: center;
font-size: 36rpx;
}
.scroll-view-item_H {
display: inline-block;
/* height: 260rpx; */
// line-height: 300rpx;
text-align: center;
font-size: 36rpx;
}
.m-policy {
background-color: #ffe7d0;
}
.m-imfo-sp-title {
color: #a5988f;
}
.m-imfo-sp-money {
color: #ff7300;
}
.bottom-safearea {
padding-bottom: 0;
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
.activity-title {
height: 96rpx;
width: 100%;
line-height: 96rpx;
/* padding: 5px; */
text-align: center;
font-size: 52rpx;
color: #c0a080;
display: block;
}
.product-item {
border: 1px dashed #c5a789;
height: 500rpx;
margin-top: 20rpx;
overflow-y: scroll;
overflow-x: none;
padding: 10px;
border-radius: 8px;
}
.gift-item {
border: 1px solid #dadadc;
margin-top: 2px;
}
.gift-rule {
margin-top: 18rpx;
font-size: 24rpx;
margin-bottom: 18rpx;
color: #c0a080;
}
.scroll-view_H {
white-space: nowrap;
width: 100%;
height: 344rpx;
}
.scroll-view-item {
height: 300rpx;
line-height: 300rpx;
text-align: center;
font-size: 36rpx;
}
.scroll-view-item_H {
display: inline-block;
//width: 640rpx;
height: 344rpx;
background: #ffffff;
opacity: 1;
border-radius: 16rpx;
margin-right: 24rpx;
}
.product-l-img {
width: 240rpx;
height: 240rpx;
background: rgba(0, 0, 0, 0);
opacity: 1;
border-radius: 16rpx 16rpx 0rpx 0rpx;
}
.product-l-price {
width: 208rpx;
height: 88rpx;
background: rgba(255, 255, 255, 1);
// padding:8rpx 16rpx;
margin-top: 10px;
.product_name {
font-size: 12px;
font-family: PingFang SC;
font-weight: 400;
line-height: 28rpx;
color: #002951;
opacity: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.m-project-tips {
height: 18rpx;
font-size: 14rpx;
font-family: PingFang SC;
font-weight: 400;
line-height: 18rpx;
color: #002951;
opacity: 0.6;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin: 4rpx 0rpx;
}
.price-new {
font-size: 12px;
font-family: Arial;
font-weight: 400;
line-height: 34rpx;
color: #ff4142;
opacity: 1;
margin: 5px 0;
}
}
.evaluate {
.scroll-view_H {
white-space: nowrap;
width: 100%;
height: 255rpx;
// margin-left: 24rpx;
margin-top: 0px;
}
.scroll-view-item {
height: 300rpx;
line-height: 300rpx;
text-align: center;
font-size: 36rpx;
}
.scroll-view-item_H {
display: inline-block;
height: 260rpx !important;
// line-height: 300rpx;
// text-align: center;
font-size: 36rpx;
}
}
.sgar {
color: #fff !important;
font-weight: 400;
font-size: 20rpx;
background: #333959;
padding: 0rpx 15rpx !important;
border-radius: 5rpx;
display: inline-block !important;
margin: 0rpx 10rpx 0rpx 50rpx !important;
}
.m-cell-bd.coupon {
display: flex;
align-items: flex-start;
line-height: 1;
.m-info-tip {
white-space: nowrap;
margin-top: 10rpx;
}
.m-coupon-item1 {
height: initial;
margin: 0;
padding: 0;
.m-coupon-info {
margin-left: 24rpx;
width: 560rpx;
}
.m-coupon-text {
width: 100%;
uni-text {
width: 100%;
}
}
}
}
.product-info {
padding: 24rpx;
padding-bottom: 0;
.info-content {
background: #ffffff;
border-radius: 12rpx;
border-radius: 11px 11px 0 0;
padding: 24rpx 0px 24rpx 24rpx;
.min-quantity {
background: #a76e38;
border-radius: 200rpx 0px 0px 200rpx;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 34rpx;
padding: 10rpx 18rpx;
right: 23rpx;
margin-top: 15rpx;
}
.m-info-name {
font-size: 32rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #222222;
line-height: 44rpx;
display: -webkit-box;
-webkit-line-clamp: 3;
/*设置多少行*/
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
margin: 10rpx 0;
padding-right: 24rpx;
font-weight: bold;
}
.m-info-tips {
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #888888;
padding: 2rpx 0;
line-height: 36rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.m-item {
border-radius: 4rpx;
border: 1rpx solid #ff3300;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ff3300;
line-height: 34rpx;
padding: 4rpx;
}
.m-footer-btn-main-left {
border-radius: 18rpx 0px 0px 18rpx !important;
}
.m-footer-btn-main-right {
background: $default-skin-bg;
border-radius: 0px 18rpx 18rpx 0px !important;
}
.m-m-panel-sp-rbtn {
border-radius: 18rpx 18rpx 18rpx 18rpx;
}
.m-pstock {
display: inline;
margin-left: 20rpx;
}
.m-pspec {
background: #f5f5f5;
border-radius: 12rpx;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #222222;
line-height: 34rpx;
padding: 10rpx;
margin-top: 10rpx;
display: table;
}
.spec-info {
width: 216rpx;
height: 290rpx;
background: #f5f5f5;
border-radius: 12rpx;
float: left;
margin-right: 14rpx;
margin-right: 14rpx;
margin-bottom: 14rpx;
border: 1rpx solid #eeeeee;
.spec-image {
width: 194rpx;
height: 194rpx;
padding: 14rpx 12rpx 0rpx 14rpx;
}
.spec-info-name {
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #222222;
line-height: 33rpx;
padding: 4rpx 10rpx;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
word-wrap: break-word;
white-space: normal !important;
-webkit-line-clamp: 2; // 想要超出三行显示 就把这里改成3就好了
text-align: center;
}
}
.spec-checked {
border: 2rpx solid $default-skin-bg;
background: rgba(167, 110, 56, 0.1);
}
.m-customized {
display: flex;
padding: 46rpx 24rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
line-height: 40rpx;
.m-customized-left {
width: 8%;
color: #555555;
}
.m-customized-center {
color: #222222;
padding: 0 28rpx;
width: 50%;
}
.m-customized-right {
color: #222222;
width: 30%;
text-align: right;
}
}
.m-input-quantity {
padding: 24rpx;
display: flex;
justify-content: space-between;
}
.m-price {
display: flex;
justify-content: flex-end;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #222222;
line-height: 40rpx;
padding: 22rpx 24rpx;
}
.split-line {
border: 0.5pt solid #eeeeee;
width: 100%;
}
.split-lines {
border: 0.5pt solid #eeeeee;
width: 360px;
margin-left: 13px;
margin-top: 15px;
}
.customized-info {
display: flex;
align-items: center;
padding: 14rpx 24rpx 34rpx 24rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #555555;
line-height: 40rpx;
span {
padding: 0 18rpx;
}
}
.policy-quantity {
font-size: 26rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #888888;
line-height: 36rpx;
}
.popup-content {
width: 566rpx;
position: relative;
background-repeat: no-repeat;
background-size: 100% 100%;
.p-top {
width: 100%;
height: 140rpx;
}
.close-img {
position: absolute;
bottom: -132rpx;
left: 44%;
image {
width: 64rpx;
height: 64rpx;
}
}
.p-content {
font-size: 32rpx;
line-height: 40rpx;
text-align: center;
padding: 50rpx 0;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
}
.p-bottom {
display: flex;
justify-content: space-between;
padding: 0 60rpx;
.button {
width: 180rpx;
height: 80rpx;
border-radius: 18rpx;
border: 1rpx solid #a76e38;
text-align: center;
line-height: 80rpx;
margin-top: 15px;
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #a76e38;
}
.button-right {
background: #a76e38;
color: #fff;
}
}
}
.nav-head-box {
position: fixed;
left: 0;
top: 0;
z-index: 100;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
/* #ifdef MP */
width: 76%;
/* #endif */
background: rgba(255, 255, 255, 0);
.back {
position: absolute;
left: 0;
top: 13rpx;
display: flex;
align-items: center;
justify-content: center;
width: 100rpx;
height: 64rpx;
// 返回
.back-one {
display: flex;
align-items: center;
justify-content: center;
width: 50rpx;
height: 50rpx;
background-color: rgba(0, 0, 0, 0.3);
border-radius: 100%;
text {
display: flex;
width: 20rpx;
height: 20rpx;
border-left: 2rpx solid #ffffff;
border-bottom: 2rpx solid #ffffff;
transform: rotate(45deg);
}
}
.action {
background-color: transparent;
text {
border-color: #555555;
}
}
}
// 分享更多
.share {
position: absolute;
right: 0;
top: 13rpx;
display: flex;
align-items: center;
justify-content: center;
width: 100rpx;
height: 64rpx;
}
}
.selext-parameter {
overflow: hidden; //超出的文本隐藏
display: -webkit-box;
-webkit-line-clamp: 1; // 超出多少行
-webkit-box-orient: vertical;
}
.indicator-point {
position: absolute;
background: #000000;
border-radius: 21px;
opacity: 0.3;
right: 24rpx;
bottom: 38rpx;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 34rpx;
padding: 4rpx 20rpx;
}
.ttd::after {
content: " ";
position: absolute;
left: 0;
bottom: 0;
right: 0;
height: 1px;
border-bottom: 2rpx solid #ebebe7 !important;
color: #ebebe7;
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
/*Grid*/
.spec-box-grids {
position: relative;
overflow: hidden;
clear: both;
background-color: #ffffff;
white-space: nowrap;
width: 534rpx;
font-size: 14px;
line-height: 64rpx;
padding-left: 16rpx;
.spec-box-grid {
margin-right: 14rpx;
display: inline-block;
text-align: center;
&.active {
.spec-box-grid-label {
color: #c0a080;
// background-color: pink;
}
}
}
.spec-box-grid-border {
border-right: 1rpx solid #d9d9d9;
border-bottom: 1rpx solid #d9d9d9;
}
.spec-box-grid:active {
background-color: #ececec;
}
.spec-box-grid-icon {
width: 68rpx;
height: 68rpx;
margin: 0 auto;
image {
display: block;
width: 100%;
height: 100%;
}
}
.spec-box-grid-label {
margin-top: 10rpx;
}
.spec-box-grid-label {
display: block;
text-align: center;
color: #000;
font-size: 24rpx;
line-height: 40rpx;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
.spec-box-grids-border {
border-top: 1rpx solid #d9d9d9;
border-left: 1rpx solid #d9d9d9;
}
.active {
background-color: #c0a080;
}
.favorite-share {
display: flex;
margin-left: auto;
text-align: center;
background: #ffffff;
line-height: 60rpx;
color: #999;
.iconfont {
font-size: 22px;
color: #999;
line-height: 24px;
}
label:first-child {
margin-right: 20rpx;
}
.highlight {
color: #db384c !important;
}
margin-top: auto;
margin-bottom: auto;
}
.icon-share {
font-weight: 700;
padding-right: 8rpx;
}
.m-info-price {
display: flex;
align-items: center;
// padding-right: 24rpx;
}
.name-box {
display: flex;
}
.name-subtitle {
}
.m-info-box {
label {
color: #888;
//margin-top: 16rpx;
}
}
/* #ifdef MP */
.icon-cart {
margin-left: -2rpx;
}
/* #endif */
.detail-text {
line-height: 36px;
height: 30px;
margin-right: 12px;
.text {
margin-right: 10rpx;
}
}
.ap {
color: red;
font-size: 16px;
font-weight: bold;
margin: auto 6rpx;
}
.activity-intro-box {
.activity-intro-desc {
font-size: 12px;
flex: 1;
line-height: 64rpx;
}
}
// /deep/ .m-panel-sp-listbox {
// .uni-scroll-view{
// position: unset;
// }
// }
</style>