diff --git a/src/api/mdp/sys/notifyMsg.js b/src/api/mdp/sys/notifyMsg.js new file mode 100644 index 00000000..0a42bac2 --- /dev/null +++ b/src/api/mdp/sys/notifyMsg.js @@ -0,0 +1,44 @@ +import axios from '@/utils/request' + +import { getDicts,initSimpleDicts,initComplexDicts } from '@/api/mdp/meta/item';//字典表 +import config from '@/common/config' + +let base = config.getSysBasePath(); + +/**-------------------------与后端通讯接口------------------请写在下面-------------------------------------------- */ +/** + * 个人消息通知 + *1 默认只开放普通查询,所有查询,只要上传 分页参数 {pageNum:当前页码从1开始,pageSize:每页记录数,total:总记录【数如果是0后台会自动计算总记录数非0不会自动计算】},后台都会自动按分页查询 其它 api用到再打开,没用到的api请注释掉, + *2 查询、新增、修改的参数格式 params={id:'消息编号 主键',sendUserid:'操作人id',sendUsername:'操作人名字',operTime:'操作时间',objType:'对象类型:项目-1/任务-2/产品-3/需求-4/bug-5/迭代-6/团队-7',msg:'备注-完整描述',gloNo:'全局根踪号,用于跟踪日志',branchId:'机构编号',ip:'ip地址',bizId:'业务主键编号',pbizId:'对象上级编号,项目时填项目编号,任务时填项目编号,产品时填产品编号,需求时填产品编号,bug时填产品编号,迭代时填产品编号',bizName:'对象名称',toUserid:'接收用户编号',toUsername:'接收用户名称',hadRead:'是否已读'} + **/ + +//普通查询 条件之间and关系 +export const listNotifyMsg = params => { return axios.get(`${base}/mdp/sys/notifyMsg/list`, { params: params }); }; + +//删除一条个人消息通知 params={id:'消息编号 主键'} +export const delNotifyMsg = params => { return axios.post(`${base}/mdp/sys/notifyMsg/del`,params); }; + +//批量删除个人消息通知 params=[{id:'消息编号 主键'}] +export const batchDelNotifyMsg = params => { return axios.post(`${base}/mdp/sys/notifyMsg/batchDel`, params); }; + +//修改一条个人消息通知记录 +export const editNotifyMsg = params => { return axios.post(`${base}/mdp/sys/notifyMsg/edit`, params); }; + +//新增一条个人消息通知 +export const addNotifyMsg = params => { return axios.post(`${base}/mdp/sys/notifyMsg/add`, params); }; + +//批量修改某些字段 +export const editSomeFieldsNotifyMsg = params => { return axios.post(`${base}/mdp/sys/notifyMsg/editSomeFields`, params); }; + + + +/**-------------------------前端mng|add|edit界面公共函数---------------请写在下面----------------------------------------------- */ +//初始化页面上的字典 +export const initDicts = (that) => { + var itemCodes=[];//在此添加要加载的字典 如['sex','grade','lvl'] + if(itemCodes.length>0){ + initSimpleDicts('all',itemCodes).then(res=>{ + Object.assign(that.dicts,res.data.data) + }); + } +}; \ No newline at end of file diff --git a/src/router/routes_xm.js b/src/router/routes_xm.js index 07f4af5b..9e85b89d 100644 --- a/src/router/routes_xm.js +++ b/src/router/routes_xm.js @@ -153,6 +153,8 @@ export default { children: [ { path: 'xmGroup/XmGroupAllMng', component: _import('xm/core/xmGroup/XmGroupAllMng'), name: 'XmGroupAllMng', meta: { title: '团队管理' }}, { path: 'xmGroupUser/XmGroupUserMng', component: _import('xm/core/xmGroupUser/XmGroupUserMng'), name: 'XmGroupUserMng', meta: { title: '成员管理' }}, + { path: 'xmGroup/XmGroupRoute', component: _import('xm/core/xmGroup/XmGroupRoute'), name: 'XmGroupRoute', meta: { title: '项目团队' } ,hidden:true}, + ] }, { diff --git a/src/views/myWork/message/index.scss b/src/views/myWork/message/index.scss index 44c8ddb1..aec8caca 100644 --- a/src/views/myWork/message/index.scss +++ b/src/views/myWork/message/index.scss @@ -40,18 +40,7 @@ color: #303030; line-height: 54px; position: relative; - } - - - .title::after { - content: ""; - position: absolute; - width: 12px; - height: 12px; - border-radius: 50%; - background-color: #E52929; - top: 8px; - } + } .date { color: #606060; diff --git a/src/views/myWork/message/notifyMsg.vue b/src/views/myWork/message/notifyMsg.vue index 5556c68a..ed25da83 100644 --- a/src/views/myWork/message/notifyMsg.vue +++ b/src/views/myWork/message/notifyMsg.vue @@ -2,8 +2,7 @@
-

{{item.sendUsername}}

-

{{item.opTime}}

+

发送者:{{item.sendUsername}}   发送时间: {{item.operTime}} {{item.hadRead=='1'?'已读':'未读'}}

{{item.msg}}
@@ -27,6 +26,10 @@ import { getNoticeMsg } from '@/api/cpd' + + import { + editSomeFieldsNotifyMsg + } from '@/api/mdp/sys/notifyMsg' import { mapGetters } from 'vuex' export default { props:['msgClass'], @@ -43,7 +46,7 @@ export default { pageSize:10,//每页数据 count:false,//是否需要重新计算总记录数 pageNum:1,//当前页码、从1开始计算 - orderFields:['op_time'],//排序列 如 ['sex','student_id'],必须为数据库字段 + orderFields:['oper_time'],//排序列 如 ['sex','student_id'],必须为数据库字段 orderDirs:['desc']//升序 asc,降序desc 如 性别 升序、学生编号降序 ['asc','desc'] }, } @@ -89,20 +92,55 @@ export default { * */ goToPage(item){ - var curlDomain=window.location.protocol+"//"+window.location.host; // 返回https://mp.csdn.net - if(item.objType=='0'){ - window.open(curlDomain+"/im/"+process.env.VERSION+"/#/prichat?groupId="+item.groupId) - }else if(item.msgClass=='4'){ - this.$router.push('/mdp/workflow/ru/task/TaskListAssigneeToMe') - }else if(item.msgClass=='5'){ + if(item.hadRead!='1'){ + editSomeFieldsNotifyMsg({ids:[item.id],hadRead:'1'}).then(res=>{ + item.hadRead="1" + }) + } + var curlDomain=window.location.protocol+"//"+window.location.host; // 返回https://mp.csdn.net + if(item.objType=='1'){ + if(process.env.CONTEXT=='xm'){ + this.$router.push({path:"/xm/core/xmProject/XmProjectInfoRoute",query:{id:item.bizId}}) + }else{ + window.open(curlDomain+"/xm/"+process.env.VERSION+"/#/xm/core/xmProject/XmProjectInfoRoute?id="+item.bizId) + } + }else if(item.objType=='2'){ + if(process.env.CONTEXT=='xm'){ + this.$router.push({path:"/xm/core/xmTask/XmTaskDetailRoute",query:{id:item.bizId}}) + }else{ + window.open(curlDomain+"/xm/"+process.env.VERSION+"/#/xm/core/xmTask/XmTaskDetailRoute?id="+item.bizId) + } + }else if(item.objType=='3'){ + if(process.env.CONTEXT=='xm'){ + this.$router.push({path:"/xm/core/xmProduct/XmProductInfoRoute",query:{id:item.bizId}}) + }else{ + window.open(curlDomain+"/xm/"+process.env.VERSION+"/#/xm/core/xmProduct/XmProductInfoRoute?id="+item.bizId) + } + }else if(item.objType=='4'){ if(process.env.CONTEXT=='xm'){ - this.$router.push('/xm/core/xmTask/XmMyTaskCenter') + this.$router.push({path:"/xm/core/xmMenu/XmMenuDetailRoute",query:{menuId:item.bizId}}) }else{ - window.open(curlDomain+"/xm/"+process.env.VERSION+"/#/xm/core/xmTask/XmMyTaskCenter") - } + window.open(curlDomain+"/xm/"+process.env.VERSION+"/#/xm/core/xmMenu/XmMenuDetailRoute?menuId="+item.bizId) + } + }else if(item.objType=='5'){ + if(process.env.CONTEXT=='xm'){ + this.$router.push({path:"/xm/core/xmQuestion/XmQuestionDetailRoute",query:{id:item.bizId}}) + }else{ + window.open(curlDomain+"/xm/"+process.env.VERSION+"/#/xm/core/xmQuestion/XmQuestionDetailRoute?id="+item.bizId) + } + }else if(item.objType=='6'){ + if(process.env.CONTEXT=='xm'){ + this.$router.push({path:"/xm/core/xmIteration/XmIterationInfoRoute",query:{id:item.bizId}}) + }else{ + window.open(curlDomain+"/xm/"+process.env.VERSION+"/#/xm/core/xmIteration/XmIterationInfoRoute?id="+item.bizId) + } + }else if(item.objType=='7'){ + if(process.env.CONTEXT=='xm'){ + this.$router.push({path:"/xm/core/xmGroup/xmGroupRoute",query:{projectId:item.pbizId}}) + }else{ + window.open(curlDomain+"/xm/"+process.env.VERSION+"/#/xm/core/xmGroup/xmGroupRoute?projectId="+item.pbizId) + } } - - } }, diff --git a/src/views/xm/core/xmGroup/XmGroupRoute.vue b/src/views/xm/core/xmGroup/XmGroupRoute.vue new file mode 100644 index 00000000..f32c11dc --- /dev/null +++ b/src/views/xm/core/xmGroup/XmGroupRoute.vue @@ -0,0 +1,64 @@ + + + + + \ No newline at end of file diff --git a/src/views/xm/core/xmMenu/XmMenuDetailRoute.vue b/src/views/xm/core/xmMenu/XmMenuDetailRoute.vue index fc24b4f0..6eaaa5ba 100644 --- a/src/views/xm/core/xmMenu/XmMenuDetailRoute.vue +++ b/src/views/xm/core/xmMenu/XmMenuDetailRoute.vue @@ -30,24 +30,24 @@ initByQueryId(){ - if(this.$route.query && this.$route.query.id){ + if(this.$route.query && this.$route.query.menuId){ var localStorageXmMenu=localStorage.getItem("xm-menu-info-route") var menu=null; if(localStorageXmMenu){ menu=JSON.parse(localStorageXmMenu) - if(menu && menu.id==this.$route.query.id){ + if(menu && menu.menuId==this.$route.query.menuId){ this.xmMenu=menu this.showInfo=true; }else{ - this.getXmMenu(this.$route.query.id); + this.getXmMenu(this.$route.query.menuId); } }else{ - this.getXmMenu(this.$route.query.id); + this.getXmMenu(this.$route.query.menuId); } } }, - getXmMenu(id){ - listXmMenu({id:id}).then(res=>{ + getXmMenu(menuId){ + listXmMenu({menuId:menuId}).then(res=>{ var tips = res.data.tips; if(tips.isOk){ this.xmMenu=res.data.data[0]