纯前端实现各类表单组件单条件查询功能(看完必会)

本文介绍了如何使用Vue.js和JavaScript纯前端实现表单组件的单条件查询功能。核心问题是数据查询后的还原和查询算法,通过保留原始数据并使用`indexOf()`方法进行匹配。在实现中需要注意还原操作、大小写敏感性和输入框的处理。文章提供了关键代码示例。
摘要由CSDN通过智能技术生成

学习目标:

如题目所示,再也不用苦苦等待后端的数据配合,前端独立实现。
【当然,真正前后端分离项目,还是后端大佬说了算】

样式图展示:

结构样式自己去完,都是饿了么UI组件

核心问题:

  1. 数据查询成功后,如何还原?
  2. 查询功能的核心算法是什么?
  3. 本功能最应该注意什么问题?

【1】
由于查询功能是用的数组的filter方法来实现过滤的,所以它返回的是一个新数组,言下之意:它会改变原来的tableData数据,这样来处理还原的问题不好控制。
所以,最开始的就要准备好一份原始数据,然后接下来的任何操作需要用到的—都用原始数据深拷贝出来的数据,这样有一个好处:
当你需要还原的时候,就可以直接把原始数据 赋值给需要还原的地方即可。

【2】
核心算法:父串.indexOf(子串)
indexOf()方法返回 的结果 只要 是 !== -1 那么,就代表 子串里面至少有一个是在父串里面的。

【3】
最应该注意的就是还原问题、输入框大小写敏感问题等。
**indexOf()**方法有两个特点:
(1)大小写敏感————用toLowerCase()方法来统一转小写,
(2)如果要检索的字符串值没有出现,则返回 -1

不废话,上代码:

表单组件的结构

<div class="zx_userInfo">
        <div>
          <span>加入日期:</span>
          <el-date-picker
            style="width: 260px"
            v-model="formData.datevalue"
            type="daterange"
            range-separator="————"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          >
          </el-date-picker>
        </div>

        <div>
          <span>是否集团公司:</span>
          <el-select v-model="formData.value1" placeholder="请选择">
            <el-option
              v-for="item in options1"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </div>

        <div>
          <span>地区选择:</span>
          <el-cascader
            clearable
            v-model="formData.value2"
            :options="options2"
            :props="{ expandTrigger: 'hover' }"
          ></el-cascader>
        </div>

        <div>
          <span>集团编码/集团名称:</span>
          <el-input
            clearable
            v-model="formData.input"
            placeholder="请输入内容"
            style="width: 160px"
          ></el-input>
        </div>
      </div>

查询、重置按钮结构

<!-- 查询重置按钮 -->
      <div class="btns">
        <el-button
          type="primary"
          round
          style="margin: 0 58px; width: 145px"
          @click="handleSearch"
          >查询</el-button
        >
        <el-button
          type="info"
          round
          style="margin-right: 50px; width: 145px"
          @click="ResetSelect"
          >重置</el-button
        >
      </div>

el-table表格组件和分页

<!-- 下面table表格展示栏 default-expand-all展开子行数据 -->
    <div class="container_table">
      <el-table
        :data="
          tableData.slice((currentPage - 1) * pagesize, currentPage * pagesize)
        "
        style="width: 100%; margin-bottom: 20px; min-height: 288px"
        row-key="id"
        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
      >
        <el-table-column prop=
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值