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, fixed1920: { height: document.documentElement.clientHeight, }, fullscreen: false, //是否全屏状态 }, 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); }); }, }, });