历史记录

单个组件中写法

<template>
  <section id="search">
    <v-search :searchSettings="searchSettings" @search="carInfoSearch" @reset="resetSearch"></v-search>
  </section>
</template>
<script>
import vSearch from "@/components/search/vSearch";
import { searchSettings } from "./data";
import { insertArray } from '@/config/search-history'
import { SEARCH_MAX_LEN } from '@/config/page-config'
import storage from 'good-storage'
const STATUS_KEY = '_status_' //车辆状态
export default {
  name: "carStatusSearch",
  data() {
    return {
      searchSettings: searchSettings,
      searchData: '',
       statusHistory: storage.get(STATUS_KEY, []) // 获取搜索记录  默认值为空
      
    };
  },
  mounted() {
    this.$nextTick(() => {
       this.searchSettings[0].data = this.statusHistory
   
    })
  },
  methods: {

    carInfoSearch(searchObj) {
       console.log(searchObj,'======提交的数据=======')
      let searchKey={
        "value":searchObj.keyWords  
       }
       if(searchObj.keyWords){
          this.saveHistory(searchKey)
       }
      this.loading = true;
      if (searchObj) {
        searchObj.city ? (searchObj.cityId = searchObj.city[1]) : (searchObj.cityId = null);
        delete searchObj.city;
        this.$emit('handleSearchData', searchObj)
      }
    },
       // 存储并返回新的搜索数据
    saveHistory(query) {
      let searches = storage.get(STATUS_KEY, [])   //默认为空数组
      // 处理数据
      insertArray(searches, query, item => { return item.value === query.value }, SEARCH_MAX_LEN)
      storage.set(STATUS_KEY, searches)
        this.searchSettings[0].data = searches
    },
    resetSearch() {
      this.loading = true;
      this.$emit('handleReset')
    }
  },
  components: {
    vSearch
  }
};
</script>
<style lang="scss">

</style>

引入

// arr 存储的数组 val  存的值 compare 比较函数maxLen 最大值
export function insertArray(arr, val, compare, maxLen) {
    // findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
    // 先查找这个数组中书否有这个值
    const index = arr.findIndex(compare)
        // 如果是在第一位 什么都不做
    if (index === 0) {
        return
    }

    // 如果这个值不是第一位  也就是有这个值 删除它
    if (index > 0) {
        arr.splice(index, 1)
    }
    console.log(index, "========位置==========")
        // 然后把这个值添加到第一位
    arr.unshift(val)
    if (maxLen && arr.length > maxLen) {
        // 删除数组中的最后一个元素
        arr.pop()
    }
}

vuex写法

import storage from 'good-storage'
const SEARCH_MAX_LEN = 5
const STATUS_KEY = '_status_' //车辆状态
const ALARM_KEY = '_alarm_' //车辆报警
const OFFILINE_RECORD_KEY = '_offiline_record_' //离线上线记录
const START_RECORD_KEY = '_start_record_' //点火熄火记录
const ACTION_RECORD_KEY = '_action_record_' //控制日志
const INFO_KEY = '_info_' //车辆信息
const MODEL_KEY = '_model_' //车型管理

const state = {
    statusHistory: storage.get(STATUS_KEY, []),
    alarmHistory: storage.get(ALARM_KEY, []),
    offilineRecordHistory: storage.get(OFFILINE_RECORD_KEY, []),
    startHistory: storage.get(START_RECORD_KEY, []),
    actionHistory: storage.get(ACTION_RECORD_KEY, []),
    infoHistory: storage.get(INFO_KEY, []),
    modelHistory: storage.get(MODEL_KEY, [])
}

const getters = {
    statusHistory(state) {
        return state.statusHistory
    },
    alarmHistory(state) {
        return state.alarmHistory
    },
    offilineRecordHistory(state) {
        return state.offilineRecordHistory
    },
    startHistory(state) {
        return state.startHistory
    },
    actionHistory(state) {
        return state.actionHistory
    },
    infoHistory(state) {
        return state.infoHistory
    },
    modelHistory(state) {
        return state.modelHistory
    },
}
const mutations = {
    statusHistory(state, history) {
        state.statusHistory = history
    },
    alarmHistory(state, history) {
        state.alarmHistory = history
    },
    offilineRecordHistory(state, history) {
        state.offilineRecordHistory = history
    },
    startHistory(state, history) {
        state.startHistory = history
    },
    actionHistory(state, history) {
        state.actionHistory = history
    },
    infoHistory(state, history) {
        state.infoHistory = history
    },
    modelHistory(state, history) {
        state.modelHistory = history
    },
}
const actions = {
    statusSaveHistory({ commit }, query) {
        commit('statusHistory', statusSearch(query))
    },
    alarmSaveHistory({ commit }, query) {
        commit('alarmHistory', alarmSaveSearch(query))
    },
    offilineRecordSaveHistory({ commit }, query) {
        commit('offilineRecordHistory', saveSearch(query))
    },
    startSaveHistory({ commit }, query) {
        commit('startHistory', startSearch(query))
    },
    actionSaveHistory({ commit }, query) {
        commit('actionHistory', saveSearch(query))
    },
    infoSaveHistory({ commit }, query) {
        commit('infoHistory', saveSearch(query))
    },
    modelSaveHistory({ commit }, query) {
        commit('modelHistory', saveSearch(query))
    }
}

function statusSearch(query) {
    let searches = storage.get(STATUS_KEY, [])
    insertArray(searches, query, (item) => {
        return item.value === query.value
    }, SEARCH_MAX_LEN)
    storage.set(STATUS_KEY, searches)
    return searches
}

function alarmSaveSearch(query) {
    let searches = storage.get(ALARM_KEY, [])
    insertArray(searches, query, (item) => {
        return item.value === query.value
    }, SEARCH_MAX_LEN)
    storage.set(ALARM_KEY, searches)
    return searches
}

function startSearch(query) {
    let searches = storage.get(START_RECORD_KEY, [])
    insertArray(searches, query, (item) => {
        return item.value === query.value
    }, SEARCH_MAX_LEN)
    storage.set(START_RECORD_KEY, searches)
    return searches
}

// arr 存储的数组 val  存的值 compare 比较函数maxLen 最大值
function insertArray(arr, val, compare, maxLen) {
    // findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
    // 先查找这个数组中书否有这个值
    const index = arr.findIndex(compare)
        // 如果是在第一位 什么都不做
    if (index === 0) {
        return
    }

    // 如果这个值不是第一位  也就是有这个值 删除它
    if (index > 0) {
        arr.splice(index, 1)
    }
    console.log(index, "========位置==========")
        // 然后把这个值添加到第一位
    arr.unshift(val)
    if (maxLen && arr.length > maxLen) {
        // 删除数组中的最后一个元素
        arr.pop()
    }
}

export default {
    state,
    getters,
    mutations,
    actions
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容