Browse Source

优化

master
陈裕财 4 years ago
parent
commit
7a23c374d6
  1. 44
      src/api/mdp/sys/notifyMsg.js
  2. 2
      src/router/routes_xm.js
  3. 13
      src/views/myWork/message/index.scss
  4. 66
      src/views/myWork/message/notifyMsg.vue
  5. 64
      src/views/xm/core/xmGroup/XmGroupRoute.vue
  6. 12
      src/views/xm/core/xmMenu/XmMenuDetailRoute.vue

44
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)
});
}
};

2
src/router/routes_xm.js

@ -153,6 +153,8 @@ export default {
children: [ children: [
{ path: 'xmGroup/XmGroupAllMng', component: _import('xm/core/xmGroup/XmGroupAllMng'), name: 'XmGroupAllMng', meta: { title: '团队管理' }}, { 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: '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},
] ]
}, },
{ {

13
src/views/myWork/message/index.scss

@ -40,18 +40,7 @@
color: #303030; color: #303030;
line-height: 54px; line-height: 54px;
position: relative; position: relative;
}
.title::after {
content: "";
position: absolute;
width: 12px;
height: 12px;
border-radius: 50%;
background-color: #E52929;
top: 8px;
}
}
.date { .date {
color: #606060; color: #606060;

66
src/views/myWork/message/notifyMsg.vue

@ -2,8 +2,7 @@
<div class="m_container"> <div class="m_container">
<div class="message_content" v-if="notifyMsgs.length>0"> <div class="message_content" v-if="notifyMsgs.length>0">
<div class="message_content_box" v-for="(item, index) in notifyMsgs" :key="index" @click="goToPage(item)"> <div class="message_content_box" v-for="(item, index) in notifyMsgs" :key="index" @click="goToPage(item)">
<p class="title">{{item.sendUsername}}</p>
<p class="date">{{item.opTime}}</p>
<p class="date"><strong>发送者:</strong><span style="font-size:14px;">{{item.sendUsername}}</span> <strong>&nbsp;&nbsp;发送时间</strong> <span style="font-size:14px;">{{item.operTime}}</span> <el-tag :type="item.hadRead=='1'?'primary':'danger'">{{item.hadRead=='1'?'已读':'未读'}}</el-tag> </p>
<span class="text">{{item.msg}}</span> <span class="text">{{item.msg}}</span>
<div class="line"></div> <div class="line"></div>
</div> </div>
@ -27,6 +26,10 @@
import { import {
getNoticeMsg getNoticeMsg
} from '@/api/cpd' } from '@/api/cpd'
import {
editSomeFieldsNotifyMsg
} from '@/api/mdp/sys/notifyMsg'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
props:['msgClass'], props:['msgClass'],
@ -43,7 +46,7 @@ export default {
pageSize:10,// pageSize:10,//
count:false,// count:false,//
pageNum:1,//1 pageNum:1,//1
orderFields:['op_time'],// ['sex','student_id']
orderFields:['oper_time'],// ['sex','student_id']
orderDirs:['desc']// asc,desc ['asc','desc'] orderDirs:['desc']// asc,desc ['asc','desc']
}, },
} }
@ -89,20 +92,55 @@ export default {
* *
*/ */
goToPage(item){ 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'){ 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{ }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)
}
} }
} }
}, },

64
src/views/xm/core/xmGroup/XmGroupRoute.vue

@ -0,0 +1,64 @@
<template>
<section class="padding">
<xm-group-mng v-if="selProject" :sel-project="selProject" :visible="showInfo"></xm-group-mng>
</section>
</template>
<script>
import util from '@/common/js/util';//
import { listXmProject } from '@/api/xm/core/xmProject';
import { mapGetters } from 'vuex';
import XmGroupMng from './XmGroupMng'
export default {
computed: {
...mapGetters([
'userInfo','roles'
]),
},
watch:{
},
data() {
return {
selProject:null,
showInfo:false,
}
},//end data
methods: {
initByQueryId(){
if(this.$route.query && this.$route.query.projectId){
this.getXmProject(this.$route.query.projectId);
}
},
getXmProject(projectId){
listXmProject({id:projectId}).then(res=>{
var tips = res.data.tips;
if(tips.isOk){
this.selProject=res.data.data[0]
this.showInfo=true;
}else{
}
})
}
},//end methods
components: {
XmGroupMng,
//
},
activated(){
this.initByQueryId();
},
mounted() {
this.initByQueryId();
}
}
</script>
<style scoped>
</style>

12
src/views/xm/core/xmMenu/XmMenuDetailRoute.vue

@ -30,24 +30,24 @@
initByQueryId(){ 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 localStorageXmMenu=localStorage.getItem("xm-menu-info-route")
var menu=null; var menu=null;
if(localStorageXmMenu){ if(localStorageXmMenu){
menu=JSON.parse(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.xmMenu=menu
this.showInfo=true; this.showInfo=true;
}else{ }else{
this.getXmMenu(this.$route.query.id);
this.getXmMenu(this.$route.query.menuId);
} }
}else{ }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; var tips = res.data.tips;
if(tips.isOk){ if(tips.isOk){
this.xmMenu=res.data.data[0] this.xmMenu=res.data.data[0]

Loading…
Cancel
Save