1. 【修复】申请退款后积分等操作可能出现错误的问题 2. 【修复】拼团支付可能出现支付错误的问题 3. 【修复】退款申请后的订单流程优化和积分赠送的问题 4. 【修复】回收站中的商品无法恢复的问题 5. 【修复】一号通短信查询记录不完整的问题 6. 【修复】用户管理批量加分组,标签的问题 7. 【修复】积分日志搜索显示有误的问题 8. 【修复】手动发送优惠券可能会出错的问题 9. 【修复】核销订单创建在某种条件下会出错的问题 10. 【修复】移动端商品详情,购物车等样式兼容问题 11. 【修复】业务流程性的优化
187 lines
4.3 KiB
Vue
187 lines
4.3 KiB
Vue
<template>
|
|
<view class="navTabBox">
|
|
<view class="longTab">
|
|
<scroll-view scroll-x="true" style="white-space: nowrap; display: flex;" scroll-with-animation :scroll-left="tabLeft" show-scrollbar="true">
|
|
<view class="longItem line1" :style='"width:"+isWidth+"px"' :data-index="index" :class="index===tabClick?'click':''" v-for="(item,index) in tabTitle" :key="index" :id="'id'+index" @click="longClick(index)">{{item.name}}</view>
|
|
<view class="underlineBox" :style='"transform:translateX("+isLeft+"px);width:"+isWidth+"px"'>
|
|
<view class="underline"></view>
|
|
</view>
|
|
</scroll-view>
|
|
</view>
|
|
<view class="child-box" v-if="tabClick>0 && tabTitle[tabClick].child?tabTitle[tabClick].child.length>0:0">
|
|
<scroll-view scroll-x="true" style="white-space: nowrap; display: flex;align-items: center; height: 100%;" scroll-with-animation :scroll-left="tabLeft" show-scrollbar="false">
|
|
<view class="wrapper">
|
|
<view v-for="(item,index) in tabTitle[tabClick].child?tabTitle[tabClick].child:[]" :key="index" class="child-item" :class="{on:index == childIndex}" @click="childTab(tabClick,index)">
|
|
<image :src="item.extra" mode="" :style="{'background-color':item.extra?'none':'#f7f7f7'}"></image>
|
|
<view class="txt line1">{{item.name}}</view>
|
|
</view>
|
|
</view>
|
|
</scroll-view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
getProductslist,
|
|
getProductHot
|
|
} from '@/api/store.js';
|
|
export default {
|
|
name: 'navTab',
|
|
props: {
|
|
tabTitle: {
|
|
type: Array,
|
|
default: []
|
|
}
|
|
|
|
},
|
|
data() {
|
|
return {
|
|
tabClick: 0, //导航栏被点击
|
|
isLeft: 0, //导航栏下划线位置
|
|
isWidth: 0, //每个导航栏占位
|
|
tabLeft:0,
|
|
swiperIndex:0,
|
|
childIndex:0,
|
|
childID:0
|
|
};
|
|
},
|
|
created() {
|
|
|
|
var that = this
|
|
// 获取设备宽度
|
|
uni.getSystemInfo({
|
|
success(e) {
|
|
that.isWidth = e.windowWidth / 5
|
|
}
|
|
})
|
|
},
|
|
methods: {
|
|
// 导航栏点击
|
|
longClick(index){
|
|
this.childIndex = 0;
|
|
if(this.tabTitle.length>5){
|
|
var tempIndex = index - 2;
|
|
tempIndex = tempIndex<=0 ? 0 : tempIndex;
|
|
this.tabLeft = (index-2) * this.isWidth //设置下划线位置
|
|
}
|
|
this.tabClick = index //设置导航点击了哪一个
|
|
this.isLeft = index * this.isWidth //设置下划线位置
|
|
let obj = {
|
|
type:'big', //大标题
|
|
index:index
|
|
}
|
|
this.parentEmit(obj)
|
|
// this.$parent.currentTab = index //设置swiper的第几页
|
|
},
|
|
// 导航子类点击
|
|
childTab(tabClick,index){
|
|
this.childIndex = index
|
|
let obj = {
|
|
parentIndex:tabClick,
|
|
childIndex:index,
|
|
type:'small' //小标题
|
|
}
|
|
this.parentEmit(obj)
|
|
},
|
|
parentEmit(data){
|
|
this.$emit('changeTab', data);
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.navTabBox {
|
|
width: 100%;
|
|
color: rgba(255, 255, 255, 1);
|
|
.click {
|
|
color: white;
|
|
}
|
|
.longTab {
|
|
width: 100%;
|
|
/* #ifdef H5 */
|
|
padding-bottom: 20rpx;
|
|
/* #endif */
|
|
/* #ifdef MP */
|
|
padding-top: 12rpx;
|
|
padding-bottom: 12rpx;
|
|
/* #endif */
|
|
.longItem{
|
|
height: 50upx;
|
|
display: inline-block;
|
|
line-height: 50upx;
|
|
text-align: center;
|
|
font-size: 30rpx;
|
|
&.click{
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
.underlineBox {
|
|
height: 3px;
|
|
width: 20%;
|
|
display: flex;
|
|
align-content: center;
|
|
justify-content: center;
|
|
transition: .5s;
|
|
.underline {
|
|
width: 33rpx;
|
|
height: 4rpx;
|
|
background-color: white;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.child-box{
|
|
width: 100%;
|
|
position: relative;
|
|
// height: 152rpx;
|
|
background-color: #fff;
|
|
/* #ifdef H5 */
|
|
box-shadow: 0 2px 5px 1px rgba(0, 0, 0, 0.02);
|
|
/* #endif */
|
|
/* #ifdef MP */
|
|
box-shadow: 0 2rpx 3rpx 1rpx #f9f9f9;
|
|
/* #endif */
|
|
|
|
.wrapper{
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 20rpx 0;
|
|
background: #fff;
|
|
/* #ifdef H5 */
|
|
//box-shadow: 0 2px 5px 1px rgba(0, 0, 0, 0.06);
|
|
/* #endif */
|
|
}
|
|
.child-item{
|
|
flex-shrink: 0;
|
|
width:140rpx;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-left: 10rpx;
|
|
image{
|
|
width: 90rpx;
|
|
height: 90rpx;
|
|
border-radius: 50%;
|
|
}
|
|
.txt{
|
|
font-size: 24rpx;
|
|
color: #282828;
|
|
text-align: center;
|
|
margin-top: 10rpx;
|
|
width: 100%;
|
|
}
|
|
&.on{
|
|
image{
|
|
border: 1px solid $theme-color-opacity;
|
|
}
|
|
.txt{
|
|
color: $theme-color;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|