| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import { defineStore } from "pinia";
- import { getLan } from "@/locale"
- const state = () => ({
- shopList: [],
- })
- export const useCacheStore = defineStore('cache', {
- state,
- getters: {},
- actions: {
- setShopList(key, page, _list_, search = '') {
- const keys = `shop_${key}_${getLan()}`;
- let search_text = this.deleteSpace(search);
- const searchKey = `search_${search_text}`;
- const findIndex = this.shopList.findIndex(item => item.channel === keys);
- if (findIndex > -1) {
- let arr = this.shopList[findIndex].children;
- let arrs = arr[searchKey] || []
- let children = {}
- children[searchKey] = [...arrs, ..._list_]
- let objs = this.shopList[findIndex].children
- this.shopList[findIndex] = {
- channel: keys,
- page,
- searchKey,
- children: { ...objs, ...children }
- }
- return
- };
- // this.shopList.push({
- // channel: keys,
- // page,
- // children: _list_ || []
- // })
- let children = {}
- children[searchKey] = _list_ || [];
- this.shopList.push({
- channel: keys,
- page,
- searchKey,
- children
- })
- },
- getShopList(key) {
- const keys = `shop_${key}_${getLan()}`;
- const findIndex = this.shopList.findIndex(item => item.channel === keys);
- return this.shopList[findIndex]
- },
- setDetail({ channel, goods_id, detail, search = '' }) {
- const keys = `shop_${channel}_${getLan()}`;
- let search_text = this.deleteSpace(search);
- const searchKey = `search_${search_text}`;
- const findIndex = this.shopList.findIndex(item => item.channel === keys);
- let children = this.shopList[findIndex].children[searchKey]
- const childrenItem = children.find(item => item.num_iid == goods_id);
- childrenItem['_detail'] = detail;
- },
- getShopDetail({ channel, goods_id, search }) {
- const findItem = this.getShopList(channel) || {};
- let search_text = this.deleteSpace(search);
- const searchKey = `search_${search_text}`;
- let children = findItem.children && findItem.children[searchKey]
- const childrenItem = children && children.find(item => item.num_iid == goods_id);
- if (childrenItem && childrenItem['_detail']) return childrenItem['_detail'];
- return null;
- },
- deleteSpace(str) {
- return str.replace(/\s+/g, '');
- },
- changeShopCollect({ channel, goods_id, isCollect }) {
- const filteredData = this.shopList.filter(item => item.channel.includes(`shop_${channel}`));
- if (filteredData) {
- const mergedSearch = filteredData.flatMap(item =>
- Object.entries(item.children)
- .filter(([key]) => key.startsWith('search_'))
- .flatMap(([_, value]) => value)
- );
- const childrenItem = mergedSearch.filter(item => item.num_iid == goods_id);
- if (childrenItem && childrenItem.length) {
- childrenItem.forEach(item => {
- item.isCollect = isCollect;
- if (item['_detail']) {
- item['_detail'].isCollect = isCollect;
- }
- });
- }
- }
- },
- },
- });
|