黑马智数Day3

渲染基础Table列表

封装接口:

javascript 复制代码
export function getCardListAPI(params) {
  return request({
    url: '/parking/card/list',
    params
  })
}

具体实现:

javascript 复制代码
  import { getCardListAPI } from '@/apis/card'
  export default {
    data() {
      return {
        // 请求参数
        params: {
          page: 1,
          pageSize: 10
        },
        // 月卡列表
        cardList: []
      }
    },
    mounted() {
      this.getCardList()
    },
    methods: {
      async getCardList() {
        const res = await getCardListAPI(this.params)
        this.cardList = res.data.rows
      }
    }
  }
html 复制代码
  <el-table style="width: 100%" :data="cardList">
    <el-table-column type="index" label="序号" />
    <el-table-column label="车主名称" prop="personName" />
    <el-table-column label="联系方式" prop="phoneNumber" />
    <el-table-column label="车牌号码" prop="carNumber" />
    <el-table-column label="车辆品牌" prop="carBrand" />
    <el-table-column label="剩余有效天数" prop="totalEffectiveDate" />
    <el-table-column label="操作" fixed="right" width="180">
      <template #default="scope">
        <el-button size="mini" type="text">续费</el-button>
        <el-button size="mini" type="text">查看</el-button>
        <el-button size="mini" type="text">编辑</el-button>
        <el-button size="mini" type="text">删除</el-button>
      </template>
    </el-table-column>
  </el-table>

适配状态显示

javascript 复制代码
<el-table-column label="状态" prop="cardStatus" :formatter="formatStatus" />

formatStatus(row) {
  const MAP = {
    0: '可用',
    1: '已过期'
  }
  return MAP[row.cardStatus]
}

分页功能实现

  1. 页数分出来

  2. 点击每页的时候获取当前页的数据重新渲染到table上

  3. 通过实践获取到当前点击的是第几页

  4. 以当前拿到的页数作为参数去和后端要数据

  5. 把获取到的当前页的列表数据重新渲染到table组件上

搜索功能实现

收集查询字段数据

javascript 复制代码
<!-- 搜索区域 -->
<div class="search-container">
  <span class="search-label">车牌号码:</span>
  <el-input v-model="params.carNumber" clearable placeholder="请输入内容" class="search-main" />
  <span class="search-label">车主姓名:</span>
  <el-input v-model="params.personName" clearable placeholder="请输入内容" class="search-main" />
  <span class="search-label">状态:</span>
  <el-select v-model="params.cardStatus">
    <el-option
      v-for="item in cardStatusList"
      :key="item.id"
      :value="item.id"
      :label="item.name"
    />
  </el-select>
  <el-button type="primary" class="search-btn" @click="doSearch">查询</el-button>
</div

data() {
    return {
      // 请求参数
      params: {
        page: 1,
        pageSize: 5,
        carNumber: null,
        personName: null,
        cardStatus: null
      },
      // 月卡状态
      cardStatusList: [
        {
          id: null,
          name: '全部'
        },
        {
          id: 0,
          name: '可用'
        },
        {
          id: 1,
          name: '已过期'
        }
      ]
    }
  }

调用接口获取数据

javascript 复制代码
doSearch() {
  // 调用接口之前把页数参数重置为1
  this.params.page = 1
  this.getCardList()
}

<el-button type="primary" class="search-btn" @click="doSearch">查询</el-button>
相关推荐
烛阴12 小时前
从`new()`到`.DoSomething()`:一篇讲透C#方法与构造函数的终极指南
前端·c#
还债大湿兄12 小时前
阿里通义千问调用图像大模型生成轮动漫风格 python调用
开发语言·前端·python
谢尔登13 小时前
defineProperty如何弥补数组响应式不足的缺陷
前端·javascript·vue.js
蓝瑟忧伤13 小时前
前端技术新十年:从工程体系到智能化开发的全景演进
前端
Baklib梅梅13 小时前
员工手册:保障运营一致性与提升组织效率的核心载体
前端·ruby on rails·前端框架·ruby
IT_陈寒14 小时前
Redis性能翻倍的5个冷门技巧,90%开发者都不知道第3个!
前端·人工智能·后端
T***u33314 小时前
前端框架在性能优化中的实践
javascript·vue.js·前端框架
jingling55515 小时前
vue | 在 Vue 3 项目中集成高德地图(AMap)
前端·javascript·vue.js
油丶酸萝卜别吃15 小时前
Vue3 中如何在 setup 语法糖下,通过 Layer 弹窗组件弹出自定义 Vue 组件?
前端·vue.js·arcgis
J***Q2921 天前
Vue数据可视化
前端·vue.js·信息可视化