java-mall-app/pages/product/detail.vue
2024-11-01 16:35:40 +08:00

6439 lines
177 KiB
Vue
Raw Permalink 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="m-footer-btn bottom-safearea" :class="ProductInfo.is_virtual ? 'm-fg-btn' : ''" v-if="(ProductInfo.activityType!='GROUPBOOKING')">
<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/cart/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')">
<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>
</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'
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: [0, 0, 0],
themeColor: '#007AFF',
product_freight_info: {
content: "无货",
district_info: "上海市/上海市",
if_store: false
},
latitude: '',
longitude: '',
url: '',
is_chain: 0,
currentSwipperImageIndex: 1
}
},
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,
},
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);
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) {
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;
//先判断是否登录
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,
});
},
}
}
</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: .7rem;
height: .7rem;
font-size: .45rem;
line-height: .7rem;
font-style: normal;
text-align: center;
border-radius: .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;
}
.user-text label {
width: 360rpx;
height: 80rpx;
font-size: 20rpx;
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;
}
.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>