import { queryNotices } from '@/services/api'; import { sldCommonService } from '@/utils/utils'; export default { namespace: 'global', state: { collapsed: false, notices: [], siteList: [], currentSite: '', currentSiteName: '' }, effects: { //修改密码 *change_manager_pwd({ payload, callback }, { call }) { const response = yield call(sldCommonService, payload,'post','v3/system/admin/adminUser/updatePwd'); if (callback) callback(response); }, *fetchNotices(_, { call, put, select }) { const data = yield call(queryNotices); yield put({ type: 'saveNotices', payload: data, }); const unreadCount = yield select( state => state.global.notices.filter(item => !item.read).length ); yield put({ type: 'user/changeNotifyCount', payload: { totalCount: data.length, unreadCount, }, }); }, *clearNotices({ payload }, { put, select }) { yield put({ type: 'saveClearedNotices', payload, }); const count = yield select(state => state.global.notices.length); const unreadCount = yield select( state => state.global.notices.filter(item => !item.read).length ); yield put({ type: 'user/changeNotifyCount', payload: { totalCount: count, unreadCount, }, }); }, *changeNoticeReadState({ payload }, { put, select }) { const notices = yield select(state => state.global.notices.map(item => { const notice = { ...item }; if (notice.id === payload) { notice.read = true; } return notice; }) ); yield put({ type: 'saveNotices', payload: notices, }); yield put({ type: 'user/changeNotifyCount', payload: { totalCount: notices.length, unreadCount: notices.filter(item => !item.read).length, }, }); }, // 获取站点列表 * get_site_list_data({ payload, callback }, { call, put, select }) { const siteList = yield select(state => state.global.siteList); const response = siteList.length ? {data: siteList, state: 200} : yield call(sldCommonService, payload, 'get', 'v3/system/seller/setting/getSiteSettingList'); if (callback) callback(response); yield put({ type: 'saveSiteList', payload: response.data }); const currentSite = yield select(state => state.global.currentSite); if (!currentSite) { yield put({type: 'setCurrentSite', payload: response.data[0]?.value}) yield put({type: 'setCurrentSiteName', payload: response.data[0]?.title}) } }, }, reducers: { saveSiteList(state, action) { return { ...state, siteList: action.payload, }; }, setCurrentSite(state, { payload }) { localStorage.setItem('currentSite', payload) return { ...state, currentSite: payload, }; }, setCurrentSiteName(state, { payload }) { return { ...state, currentSiteName: payload, }; }, changeLayoutCollapsed(state, { payload }) { return { ...state, collapsed: payload, }; }, getLayoutCollapsed(state, { payload }) { return { ...state, }; }, saveNotices(state, { payload }) { return { ...state, notices: payload, }; }, saveClearedNotices(state, { payload }) { return { ...state, notices: state.notices.filter(item => item.type !== payload), }; }, }, subscriptions: { setup({ history }) { // Subscribe history(url) change, trigger `load` action if pathname is `/` return history.listen(({ pathname, search }) => { if (typeof window.ga !== 'undefined') { window.ga('send', 'pageview', pathname + search); } }); }, }, };