2024-04-29 11:11:24 +08:00
|
|
|
import {
|
|
|
|
|
inviteCount,
|
|
|
|
|
inviteList,
|
|
|
|
|
inviteRead,
|
|
|
|
|
inviteRemove,
|
|
|
|
|
noticeCount,
|
|
|
|
|
noticeList,
|
|
|
|
|
noticeRead,
|
|
|
|
|
noticeRemove
|
|
|
|
|
} from '@/api/news.js'
|
|
|
|
|
import website from '@/config/website.js'
|
|
|
|
|
const size = 20
|
|
|
|
|
const handler = {
|
|
|
|
|
'0': {
|
|
|
|
|
count: noticeCount,
|
|
|
|
|
getList: noticeList,
|
|
|
|
|
read: noticeRead,
|
|
|
|
|
remove: noticeRemove
|
|
|
|
|
},
|
|
|
|
|
'1': {
|
|
|
|
|
count: inviteCount,
|
|
|
|
|
getList: inviteList,
|
|
|
|
|
read: inviteRead,
|
|
|
|
|
remove: inviteRemove
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getCount(data) {
|
|
|
|
|
let sum = 0
|
|
|
|
|
for (let key in data) {
|
|
|
|
|
sum += data[key]
|
|
|
|
|
}
|
|
|
|
|
return sum
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let refreshTimer = null;
|
|
|
|
|
|
|
|
|
|
function startRefreshToken(dispatch) {
|
|
|
|
|
refreshTimer = setInterval(() => {
|
|
|
|
|
dispatch("newsInit");
|
|
|
|
|
}, website.newsRefreshTime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function stopRefreshToken() {
|
|
|
|
|
clearInterval(refreshTimer)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const news = {
|
|
|
|
|
state: {
|
|
|
|
|
count: 0,
|
|
|
|
|
data: {
|
|
|
|
|
"0": {
|
|
|
|
|
id: "0",
|
2024-04-29 11:19:54 +08:00
|
|
|
uid: "0",
|
2024-04-29 11:11:24 +08:00
|
|
|
title: "消息通知",
|
|
|
|
|
icon: "../../static/img/notice.svg",
|
|
|
|
|
page: {
|
|
|
|
|
current: 0,
|
|
|
|
|
size,
|
|
|
|
|
total: size
|
|
|
|
|
},
|
|
|
|
|
data: [],
|
|
|
|
|
prop: {
|
|
|
|
|
title: 'title',
|
|
|
|
|
desc: (value) => {
|
|
|
|
|
if (value.data[0])
|
|
|
|
|
return value.data[0][0]['desc']
|
|
|
|
|
},
|
|
|
|
|
time: 'createTime',
|
|
|
|
|
isRead: 'isRead',
|
|
|
|
|
listDesc: 'desc',
|
|
|
|
|
},
|
|
|
|
|
navigateTo(item) {
|
|
|
|
|
uni.$once('getNewsDetail', (cb) => {
|
|
|
|
|
cb(item)
|
|
|
|
|
})
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: "/pages/news/newsDetail?type=0"
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"1": {
|
|
|
|
|
id: "1",
|
2024-04-29 11:19:54 +08:00
|
|
|
uid: "1",
|
2024-04-29 11:11:24 +08:00
|
|
|
title: "推送零工岗位",
|
|
|
|
|
icon: "../../static/img/renwu.png",
|
|
|
|
|
page: {
|
|
|
|
|
current: 0,
|
|
|
|
|
size,
|
|
|
|
|
total: size
|
|
|
|
|
},
|
|
|
|
|
data: [],
|
|
|
|
|
prop: {
|
|
|
|
|
title: 'missionTitle',
|
|
|
|
|
desc: (value) => {
|
|
|
|
|
if (value.data[0])
|
|
|
|
|
return `您收到${value.data[0][0]['companyName']}岗位`
|
|
|
|
|
},
|
|
|
|
|
time: 'createTime',
|
|
|
|
|
isRead: 'status',
|
|
|
|
|
listDesc: 'companyName',
|
|
|
|
|
},
|
|
|
|
|
navigateTo(item, dispatch) {
|
|
|
|
|
dispatch('readNew', {
|
|
|
|
|
key: '1',
|
|
|
|
|
id: item.id
|
|
|
|
|
})
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(item.missionNo)}&id=${encodeURIComponent(item.id)}`
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"2": {
|
|
|
|
|
id: "1",
|
2024-04-29 11:19:54 +08:00
|
|
|
uid: "2",
|
2024-04-29 11:11:24 +08:00
|
|
|
title: "推送全职岗位",
|
|
|
|
|
icon: "../../static/img/gangwei.svg",
|
|
|
|
|
page: {
|
|
|
|
|
current: 0,
|
|
|
|
|
size,
|
|
|
|
|
total: size
|
|
|
|
|
},
|
|
|
|
|
data: [],
|
|
|
|
|
prop: {
|
|
|
|
|
title: 'missionTitle',
|
|
|
|
|
desc: (value) => {
|
|
|
|
|
if (value.data[0])
|
|
|
|
|
return `您收到${value.data[0][0]['companyName']}的岗位`
|
|
|
|
|
},
|
|
|
|
|
time: 'createTime',
|
|
|
|
|
isRead: 'status',
|
|
|
|
|
listDesc: 'companyName',
|
|
|
|
|
},
|
|
|
|
|
navigateTo(item, dispatch) {
|
|
|
|
|
dispatch('readNew', {
|
|
|
|
|
key: '1',
|
|
|
|
|
id: item.id
|
|
|
|
|
})
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(item.missionNo)}&id=${encodeURIComponent(item.id)}`
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"4": {
|
|
|
|
|
id: "1",
|
2024-04-29 11:19:54 +08:00
|
|
|
uid: "4",
|
2024-04-29 11:11:24 +08:00
|
|
|
title: "推送政策指南",
|
|
|
|
|
icon: "../../static/img/zhengce.svg",
|
|
|
|
|
page: {
|
|
|
|
|
current: 0,
|
|
|
|
|
size,
|
|
|
|
|
total: size
|
|
|
|
|
},
|
|
|
|
|
data: [],
|
|
|
|
|
prop: {
|
|
|
|
|
title: 'missionTitle',
|
|
|
|
|
desc: (value) => {
|
|
|
|
|
if (value.data[0])
|
|
|
|
|
return `您收到${value.data[0][0]['companyName']}的岗位`
|
|
|
|
|
},
|
|
|
|
|
time: 'createTime',
|
|
|
|
|
isRead: 'status',
|
|
|
|
|
listDesc: 'companyName',
|
|
|
|
|
},
|
|
|
|
|
navigateTo(item, dispatch) {
|
|
|
|
|
dispatch('readNew', {
|
|
|
|
|
key: '1',
|
|
|
|
|
id: item.id
|
|
|
|
|
})
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(item.missionNo)}&id=${encodeURIComponent(item.id)}`
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
unread: {
|
|
|
|
|
"0": 0,
|
|
|
|
|
"1": 0
|
|
|
|
|
},
|
|
|
|
|
allUnread: 0,
|
|
|
|
|
dic: {}
|
|
|
|
|
},
|
|
|
|
|
actions: {
|
|
|
|
|
newsInit({
|
|
|
|
|
dispatch
|
|
|
|
|
}) {
|
|
|
|
|
const ps = []
|
|
|
|
|
ps.push(dispatch('getUnreadNum'))
|
|
|
|
|
|
|
|
|
|
for (let key in handler) {
|
|
|
|
|
ps.push(dispatch('newsReload', key))
|
|
|
|
|
}
|
|
|
|
|
return Promise.all(ps)
|
|
|
|
|
},
|
|
|
|
|
newsReload({
|
|
|
|
|
dispatch,
|
|
|
|
|
commit
|
|
|
|
|
}, id) {
|
|
|
|
|
commit('CLEAR_NEWS_DATA', id)
|
|
|
|
|
return dispatch('newsGetNextPage', id)
|
|
|
|
|
},
|
|
|
|
|
getUnreadNum({
|
|
|
|
|
commit
|
|
|
|
|
}) {
|
|
|
|
|
for (let key in handler) {
|
|
|
|
|
handler[key].count().then((result) => {
|
|
|
|
|
commit('SET_UNREADNUM', {
|
|
|
|
|
id: key,
|
|
|
|
|
count: result
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
newsGetNextPage({
|
|
|
|
|
state,
|
|
|
|
|
commit
|
|
|
|
|
}, id) {
|
|
|
|
|
const item = state.data[id]
|
|
|
|
|
const page = item.page
|
|
|
|
|
const current = page.current + 1
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
if (parseInt(page.total / page.size) + 1 < current) {
|
|
|
|
|
resolve()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
handler[id].getList(current, page.size).then(res => {
|
|
|
|
|
const data = res.data.data;
|
|
|
|
|
commit('ADD_NEWS_DATA', {
|
|
|
|
|
id,
|
|
|
|
|
data: data.records,
|
|
|
|
|
current,
|
|
|
|
|
total: data.total
|
|
|
|
|
})
|
|
|
|
|
resolve(res)
|
|
|
|
|
}).catch(reject)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
removeNew({
|
|
|
|
|
commit
|
|
|
|
|
}, {
|
|
|
|
|
id,
|
|
|
|
|
key,
|
|
|
|
|
group,
|
|
|
|
|
index
|
|
|
|
|
}) {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
commit('REMOVE_NEWS', {
|
|
|
|
|
id,
|
|
|
|
|
key,
|
|
|
|
|
group,
|
|
|
|
|
index
|
|
|
|
|
})
|
|
|
|
|
handler[key].remove(id).then(resolve, reject)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
readNew({
|
|
|
|
|
commit
|
|
|
|
|
}, {
|
|
|
|
|
key,
|
|
|
|
|
id
|
|
|
|
|
}) {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
commit('READ_NEWS', {
|
|
|
|
|
key,
|
|
|
|
|
id
|
|
|
|
|
})
|
|
|
|
|
handler[key].read(id).then(resolve, reject)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
endRefreshNewsTimer() {
|
|
|
|
|
stopRefreshToken()
|
|
|
|
|
},
|
|
|
|
|
startRefreshNewsTimer({
|
|
|
|
|
state,
|
|
|
|
|
commit,
|
|
|
|
|
dispatch
|
|
|
|
|
}) {
|
|
|
|
|
console.log('触发2')
|
|
|
|
|
dispatch('newsInit').then(() => {
|
|
|
|
|
startRefreshToken(dispatch);
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
mutations: {
|
|
|
|
|
SET_UNREADNUM: (state, {
|
|
|
|
|
id,
|
|
|
|
|
count
|
|
|
|
|
}) => {
|
|
|
|
|
state.unread[id] = count
|
|
|
|
|
state.allUnread = getCount(state.unread)
|
|
|
|
|
},
|
|
|
|
|
CLEAR_NEWS_DATA: (state, id) => {
|
|
|
|
|
state.data[id].page = {
|
|
|
|
|
current: 0,
|
|
|
|
|
size
|
|
|
|
|
}
|
|
|
|
|
state.data[id].data = []
|
|
|
|
|
},
|
|
|
|
|
ADD_NEWS_DATA: (state, {
|
|
|
|
|
id,
|
|
|
|
|
data,
|
|
|
|
|
current,
|
|
|
|
|
total
|
|
|
|
|
}) => {
|
|
|
|
|
data.forEach(item => {
|
|
|
|
|
state.dic[item.id] = item
|
|
|
|
|
})
|
|
|
|
|
state.data[id].page.total = total
|
|
|
|
|
state.data[id].page.current = current
|
|
|
|
|
if (data.length > 0) {
|
|
|
|
|
state.data[id].data.push(data)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
REMOVE_NEWS: (state, {
|
|
|
|
|
id,
|
|
|
|
|
key,
|
|
|
|
|
group,
|
|
|
|
|
index
|
|
|
|
|
}) => {
|
|
|
|
|
const readProp = state.data[key].prop['isRead']
|
|
|
|
|
if (state.dic[id][readProp] === 0) {
|
|
|
|
|
state.unread[key]--
|
|
|
|
|
state.allUnread--
|
|
|
|
|
}
|
|
|
|
|
state.dic[id] = undefined
|
|
|
|
|
const data = state.data[key].data
|
|
|
|
|
data[group].splice(index, 1)
|
|
|
|
|
if (data[group].length === 0) {
|
|
|
|
|
data.splice(group, 1)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
READ_NEWS: (state, {
|
|
|
|
|
key,
|
|
|
|
|
id
|
|
|
|
|
}) => {
|
|
|
|
|
const readProp = state.data[key].prop['isRead']
|
|
|
|
|
if (state.dic[id][readProp] === 0) {
|
|
|
|
|
state.dic[id][readProp] = 1
|
|
|
|
|
state.unread[key]--
|
|
|
|
|
state.allUnread--
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
getters: {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
export default news;
|