Files
crmeb-mp/components/homeList/index.vue
karlcarlo a5c5d753b6 feat: 添加静态资源文件及基础组件
- 新增大量图片资源,包括图标、背景图、海报等,用于页面展示
- 添加字体文件及样式配置,支持自定义字体
- 引入 uni-ui 组件库,包括图标、弹窗、日期选择器等常用组件
- 添加网络状态监听、加密工具等基础工具函数
- 配置 Vuex 状态管理,包括购物车数量、热门搜索词等
- 增加页面组件,如用户协议、分销信息、提现状态等
- 配置项目构建和忽略文件,优化开发体验
2026-02-26 17:59:51 +08:00

134 lines
2.8 KiB
Vue

<template>
<!-- 顶部下拉导航 -->
<view class="dialog_nav dialogIndex"
:style="{ top: navH + 'px' }" v-show="currentPage">
<view class="dialog_nav_item" :class="item.after"
v-for="(item,index) in headerNav" :key="index"
@tap="linkPage(item.url)">
<text class="iconfont" :class="item.icon"></text>
<text class="pl-20">{{item.name}}</text>
</view>
</view>
</template>
<script>
export default {
name: "homeIdex",
props: {
navH: {
type: String|Number,
default: ""
},
currentPage: {
type: Boolean,
default: false
},
openNavList:{
type: Array,
default: ()=>[]
},
navList: {
type: Array,
default: ()=>[]
}
},
data() {
return {
selectNavList:[
{name:'首页',icon:'icon-ic_mall',url:'/pages/index/index',after:'dialog_after'},
{name:'搜索',icon:'icon-ic_search',url:'/pages/goods/goods_search/index',after:'dialog_after'},
{name:'购物车',icon:'icon-ic_ShoppingCart1',url:'/pages/order_addcart/order_addcart',after:'dialog_after'},
{name:'我的收藏',icon:'icon-ic_star',url:'/pages/users/user_goods_collection/index',after:'dialog_after'},
{name:'个人中心',icon:'icon-a-ic_user1',url:'/pages/user/index'},
]
};
},
computed:{
headerNav(){
if(this.navList.length){
return this.navList
}else{
let arr = [];
this.selectNavList.forEach((item,index)=>{
if(this.openNavList.includes(index)){
arr.push(item);
}
})
return arr
}
}
},
methods: {
linkPage(url){
if (['/pages/goods_cate/goods_cate', '/pages/order_addcart/order_addcart', '/pages/user/index', '/pages/index/index']
.indexOf(url) == -1) {
uni.navigateTo({
url: url
})
} else {
uni.switchTab({
url: url
})
}
}
},
};
</script>
<style scoped lang="scss">
.dialog_nav{
position: fixed;
left: 14rpx;
width: 240rpx;
background: #FFFFFF;
box-shadow: 0px 0px 16rpx rgba(0, 0, 0, 0.08);
z-index: 310;
border-radius: 14rpx;
&::before{
content: '';
width: 0;
height: 0;
position: absolute;
left: -26rpx;
right: 0;
margin:auto;
top:-9px;
border-bottom: 10px solid #FFFFFF;
border-left: 10px solid transparent; /*transparent 表示透明*/
border-right: 10px solid transparent;
}
&.dialogIndex{
left: 14rpx;
&::before{
left: 0rpx !important;
}
}
}
.dialog_nav_item{
width: 100%;
height: 84rpx;
line-height: 84rpx;
padding: 0 20rpx 0;
box-sizing: border-box;
border-bottom: #eee;
font-size: 28rpx;
color: #333;
position: relative;
display: flex;
.iconfont{
font-size: 32rpx;
margin-right: 26rpx;
}
}
.dialog_after{
::after{
content: '';
position: absolute;
width:90px;
height: 1px;
background-color: #EEEEEE;
bottom: 0;
right: 0;
}
}
</style>