import Vue from "vue"; import Vuex from "vuex"; import cloneDeep from "lodash/cloneDeep"; import user from "./modules/user"; import app from "./modules/app"; import tagsView from "./modules/tagsView"; import { requestPost } from "@/js/dai/request"; import { dateFormats } from "@/utils/index"; Vue.use(Vuex); let interTimer = null export default new Vuex.Store({ namespaced: true, state: { // 导航条, 布局风格, defalut(白色) / colorful(鲜艳) navbarLayoutType: "colorful", // 侧边栏, 布局皮肤, default(白色) / dark(黑色) sidebarLayoutSkin: "dark", // 侧边栏, 折叠状态 sidebarFold: false, // 侧边栏, 菜单 sidebarMenuList: [], sidebarMenuActiveName: "", LevelOneMenuActiveName: "", sidebarActiveSubMenuList: [], // 内容, 是否需要刷新 contentIsNeedRefresh: false, // 内容, 标签页(默认添加首页) contentTabs: [ { ...window.SITE_CONFIG["contentTabDefault"], name: "indexWork", title: "首页", }, ], contentTabsActiveName: "indexWork", mainShuju: { menuList: [], activeName: "", }, tipsList: [], tipsTime: [], inIframe: window.self !== window.top, }, modules: { user, app, tagsView, }, mutations: { // 重置vuex本地储存状态 resetStore(state) { Object.keys(state).forEach((key) => { state[key] = cloneDeep(window.SITE_CONFIG["storeState"][key]); }); }, SET_TIPS_LIST(state, tipsList) { let _list = state.tipsList // state.tipsList = _list.concat(tipsList) state.tipsList = tipsList }, SET_TIPS_TIME(state, time) { state.tipsTime = time } }, actions: { clearInter() { clearInterval(interTimer) }, setInterval({ commit, dispatch, state }) { interTimer = setInterval(() => { const _t = dateFormats('YYYY-mm-dd HH:MM', (new Date(new Date().toLocaleDateString()).getTime())) const _tt = new Date(_t).getTime() console.log('230000---', _t) const t = dateFormats('YYYY-mm-dd HH:MM', (new Date().getTime())) const nt = new Date(t).getTime() // 判断当前时间是否为 00:00 if (nt == _tt) { dispatch('setTipsTime') return } let times = state.tipsTime console.log('nt---000', nt) state.tipsTime.forEach((item, index) => { const _t = new Date(item).getTime() if (_t == nt) { clearInterval(interTimer) dispatch('setTipsList', item) times.splice(index, 1) commit('SET_TIPS_TIME', times) } }) }, 60000) }, setTipsList({ commit }, time) { return new Promise(async (resolve, reject) => { const url = '/gov/project/memoAttr/memosToRemind' const params = { remindTime: time || '' } const { data, code, msg } = await requestPost(url, params) if (code === 0) { commit('SET_TIPS_LIST', data) resolve() } else reject(msg) }) }, setTipsTime({ commit, dispatch }) { return new Promise(async (resolve, reject) => { if (interTimer) clearInterval(interTimer) const url = '/gov/project/memoAttr/memoTime' const { data, code, msg } = await requestPost(url) if (code === 0) { commit('SET_TIPS_TIME', data) if (data.length > 0) dispatch('setInterval') resolve() } else reject(msg) }) } } });