/* eslint-disable no-empty */ export class Searchs { saveKey = 'searchs'; initSearch = { form: {}, page: {} }; searchs = {} as any; key = '' as string; constructor(key: string) { this.key = key; this.searchs = this.parse(); } save() { localStorage.setItem(this.saveKey, JSON.stringify(this.searchs)); } parse() { let json = { ...initSearch }; try { const val = localStorage.getItem(this.saveKey) as string; json = JSON.parse(val) || json; } catch (error) {} return json; } get(key: string) { const k = key || this.key; if (!this.searchs[k]) { this.searchs[k] = { ...initSearch }; } return this.searchs[k]; } remove(type: 'page' | 'form') { if (this.searchs && this.searchs[this.key]) { type ? delete this.searchs[this.key][type] : delete this.searchs[this.key]; this.save(); } return this.searchs; } getSearchs() { return this.searchs; } removeByKey(key: string) { console.log('真正的删', key); delete this.searchs[key]; this.save(); return this.searchs; } removeAll() { this.searchs = {}; localStorage.setItem(this.saveKey, JSON.stringify(this.searchs)); return this.searchs; } removeByRouter(path: string) { this.searchs = this.parse(); for (const key in this.searchs) { // console.log('清除的循环', key, this.searchs[key]?.bind) if (path === key || path === this.searchs[key]?.bind) { console.log('清除的页面', key); this.removeByKey(key); } } } removeByOtherRouter(path: string) { this.searchs = this.parse(); for (const key in this.searchs) { if (path === key || path === this.searchs[key]?.bind) { } else { this.removeByKey(key); } } } update(data: any, key: string | any, type: 'page' | 'form' | 'bind' | '') { this.searchs = this.parse(); const k = key || this.key; if (!this.searchs[k]) { this.searchs[k] = { ...initSearch }; } if (type) { this.searchs[k][type] = data; } else { this.searchs[k] = data; } this.save(); return this.searchs; } } const initSearch = { form: {}, page: {} };