1.测试优化

master
sws 2023-11-03 15:49:22 +08:00
parent 15bdf66c26
commit 8737a5a283
7 changed files with 274 additions and 164 deletions

View File

@ -71,11 +71,11 @@
// tabbar
tabbar_pages: ['/pages/index/index', '/pages/goods-category/goods-category', '/pages/cart/cart', '/pages/user/user'],
//
request_url: 'https://new.shopxo.vip/',
// request_url: 'http://shopxo.com/',
// request_url: 'https://new.shopxo.vip/',
request_url: 'http://shopxo.com/',
// publicpublichttps://d1.shopxo.vip/public/
static_url: 'https://new.shopxo.vip/',
// static_url: 'http://shopxo.com/',
// static_url: 'https://new.shopxo.vip/',
static_url: 'http://shopxo.com/',
// default
system_type: 'default',
//

View File

@ -4,7 +4,7 @@
<!-- 组合搭配 -->
<block v-if="((propData.binding_list || null) != null)">
<block v-for="(bv, bi) in propData.binding_list" :key="bi">
<view v-if="((bv.goods || null) != null) && bv.goods.length > 0" class="plugins-binding-list padding-horizontal-main border-radius-main oh spacing-mb">
<view v-if="((bv.goods || null) != null) && bv.goods.length > 0" class="plugins-binding-list padding-horizontal-main padding-top-main border-radius-main oh spacing-mb">
<view class="spacing-nav-title oh">
<text class="text-wrapper">{{bv.title}}</text>
<view v-if="(bv.estimate_discount_price || 0) != 0" class="estimate-discount-price fr">
@ -13,7 +13,7 @@
</view>
</view>
<view class="left-content fl">
<component-goods-list :propData="{style_type: 2, goods_list: bv.goods, multiple_items: 2}" :propLabel="propLabel" :propCurrencySymbol="propCurrencySymbol" :propIsAutoPlay="(propData.config.is_auto_play || 0) == 1"></component-goods-list>
<component-goods-list :propData="{style_type: 2, goods_list: bv.goods, multiple_items: 2}" :propOpenCart="false" :propLabel="propLabel" :propCurrencySymbol="propCurrencySymbol" :propIsAutoPlay="(propData.config.is_auto_play || 0) == 1"></component-goods-list>
</view>
<view class="right-content fr bs-bb padding-left-main tc">
<button type="default" size="mini" class="bg-main br-main cr-white text-size-xs round" :data-value="'/pages/plugins/binding/detail/detail?id='+bv.id" @tap="url_event">{{bv.buy_button_text}}</button>
@ -29,18 +29,18 @@
<component-goods-list :propData="{title: propData.relevant_data.name, style_type: 2, goods_list: propData.relevant_data.data}" :propLabel="propLabel" :propCurrencySymbol="propCurrencySymbol" :propIsAutoPlay="(propData.config.is_auto_play_relevant || 0) == 1"></component-goods-list>
</view>
</view>
</view>
</template>
</view>
</template>
<script>
const app = getApp();
import componentGoodsList from "../goods-list/goods-list";
export default {
data() {
return {};
},
import componentGoodsList from "../goods-list/goods-list";
export default {
data() {
return {};
},
components: {
componentGoodsList
},
},
props: {
propCurrencySymbol: {
type: String,
@ -53,16 +53,16 @@
propLabel: {
type: [Array,Object,String],
default: null
}
},
}
},
methods: {
// url
url_event(e) {
app.globalData.url_event(e);
}
}
};
</script>
}
};
</script>
<style>
.plugins-binding-list {
background: linear-gradient(to right, rgb(255 235 220), rgb(241 235 255));
@ -92,5 +92,5 @@
100% {
background-position: 0% 50%;
}
}
}
</style>

View File

@ -26,7 +26,7 @@
<text class="sales-price va-m">{{ item[propPriceField] }}</text>
</view>
<block v-if="(item.is_error || 0) == 0 && is_show_cart">
<view v-if="propOpenCart" class="bg-white right-cart-icon 123" :data-index="index" @tap.stop="goods_cart_event">
<view v-if="propOpenCart" class="bg-white right-cart-icon" :data-index="index" @tap.stop="goods_cart_event">
<iconfont name="icon-cart-inc" size="40rpx" :color="themeColor"></iconfont>
<view class="cart-badge-icon pa">
<component-badge :propNumber="item.user_cart_count || 0"></component-badge>
@ -40,11 +40,7 @@
<view v-if="(propLabel || null) != null && propLabel.data.length > 0" :class="'plugins-label oh pa plugins-label-' + ((propLabel.base.is_user_goods_label_icon || 0) == 0 ? 'text' : 'img') + ' plugins-label-' + (propLabel.base.user_goods_show_style || 'top-left')">
<block v-for="(lv, li) in propLabel.data" :key="li">
<view v-if="(lv.goods_ids || null) != null && lv.goods_ids.indexOf(item.id) != -1" class="lv dis-inline-block va-m" :data-value="(propLabel.base.is_user_goods_label_url || 0) == 1 ? lv.url || '' : ''" @tap="url_event">
<view
v-if="(propLabel.base.is_user_goods_label_icon || 0) == 0"
class="round cr-white bg-main text-size-xs fl"
:style="((lv.bg_color || null) != null ? 'background-color:' + lv.bg_color + ' !important;' : '') + ((lv.text_color || null) != null ? 'color:' + lv.text_color + ' !important;' : '')"
>
<view v-if="(propLabel.base.is_user_goods_label_icon || 0) == 0" class="round cr-white bg-main text-size-xs fl" :style="((lv.bg_color || null) != null ? 'background-color:' + lv.bg_color + ' !important;' : '') + ((lv.text_color || null) != null ? 'color:' + lv.text_color + ' !important;' : '')">
{{ lv.name }}
</view>
<image v-else class="dis-block" :src="lv.icon" mode="scaleToFill"></image>
@ -81,11 +77,7 @@
</block>
</view>
<block v-if="propIsOpenGridBtnSet">
<view
:disabled="grid_btn_config.disabled"
@tap="url_event"
:style="[{ color: grid_btn_config.color }, { 'background-color': grid_btn_config.bg_color }, { padding: grid_btn_config.padding }, { 'border-radius': grid_btn_config.border_radius }, { 'font-size': grid_btn_config.font_size }]"
>
<view :disabled="grid_btn_config.disabled" @tap="url_event" :style="[{ color: grid_btn_config.color }, { 'background-color': grid_btn_config.bg_color }, { padding: grid_btn_config.padding }, { 'border-radius': grid_btn_config.border_radius }, { 'font-size': grid_btn_config.font_size }]">
{{ grid_btn_config.name }}
</view>
</block>
@ -106,11 +98,7 @@
<view v-if="(propLabel || null) != null && propLabel.data.length > 0" :class="'plugins-label oh pa plugins-label-' + ((propLabel.base.is_user_goods_label_icon || 0) == 0 ? 'text' : 'img') + ' plugins-label-' + (propLabel.base.user_goods_show_style || 'top-left')">
<block v-for="(lv, li) in propLabel.data" :key="li">
<view v-if="(lv.goods_ids || null) != null && lv.goods_ids.indexOf(item.id) != -1" class="lv dis-inline-block va-m" :data-value="(propLabel.base.is_user_goods_label_url || 0) == 1 ? lv.url || '' : ''" @tap="url_event">
<view
v-if="(propLabel.base.is_user_goods_label_icon || 0) == 0"
class="round cr-white bg-main text-size-xs fl"
:style="((lv.bg_color || null) != null ? 'background-color:' + lv.bg_color + ' !important;' : '') + ((lv.text_color || null) != null ? 'color:' + lv.text_color + ' !important;' : '')"
>
<view v-if="(propLabel.base.is_user_goods_label_icon || 0) == 0" class="round cr-white bg-main text-size-xs fl" :style="((lv.bg_color || null) != null ? 'background-color:' + lv.bg_color + ' !important;' : '') + ((lv.text_color || null) != null ? 'color:' + lv.text_color + ' !important;' : '')">
{{ lv.name }}
</view>
<image v-else class="dis-block" :src="lv.icon" mode="scaleToFill"></image>
@ -123,14 +111,7 @@
<!-- 滚动 -->
<view v-else-if="data.style_type == 2" class="rolling-horizontal border-radius-main oh">
<view class="goods-data-rolling-list scroll-view-horizontal">
<swiper
class="swiper"
:vertical="false"
:autoplay="propIsAutoPlay"
:circular="false"
:display-multiple-items="(data.multiple_items || null) == null ? (data.goods_list.length < 3 ? data.goods_list.length : 3) : data.goods_list.length < data.multiple_items ? data.goods_list.length : data.multiple_items"
interval="30000000"
>
<swiper class="swiper" :vertical="false" :autoplay="propIsAutoPlay" :circular="false" :display-multiple-items="(data.multiple_items || null) == null ? (data.goods_list.length < 3 ? data.goods_list.length : 3) : data.goods_list.length < data.multiple_items ? data.goods_list.length : data.multiple_items" interval="3000">
<block v-for="(item, index) in data.goods_list" :key="index">
<swiper-item>
<view class="item bg-white border-radius-main margin-right-main oh pr ht-auto pr">
@ -139,36 +120,28 @@
<image class="goods-img dis-block wh-auto" :src="item.images" mode="aspectFit"></image>
<view class="padding-left-sm padding-right-sm margin-top-sm">
<view class="single-text text-size-xs">{{ item.title }}</view>
<view class="margin-top-xs">
<view class="fl">
<text v-if="propIsShowPriceIcon && (item.price_icon || null) != null" class="bg-red br-red cr-white text-size-xs padding-left-sm padding-right-sm round va-m margin-right-xs">{{ item.price_icon }}</text>
<text class="sales-price va-m text-size-xss va-b">{{ propCurrencySymbol }}</text>
<text class="sales-price va-m">{{ item[propPriceField] }}</text>
</view>
<view class="margin-top-xs flex-row align-c">
<block v-if="(item.is_error || 0) == 0 && is_show_cart">
<view v-if="propOpenCart" class="pa bg-white right-cart-icon" :data-index="index" @tap.stop="goods_cart_event">
<iconfont name="icon-cart-inc" size="40rpx" :color="themeColor"></iconfont>
<view v-if="propOpenCart" class="bg-white right-cart-icon" :data-index="index" @tap.stop="goods_cart_event">
<iconfont name="icon-cart-inc" size="28rpx" :color="themeColor" class="pr top-xs margin-right-xs"></iconfont>
<view class="cart-badge-icon pa">
<component-badge :propNumber="item.user_cart_count || 0"></component-badge>
</view>
</view>
</block>
<view class="flex-1 flex-width">
<text v-if="propIsShowPriceIcon && (item.price_icon || null) != null" class="bg-red br-red cr-white text-size-xs padding-left-sm padding-right-sm round va-m margin-right-xs">{{ item.price_icon }}</text>
<text class="sales-price va-m text-size-xss va-b">{{ propCurrencySymbol }}</text>
<text class="sales-price va-m">{{ item[propPriceField] }}</text>
</view>
</view>
</view>
</view>
<!-- 标签插件 -->
<view
v-if="(propLabel || null) != null && propLabel.data.length > 0"
:class="'plugins-label oh pa plugins-label-' + ((propLabel.base.is_user_goods_label_icon || 0) == 0 ? 'text' : 'img') + ' plugins-label-' + (propLabel.base.user_goods_show_style || 'top-left')"
>
<view v-if="(propLabel || null) != null && propLabel.data.length > 0" :class="'plugins-label oh pa plugins-label-' + ((propLabel.base.is_user_goods_label_icon || 0) == 0 ? 'text' : 'img') + ' plugins-label-' + (propLabel.base.user_goods_show_style || 'top-left')">
<block v-for="(lv, li) in propLabel.data" :key="li">
<view v-if="(lv.goods_ids || null) != null && lv.goods_ids.indexOf(item.id) != -1" class="lv dis-inline-block va-m" :data-value="(propLabel.base.is_user_goods_label_url || 0) == 1 ? lv.url || '' : ''" @tap="url_event">
<view
v-if="(propLabel.base.is_user_goods_label_icon || 0) == 0"
class="round cr-white bg-main text-size-xs fl"
:style="((lv.bg_color || null) != null ? 'background-color:' + lv.bg_color + ' !important;' : '') + ((lv.text_color || null) != null ? 'color:' + lv.text_color + ' !important;' : '')"
>
<view v-if="(propLabel.base.is_user_goods_label_icon || 0) == 0" class="round cr-white bg-main text-size-xs fl" :style="((lv.bg_color || null) != null ? 'background-color:' + lv.bg_color + ' !important;' : '') + ((lv.text_color || null) != null ? 'color:' + lv.text_color + ' !important;' : '')">
{{ lv.name }}
</view>
<image v-else class="dis-block" :src="lv.icon" mode="scaleToFill"></image>

View File

@ -28,9 +28,9 @@
<view v-for="(listItem, listIndex) in swiperItem" :key="listIndex" :class="items.data.length % 2 == 0 ? 'flex-width-half' : items.data.length === index + 1 ? 'flex-width-half-2' : 'flex-width-half'">
<view class="padding-horizontal-main" :data-value="(listItem.goods_url || null) !== null ? listItem.goods_url : ''" @tap="url_event">
<image :src="(listItem.images || null) !== null ? listItem.images : ''" mode="widthFix" class="wh-auto border-radius-sm"> </image>
<view class="price">
<view class="price tc single-text">
<text class="sales-price va-m text-size-xss va-b">{{ currency_symbol }}</text>
<text class="sales-price va-m">{{ listItem.min_price }}</text>
<text class="sales-price va-m text-size-xs">{{ listItem.min_price }}</text>
</view>
</view>
</view>
@ -131,7 +131,6 @@
transform: translateY(-50%);
}
.hot-list .swiper-2 {
height: 176rpx;
}

View File

@ -10,13 +10,16 @@
top: 28px;
z-index: 11;
}
.top-nav-left-icon {
left: auto;
margin-left: 20rpx;
}
.top-nav-right-icon {
right: 20rpx;
}
.top-nav-left-icon .icon,
.top-nav-right-icon .icon {
background: rgb(255 255 255 / 70%);
@ -28,6 +31,7 @@
text-align: center;
padding: 3px;
}
.top-nav {
position: absolute;
bottom: 0;
@ -37,20 +41,24 @@
padding-bottom: 5px;
/* #endif */
}
.top-nav-content {
margin: 0 auto;
width: 310rpx;
margin-left: calc(50% - 170rpx);
}
.top-nav-content text {
font-size: 30rpx;
/* #ifdef H5 || APP */
font-size: 14px;
/* #endif */
}
.top-nav-content text:not(:last-child) {
margin-right: 30rpx;
}
.top-nav-content .nav-active {
font-weight: 500;
padding-bottom: 2rpx;
@ -70,6 +78,7 @@
top: 62px;
left: 20rpx;
}
.nav-more-view .triangle {
width: 0;
height: 0;
@ -79,12 +88,15 @@
top: -5px;
left: calc(20rpx + 42px);
}
.nav-more-view .content {
background: rgb(0 0 0 / 0.7);
}
.nav-more-view .content .item {
font-size: 12px;
}
.nav-more-view .content .item:not(:last-child) {
border-bottom: 1px solid #585858;
}
@ -108,13 +120,16 @@
height: 100rpx;
z-index: 2;
}
.goods-buy-nav .btn-items {
padding: 15rpx 0;
}
.goods-buy-nav .bus-items,
.goods-buy-nav .btn-items {
height: 100rpx;
}
.goods-buy-nav .btn-items .item {
height: 70rpx;
line-height: 70rpx;
@ -123,48 +138,61 @@
margin-right: 15rpx;
position: relative;
}
.goods-buy-nav image {
width: 40rpx;
height: 40rpx;
margin: 10rpx 0 5rpx 0;
}
.goods-buy-nav .dis-block {
margin-top: -10rpx;
}
.goods-buy-nav .badge-icon {
position: absolute;
top: 2rpx;
left: calc(50% + 25rpx);
z-index: 1;
}
.goods-buy-nav-btn-number-0 .item,
.goods-buy-nav-btn-number-1 .item {
width: calc(100% - 15rpx) !important;
}
.goods-buy-nav-btn-number-2 .item {
width: calc(50% - 15rpx) !important;
}
.goods-buy-nav-btn-number-3 .item {
width: calc(33.33% - 15rpx) !important;
}
.goods-buy-nav-btn-number-4 .item {
width: calc(25% - 15rpx) !important;
}
.goods-buy-nav-btn-number-5 .item {
width: calc(20% - 15rpx) !important;
}
.goods-buy-nav-btn-number-6 .item {
width: calc(16.66% - 15rpx) !important;
}
.goods-buy-nav-btn-number-7 .item {
width: calc(14.28% - 15rpx) !important;
}
.goods-buy-nav-btn-number-8 .item {
width: calc(12.5% - 15rpx) !important;
}
.goods-buy-nav-btn-number-9 .item {
width: calc(11.11% - 15rpx) !important;
}
.goods-buy-nav-btn-number-10 .item {
width: calc(10% - 15rpx) !important;
}
@ -176,19 +204,23 @@
position: relative;
min-height: 86rpx;
}
.goods-base-content .goods-title {
font-size: 36rpx;
line-height: 52rpx;
font-weight: bold;
width: calc(100% - 200rpx);
}
.goods-base-content image {
width: 40rpx;
height: 40rpx;
}
.goods-base-content .collect {
width: 76rpx;
}
.goods-base-content .base-grid view {
width: calc(33.33% - 1px);
}
@ -202,16 +234,19 @@
left: 0;
z-index: 1;
}
.goods-video video {
width: 100%;
height: 55vh !important;
}
.goods-video-submit {
left: 50rpx;
top: auto;
bottom: 60rpx;
z-index: 2;
}
.goods-video-submit image {
width: 80rpx;
height: 80rpx !important;
@ -224,31 +259,38 @@
height: 145rpx;
overflow: hidden;
}
.price-content {
width: calc(100% - 230rpx);
width: calc(100% - 280rpx);
}
.goods-base-right-opt {
width: 210rpx;
width: 280rpx;
}
.price-content,
.goods-base-right-opt {
box-sizing: border-box;
position: relative;
height: 100%;
}
.goods-base-right-opt image {
width: 40rpx;
height: 40rpx;
}
.goods-base-right-opt .collect {
width: 76rpx;
}
.price-content .price-icon {
margin-right: 5rpx;
padding: 1px 5px;
background: #FF5722;
color: #fff;
}
.price-content .sales-price {
font-size: 42rpx;
}
@ -268,13 +310,15 @@
.goods-base-price-countdown {
background: #e84742 !important;
}
.goods-base-price-countdown .price-content {
background: #f9534e;
background-repeat: no-repeat;
background-size: 100% 100%;
width: 60%;
}
.goods-base-price-countdown .price-icon {
.goods-base-price-countdown .price-icon {
margin-right: 0;
padding: 0px 10rpx;
border: 1px solid #fff;
@ -284,44 +328,44 @@
bottom: 20rpx;
font-size: 24rpx;
}
.goods-base-price-countdown .sales-price {
color: #fff;
}
.goods-base-price-countdown .original-price {
color: #ffcece;
}
.countdown-content .time-title {
font-size: 38rpx;
margin-bottom: 10rpx;
}
/**
*
*/
.column-right-view {
width: calc(100% - 190rpx);
margin-right: 50rpx;
}
/*
*
*/
.parameters-base .content-item .item {
color: #666;
}
.goods-parameters .content-item .item {
padding: 8rpx 10rpx;
width: calc(50% - 20rpx);
}
.goods-parameters .content-item .item .name {
margin-right: 10rpx;
}
.goods-parameters .content-item .item:nth-child(2n-1) {
float: left;
}
.goods-parameters .content-item .item:nth-child(2n) {
float: right;
}
/**
*
*/
@ -330,11 +374,13 @@
overflow-y: scroll;
overflow-x: hidden;
}
.popup-params-container .item .name {
width: 220rpx;
width: 220rpx;
}
.popup-params-container .item .value {
width: calc(100% - 240rpx);
width: calc(100% - 240rpx);
}
/*
@ -353,9 +399,11 @@
background: #fffbfc;
color: #d2354c;
}
.goods-panel-container view {
padding: 15rpx 0;
}
.goods-panel-container view:not(:first-child) {
border-top: 1px dashed #fff1f2;
}
@ -382,6 +430,7 @@
-moz-box-shadow: 0 8px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 8px 10px rgb(0 0 0 / 20%);
}
.plugins-salerecords-tips image,
.plugins-salerecords-tips-top-left image,
.plugins-salerecords-tips-top-right image,
@ -393,40 +442,49 @@
height: 50rpx;
border-radius: 50%;
}
.plugins-salerecords-tips-top-left {
left: 5%;
top: 13%;
}
.plugins-salerecords-tips-top-right {
right: 5%;
top: 13%;
left: auto;
}
.plugins-salerecords-tips-top-center {
top: 13%;
}
/* #ifdef MP-ALIPAY */
.plugins-salerecords-tips-top-left {
top: 5%;
}
.plugins-salerecords-tips-top-right {
top: 5%;
}
.plugins-salerecords-tips-top-center {
top: 5%;
}
/* #endif */
.plugins-salerecords-tips-bottom-left {
left: 5%;
bottom: 10%;
top: auto;
}
.plugins-salerecords-tips-bottom-right {
right: 5%;
bottom: 10%;
left: auto;
top: auto;
}
.plugins-salerecords-tips-bottom-center {
bottom: 10%;
top: auto;
@ -435,33 +493,100 @@
/*
* -
*/
.coupon-padding {
padding: 2rpx;
}
.mini-coupon {
position: relative;
display: inline-block;
height: 40rpx;
line-height: 40rpx;
border-radius: 4rpx;
padding: 0 16rpx;
}
.mini-coupon::before,
.mini-coupon::after {
content: '';
width: 14rpx;
height: 14rpx;
border-radius: 50%;
background-color: #fff;
position: absolute;
top: 50%;
transform: translateY(-50%);
}
.mini-coupon::before {
left: -8rpx;
}
.mini-coupon::after {
right: -8rpx;
}
.mini-coupon-br::before,
.mini-coupon-br::after {
border: 1px solid #FE5500;
}
.coupon-srcoll {
white-space: nowrap;
overflow-x: auto;
}
.coupon-srcoll::-webkit-scrollbar {
width: 0;
height: 0;
display: none;
}
.received-coupon {
background: #FFEBE0;
border: 2rpx solid #FE5500;
color: #FE5500;
}
.not-received-coupon {
background: #FE5500;
border: 2rpx solid #FE5500;
color: #fff;
}
.received-coupon .divider-l::before {
background: red;
}
.not-received-coupon .divider-l::before {
background: #fff;
}
.plugins-coupon-container-view .item-title {
min-width: 100rpx;
}
.plugins-coupon-container-view .item {
padding: 5rpx 15rpx;
display: inline-table;
min-width: 70rpx;
}
.plugins-coupon-container-view .item:not(:last-child) {
margin-right: 10rpx;
}
.plugins-coupon-container {
max-height: 50vh;
overflow-y: scroll;
overflow-x: hidden;
margin-top: 20rpx;
}
.plugins-coupon-container .v-left {
padding: 20rpx 10rpx 20rpx 20rpx;
}
.plugins-coupon-container .item:not(:last-child) {
margin-bottom: 20rpx;
}
.plugins-coupon-container .item,
.plugins-coupon-container .v-right,
.plugins-coupon-container .v-right .circle {
height: 175rpx;
}
.plugins-coupon-container .v-left .base .price {
font-size: 46rpx;
}
@ -470,33 +595,35 @@
* -
*/
.plugins-wholesale-container-view .item-title {
min-width: 100rpx;
min-width: 70rpx;
}
.plugins-wholesale-container-view .item {
padding: 5rpx 15rpx;
color: #ff6633;
border: 1px dashed #ff9e7e;
display: inline-table;
}
.plugins-wholesale-container-view .item:not(:last-child) {
margin-right: 10rpx;
}
.plugins-wholesale-container {
max-height: 50vh;
overflow-y: scroll;
overflow-x: hidden;
margin-top: 20rpx;
}
.plugins-wholesale-container .item {
width: calc(50% - 50rpx);
margin-bottom: 20rpx;
}
.plugins-wholesale-container .item:nth-child(2n) {
.plugins-wholesale-container .item>view:nth-child(2n) {
margin-left: 10rpx;
}
.plugins-wholesale-container .item:nth-child(2n+1) {
.plugins-wholesale-container .item>view:nth-child(2n+1) {
margin-right: 10rpx;
}
.plugins-wholesale-container .spec-tips {
color: #ffbf00;
border: 1px solid #333;
@ -512,17 +639,21 @@
.plugins-label navigator:not(:last-child) {
margin-right: 20rpx;
}
.plugins-label navigator {
margin-bottom: 20rpx;
}
.plugins-label-top-left,
.plugins-label-top-center,
.plugins-label-top-right {
top: calc(var(--status-bar-height) + 130rpx);
}
.plugins-label-text {
padding: 20rpx 20rpx 0 20rpx;
}
.plugins-label-bottom-left,
.plugins-label-bottom-center,
.plugins-label-bottom-right {
@ -538,14 +669,17 @@
border-color: #ffe2e0;
color: #dd514c;
}
.plugins-intellectstools-content-top-container {
background: #daeeff;
color: #2b6e8f;
border: 1px solid #c9e9ff;
}
.plugins-intellectstools-content-top-container .panel-content .item:first-child {
padding-top: 0 !important;
}
.plugins-intellectstools-content-top-container .panel-title,
.plugins-intellectstools-content-top-container .panel-content .item:not(:last-child) {
border-bottom: 1px solid #c8e4fb !important;
@ -564,20 +698,20 @@
/**
* -
*/
.plugins-goodsservice-view-container .content {
width: calc(100% - 30rpx);
}
.plugins-goodsservice-view-container .item image {
width: 32rpx;
height: 32rpx !important;
}
.plugins-goodsservice-container .item image {
width: 70rpx;
height: 70rpx !important;
}
.plugins-goodsservice-container .item .left {
width: 80rpx;
}
.plugins-goodsservice-container .item .right {
width: calc(100% - 90rpx);
}

View File

@ -113,7 +113,7 @@
<view class="cr-grey text-size-xs">分享</view>
</view>
<!-- 收藏 -->
<view class="collect tc cp margin-left-main" @tap="goods_favor_event">
<view class="collect tc cp margin-left-main margin-right-xl" @tap="goods_favor_event">
<image :src="common_static_url + 'favor' + (nav_favor_button_info.status == 1 ? '-active' : '') + '-icon.png'" mode="scaleToFill" class="dis-block auto"></image>
<view :class="'cr-grey text-size-xs ' + (nav_favor_button_info.status == 1 ? 'cr-main' : 'cr-grey')">{{ nav_favor_button_info.text }}</view>
</view>
@ -198,28 +198,38 @@
<!-- 批发 -->
<view v-if="(plugins_wholesale_data || null) != null" class="plugins-wholesale-container-view pr oh padding-main border-radius-main bg-white text-size-xs spacing-mb flex-row jc-sb align-c">
<view class="flex-row wh-auto">
<view class="item-title padding-right-main self-c">{{ plugins_wholesale_data.title }}</view>
<view class="column-right-view border-radius-main single-text flex-1 flex-width flex-row flex-warp" @tap="popup_wholesale_event">
<view class="item-title padding-right-main self-c">{{ plugins_wholesale_data.title }}</view>
<view class="flex-row align-c flex-1 flex-width" @tap="popup_wholesale_event">
<view class="padding-right-main border-radius-main single-text flex-1 flex-width">
<block v-for="(item, index) in plugins_wholesale_data.rules" :key="index">
<view class="item round dis-inline-block margin-vertical-xs">{{ item.msg }}</view>
</block>
</view>
<iconfont name="icon-qiandao-jiantou2"></iconfont>
</view>
<iconfont name="icon-qiandao-jiantou2"></iconfont>
</view>
<!-- 优惠券 -->
<view v-if="(plugins_coupon_data || null) != null && plugins_coupon_data.data.length > 0" class="plugins-coupon-container-view pr oh padding-main border-radius-main bg-white text-size-xs spacing-mb flex-row jc-sb align-c">
<view class="flex-row wh-auto">
<view class="item-title padding-right-main self-c">优惠券</view>
<view class="column-right-view border-radius-main single-text cp flex-1 flex-width flex-row flex-warp" @tap="popup_coupon_event">
<view class="item-title padding-right-main self-c">优惠券</view>
<view class="flex-row align-c flex-1 flex-width">
<view class="margin-right-main cp flex-1 flex-width flex-row coupon-srcoll">
<block v-for="(item, index) in plugins_coupon_data.data" :key="index">
<view class="item round cr-white dis-inline-block margin-vertical-xs" :style="'background:' + item.bg_color_value + ';border:1px solid ' + item.bg_color_value + ';'">{{ item.desc || item.name }}</view>
<view class="coupon-padding margin-right-xs">
<view class="oh">
<view class="item margin-vertical-xs mini-coupon" :class="item.status_type === 2 ? 'received-coupon mini-coupon-br' : 'not-received-coupon'">
<text @tap="popup_coupon_event">{{ item.desc || item.name }}</text>
<text class="dis-inline-block margin-left-sm padding-left-sm divider-l" @tap="coupon_receive_event(index, item.id)">{{ item.status_operable_name }}</text>
</view>
</view>
</view>
</block>
</view>
<view @tap="popup_coupon_event">
<text v-if="plugins_coupon_data.data.length > 0" class="text-size-xs cr-grey-9">{{ plugins_coupon_data.data.length }}</text>
<iconfont name="icon-qiandao-jiantou2"></iconfont>
</view>
</view>
<iconfont name="icon-qiandao-jiantou2"></iconfont>
</view>
<!-- 规格选择 -->
@ -231,23 +241,27 @@
<view class="padding-horizontal-main">
<!-- 商品基础参数 -->
<view v-if="(goods.parameters || null) != null && (goods.parameters.base || null) != null && goods.parameters.base.length > 0" class="goods-parameters parameters-base border-radius-main padding-main bg-white arrow-right single-text text-size-xs spacing-mb" @tap="popup_params_event" data-value="base">
<block v-for="(item, index) in goods.parameters.base" :key="index">
<text v-if="index > 0"></text>
<text>{{ item.value }}</text>
</block>
<view v-if="(goods.parameters || null) != null && (goods.parameters.base || null) != null && goods.parameters.base.length > 0" class="goods-parameters parameters-base border-radius-main padding-main bg-white text-size-xs spacing-mb flex-row jc-sb align-c" @tap="popup_params_event" data-value="base">
<view class="single-text padding-right-main flex-1 flex-width">
<block v-for="(item, index) in goods.parameters.base" :key="index">
<text v-if="index > 0"></text>
<text>{{ item.value }}</text>
</block>
</view>
<iconfont name="icon-qiandao-jiantou2"></iconfont>
</view>
<!-- 商品服务 -->
<view v-if="(plugins_goodsservice_data || null) != null && plugins_goodsservice_data.length > 0" class="plugins-goodsservice-view-container border-radius-main padding-main bg-white arrow-right text-size-xs spacing-mb" @tap="popup_goodsservice_event">
<view class="content single-text oh border-radius-right-main">
<view v-if="(plugins_goodsservice_data || null) != null && plugins_goodsservice_data.length > 0" class="plugins-goodsservice-view-container border-radius-main padding-main bg-white text-size-xs spacing-mb flex-row jc-sb align-c" @tap="popup_goodsservice_event">
<view class="padding-right-main single-text border-radius-right-main flex-1 flex-width">
<block v-for="(item, index) in plugins_goodsservice_data" :key="index">
<view :class="'item dis-inline-block ' + (index > 0 ? 'margin-left-xxl' : '')">
<text :class="'item ' + (index > 0 ? 'margin-left-xxl' : '')">
<image class="va-m" :src="item.images" mode="widthFix"></image>
<text class="cr-base va-m margin-left-sm">{{ item.name }}</text>
</view>
</text>
</block>
</view>
<iconfont name="icon-qiandao-jiantou2"></iconfont>
</view>
<!-- 组合搭配 -->
@ -442,7 +456,7 @@
<view class="padding-horizontal-main padding-top-main bg-white">
<view class="close oh">
<view class="fr" @tap.stop="popup_params_close_event">
<uni-icons type="clear" size="46rpx" color="#999"></uni-icons>
<iconfont name="icon-huiyuan-guanbi" size="28rpx" color="#999"></iconfont>
</view>
</view>
<view class="popup-params-container">
@ -463,21 +477,23 @@
<!-- 批发弹层 -->
<component-popup :propShow="popup_wholesale_status" propPosition="bottom" @onclose="popup_wholesale_close_event">
<view class="padding-horizontal-main padding-top-main bg-base">
<view class="padding-horizontal-main padding-top-main bg-white">
<view class="close oh">
<view class="fr" @tap.stop="popup_wholesale_close_event">
<uni-icons type="clear" size="46rpx" color="#999"></uni-icons>
<iconfont name="icon-huiyuan-guanbi" size="28rpx" color="#999"></iconfont>
</view>
</view>
<view class="plugins-wholesale-container">
<block v-if="(plugins_wholesale_data || null) != null">
<text v-if="(plugins_wholesale_data.spec_tips || null) != null" class="spec-tips pa round">{{ plugins_wholesale_data.spec_tips }}</text>
<view class="oh">
<view class="oh flex-row flex-warp">
<block v-for="(item, index) in plugins_wholesale_data.rules" :key="index">
<view class="item padding-main bg-white border-radius-main oh dis-inline-block tc">
<text class="cr-base">{{ item.arr.msg }}</text>
<text class="margin-left-sm cr-main fw-b text-size-lg">{{ item.arr.val }}</text>
<text class="cr-grey margin-left-xs">{{ item.arr.unit }}</text>
<view class="item flex-width-half margin-bottom-sm">
<view class="padding-main bg-base border-radius-main oh tc">
<text class="cr-base">{{ item.arr.msg }}</text>
<text class="margin-left-sm cr-main fw-b text-size-lg">{{ item.arr.val }}</text>
<text class="cr-grey margin-left-xs">{{ item.arr.unit }}</text>
</view>
</view>
</block>
</view>
@ -491,30 +507,16 @@
<!-- 优惠券弹层 -->
<component-popup :propShow="popup_coupon_status" propPosition="bottom" @onclose="popup_coupon_close_event">
<view class="padding-horizontal-main padding-top-main bg-base">
<view class="padding-horizontal-main padding-top-main bg-white">
<view class="close oh">
<view class="fr" @tap.stop="popup_coupon_close_event">
<uni-icons type="clear" size="46rpx" color="#999"></uni-icons>
<iconfont name="icon-huiyuan-guanbi" size="28rpx" color="#999"></iconfont>
</view>
</view>
<view class="plugins-coupon-container padding-bottom-main">
<block v-if="(plugins_coupon_data || null) != null && plugins_coupon_data.data.length > 0">
<block v-for="(item, index) in plugins_coupon_data.data" :key="index">
<view :class="'item bg-white border-radius-main ' + (item.is_operable == 0 ? 'item-disabled' : '')">
<view class="v-left fl">
<view class="base single-text" :style="'color:' + item.bg_color_value + ';'">
<text v-if="item.type == 0" class="symbol">{{ currency_symbol }}</text>
<text class="price">{{ item.discount_value }}</text>
<text class="unit">{{ item.type_unit }}</text>
</view>
<view v-if="(item.use_limit_type_name || null) != null" class="base-tips cr-base single-text">{{ item.use_limit_type_name }}</view>
<view v-if="(item.desc || null) != null" class="desc margin-top-xs cr-grey single-text text-size-xs">{{ item.desc }}</view>
</view>
<view class="v-right fr cp" @tap="coupon_receive_event" :data-index="index" :data-value="item.id" :style="'background:' + item.bg_color_value + ';'">
<text class="circle"></text>
<text>{{ item.is_operable_name }}</text>
</view>
</view>
<component-coupon-card :prop-data="item" :prop-status-type="item.status_type" :prop-status-operable-name="item.status_operable_name" :prop-index="index" propIsProgress @call-back="coupon_receive_event"></component-coupon-card>
</block>
</block>
<block v-else>
@ -526,10 +528,10 @@
<!-- 门店弹层 -->
<component-popup :propShow="popup_realstore_status" propPosition="bottom" @onclose="popup_realstore_close_event">
<view class="padding-horizontal-main padding-top-main bg-base">
<view class="padding-horizontal-main padding-top-main bg-white">
<view class="close oh">
<view class="fr" @tap.stop="popup_realstore_close_event">
<uni-icons type="clear" size="46rpx" color="#999"></uni-icons>
<iconfont name="icon-huiyuan-guanbi" size="28rpx" color="#999"></iconfont>
</view>
</view>
<view class="plugins-realstore-popup">
@ -548,7 +550,7 @@
<view class="padding-horizontal-main padding-top-main bg-white">
<view class="close oh">
<view class="fr" @tap.stop="popup_goodsservice_close_event">
<uni-icons type="clear" size="46rpx" color="#999"></uni-icons>
<iconfont name="icon-huiyuan-guanbi" size="28rpx" color="#999"></iconfont>
</view>
</view>
<view class="plugins-goodsservice-container">
@ -618,6 +620,7 @@
import componentSharePopup from '../../components/share-popup/share-popup';
import componentGoodsComments from '../../components/goods-comments/goods-comments';
import componentAskCommentsGoods from '../../components/ask-comments-goods/ask-comments-goods';
import componentCouponCard from '../../components/coupon-card/coupon-card';
var common_static_url = app.globalData.get_static_url('common');
var ask_static_url = app.globalData.get_static_url('ask', true) + 'app/';
@ -764,6 +767,7 @@
componentSharePopup,
componentGoodsComments,
componentAskCommentsGoods,
componentCouponCard,
},
onLoad(params) {
@ -1244,24 +1248,17 @@
},
//
coupon_receive_event(e) {
coupon_receive_event(index, value) {
//
if ((e || null) == null) {
if ((index || null) == null && (value || null) == null) {
var index = this.temp_coupon_receive_index;
var value = this.temp_coupon_receive_value;
} else {
var index = e.currentTarget.dataset.index;
var value = e.currentTarget.dataset.value;
this.setData({
temp_coupon_receive_index: index,
temp_coupon_receive_value: value,
});
}
//
var temp_list = this.plugins_coupon_data.data;
if (temp_list[index]['is_operable'] != 1) {
return false;
}
//
var user = app.globalData.get_user_info(this, 'coupon_receive_event');
@ -1273,6 +1270,7 @@
});
return false;
} else {
var temp_list = this.plugins_coupon_data.data;
uni.showLoading({
title: '处理中...',
});
@ -1287,13 +1285,23 @@
uni.hideLoading();
if (res.data.code == 0) {
app.globalData.showToast(res.data.msg, 'success');
if (this.plugins_coupon_data.base != null && this.plugins_coupon_data.base.is_repeat_receive != 1) {
temp_list[index]['is_operable'] = 0;
temp_list[index]['is_operable_name'] = '已领取';
this.setData({
'plugins_coupon_data.data': temp_list,
});
}
temp_list[index] = res.data.data.coupon;
this.setData({
'plugins_coupon_data.data': temp_list,
});
// if ((res.data.data.is_repeat_receive = 1)) {
// temp_list[index]['is_repeat_receive'] = 1;
// temp_list[index]['already_receive_text'] = '';
// temp_list[index]['already_receive_text'] = '';
// if (temp_list[index].process_data.type !== 0) {
// temp_list[index]['already_send_count'] = Number(temp_list[index]['already_send_count']) + 1;
// temp_list[index]['process_data'].value = Math.floor((Number(temp_list[index]['already_send_count']) / Number(temp_list[index]['limit_send_count'])) * 100);
// temp_list[index]['process_data'].msg = '' + Math.floor((Number(temp_list[index]['already_send_count']) / Number(temp_list[index]['limit_send_count'])) * 100) + '%';
// }
// this.setData({
// 'plugins_coupon_data.data': temp_list,
// });
// }
} else {
if (app.globalData.is_login_check(res.data, this, 'coupon_receive_event')) {
app.globalData.showToast(res.data.msg);

View File

@ -198,14 +198,10 @@
uni.hideLoading();
if (res.data.code == 0) {
app.globalData.showToast(res.data.msg, 'success');
if (this.data_base != null && this.data_base.is_repeat_receive != 1) {
temp_list[index]['is_operable'] = 0;
temp_list[index]['is_operable_name'] = '已领取';
this.setData({
data_list: temp_list,
});
}
this.get_data_list();
temp_list[index] = res.data.data.coupon;
this.setData({
data_list: temp_list,
});
} else {
if (app.globalData.is_login_check(res.data, this, 'coupon_receive_event')) {
app.globalData.showToast(res.data.msg);