Commit b402c7de authored by 罗超's avatar 罗超

修复部分样式

parent 2d95d6d1
<template>
<view class="goods-box">
<view>
<!-- 只是商品 -->
<template>
<!--一行一个-->
<style1 v-if="goods.listStyle == 1" :goods-info="goods" :good-list="currentList"></style1>
<!--一行两个-->
<style2 v-if="goods.listStyle == 2" :goods-info="goods" :good-list="currentList"></style2>
<!--一行三个-->
<style3 v-if="goods.listStyle == 3" :goods-info="goods" :good-list="currentList"></style3>
<!--左右滚动-->
<style5 v-if="goods.listStyle == 0" :goods-info="goods" :good-list="currentList"></style5>
<!--列表模式-->
<style6 v-if="goods.listStyle == -1" :goods-info="goods" :good-list="currentList"></style6>
</template>
</view>
</view>
</template>
<script>
import style1 from './style1';
import style2 from './style2';
import style3 from './style3';
import style4 from './style4';
import style5 from './style5';
import style6 from './style6';
import sidebar from '../sidebar/index';
export default {
props: ['goods'],
components: {
style1,
style2,
style3,
style4,
style5,
style6,
sidebar
},
data() {
return {
mainColor: '',
activeKey: 0,
currentList: []
};
},
created() {
this.mainColor = this.$uiConfig.mainColor;
if (this.goods.showCat) {
this.currentList = this.goods.catList[0].goodsList;
} else {
this.currentList = this.goods.list;
}
},
methods: {
tabChangeHandler(i) {
this.currentList = this.goods.catList[i].goodsList;
this.activeKey = i;
}
}
};
</script>
<style>
.style4View {
display: inline-block;
width: 100%;
padding-left: 80px;
box-sizing: border-box;
}
.goods-box {
/* margin: 20rpx 0; */
}
.goods-box .tips {
z-index: 50 !important;
}
.goods-box.flex {
display: flex;
}
.goods-box.flex .left-slider {
width: 80px;
position: absolute;
}
.goods-box.flex .right-slider {
flex: 1;
width: 1rpx;
}
.defaultz .van-sticky {
z-index: 1 !important;
}
.goods-box .van-tabs__scroll {
background: none;
}
.goods-box ._div {
width: 100%;
}
</style>
<template>
<div
:style="{
'background-color': goodsInfo.backgroundColor,
'background-image': goodsInfo.backgroundPicUrl,
'border-color': goodsInfo.goodsStyle == 2 ? 'rgb(226, 226, 226)' : ''
}"
>
<div
v-for="(item, gli) in goodList"
:key="gli"
class="good-one"
@click="openGood(item)"
:style="{
border: goodsInfo.goodsStyle == 2 ? '1px solid rgb(226, 226, 226)' : '',
background: goodsInfo.goodsStyle == 1 || goodsInfo.goodsStyle == 2 ? '#FFF' : ''
}"
>
<div class="tips" v-if="goodsInfo.showGoodsTag||goodsInfo.customizeGoodsTag">
<image :src="goodsInfo.goodsTagPicUrl" mode="widthFix" style="width: 100%;" />
</div>
<image
style="width: calc(100vw - 24px); height: 66vw;"
:mode="goodsInfo.fill == 1 ? 'aspectFill' : 'aspectFit'"
:src="item.picUrl"
v-if="goodsInfo.goodsCoverProportion == '3-2'"
/>
<image
style="
width: calc(100vw - 24px);
height: 100vw;
border-radius: 10rpx 10rpx 0 0;
"
v-if="goodsInfo.goodsCoverProportion == '1-1'"
:mode="goodsInfo.fill == 1 ? 'aspectFill' : 'aspectFit'"
:src="item.picUrl"
/>
<div class="good-info">
<div class="good-name" v-if="goodsInfo.showGoodsName">{{ item.name }}</div>
<div class="good-price-info">
<span class="price" :style="{ color: mainColor }">
<text style="font-size:13px;margin-right:5px"></text>
<text>{{ item.pintuanPrice }}</text>
</span>
<span class="buy" v-if="goodsInfo.showBuyBtn" @click.stop="showSkuHandler(item)">
<u-icon name="cart-o" size="40" :color="mainColor" v-if="goodsInfo.buyBtn == 'cart'" />
<u-icon
name="add-o"
size="40"
:color="mainColor"
v-else-if="goodsInfo.buyBtn == 'add'"
/>
<u-button
type="primary"
size="mini"
:ripple="true"
:color="goodsInfo.buttonColor"
:custom-style="btnStyle"
:plain="goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4"
:shape="goodsInfo.buyBtnStyle == 3 || goodsInfo.buyBtnStyle == 4 ? 'circle' : 'square'"
v-else
>{{ goodsInfo.buyBtnText }}</u-button>
</span>
</div>
</div>
</div>
<good-sku v-if="showSku" :option-type="2" borderRadius="20" v-model="showSku" :good="sku"></good-sku>
<auth v-if="showAuth" @changeuserinfo="reloadUserinfo" @gbAuth="gbAuth"></auth>
</div>
</template>
<script>
import goodSku from "../goods/goodsku";
import auth from "@/components/auth/index.vue";
export default {
components: {
goodSku,
auth,
},
props: ["goodList", "goodsInfo"],
data() {
return {
mainColor: "",
activeKey: 0,
showSku: false,
sku: {},
showAuth: false,
u: {},
btnStyle: {},
};
},
created() {
this.mainColor = this.$uiConfig.mainColor;
this.btnStyle = {
backgroundColor: this.goodsInfo.buttonColor ?? this.mainColor,
color:
this.goodsInfo.buyBtnStyle == 2 || this.goodsInfo.buyBtnStyle == 4
? this.goodsInfo.buttonColor
: "#FFF",
};
},
methods: {
openGood(item) {
uni.navigateTo({ url: "/pages/goods/goods?GoodsId=" + item.id });
},
showSkuHandler(g) {
this.sku = g;
this.u = uni.getStorageSync("mall_UserInfo");
if (!this.u) {
this.u = {
nickName: "未登录",
avatarUrl: "",
};
this.showAuth = true;
} else {
this.showSku = true;
}
},
reloadUserinfo() {
this.u = uni.getStorageSync("mall_UserInfo");
// this.showAuth = false;
},
//关闭登录窗口
gbAuth() {
this.showAuth = false;
},
},
};
</script>
<style>
.good-one {
margin: 12px;
position: relative;
border: 1rpx solid transparent;
border-radius: 10rpx;
padding-bottom: 10rpx;
overflow: hidden;
}
.good-one .tips {
width: 64rpx;
height: 64rpx;
position: absolute;
top: 0;
left: 0;
z-index: 4;
}
.good-one .guding {
position: relative;
}
.good-one .guding .img-box {
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
}
.good-one .good-info {
padding: 12rpx;
padding-bottom: 0;
margin-top: -5px;
}
.good-one .good-info .good-name {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin-bottom: 13px;
}
.good-one .good-info .good-price-info {
display: flex;
}
.good-one .good-info .good-price-info .price {
color: #ff4544;
font-size: 14px;
flex: 1;
}
.good-one .good-info .good-price-info .buy {
width: 24px;
text-align: right;
flex: 1;
}
</style>
<template>
<view
style="padding: 12px; padding-bottom: 0;"
:style="{
'background-color': goodsInfo.backgroundColor,
'background-image': goodsInfo.backgroundPicUrl,
'border-color': goodsInfo.goodsStyle == 2 ? 'rgb(226, 226, 226)' : ''
}"
>
<u-row gutter="24">
<u-col span="6" v-for="(item, gli) in goodList" :key="gli">
<view
class="good-two"
@click="openGood(item)"
:style="{
border: goodsInfo.goodsStyle == 2 ? '1px solid rgb(226, 226, 226)' : '',
background: goodsInfo.goodsStyle == 1 || goodsInfo.goodsStyle == 2 ? '#FFF' : ''
}"
>
<view class="tips" v-if="goodsInfo.showGoodsTag||goodsInfo.customizeGoodsTag">
<image :src="goodsInfo.goodsTagPicUrl" mode="widthFix" style="width:100%" />
</view>
<view class="img-box">
<view class="img-show">
<image
style="
width: 100%;
height: 100%;
border-radius: 10rpx 10rpx 0 0;
"
:mode="goodsInfo.fill == 1 ? 'aspectFill' : 'aspectFit'"
:src="item.picUrl"
/>
</view>
</view>
<view class="good-info">
<view class="good-name" v-if="goodsInfo.showGoodsName">{{ item.name }}</view>
<view class="good-price-info">
<view class="price" :style="{ color: mainColor }">
<text style="font-size:13px;margin-right:5px"></text>
<text>{{ item.pintuanPrice }}</text>
</view>
<view class="buy" v-if="goodsInfo.showBuyBtn" @click.stop="showSkuHandler(item)">
<u-icon
name="cart-o"
size="40"
:color="mainColor"
v-if="goodsInfo.buyBtn == 'cart'"
/>
<u-icon
name="add-o"
size="40"
:color="mainColor"
v-else-if="goodsInfo.buyBtn == 'add'"
/>
<u-button
type="primary"
size="mini"
:ripple="true"
:color="goodsInfo.buttonColor"
:custom-style="
`backgroundColor:${goodsInfo.buttonColor},color:${
goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4 ? goodsInfo.buttonColor : '#FFF'
}`
"
:plain="goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4"
:shape="goodsInfo.buyBtnStyle == 3 || goodsInfo.buyBtnStyle == 4 ? 'circle' : 'square'"
v-else
>{{ goodsInfo.buyBtnText }}</u-button>
</view>
</view>
</view>
</view>
</u-col>
</u-row>
<good-sku v-if="showSku" borderRadius="20" v-model="showSku" :good="sku" :option-type="2"></good-sku>
<auth v-if="showAuth" @changeuserinfo="reloadUserinfo" @gbAuth="gbAuth"></auth>
</view>
</template>
<script>
import goodSku from "../goods/goodsku";
import auth from "@/components/auth/index.vue";
export default {
components: {
goodSku,
auth,
},
props: ["goodList", "goodsInfo"],
data() {
return {
mainColor: "",
activeKey: 0,
showSku: false,
sku: {},
showAuth: false,
u: {},
};
},
created() {
this.mainColor = this.$uiConfig.mainColor;
},
methods: {
openGood(item) {
uni.navigateTo({ url: "/pages/goods/goods?GoodsId=" + item.id });
},
showSkuHandler(g) {
this.sku = g;
this.u = uni.getStorageSync("mall_UserInfo");
if (!this.u) {
this.u = {
nickName: "未登录",
avatarUrl: "",
};
this.showAuth = true;
} else {
this.showSku = true;
}
},
reloadUserinfo() {
this.u = uni.getStorageSync("mall_UserInfo");
// this.showAuth = false;
},
//关闭登录窗口
gbAuth() {
this.showAuth = false;
},
},
};
</script>
<style>
.good-two {
position: relative;
margin-bottom: 12px;
border: 1rpx solid transparent;
border-radius: 10rpx;
overflow: hidden;
padding-bottom: 10rpx;
}
.good-two .tips {
width: 64rpx;
height: 64rpx;
position: absolute;
top: 0;
left: 0;
z-index: 4;
}
.good-two .img-box {
width: 100%;
height: 0;
padding-top: 100%;
position: relative;
}
.good-two .img-box .img-show {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.good-two .guding {
position: relative;
}
.good-two .guding .img-box {
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
}
.good-two .good-info {
padding: 6rpx;
margin-top: -5px;
padding-bottom: 0;
}
.good-two .good-info .good-name {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin: 3px 0;
font-size: 13px;
height: 37px;
}
.good-two .good-info .good-price-info {
display: flex;
}
.good-two .good-info .good-price-info .price {
color: #ff4544;
flex: 1;
font-size: 14px;
}
.good-two .good-info .good-price-info .buy {
width: 24px;
text-align: right;
}
</style>
<template>
<div
style="padding: 12px; padding-bottom: 0;"
:style="{
'background-color': goodsInfo.backgroundColor,
'background-image': goodsInfo.backgroundPicUrl,
'border-color': goodsInfo.goodsStyle == 2 ? 'rgb(226, 226, 226)' : ''
}"
>
<u-row gutter="24">
<u-col span="4" v-for="(item, gli) in goodList" :key="gli">
<div
class="good-three"
@click="openGood(item)"
:style="{
border: goodsInfo.goodsStyle == 2 ? '1px solid rgb(226, 226, 226)' : '',
background: goodsInfo.goodsStyle == 1 || goodsInfo.goodsStyle == 2 ? '#FFF' : ''
}"
>
<div class="tips" v-if="goodsInfo.showGoodsTag||goodsInfo.customizeGoodsTag">
<image :src="goodsInfo.goodsTagPicUrl" mode="widthFix" style="width:100%" />
</div>
<div class="img-box">
<div class="img-show">
<image
style="
width: 100%;
height: 100%;
border-radius: 10rpx 10rpx 0 0;
"
:mode="goodsInfo.fill == 1 ? 'aspectFill' : 'aspectFit'"
:src="item.picUrl"
/>
</div>
</div>
<div class="good-info">
<div class="good-name" v-if="goodsInfo.showGoodsName">{{ item.name }}</div>
<div class="good-price-info">
<view class="price" :style="{ color: mainColor }">
<text style="font-size:13px;margin-right:5px"></text>
<text>{{ item.pintuanPrice }}</text>
</view>
<view class="buy" v-if="goodsInfo.showBuyBtn" @click.stop="showSkuHandler(item)">
<u-icon
name="cart-o"
size="40"
:color="mainColor"
v-if="goodsInfo.buyBtn == 'cart'"
/>
<u-icon
name="add-o"
size="40"
:color="mainColor"
v-else-if="goodsInfo.buyBtn == 'add'"
/>
<u-button
type="primary"
size="mini"
:ripple="true"
:color="goodsInfo.buttonColor"
:custom-style="
`backgroundColor:${goodsInfo.buttonColor},color:${
goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4 ? goodsInfo.buttonColor : '#FFF'
}`
"
:plain="goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4"
:shape="goodsInfo.buyBtnStyle == 3 || goodsInfo.buyBtnStyle == 4 ? 'circle' : 'square'"
v-else
>{{ goodsInfo.buyBtnText }}</u-button>
</view>
</div>
</div>
</div>
</u-col>
</u-row>
<good-sku v-if="showSku" borderRadius="20" v-model="showSku" :good="sku" :option-type="2"></good-sku>
<auth v-if="showAuth" @changeuserinfo="reloadUserinfo" @gbAuth="gbAuth"></auth>
</div>
</template>
<script>
import goodSku from "../goods/goodsku";
import auth from "@/components/auth/index.vue";
export default {
components: {
goodSku,
auth,
},
props: ["goodList", "goodsInfo"],
data() {
return {
mainColor: "",
activeKey: 0,
showSku: false,
sku: {},
showAuth: false,
u: {},
};
},
created() {
this.mainColor = this.$uiConfig.mainColor;
},
methods: {
openGood(item) {
uni.navigateTo({ url: "/pages/goods/goods?GoodsId=" + item.id });
},
showSkuHandler(g) {
this.sku = g;
this.u = uni.getStorageSync("mall_UserInfo");
if (!this.u) {
this.u = {
nickName: "未登录",
avatarUrl: "",
};
this.showAuth = true;
} else {
this.showSku = true;
}
},
reloadUserinfo() {
this.u = uni.getStorageSync("mall_UserInfo");
// this.showAuth = false;
},
//关闭登录窗口
gbAuth() {
this.showAuth = false;
},
},
};
</script>
<style>
.good-three {
position: relative;
margin-bottom: 12px;
border: 1rpx solid transparent;
border-radius: 10rpx;
overflow: hidden;
padding-bottom: 5px;
}
.good-three .tips {
width: 64rpx;
height: 64rpx;
position: absolute;
top: 0;
left: 0;
z-index: 4;
}
.good-three .img-box {
width: 100%;
height: 0;
padding-top: 100%;
position: relative;
}
.good-three .img-box .img-show {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.good-three .guding {
position: relative;
}
.good-three .guding .img-box {
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
}
.good-three .good-info {
padding: 6rpx;
margin-top: -5px;
padding-bottom: 0;
}
.good-three .good-info .good-name {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin: 3px 0;
font-size: 13px;
word-break: break-all;
height: 37px;
}
.good-three .good-info .good-price-info {
display: flex;
justify-items: center;
align-items: center;
}
.good-three .good-info .good-price-info .price {
color: #ff4544;
flex: 1;
font-size: 14px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.good-three .good-info .good-price-info .buy {
width: 24px;
text-align: right;
}
</style>
<template>
<view
style="padding: 12px; padding-bottom: 0;width:100%;min-height:450rpx;"
:style="{
'background-color': goodsInfo.backgroundColor,
'background-image': goodsInfo.backgroundPicUrl,
'border-color': goodsInfo.goodsStyle == 2 ? 'rgb(226, 226, 226)' : ''
}"
>
<view
class="good-four"
v-for="(item, gli) in goodList"
:key="gli"
@click="openGood(item)"
:style="{
border: goodsInfo.goodsStyle == 2 ? '1px solid rgb(226, 226, 226)' : '',
background: goodsInfo.goodsStyle == 1 || goodsInfo.goodsStyle == 2 ? '#FFF' : ''
}"
>
<view class="tips" v-if="goodsInfo.showGoodsTag||goodsInfo.customizeGoodsTag"><image :src="goodsInfo.goodsTagPicUrl" mode="widthFix" style="width: 100%;" /></view>
<view class="img-box"><image style="width: 100%; height: 100%;" :mode="goodsInfo.fill == 1 ? 'aspectFill' : 'aspectFit'" :src="item.picUrl" /></view>
<view class="good-info">
<view class="good-name" v-if="goodsInfo.showGoodsName">{{ item.name }}</view>
<view class="good-price-info">
<view class="price" :style="{ color: mainColor }">
<text style="font-size:13px;margin-right:5px"></text>
<text>{{ item.pintuanPrice }}</text>
</view>
<view class="buy" v-if="goodsInfo.showBuyBtn" @click.stop="showSkuHandler(item)">
<u-icon name="cart-o" size="40" :color="mainColor" v-if="goodsInfo.buyBtn == 'cart'" />
<u-icon name="add-o" size="40" :color="mainColor" v-else-if="goodsInfo.buyBtn == 'add'" />
<u-button
type="primary"
size="mini"
:ripple="true"
:color="goodsInfo.buttonColor"
:custom-style="
`backgroundColor:${goodsInfo.buttonColor},color:${goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4 ? goodsInfo.buttonColor : '#FFF'}`
"
:plain="goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4"
:shape="goodsInfo.buyBtnStyle == 3 || goodsInfo.buyBtnStyle == 4 ? 'circle' : 'square'"
v-else
>
{{ goodsInfo.buyBtnText }}
</u-button>
</view>
</view>
</view>
</view>
<good-sku v-if="showSku" :option-type="2" borderRadius="20" v-model="showSku" :good="sku"></good-sku>
<auth v-if="showAuth" @changeuserinfo="reloadUserinfo" @gbAuth="gbAuth"></auth>
</view>
</template>
<script>
import goodSku from '../goods/goodsku';
import auth from '@/components/auth/index.vue';
export default {
components: {
goodSku,
auth
},
props: ['goodList', 'goodsInfo'],
data() {
return {
mainColor: '',
activeKey: 0,
showSku: false,
sku: {},
showAuth: false,
u: {}
};
},
created() {
this.mainColor = this.$uiConfig.mainColor;
},
methods: {
openGood(item) {
uni.navigateTo({ url: '/pages/goods/goods?GoodsId=' + item.id });
},
showSkuHandler(g) {
this.sku = g;
this.u = uni.getStorageSync('mall_UserInfo');
if (!this.u) {
this.u = {
nickName: '未登录',
avatarUrl: ''
};
this.showAuth = true;
} else {
this.showSku = true;
}
},
reloadUserinfo() {
this.u = uni.getStorageSync('mall_UserInfo');
// this.showAuth = false;
},
//关闭登录窗口
gbAuth() {
this.showAuth = false;
}
//格式化价格添加.00
// getPrice(value){
// var html,_val;
// value =Number(value).toFixed(2);
// if(value==0){
// value=0;
// return html = "¥0";
// }else if(value.split('.')[1].substring(1)==0){
// value = Number(value).toFixed(2);
// }
// _val = value.split('.');
// return html = '¥'+_val[0]+'.'+_val[1];
// }
}
};
</script>
<style>
.good-four {
position: relative;
margin-bottom: 14px;
display: flex;
height: 102px;
border: 1rpx solid transparent;
border-radius: 10rpx;
box-sizing: border-box;
padding: 0 1px 1px 0;
overflow: hidden;
}
.good-four .tips {
width: 64rpx;
height: 64rpx;
position: absolute;
top: 0;
left: 0;
z-index: 4;
}
.good-four .img-box {
width: 100px;
height: 100px;
}
.good-four .good-info {
padding: 12px;
flex: 1;
width: 1rpx;
border: 10rpx;
padding-bottom: 0;
display: flex;
flex-direction: column;
/* width:20%; */
}
.good-four .good-info .good-name {
font-size: 13px;
height: 34px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.good-four .good-info .good-price-info {
display: flex;
justify-items: center;
align-items: flex-end;
height: 22px;
flex: 1;
padding-bottom: 10rpx;
}
.good-four .good-info .good-price-info .price {
color: #ff4544;
flex: 1;
font-size: 14px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.good-four .good-info .good-price-info .buy {
width: 24px;
text-align: right;
}
</style>
<template>
<view
class="her-scoller"
:style="{
'background-color': goodsInfo.backgroundColor,
'background-image': goodsInfo.backgroundPicUrl,
'border-color': goodsInfo.goodsStyle == 2 ? 'rgb(226, 226, 226)' : ''
}"
>
<view
class="good-five"
@click="openGood(item)"
v-for="(item, gli) in goodList"
:key="gli"
:style="{
border: goodsInfo.goodsStyle == 2 ? '1px solid rgb(226, 226, 226)' : '',
background: goodsInfo.goodsStyle == 1 || goodsInfo.goodsStyle == 2 ? '#FFF' : ''
}"
>
<view class="tips" v-if="goodsInfo.showGoodsTag||goodsInfo.customizeGoodsTag"><image :src="goodsInfo.goodsTagPicUrl" mode="widthFix" style="width:100%" /></view>
<view class="img-box">
<view class="img-show">
<image style="width: 100%; height: 100%; border-radius: 10rpx 10rpx 0 0;" :mode="goodsInfo.fill == 1 ? 'aspectFill' : 'aspectFit'" :src="item.picUrl" />
</view>
</view>
<view class="good-info">
<view class="good-name" v-if="goodsInfo.showGoodsName">{{ item.name }}</view>
<view class="good-price-info">
<view class="price" :style="{ color: mainColor }">
<text style="font-size:13px;margin-right:5px"></text>
<text>{{ item.pintuanPrice }}</text>
</view>
<view class="buy" v-if="goodsInfo.showBuyBtn" @click.stop="showSkuHandler(item)">
<u-icon name="cart-o" size="40" :color="mainColor" v-if="goodsInfo.buyBtn == 'cart'" />
<u-icon name="add-o" size="40" :color="mainColor" v-else-if="goodsInfo.buyBtn == 'add'" />
<u-button
type="primary"
size="mini"
:ripple="true"
:color="goodsInfo.buttonColor"
:custom-style="
`backgroundColor:${goodsInfo.buttonColor},color:${goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4 ? goodsInfo.buttonColor : '#FFF'}`
"
:plain="goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4"
:shape="goodsInfo.buyBtnStyle == 3 || goodsInfo.buyBtnStyle == 4 ? 'circle' : 'square'"
v-else
>
{{ goodsInfo.buyBtnText }}
</u-button>
</view>
</view>
</view>
</view>
<good-sku v-if="showSku" :option-type="2" borderRadius="20" v-model="showSku" :good="sku"></good-sku>
<auth v-if="showAuth" @changeuserinfo="reloadUserinfo" @gbAuth="gbAuth"></auth>
</view>
</template>
<script>
import goodSku from '../goods/goodsku';
import auth from '@/components/auth/index.vue';
export default {
components: {
goodSku,
auth
},
props: ['goodList', 'goodsInfo'],
data() {
return {
mainColor: '',
activeKey: 0,
showSku: false,
sku: {},
showAuth: false,
u: {}
};
},
created() {
this.mainColor = this.$uiConfig.mainColor;
},
methods: {
openGood(item) {
uni.navigateTo({ url: '/pages/goods/goods?GoodsId=' + item.id });
},
showSkuHandler(g) {
this.sku = g;
this.u = uni.getStorageSync('mall_UserInfo');
if (!this.u) {
this.u = {
nickName: '未登录',
avatarUrl: ''
};
this.showAuth = true;
} else {
this.showSku = true;
}
},
reloadUserinfo() {
this.u = uni.getStorageSync('mall_UserInfo');
// this.showAuth = false;
},
//关闭登录窗口
gbAuth() {
this.showAuth = false;
}
}
};
</script>
<style>
.her-scoller {
overflow-x: auto !important;
padding: 12px;
display: flex;
white-space: nowrap;
}
/* .her-scoller::after {
clear: both;
content: " ";
display: block;
} */
.her-scoller .good-five {
position: relative;
margin-right: 12px;
width: 30%;
border: 1rpx solid transparent;
border-radius: 10rpx;
padding-bottom: 10rpx;
/* float: left; */
}
.her-scoller .good-five .tips {
width: 64rpx;
height: 64rpx;
position: absolute;
top: 0;
left: 0;
z-index: 4;
}
.her-scoller .good-five .img-box {
width: 100%;
height: 0;
padding-top: 100%;
position: relative;
}
.her-scoller .good-five .img-box .img-show {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
overflow: hidden;
z-index: 2;
}
.her-scoller .good-five .guding {
position: relative;
}
.her-scoller .good-five .guding .img-box {
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
}
.her-scoller .good-five .good-info {
padding: 6rpx;
padding-bottom: 0;
}
.her-scoller .good-five .good-info .good-name {
overflow: hidden;
text-overflow: ellipsis;
display: block;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin-bottom: 4rpx;
font-size: 13px;
width: 100%;
}
.her-scoller .good-five .good-info .good-price-info {
display: flex;
justify-items: center;
align-items: center;
}
.her-scoller .good-five .good-info .good-price-info .price {
color: #ff4544;
flex: 1;
font-size: 14px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.her-scoller .good-five .good-info .good-price-info .buy {
width: 24px;
text-align: right;
}
</style>
<template>
<view
style="padding: 12px; padding-bottom: 0;width:100%;"
:style="{
'background-color': goodsInfo.backgroundColor,
'background-image': goodsInfo.backgroundPicUrl,
'border-color': goodsInfo.goodsStyle == 2 ? 'rgb(226, 226, 226)' : ''
}"
>
<view
class="good-four"
v-for="(item, gli) in goodList"
:key="gli"
@click="openGood(item)"
:style="{
border: goodsInfo.goodsStyle == 2 ? '1px solid rgb(226, 226, 226)' : '',
background: goodsInfo.goodsStyle == 1 || goodsInfo.goodsStyle == 2 ? '#FFF' : ''
}"
>
<view class="tips" v-if="goodsInfo.showGoodsTag||goodsInfo.customizeGoodsTag"><image :src="goodsInfo.goodsTagPicUrl" mode="widthFix" style="width: 100%;" /></view>
<view class="img-box"><image style="width: 100%; height: 100%;" :mode="goodsInfo.fill == 1 ? 'aspectFill' : 'aspectFit'" :src="item.picUrl" /></view>
<view class="good-info">
<view class="good-name" v-if="goodsInfo.showGoodsName">{{ item.name }}</view>
<view class="good-price-info">
<view class="price" :style="{ color: mainColor }">
<text style="font-size:13px;margin-right:5px"></text>
<text>{{ item.pintuanPrice }}</text>
</view>
<view class="buy" v-if="goodsInfo.showBuyBtn" @click.stop="showSkuHandler(item)">
<u-icon name="cart-o" size="40" :color="mainColor" v-if="goodsInfo.buyBtn == 'cart'" />
<u-icon name="add-o" size="40" :color="mainColor" v-else-if="goodsInfo.buyBtn == 'add'" />
<u-button
type="primary"
size="mini"
:ripple="true"
:color="goodsInfo.buttonColor"
:custom-style="
`backgroundColor:${goodsInfo.buttonColor},color:${goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4 ? goodsInfo.buttonColor : '#FFF'}`
"
:plain="goodsInfo.buyBtnStyle == 2 || goodsInfo.buyBtnStyle == 4"
:shape="goodsInfo.buyBtnStyle == 3 || goodsInfo.buyBtnStyle == 4 ? 'circle' : 'square'"
v-else
>
{{ goodsInfo.buyBtnText }}
</u-button>
</view>
</view>
</view>
</view>
<good-sku v-if="showSku" borderRadius="20" v-model="showSku" :good="sku" :option-type="2"></good-sku>
<auth v-if="showAuth" @changeuserinfo="reloadUserinfo" @gbAuth="gbAuth"></auth>
</view>
</template>
<script>
import goodSku from '../goods/goodsku';
import auth from '@/components/auth/index.vue';
export default {
components: {
goodSku,
auth
},
props: ['goodList', 'goodsInfo'],
data() {
return {
mainColor: '',
activeKey: 0,
showSku: false,
sku: {},
showAuth: false,
u: {}
};
},
created() {
this.mainColor = this.$uiConfig.mainColor;
},
methods: {
openGood(item) {
uni.navigateTo({ url: '/pages/goods/goods?GoodsId=' + item.id });
},
showSkuHandler(g) {
this.sku = g;
this.u = uni.getStorageSync('mall_UserInfo');
if (!this.u) {
this.u = {
nickName: '未登录',
avatarUrl: ''
};
this.showAuth = true;
} else {
this.showSku = true;
}
},
reloadUserinfo() {
this.u = uni.getStorageSync('mall_UserInfo');
// this.showAuth = false;
},
//关闭登录窗口
gbAuth() {
this.showAuth = false;
}
}
};
</script>
<style>
.good-four {
position: relative;
margin-bottom: 14px;
display: flex;
height: 102px;
border: 1rpx solid transparent;
border-radius: 10rpx;
box-sizing: border-box;
padding: 0 1px 1px 0;
overflow: hidden;
}
.good-four .tips {
width: 64rpx;
height: 64rpx;
position: absolute;
top: 0;
left: 0;
z-index: 4;
}
.good-four .img-box {
width: 100px;
height: 100px;
}
.good-four .good-info {
padding: 12px;
flex: 1;
width: 1rpx;
border: 10rpx;
padding-bottom: 0;
display: flex;
flex-direction: column;
/* width:20%; */
}
.good-four .good-info .good-name {
font-size: 13px;
height: 34px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.good-four .good-info .good-price-info {
display: flex;
justify-items: center;
align-items: flex-end;
height: 22px;
flex: 1;
padding-bottom: 10rpx;
}
.good-four .good-info .good-price-info .price {
color: #ff4544;
flex: 1;
font-size: 14px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.good-four .good-info .good-price-info .buy {
width: 24px;
text-align: right;
}
</style>
<template>
<div class="quicknav">
<div class="box" v-if="showNavs">
<div class="nav-item" v-if="navs.home.opened" @click="goHome">
<view class="quicknav">
<view class="box" v-if="showNavs">
<view class="nav-item" v-if="navs.home.opened" @click="goHome">
<img :src="navs.home.picUrl" />
</div>
</view>
<button
class="nav-item"
v-if="navs.customerService.opened"
......@@ -13,12 +13,12 @@
>
<img :src="navs.customerService.picUrl" />
</button>
<div class="nav-item" v-if="navs.tel.opened" @click="goPhone(navs.tel.number)">
<view class="nav-item" v-if="navs.tel.opened" @click="goPhone(navs.tel.number)">
<img :src="navs.tel.picUrl" />
</div>
<div class="nav-item" v-if="navs.web.opened" @click="goUrl(navs.web.url)">
</view>
<view class="nav-item" v-if="navs.web.opened" @click="goUrl(navs.web.url)">
<img :src="navs.web.picUrl" />
</div>
</view>
<navigator
v-if="navs.mApp.opened"
target="miniProgram"
......@@ -30,25 +30,25 @@
>
<img :src="navs.mApp.picUrl" />
</navigator>
<div
<view
class="nav-item"
v-if="navs.mapNav.opened"
@click="goLocation(navs.mapNav.location)"
>
<img :src="navs.mapNav.picUrl" />
</div>
<div
</view>
<view
class="nav-item"
v-if="navs.customize.opened"
@click="goLink(navs.customize.link_url)"
>
<img :src="navs.customize.picUrl" />
</div>
</div>
<div class="nav-item" v-if="showArrow" @click="changeShow">
</view>
</view>
<view class="nav-item" v-if="showArrow" @click="changeShow">
<img :src="arrowImg" />
</div>
</div>
</view>
</view>
</template>
<script>
......@@ -69,7 +69,7 @@ export default {
this.currentParent = `/${this.$parent.$mp.page.route}`;
},
methods: {
changeShow(e) {
changeShow() {
this.showNavs = !this.showNavs;
this.arrowImg = this.showNavs
? this.navs.openedPicUrl
......@@ -78,9 +78,7 @@ export default {
goHome() {
let t = getCurrentPages();
let crtPath = "/" + t[t.length - 1].route;
if (crtPath != "/pages/index/index") {
uni.redirectTo({ url: "/pages/index/index" });
}
uni.redirectTo({ url: "/pages/index/index" });
},
goLink(url) {
if (url && url.length > 0) {
......
......@@ -16,7 +16,6 @@
:input-align="styleStr.textPosition"
:value="val"
:bg-color="styleStr.color"
:disabled="true"
:text-color="styleStr.textColor"
:radius="styleStr.radius"
:show-action="false"
......
......@@ -144,8 +144,11 @@ export default {
crtPath: "",
};
},
created() {},
created() {
console.log('A join...')
},
mounted() {
console.log('B join...')
this.flagTypeInfo = this.$uiConfig.is_bang;
let tempSystem = uni.getSystemInfoSync();
this.platforms = tempSystem.platform;
......@@ -158,17 +161,27 @@ export default {
}
// #endif
});
if(uni.getStorageSync("navs")){
this.navs = uni.getStorageSync("navs")??[];
}else{
setTimeout(()=>{
this.navs = uni.getStorageSync("navs")??[];
this.activeHandler();
},3000)
}
if(uni.getStorageSync("navs")){
this.navs = uni.getStorageSync("navs")??[];
}else{
setTimeout(()=>{
this.navs = uni.getStorageSync("navs")??[];
this.activeHandler();
},3000)
}
this.activeHandler();
},
// activated(){
// if(uni.getStorageSync("navs")){
// this.navs = uni.getStorageSync("navs")??[];
// }else{
// setTimeout(()=>{
// this.navs = uni.getStorageSync("navs")??[];
// this.activeHandler();
// },3000)
// }
// this.activeHandler();
// },
methods: {
activeHandler() {
let t = getCurrentPages();
......@@ -181,6 +194,7 @@ export default {
queryString="?"+queryString.substring(1,queryString.length)
}
this.crtPath = "/" + t[t.length - 1].route+queryString;
console.log(this.crtPath)
this.navs.forEach((x, i) => {
if (x.url == this.crtPath) {
this.active = i;
......
This diff is collapsed.
......@@ -48,6 +48,7 @@
<checkform v-if="d.id == 'form'" :forms="d.data" :key="di"></checkform>
<addialog v-if="d.id == 'modal' && d.data.opened" :ads="d.data" :key="di"></addialog>
<quicknav v-if="d.id == 'quick-nav' && d.data.navSwitch == 1" :navs="d.data" :key="di"></quicknav>
<pingtuan v-if="d.id == 'pintuan'" :goods="d.data" :key="di"></pingtuan>
</template>
</view>
</template>
......@@ -99,6 +100,7 @@ import checkform from "@/components/checkform/index";
import addialog from "@/components/addialog/index";
import quicknav from "@/components/quicknav/index";
import coupon from "@/components/coupons/coupons";
import pingtuan from "@/components/pingtuan/index";
export default {
data() {
return {
......@@ -140,6 +142,7 @@ export default {
addialog,
quicknav,
coupon,
pingtuan,
},
onLoad(options) {
console.log(options, "option");
......@@ -157,8 +160,27 @@ export default {
this.contentHeight = this.$utils.calcContentHeight(c);
if (options && options.page_id) {
this.pageId = options.page_id;
this.showtabs = false;
this.contentHeight = this.$utils.calcContentHeight();
let queryString = "";
for (var k in options) {
queryString += `&${k}=${options[k]}`;
}
if (queryString != "") {
queryString =
"/pages/index/index?" + queryString.substring(1, queryString.length);
}
let p = 0;
if (uni.getStorageSync("navs")) {
uni.getStorageSync("navs").forEach(x=>{
if (x.url == queryString) {
p=1;
}
})
}
if (p == 0) {
this.showtabs = false;
this.contentHeight = this.$utils.calcContentHeight();
}
}
if (options && options.custom_params) {
let custom_params = JSON.parse(decodeURIComponent(options.custom_params));
......@@ -181,16 +203,16 @@ export default {
withShareTicket: true,
menus: ["shareAppMessage", "shareTimeline"],
});
if(uni.getStorageSync('mall_UserInfo')){
let uid=uni.getStorageSync('mall_UserInfo').UserId
if (uni.getStorageSync("mall_UserInfo")) {
let uid = uni.getStorageSync("mall_UserInfo").UserId;
wx.getUserInfo({
success: function (res) {
let msg={
Id:uid,
AliasName:res.userInfo.nickName,
Photo:res.userInfo.avatarUrl
}
that.updateuserinfo(msg)
let msg = {
Id: uid,
AliasName: res.userInfo.nickName,
Photo: res.userInfo.avatarUrl,
};
that.updateuserinfo(msg);
},
});
}
......@@ -253,7 +275,7 @@ export default {
},
methods: {
updateuserinfo(msg){
updateuserinfo(msg) {
this.request2(
{
url: "/api/MemberUser/SetMemberPhoto",
......@@ -413,6 +435,64 @@ export default {
y.templateBg = { titleColor: "#000" };
}
});
this.myPageData.home_pages.navs[0].template.data.push({
id: "pintuan",
permission_key: "pintuan",
data: {
buttonColor: "#ff4544",
list: [
{
id: 179402,
name:
"日本POLA宝丽黑BA限定小礼盒(黑ba水20ml +黑ba乳液15ml +黑ba面霜5g +黑ba唇颊膏2g)",
picUrl:
"https://cdnimg.iotweixin.com/uploads/mall1285/20200506/904171cab7db2201f6f35c0ca5bb0a93.png",
price: "388.00",
peopleNum: 2,
pintuanPrice: "348.00",
},
{
id: 178355,
name:
"日本珂润(Curel)润浸保湿 滋养乳霜 40g 敏感肌专用 神经酰胺护理 抵抗外部刺激",
picUrl:
"https://cdnimg.iotweixin.com/uploads/mall1285/20200503/979653726a7bc1df0e24464f94b404bd.jpg",
price: "180.00",
peopleNum: 2,
pintuanPrice: "180.00",
},
{
id: 178352,
name: "500g 干羊肚菌 干货 煲汤菌 菌中之王 包邮",
picUrl:
"https://cdnimg.iotweixin.com/uploads/mall1285/20200311/358dd9acf5dafd3cab2c05be3354400c.png",
price: "780.00",
peopleNum: 3,
pintuanPrice: "680.00",
},
],
listStyle: 1,
textStyle: 1,
fill: 1,
goodsCoverProportion: "1-1",
goodsStyle: 1,
showGoodsName: true,
showBuyBtn: true,
buyBtnStyle: 1,
buyBtnText: "去拼团",
showGoodsTag: false,
customizeGoodsTag: false,
goodsTagPicUrl: "",
showImg: false,
backgroundColor: "#fff",
backgroundPicUrl: "",
position: 5,
mode: 1,
backgroundHeight: 100,
backgroundWidth: 100,
borderBackground: "#ffffff",
},
});
},
getReceive() {
//分享进入调取领券接口
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment