多条件搜索

简介: 多条件搜索

在后台管理系统里面多条件搜索是一个必不可少的功能,但对很多人都非常头疼,下面跟着我的脚步我们一起制作。

<template>
  <div class="top_name" :style="divStyle">
    <!-- 骑手名 -->
    <div class="name"
      ><div class="name_input">
        <b>店铺名称:</b>
        <el-select placeholder="店铺名称" v-model="search.pid.value" class="input_names">
          <el-option
            v-for="(option, index) in list_inner"
            :key="index"
            :label="option.store_id"
            :value="option.id"
          />
        </el-select>
        <!-- <el-input
            class="input_name"
            placeholder="店铺名称"
            v-model="search.store_id.value"
          />  -->
      </div>
      <div class="name_input">
        <b>商品名称:</b>
        <el-input class="input_name" placeholder="商品名称" v-model="search.title.value" />
      </div>
      <div class="name_input"
        ><b>商品状态:</b>
        <el-select placeholder="商品状态" class="input_name" v-model="search.status.value">
          <el-option label="上架" value="1" />
          <el-option label="下架" value="2" /> </el-select></div
    ></div>
    <div class="name"
      ><div class="name_input"> </div><div class="name_input"></div
      ><div class="name_inputs"
        ><el-button type="primary" @click="searchEvent" style="width: 70px; margin-left: 8%"
          >查找</el-button
        >
        <el-button type="info" style="width: 70px" @click="clear_inner">清空</el-button></div
      ></div
    >
  </div>
</template>

js

<script setup>
import { ref, reactive } from 'vue';
import axios from 'axios';
import qs from 'qs';
import { handleSearch } from '../../search.js';    //封装的搜索文件
const list_inner = ref('');
axios({
  url: '/api/store/index', //url
  params: {},
})
  .then(function (res) {
    console.log(res.data); // 成功回调
    list_inner.value = res.data.data;
    console.log(list_inner.value, '商品列表');
  })
  .catch(function (err) {
    console.log(err); // 失败回调
  });
// 搜索条件
const search = reactive({
  store_name: {
    value: ``,
    than: 'number',
  },
  pid: {
    value: ``,
    than: 'number',
  },
  status: {
    value: ``,
    than: 'includes',
  },
  tel: {
    value: ``,
    than: 'number',
  },
  title: {
    value: ``,
    than: 'includes',
  },
});
function searchEvent() {
  //结果
  tableData.value = handleSearch(search, list_table.value);
  console.log(tableData.value);
}
// 数据列表
const tableData = ref([]);
const gid_data = ref([]);
const list_table = ref([]);
axios({
  url: '/api/commodity/index', //url
  params: {},
})
  .then(function (res) {
    console.log(res.data, '111'); // 成功回调
    for (let i = 0; i < res.data.data.length; i++) {
      gid_data.value.push(res.data.data[i]);
      list_table.value.push(res.data.data[i]);
    }
  })
  .catch(function (err) {
    console.log(err); // 失败回调
  });
</script>

css:

<style leng="scss">
.top_name {
  width: 100%;
  height: 8vh;
  transition: 1s;
  background-color: #ffffff;
}
/* 增加 */
.add {
  width: 100%;
  height: 6vh;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.add_left {
  width: 30%;
  height: 100%;
  display: flex;
  align-items: center;
}
.add_right {
  width: 30%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: end;
}
/* 骑手名 */
.name {
  width: 100%;
  height: 40%;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.name_input {
  width: 30%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.input_name {
  width: 70%;
}
.input_names {
  width: 70%;
}
.name_inputs {
  width: 30%;
  height: 100%;
  display: flex;
  align-items: center;
}
.name_inps {
  width: 100%;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.name_inps b {
  margin-right: 10px;
}
.but_success {
  width: 100%;
  height: 64px;
  display: flex;
  margin-top: 10px;
  align-items: center;
  justify-content: end;
}
.el-table__header {
  height: 60px;
}
.name_inpasd {
  width: 100%;
  display: flex;
  margin-top: 20px;
  justify-content: center;
}
.asdasd {
  width: 70%;
}
.name_inpss {
  width: 100%;
  height: 300px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.name_inpss b {
  margin-right: 10px;
}
</style>

search.js文件:

export function handleSearch(searchObj, all) {
  let arr = [...all];
  for (const item in searchObj) {
    console.log(searchObj[item]);
    if (searchObj[item].than == 'includes') {
      arr = arr.filter((row) =>
        searchObj[item].value ? row[item].includes(searchObj[item].value) : true
      );
    } else {
      arr = arr.filter((row) =>
        searchObj[item].value ? row[item] == searchObj[item].value : true
      );
    }
  }
  return arr;
}

注意:我这里用的标签是组件,所以如果用的话需要引用组件

相关文章
接口数据多条件搜索(模糊查询)
接口数据多条件搜索(模糊查询)
247 0
|
自然语言处理 索引
ES 匹配多个搜索条件和精确查询
ES 匹配多个搜索条件和精确查询
|
7月前
|
数据采集 存储 API
手动给docusaurus添加一个搜索
如果algolia不能自动配置的话,我教你手动给docusaurus添加一个搜索
手动给docusaurus添加一个搜索
|
7月前
|
SQL 前端开发 Java
实现数据的搜索( 筛选 )功能
实现数据的搜索( 筛选 )功能
|
JavaScript
js多条件筛选(可单条件搜索还可以模糊查询)
js多条件筛选(可单条件搜索还可以模糊查询)
300 0
|
数据采集 搜索推荐 前端开发
11、搜索服务
根据分类、关键字匹配课程名称,课程内容、难度等级搜索,搜索方式为全文搜索,搜索节点分页显示。
105 0
|
搜索推荐 安全 Java
搜索
搜索
124 0
|
机器学习/深度学习 算法 搜索推荐
DARTS+:DARTS 搜索为何需要早停?
近日,华为诺亚 方舟实验室的作者们提出一种可微分的神经网络架构搜索算法 DARTS+,将早停机制(early stopping)引入到原始的 DARTS[1] 算法中,不仅减小了 DARTS 搜索的时间,而且极大地提升了 DARTS 的性能。相关论文《DARTS+: Improved Differentiable Architecture Search with Early Stopping》已经公开(相关代码稍后也会开源)。
232 0
DARTS+:DARTS 搜索为何需要早停?