106 lines
3.1 KiB
Vue
106 lines
3.1 KiB
Vue
|
<template>
|
|||
|
<view class='nav acea-row acea-row' :style="'background:'+bgColor[0].item+';margin:' +mbConfig+'rpx '+prConfig+'rpx 0;border-radius:'+bgStyle+'rpx;'" v-if="menus.length">
|
|||
|
<block v-if="rowStyle == 0">
|
|||
|
<scroll-view scroll-x="true" style="white-space: nowrap; display: flex" show-scrollbar="false">
|
|||
|
<view v-for="(item,index) in menus" :key="index" class='item' :style="'color:'+titleColor" @click="menusTap(item.info[1].value)">
|
|||
|
<view class='pictrue skeleton-rect'>
|
|||
|
<image :src='item.img' :style="'border-radius:'+menuStyle"></image>
|
|||
|
</view>
|
|||
|
<view class="menu-txt" :style="'color:'+titleColor">{{item.info[0].value}}</view>
|
|||
|
</view>
|
|||
|
</scroll-view>
|
|||
|
</block>
|
|||
|
<block v-else v-for="(item,index) in menus" :key="index">
|
|||
|
<view class='item' :style="'color:'+titleColor+';width:'+number" @click="menusTap(item.info[1].value)">
|
|||
|
<view class='pictrue skeleton-rect'>
|
|||
|
<image :src='item.img' :style="'border-radius:'+menuStyle"></image>
|
|||
|
</view>
|
|||
|
<view class="menu-txt" :style="'color:'+titleColor">{{item.info[0].value}}</view>
|
|||
|
</view>
|
|||
|
</block>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import {merPath} from "@/utils/index"
|
|||
|
export default {
|
|||
|
name: 'menus',
|
|||
|
props: {
|
|||
|
dataConfig: {
|
|||
|
type: Object,
|
|||
|
default: () => {}
|
|||
|
},
|
|||
|
merId:{}
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
menus: this.dataConfig.menuConfig.list,
|
|||
|
bgColor: this.dataConfig.bgColor.color,
|
|||
|
menuStyle: this.dataConfig.menuStyle.type ? '50%' : 0,
|
|||
|
rowStyle: this.dataConfig.tabConfig.tabVal, //0单行1多行
|
|||
|
bgStyle: this.dataConfig.bgStyle.type ? '16' : '0',
|
|||
|
titleColor: this.dataConfig.titleColor.color[0].item,
|
|||
|
mbConfig: this.dataConfig.mbConfig.val*2,
|
|||
|
prConfig: this.dataConfig.prConfig.val*2,
|
|||
|
rowNum: this.dataConfig.rowsNum.type,//0两行,1三行,2四行
|
|||
|
number: this.dataConfig.number.type == 0 ? '33.33%' : this.dataConfig.number.type == 1 ? '25%' : '20%', //三个四个五个
|
|||
|
};
|
|||
|
},
|
|||
|
created() {},
|
|||
|
mounted() {},
|
|||
|
methods: {
|
|||
|
menusTap(url) {
|
|||
|
let data = this.$util.stringIntercept(url, 1, '\?');
|
|||
|
data = this.$util.stringIntercept(data, 1, '\=');
|
|||
|
uni.setStorageSync('storeIndex', data);
|
|||
|
url = merPath(url, this.merId)
|
|||
|
if(url.indexOf("http") != -1){
|
|||
|
// #ifdef H5
|
|||
|
location.href = url
|
|||
|
// #endif
|
|||
|
}else{
|
|||
|
if(['/pages/goods_cate/goods_cate','/pages/plant_grass/index','/pages/order_addcart/order_addcart','/pages/user/index'].indexOf(url) == -1){
|
|||
|
uni.navigateTo({
|
|||
|
url:url
|
|||
|
})
|
|||
|
}else{
|
|||
|
uni.switchTab({
|
|||
|
url:url
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.nav {
|
|||
|
padding: 30rpx 0 0;
|
|||
|
.item {
|
|||
|
width: 20%;
|
|||
|
text-align: center;
|
|||
|
font-size: 24rpx;
|
|||
|
display: inline-block;
|
|||
|
margin-bottom: 20rpx;
|
|||
|
.pictrue,/deep/.pictrue image,/deep/.pictrue .easy-loadimage,/deep/.pictrue uni-image {
|
|||
|
width: 82rpx;
|
|||
|
height: 82rpx;
|
|||
|
margin: 0 auto;
|
|||
|
}
|
|||
|
.menu-txt {
|
|||
|
font-size: 24rpx;
|
|||
|
color: #454545;
|
|||
|
margin-top: 15rpx;
|
|||
|
}
|
|||
|
&.four {
|
|||
|
width: 25%;
|
|||
|
.pictrue {
|
|||
|
width: 90rpx;
|
|||
|
height: 90rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|