由前端实现查询和重置功能

250 阅读1分钟

由于这一块没有后端接口,由前端实现查询和重置功能 实现下拉列表中选择查询项,匹配对应的查询项,在输入框中输入查询内容,进行查询。

查询.png

1、在下拉列表中选择查询项,匹配对应的查询项
handleCommand拿到下拉列表选择的值
<!-- 下拉框,点击选项,绑定到input搜索框,在input搜索框中输入搜索内容,在对应的列数据中查询 -->
  <el-dropdown style="margin-left: -10px" @command="handleCommand">
	<span class="el-dropdown-link">
	  <el-icon class="el-icon--right">
		<arrow-down />
	  </el-icon>
	</span>
	<template #dropdown>
	  <el-dropdown-menu>
		<el-dropdown-item command="phone_id">云手机id</el-dropdown-item>
		<el-dropdown-item command="server_id">服务器id</el-dropdown-item>
		<el-dropdown-item command="phone_name">云手机名称</el-dropdown-item>
		<el-dropdown-item command="access_ip">接入ip</el-dropdown-item>
		<el-dropdown-item command="region">地区</el-dropdown-item>
	  </el-dropdown-menu>
	</template>
  </el-dropdown>
绑定下拉列表和输入框
const searchCommandList = ref([
  { key: "phone_id", label: '请输入云手机id' },
  { key: "server_id", label: '请输入服务器id' },
  { key: "phone_name", label: '请输入云手机名称' },
  { key: "access_ip", label: '请输入接入ip' },
  { key: "region", label: '请输入地区' },
])
const placeholder = ref("请输入云手机名称")

// 搜索下拉框
const searchKey = ref("phone_name")
const handleCommand = (command) => {
  // 此时的查询项
  searchKey.value = command;
  // 更改输入框中的placeholder
  const selectedCommand = searchCommandList.value.find((item) => {
    return item.key === command;   
  });
if (selectedCommand) {
  placeholder.value = selectedCommand.label;
}
}
2、serach功能:遍历tableData数组,将满足筛选条件的数组元素push到searchData数组中,并把最终的searchData赋值给tableDtata
tableDataTemp为备份的tableData数据,每次操作时使用tableDatatemp来进行
const searchData = ref([])
const searchInputName = ref('')

// 查询
const searchUser = () => {
  // 问题1:查询一次后,再次查询,tableData变成了两次查询的并集===>在每次查询前清空searchdata
  searchData.value = [];
  const key = searchInputName.value;
  // 每次操作时使用tableDatatemp来进行
  tableDataTemp.value.forEach(function (item) {
    const searchValue = item[searchKey.value]
    if (searchValue.indexOf(key) > -1) {
      searchData.value.push(item)
    }
  })
  tableData.value = searchData.value;
  total.value = searchData.value.length
}

// 重置筛选,调用后端接口
const resetUser = async () => {
  const res = await getPhoneList(queryForm.value);
  searchInputName.value = '';
  searchData.value = [];
  tableData.value = res.data.content;
  total.value = res.data.count;
}