init
This commit is contained in:
commit
44f31f8b9f
402 changed files with 47865 additions and 0 deletions
95
store/notice.js
Normal file
95
store/notice.js
Normal file
|
@ -0,0 +1,95 @@
|
|||
const NOTICE_INTERVAL = 10000
|
||||
|
||||
export const state = () => {
|
||||
return {
|
||||
notices: [],
|
||||
timers: {}
|
||||
}
|
||||
}
|
||||
|
||||
export const mutations = {
|
||||
ADD_NOTICE(state, notice) {
|
||||
state.notices.push(notice)
|
||||
},
|
||||
UPDATE_NOTICE(state, { index, notice }) {
|
||||
this._vm.$set(state.notices, index, notice)
|
||||
},
|
||||
DELETE_NOTICE(state, index) {
|
||||
this._vm.$delete(state.notices, index)
|
||||
},
|
||||
ADD_NOTICE_TIMER(state, { id, timerId }) {
|
||||
this._vm.$set(state.timers, id, { timerId })
|
||||
},
|
||||
DELETE_NOTICE_TIMER(state, id) {
|
||||
this._vm.$delete(state.timers, id)
|
||||
}
|
||||
}
|
||||
|
||||
export const actions = {
|
||||
addNotice({ commit }, { notice }) {
|
||||
return new Promise((resolve) => {
|
||||
const id = `f${(+new Date()).toString(16)}`
|
||||
commit('ADD_NOTICE', { ...notice, id, isShowed: true })
|
||||
resolve(id)
|
||||
})
|
||||
},
|
||||
addNoticeTimer({ commit, dispatch }, { id, interval = NOTICE_INTERVAL }) {
|
||||
const timerId = setTimeout(() => {
|
||||
dispatch('deleteNotice', { id })
|
||||
}, interval)
|
||||
commit('ADD_NOTICE_TIMER', { id, timerId })
|
||||
},
|
||||
deleteNoticeTimer({ state, commit }, { id }) {
|
||||
if (state.timers[id]) {
|
||||
clearTimeout(state.timers[id].timerId)
|
||||
commit('DELETE_NOTICE_TIMER', id)
|
||||
}
|
||||
},
|
||||
addNoticeWithInterval({ dispatch }, { notice, interval }) {
|
||||
return new Promise(async (resolve) => {
|
||||
const id = await dispatch('addNotice', { notice })
|
||||
dispatch('addNoticeTimer', { id, interval })
|
||||
resolve(id)
|
||||
})
|
||||
},
|
||||
deleteNotice({ state, commit, dispatch }, { id }) {
|
||||
const index = state.notices.findIndex((i) => {
|
||||
return i.id === id
|
||||
})
|
||||
if (index !== -1) {
|
||||
commit('DELETE_NOTICE', index)
|
||||
dispatch('deleteNoticeTimer', { id })
|
||||
}
|
||||
},
|
||||
updateNotice({ state, commit, dispatch }, { id = `f${(+new Date()).toString(16)}`, notice, interval }) {
|
||||
const { notices } = state
|
||||
const index = notices.findIndex((i) => {
|
||||
return i.id === id
|
||||
})
|
||||
if (index !== -1) {
|
||||
commit('UPDATE_NOTICE', {
|
||||
index,
|
||||
notice: {
|
||||
...notices[index],
|
||||
isShowed: true,
|
||||
...notice
|
||||
}
|
||||
})
|
||||
} else {
|
||||
commit('ADD_NOTICE', { ...notice, id, isShowed: true })
|
||||
}
|
||||
|
||||
if (interval) {
|
||||
dispatch('deleteNoticeTimer', { id })
|
||||
dispatch('addNoticeTimer', { id, interval })
|
||||
}
|
||||
},
|
||||
showNotice({ state, commit, dispatch }, { id, isShowed = true }) {
|
||||
dispatch('updateNotice', {
|
||||
id,
|
||||
notice: {
|
||||
isShowed
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue