uniapp里tabs类似与(全部、待付款、已付款等)

先看效果图:

 

接下来看vue代码: 

<template>
   <view class="my-release">
      <view class="bg"></view>
      <view class="tabs">
         <u-tabs
            :list="tabsList" 
            :scrollable='false' 
            lineColor="#FF3F3D" 
            :activeStyle="{color:'#FF3F3D'}"
            :inactiveStyle="{color:'#898989'}"
            @change="change"
         ></u-tabs>
      </view>
      
      <view v-for="(item,index) in typeList" :key="index">
         <view class="box-item">
            <view class="item-up">
               <view class="item-up-type">{{ item.type }}</view>
               <view class="finish" v-if="item.status == 1">
                  显示中
               </view>
               <view :class="item.status == 2 ? 'red-font' : 'finish' " 
                  v-if="item.status == 2">
                  待审核
               </view>
               <view class="finish" v-if="item.status == 3">
                  已过期
               </view>
            </view>
            
            <view class="item-down">
               <view class="item-text1">
                  <text>{{item.text}}</text>
                  <text>手机号:{{item.phone}}</text>
               </view>
               
               <!-- 图片 -->
               <view class="item-imgs">
                  <image 
                     class="item-img" 
                     v-for="(k,i) in item.imgList" 
                     :key="i" 
                     :src="k.imgUrl" 
                     mode="widthFix"
                  ></image>
               </view>
               <view class="item-text2">
                  发布时间:{{item.time}}分钟前
               </view>
            </view>
            
         </view>
      </view>
   </view>
</template>

<script>
   export default {
      data() {
         return {
            tabsList: [
               { name: '全部' },
               { name: '显示中' },
               { name: '待审核' },
               { name: '已过期' }
            ],
            
            typeList: '',   //显示的状态列表
            allList: [      //全部状态列表
               {
                  type: '机械出租',
                  text: '找机械制图人员一名,懂图纸能分解图纸,制图。工资待遇详谈。',
                  phone: '18811111111',
                  imgList: [
                     {imgUrl: '/static/img/img3.png'}, // 图片1
                     {imgUrl: '/static/img/img3.png'}, // 图片2
                     {imgUrl: '/static/img/img3.png'}, // 图片3
                  ],
                  time: '50',
                  status: 2  //待审核
               },
               {
                  type: '电工电料',
                  text: '找机械制图人员一名,懂图纸能分解图纸,制图。工资待遇详谈。',
                  phone: '18811111111',
                  time: '50',
                  status: 3  //已过期
               },
               {
                  type: '五金机电',
                  text: '找机械制图人员一名,懂图纸能分解图纸,制图。工资待遇详谈。',
                  phone: '18811111111',
                  imgList: [
                     {imgUrl: '/static/img/img3.png'}, // 图片1
                     {imgUrl: '/static/img/img3.png'}, // 图片2
                     {imgUrl: '/static/img/img3.png'}, // 图片3
                  ],
                  time: '50',
                  status: 3  //已过期
               },
               {
                  type: '消防器械',
                  text: '找机械制图人员一名,懂图纸能分解图纸,制图。工资待遇详谈。',
                  phone: '18811111111',
                  time: '50',
                  status: 1   //显示中
               },
               {
                  type: '金属配件',
                  text: '找机械制图人员一名,懂图纸能分解图纸,制图。工资待遇详谈。',
                  phone: '18811111111',
                  time: '50',
                  status: 2  //待审核
               },
               {
                  type: '直达家门',
                  text: '找机械制图人员一名,懂图纸能分解图纸,制图。工资待遇详谈。',
                  phone: '18811111111',
                  time: '50',
                  status: 1  //显示中
               },
            ]
         }
      },
      onLoad() {
         this.typeList = this.allList
      },
      methods: {
         change(e) {
            // console.log(e);  
            if ( e.index == 0 ) {
               this.typeList = this.allList;
            } else {
               this.typeList = [];
               for (var i = 0; i < this.allList.length; i++) {
                  if (this.allList[i].status == e.index) {
                     console.log(this.allList[i]);
                     this.typeList.push(this.allList[i]);
                  }
               }
            }
         }
      }
   }
</script>

<style scoped>
   .bg {
      position: fixed;
      height: 100%;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      background-color: #f6f6f6;
      z-index: -1;
   }
   .tabs{
      width: 100%;
      background-color: #FFFFFF;
   }

   .box-item{
      background-color: #FFFFFF;
      margin: 20rpx auto;
      padding: 30rpx 32rpx 38rpx 33rpx;
   }
   
   /* 上 */
   .item-up{
      display: flex;
      justify-content: space-between;
   }
   .item-up-type {
      width: 110rpx;
      height: 36rpx;
      line-height: 36rpx;
      color: white;
      text-align: center;
      font-size: 20rpx;
      border-radius: 10rpx;
      background-color: #FF3F3D;
   }
   .red-font {
      font-size: 22rpx;
      color: #FF3F3D;
   }
   .finish{
      font-size: 22rpx;
   }
   
   /* 下 */
   .item-down{
      display: flex;
      flex-direction: column;
      justify-content: space-around;
   }
   .item-text{
      display: flex;
      justify-content: space-between;
   }
   .item-text1{
      font-size: 28rpx;
      padding-top: 30rpx;
   }
   .item-text2{
      font-size: 24rpx;
      color: #999999;
   }
   
   /* 图片 */
   .item-imgs{
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding-top: 24rpx;
   }
   .item-img{
      width: 218rpx;
      height: 170rpx;
      padding-bottom: 27rpx;
   }

</style>

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp 是一套由腾讯云开发的跨平台应用开发框架,它允许开发者使用一套代码同时构建iOS、Android、Web等多端应用程序。Tabs组件是 UniApp 中常用的一种页面结构,用于展示多个并列的页面或功能模块。 在 UniAppTabs 组件中,通常会有一个顶部的导航栏,包含几个可切换的标签(Tab),每个标签对应一个子页面(Page)。用户可以通过点击这些标签快速导航到不同的内容区域。这种设计常见于许多现代应用程序,如浏览器标签页或新闻阅读器。 以下是 UniApp Tabs 组件的一些关键特点和用法: 1. **初始化设置**:在 Vue 或 WXML 模板中使用 `<van-tabs>` 或 `<tabs>` 组件,并配置标签标题、路径、图标等属性。 ```html <template> <van-tabs v-model="activeIndex"> <van-tab :title="tab1Title" icon="home" :path="'/pages/home'"></van-tab> <van-tab :title="tab2Title" icon="settings" :path="'/pages/settings'"></van-tab> </van-tabs> </template> <script> export default { data() { return { activeIndex: 0, // 默认激活的第一个标签索引 tab1Title: '首页', tab2Title: '设置' }; } }; </script> ``` 2. **动态切换**:`v-model` 双向绑定当前激活的标签页,当用户点击其他标签时,对应的 `activeIndex` 变化,页面也会相应更新。 3. **选项卡行为**:可以配置选项卡的样式,比如是否具有切换动画,或者点击后的过渡效果。 4. **响应式更新**:当数据模型改变时,如果相应的 Tab 内容是动态渲染的,会自动更新显示内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值