vue3保存筛选条件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue3保存筛选条件相关的知识,希望对你有一定的参考价值。

参考技术A vue3保存筛选条件需要保持列表页的筛选条件、分页情况、做到刷新页面,从详情页返回列表页保留之前的筛选情况。将筛选条件保存在url上,这样可以复制直接使用。

vue实现高德地图模糊搜索+筛选条件+定位+信息窗(完整案例)

vue实现高德地图模糊搜索+筛选条件+定位+信息窗

vue实现高德地图模糊搜索+筛选条件+定位+信息窗(完整案例)

先npm安装高德地图
npm i @amap/amap-jsapi-loader --save

<template>
  <div class="StationMap">
    <van-nav-bar title="场站地图" fixed placeholder safe-area-inset-top left-text="返回" left-arrow @click-left="$router.goBack()"/>
    <div class="content-header">
      <div class="van-search-box">
        <van-search v-model="searchValue" placeholder="请输入场站名称" @search="onSearch"></van-search>
      </div>
      <van-dropdown-menu>
        <van-dropdown-item v-model="dropdownValue" :options="dropdownOption"  @change="dropdownChange"/>
      </van-dropdown-menu>
    </div>
    <ul class="searchData" v-show="searchDataShow">
      <li class="van-cell" v-for="(item, i) in searchData" :key="i" @click="searchDataClick(item)">item.content</li>
    </ul>

    <div id="container"></div>
  </div>
</template>

<script>
import AMapLoader from '@amap/amap-jsapi-loader';

export default 
  name: "StationMap",
  computed: 
    searchData () 
      let searchVal = '';//搜索后的数据
      if (this.searchValue) 
        searchVal = this.mapData.filter(item => 
          return [Object.keys(item)[2]].some(key => 
            // 搜索所有的内容
            return String(item[key]).toLowerCase().indexOf(this.searchValue.toLowerCase()) > -1;
          )
        )
        this.searchDataShow = true;
        return searchVal;
      
    
  ,
  watch: 
    searchDataShow () 
      if ((this.searchDataShow) && (this.searchValue === this.searchDataClickItem)) this.searchDataShow = false
    
  ,
  data() 
    return 
      map: null,
      searchDataShow: false,
      searchDataClickItem: "", // 点击之后的值
      mapData: [
        
          lng: "106.15",
          lat: "30.02",
          content: "a合川"
        ,
        
          lng: "106.16",
          lat: "29.18",
          content: "b江津"
        ,
        
          lng: "107.05",
          lat: "29.10",
          content: "c南川"
        ,
      ],
      searchValue: "", // 搜索的值

      dropdownValue: 1,
      dropdownOption: [
        text: '项目1', value: 1,
        text: '项目2', value: 2,
      ],
    
  ,
  methods: 
    dropdownChange (val) 
      this.searchValue = "";
    ,
    // 搜索按钮, 键盘Enter触发
    onSearch(val) 
      this.mapData.forEach(item => 
        if (item.content === val) 
          this.searchDataClick(item)
        
      )
    ,
    // 点击模糊搜索列表 或 弹出信息窗并设置中心位置
    searchDataClick (item) 
      this.searchValue = item.content;
      this.searchDataShow = false;
      this.searchDataClickItem = item.content;

      // 1.信息窗的偏移位
      let infoWindow = new AMap.InfoWindow(offset: new AMap.Pixel(0, -30));
      // 2.获取搜索结果的位置
      let position = [item.lng, item.lat]
      // 3.设置信息窗的内容
      infoWindow.setContent(item.content);
      // 4.将 搜索结果的位置 设置为 中心点
      this.map.setCenter(position)
      // 5.打开信息窗
      infoWindow.open(this.map, position);
    ,
    // 高德地图
    initMap() 
      AMapLoader.load(
        key: "4a9b8d4819c66a63a4b5544397510c59", // 申请好的开发者Key
      ).then(AMap => 
        this.map = new AMap.Map("container", 
          resizeEnable: true,
        );
        let lnglats = [];
        for (const i in this.mapData) 
          lnglats.push([this.mapData[i].lng, this.mapData[i].lat])
        
        for (let i = 0; i < this.mapData.length; i++) 
          let marker = new AMap.Marker(
            position: lnglats[i],
            map: this.map
          );
          marker.content = this.mapData[i].content;
          marker.on('click', this.markerClick);
          marker.emit('click', target: marker);
        
        this.map.setFitView();
      ).catch(err => 
        console.log(err);
      )
    ,
    markerClick (e) 
      let infoWindow = new AMap.InfoWindow(offset: new AMap.Pixel(0, -30));
      infoWindow.setContent(e.target.content);
      infoWindow.open(this.map, e.target.getPosition());
    
  ,
  mounted() 
    //DOM初始化完成进行地图初始化
    this.initMap();
  

</script>

<style lang="scss">
.StationMap 
  .content-header 
    width: 100%;
    position: fixed;
    z-index: 999;
    display: flex;
    .van-search-box
      flex: 1;
      .van-search 
        padding: 0;
        .van-cell 
          line-height: 40px;
          padding: 0;
        
        .van-icon-clear
          padding-right: 20px;
        
      
    
    .van-dropdown-menu 
      flex: 1;
      //margin-left: 10px;
      border-left: 1px solid #e8e8ef;
      .van-dropdown-menu__bar 
        height: 40px;
        background-color: #f7f8fa;
        box-shadow: none;
      
    
  
  .searchData 
    position: fixed;
    top: 86px;
    right: 0;
    left: 0;
    z-index: 998;
    overflow: hidden;
    background-color: #fff;
  
  #container 
    width: 100%;
    height: 100vh;
  

</style>

结果

以上是关于vue3保存筛选条件的主要内容,如果未能解决你的问题,请参考以下文章

excel如何多条件筛选

如何筛选多个条件

excel2003多条件筛选的使用教程

excel 多条件函数筛选

14.pandas里面按条件筛选

EXCEL表格中如何多条件筛选