diff --git a/pages.json b/pages.json
index 8fbddc3..0a6e1e0 100644
--- a/pages.json
+++ b/pages.json
@@ -247,7 +247,7 @@
{
"path": "pages/recruit/subPage/MessageList",
"style": {
- "navigationBarTitleText": "消息",
+ "navigationBarTitleText": "申请消息",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
diff --git a/pages/recruit/subPage/MessageList.vue b/pages/recruit/subPage/MessageList.vue
index 404a86f..b1a0670 100644
--- a/pages/recruit/subPage/MessageList.vue
+++ b/pages/recruit/subPage/MessageList.vue
@@ -1,9 +1,10 @@
+
-
-
+
+
@@ -20,6 +21,7 @@
+
@@ -27,8 +29,11 @@
import {
mapGetters
} from 'vuex'
+ import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
+ import CustomNavbar from '@/components/CustomNavbar/navbar.vue';
export default {
+ components: {CustomTabbar,CustomNavbar},
data() {
return {
loading: false
@@ -65,18 +70,18 @@
// }
console.log(item.data)
// 任务推送、岗位推送、政策推送
- if(item.title == '任务推送') {
- console.log('任务推送')
+ if(item.title == '任务申请') {
+ console.log('任务申请')
uni.navigateTo({
url: './taskProjectList'
})
- } else if(item.title == '岗位推送') {
- console.log('岗位推送')
+ } else if(item.title == '岗位申请') {
+ console.log('岗位申请')
uni.navigateTo({
url: './jobProjectList'
})
- } else if(item.title == '政策推送') {
- console.log('政策推送')
+ } else if(item.title == '个人户申请') {
+ console.log('个人户申请')
uni.navigateTo({
url: './policyList'
})
@@ -85,13 +90,16 @@
url: './newsList?type=' + item.id
})
}
- }
+ },
+ back() {
+ uni.reLaunch({ url: '/pages/my/my' })
+ },
},
computed: {
- ...mapGetters(['news']),
+ ...mapGetters(['news_recruit']),
data() {
- console.log(this.news.data,'--------------------==========');
- return this.news.data
+ console.log(this.news_recruit.data,'--------------------==========');
+ return this.news_recruit.data
}
}
}
@@ -165,6 +173,7 @@
padding-bottom: 30rpx;
padding-right: 30rpx;
padding-top: 30rpx;
+ padding-left: 30rpx;
overflow: hidden;
display: flex;
align-items: center;
@@ -172,9 +181,9 @@
.body {
background-color: #fefefe;
- padding-left: 30rpx;
+ /* padding-left: 30rpx;
- width: 720rpx;
+ width: 720rpx; */
}
page {
diff --git a/static/img/job_recruit.svg b/static/img/job_recruit.svg
new file mode 100644
index 0000000..83fcfb8
--- /dev/null
+++ b/static/img/job_recruit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/img/own_recruit.svg b/static/img/own_recruit.svg
new file mode 100644
index 0000000..1c1a331
--- /dev/null
+++ b/static/img/own_recruit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/store/getters.js b/store/getters.js
index b775e70..fb057a9 100644
--- a/store/getters.js
+++ b/store/getters.js
@@ -5,6 +5,7 @@ const getters = {
userChecked:state=>state.user.userChecked,
area: state => state.area,
news: state=> state.news,
+ news_recruit: state=> state.news_recruit,
auth: state => state.auth,
authPass: (state,getters) => getters.auth.laborState && getters.auth.realNameState && getters.auth.bankCardState && getters.auth.insureState,
authInfo: state => state.auth.authInfo,
diff --git a/store/index.js b/store/index.js
index 5d5ec31..e590055 100644
--- a/store/index.js
+++ b/store/index.js
@@ -6,6 +6,7 @@ import user from './models/user.js'
import area from './models/area.js'
import auth from './models/auth.js'
import news from './models/news.js'
+import news_recruit from './models/news_recruit.js'
import vip from './models/vip.js'
import face from './models/face.js'
import authentication from './models/authentication.js'
@@ -17,6 +18,7 @@ const store = new Vuex.Store({
area,
auth,
news,
+ news_recruit,
vip,
face,
authentication
diff --git a/store/models/news_recruit.js b/store/models/news_recruit.js
new file mode 100644
index 0000000..b4010da
--- /dev/null
+++ b/store/models/news_recruit.js
@@ -0,0 +1,373 @@
+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",
+ // 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",
+ 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",
+ title: "岗位申请",
+ icon: "../../../static/img/job_recruit.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)}`
+ })
+ }
+ },
+ // "3": {
+ // id: "1",
+ // title: "技能推送",
+ // icon: "../../static/img/jineng.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",
+ title: "个人户申请",
+ icon: "../../../static/img/own_recruit.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
+ }) {
+ 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;