提交 3f5eb5f4 authored 作者: baorencong's avatar baorencong

brc 5-15

上级 30c19f0e
......@@ -113,6 +113,7 @@
.el-dialog .el-dialog__body{
flex:1;
overflow: auto;
padding: 10px 40px 0;
}
.el-dialog__header {
......
src/assets/images/feedBack.png

681 Bytes | W: | H:

src/assets/images/feedBack.png

1.0 KB | W: | H:

src/assets/images/feedBack.png
src/assets/images/feedBack.png
src/assets/images/feedBack.png
src/assets/images/feedBack.png
  • 2-up
  • Swipe
  • Onion skin
let baseUrl = "http://192.168.1.117:8289"; // 120.55.57.35 localhost 8289
let baseUrl = "http://192.168.1.36:8289"; // 120.55.57.35 localhost 8289
let env = process.env.VUE_APP_TITLE === 'alpha' ? 'alpha' : 'production';
switch (env) {
case 'production':
// baseUrl = "http://192.168.1.248:8090"; // 测试环境
baseUrl = "http://192.168.1.117:8289"; // 测试环境
baseUrl = "http://192.168.1.36:8289"; // 测试环境
break;
case 'alpha':
// baseUrl = "https://workbook.zjtys.com.cn"; // 阿里云环境
baseUrl = "http://192.168.1.117:8289"; // 阿里云环境
baseUrl = "http://192.168.1.36:8289"; // 阿里云环境
break;
}
// https://workbook.zjtys.com.cn:8289
......
......@@ -453,6 +453,32 @@ const requests = {
responseType: 'blob'
})
},
getFindNotReadNotice(id) { // 查询所有未处理的通知
return axios(ip + '/notice/manage/findNotReadNotice/' + id, {
method: 'get'
})
},
getFindReadNotice(id) { // 查询所有我发起的通知
return axios(ip + '/notice/manage/findReadNotice/' + id, {
method: 'get'
})
},
getFindUnderUser(departId) { // 获取某部门下的所有人员
return axios(ip + '/notice/manage/findUnderUser/' + departId, {
method: 'get'
})
},
getFindUserByLevel(id) { // 根据人的id查找所有相同部门
return axios(ip + '/notice/manage/findUserByLevel/' + id, {
method: 'get'
})
},
postTeplyNotice(data) { // 通知的同意与拒绝
return axios(ip + '/notice/manage/replyNotice', {
method: 'post',
data: data,
})
},
};
export default requests;
......@@ -21,9 +21,13 @@
<!--<input type="text" v-model="searchHeader" id="searchVal" placeholder="请输入" class="in-search" @keyup.enter="openSearch()"/>-->
<!--</div>-->
<!--</span>-->
<span>
<img class="menuImgs" title="帮助" src="../assets/images/nav-top-wh.png" style="cursor: pointer">
<span @click="showOvertime" class="messageBadge">
<el-badge :is-dot="readMessage === 1" class="item" style="cursor: pointer"></el-badge>
<img class="menuImgs" title="消息通知" src="../assets/images/message.png" style="cursor: pointer">
</span>
<!-- <span>
<img class="menuImgs" title="帮助" src="../assets/images/nav-top-wh.png" style="cursor: pointer">
</span> -->
<span @click="goFeedback">
<img class="menuImgs" title="反馈" src="../assets/images/feedBack.png" style="cursor: pointer">
</span>
......@@ -83,7 +87,7 @@
<!--</div>-->
<!--</li>-->
<!--</ul>-->
<messageList :addressListDialog="addressListDialog" @close="closeDialog"></messageList>
<password :showPasswordDialog="showPasswordDialog" @close="closePassword"></password>
</div>
</template>
......@@ -92,10 +96,11 @@
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import password from '../components/passwordChange'
import messageList from '../components/messageList'
export default {
name: "headerDetail",
//import引入的组件需要注入到对象中才能使用
components: { password },
components: { password, messageList },
data () {
//这里存放数据
return {
......@@ -105,6 +110,8 @@
showPasswordDialog: false,
name: '',
showExpand: false,
addressListDialog: false, //控制消息弹窗
readMessage: 1, //未读消息提示
};
},
//监听属性 类似于data概念
......@@ -143,7 +150,16 @@
},
closePassword() {
this.showPasswordDialog = false;
}
},
showOvertime() {
this.addressListDialog = true;
},
closeDialog() {
this.addressListDialog = false;
},
changeReadMessage(type) { //未读消息提示
this.readMessage = type
},
},
//生命周期 - 创建完成(可以访问当前this实例)
created () {
......@@ -350,4 +366,14 @@
width: 190px;
height: 40px;
}
.messageBadge {
position: relative;
}
.messageBadge .item {
position: absolute;
right: 20px;
top: 0;
}
</style>
......@@ -73,7 +73,7 @@
</el-submenu>
<el-submenu v-if="authority.username !== 'root' && authority.username !== 'HR'" index="4">
<template slot="title">
<img class="attImg" src="../assets/images/attMenuImg.png"/>
<img class="addressImg" src="../assets/images/addressBook.png"/>
<span>通讯录</span>
</template>
<el-menu-item-group>
......@@ -242,7 +242,7 @@
margin-top: 50px;
}
.taskImg, .personImg, .attImg{
.taskImg, .personImg, .attImg, .addressImg{
width: 16px;
margin-right: 20px;
}
......@@ -306,6 +306,9 @@
.el-menu-vertical-demo .is-opened .attImg {
content: url("../assets/images/attMenuImgHover.png");
}
.el-menu-vertical-demo .is-opened .addressImg {
content: url("../assets/images/addressBookHover.png");
}
/deep/ .el-menu-vertical-demo .is-opened .el-submenu__icon-arrow {
color: #FFF !important;
}
......@@ -330,6 +333,9 @@
.el-submenu__title:hover .attImg {
content: url("../assets/images/attMenuImgHover.png");
}
.el-submenu__title:hover .addressImg {
content: url("../assets/images/addressBookHover.png");
}
/deep/ .el-submenu__title i {
color: #5059d5;
......
<!-- 消息列表 -->
<template>
<div class='overTime'>
<el-dialog title="" :show-close="false" :append-to-body="true" :close-on-click-modal="false" :close-on-press-escape="false" :lock-scroll="true" v-if="dialogApprovalVisible" :visible.sync="dialogApprovalVisible">
<div slot="title" class="header-title">
<span class="dialogHeader">消息通知</span>
<img @click="closeDialog('overtimeForm')" class="dialogHeaderClose" src="../assets/images/dialogClose.png" />
</div>
<div class="">
<el-select v-model="value" placeholder="请选择" style="margin-bottom: 10px" @change="changeType">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div style="padding: 0 0 24px;clear: both;">
<el-table
:data="messageList"
style="width: 100%">
<el-table-column
prop="updateTime"
align="center"
label="时间">
</el-table-column>
<el-table-column
prop="applyName"
align="center"
label="发起人">
</el-table-column>
<el-table-column
prop="responseName"
align="center"
label="接收人">
</el-table-column>
<el-table-column
prop="des"
align="center"
label="任务描述">
</el-table-column>
<el-table-column
fixed="right"
align="center"
label="操作"
width="100">
<template slot-scope="scope">
<el-button @click="open(scope.row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="pageClass">
<el-pagination
hide-on-single-page
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-size="pageSize"
layout="prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
export default {
name: "messageList",
//import引入的组件需要注入到对象中才能使用
components: {},
props: ['addressListDialog'],
data () {
//这里存放数据
return {
dialogApprovalVisible: false,
currentPage: 1,
pageSize: 10,
total: 0,
messageList: [
{
timer: '2019-11-11',
name1: '鲍仁聪',
name2: '鲍仁聪',
describe: '啊实打实到达时间哦i啊就是的奥i设计大赛啊实打实的啊实打实的'
},
{
timer: '2019-11-11',
name1: '鲍仁聪',
name2: '鲍仁聪',
describe: '啊实打实到达时间哦i啊就是的奥i设计大赛啊实打实的啊实打实的'
},
{
timer: '2019-11-11',
name1: '鲍仁聪',
name2: '鲍仁聪',
describe: '啊实打实到达时间哦i啊就是的奥i设计大赛啊实打实的啊实打实的'
},
{
timer: '2019-11-11',
name1: '鲍仁聪',
name2: '鲍仁聪',
describe: '啊实打实到达时间哦i啊就是的奥i设计大赛啊实打实的啊实打实的'
},
{
timer: '2019-11-11',
name1: '鲍仁聪',
name2: '鲍仁聪',
describe: '啊实打实到达时间哦i啊就是的奥i设计大赛啊实打实的啊实打实的'
}
],
options: [
{
value: '1',
label: '未处理的通知'
},
{
value: '2',
label: '我发起的通知'
}
],
value: ''
};
},
//监听属性 类似于data概念
computed: {},
//监控data中的数据变化
watch: {
addressListDialog: {
immediate: true,
handler(val) {
this.dialogApprovalVisible = val;
}
},
},
//方法集合
methods: {
closeDialog() {
this.$emit('close');
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
},
handleCurrentChange(val) {
this.currentPage = val;
this.postAllAddress();
// console.log(`当前页: ${val}`);
},
getFindNotReadNotice() { //查询所有未处理的通知
let id = JSON.parse(this.$Base64.decode(localStorage.getItem('login'))).id;
console.log('id1-----------', JSON.parse(this.$Base64.decode(localStorage.getItem('login'))))
this.$axios.getFindNotReadNotice(id).then((res) => {
console.log('未处理的通知-----', res)
this.messageList = res.data;
// if(!this.messageList.length) {
// console.log('---------------------qwdqwdq-')
// this.$parent.changeReadMessage(0);
// }
})
},
getFindReadNotice() { //查询所有我发起的通知
let id = JSON.parse(this.$Base64.decode(localStorage.getItem('login'))).id;
console.log('id2-----------', JSON.parse(this.$Base64.decode(localStorage.getItem('login'))))
this.$axios.getFindReadNotice(id).then((res) => {
console.log('查询所有我发起的通知-----', res)
this.messageList = res.data;
})
},
changeType(value) { //分类查看通知
// console.log('value----------', value)
if(value == 2) {
this.getFindReadNotice();
}else {
this.getFindNotReadNotice();
}
},
open(row) {
console.log('opne----', row)
this.$confirm(row.des, '确认信息', {
distinguishCancelAndClose: true,
confirmButtonText: '同意',
cancelButtonText: '拒绝'
})
.then(() => {
row.isAgree = '0';
this.$axios.postTeplyNotice(row).then((res) => {
console.log('查询所有我发起的通知-----', res)
this.$message({
type: 'success',
message: '确认成功'
});
})
})
.catch(action => {
if(action === 'cancel') {
this.$message({
type: 'info',
message: '拒绝'
})
row.isAgree = '0';
this.$axios.postTeplyNotice(row).then((res) => {
console.log('查询所有我发起的通知-----', res)
this.$message({
type: 'info',
message: '已拒绝'
})
})
}
});
}
},
//生命周期 - 创建完成(可以访问当前this实例)
created () {
this.changeType()
},
//生命周期 - 挂载完成(可以访问DOM元素)
mounted () {
},
beforeCreate () {
}, //生命周期 - 创建之前
beforeMount () {
}, //生命周期 - 挂载之前
beforeUpdate () {
}, //生命周期 - 更新之前
updated () {
}, //生命周期 - 更新之后
beforeDestroy () {
}, //生命周期 - 销毁之前
destroyed () {
}, //生命周期 - 销毁完成
activated () {
}, //如果页面有keep-alive缓存功能,这个函数会触发
}
</script>
<style scoped>
.header-title {
margin-bottom: 14px;
}
</style>
......@@ -123,6 +123,28 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item class="groupAdd" label="借调组员">
<!--prop="crewList"-->
<el-select style="width: 35%;" v-model="targetDepart" placeholder="请选择部门" @change="changeDepart">
<el-option
v-for="item in secondmentDepartOptions"
:key="item.id"
:label="item.description"
:value="item.id">
<span style="display: inline-block;width: 70px;">{{item.description}}</span>
</el-option>
</el-select>
<el-select style="width: 55%;margin-left:10%" v-model="secondmentMemberTarget" multiple placeholder="请选择组员">
<el-option
v-for="item in secondmentMemberOptions"
:key="item.id"
:label="item.username"
:value="item.id">
<span style="display: inline-block;width: 70px;">{{item.username}}</span>
<span :style="{color: $common.colorNum(item.status)}">({{$common.personStatusName(item.status)}})</span>
</el-option>
</el-select>
</el-form-item>
</div>
<div class="upload-container">
<div class="upload-file" style="margin-left: 0px;">
......@@ -166,7 +188,7 @@
import EditorBar from '../../components/taskEditer'
export default {
name: "AddTask",
//import引入的组件需要注入到对象中才能使用
//import引入的组件需要注入到对象中才能使用
components: { EditorBar },
data () {
let stateTimeVal = (rule, value, callback) => {
......@@ -276,6 +298,10 @@
},
leaderOptions: [], // 组长
memberOptions: [], // 组员
secondmentDepartOptions: [], // 借调组员-部门
secondmentMemberOptions: [], // 借调组员-人员
secondmentMemberTarget: [], // 借调组员-选中的人员
targetDepart: '', //借调组员-选择的部门
auditOptions:[], // 审核者
content: '', // 任务内容
isClear: false,
......@@ -533,6 +559,7 @@
postTaskData(formName, sta) { // 表单验证通过后
console.log(this.taskForm);
let data = JSON.parse(JSON.stringify(this.taskForm));
let arr = [];
this.attachmentsArr.forEach((v, i) => {
arr.push(v.id);
......@@ -559,6 +586,12 @@
data.endTime = '';
data.workload = Number(data.workload);
data.workloadCount = 1;
// let userArr = data.crewList.concat(this.secondmentMemberTarget);
// data.crewList = userArr;
data.crewList.push.apply(data.crewList, this.secondmentMemberTarget);
console.log('选择的人员', data.crewList)
if (this.showAuditName === true) {
data.audit = this.userLoginData.id;
} else {
......@@ -705,10 +738,37 @@
}
})
},
getFindUserByLevel() { // 根据人的id查找所有相同部门
let user = JSON.parse(this.$Base64.decode(localStorage.getItem('login')));
console.log('根据人的id查找所有相同部门-----------', user.departmentIds)
this.$axios.getFindUserByLevel(user.id).then((res) => {
//循环删除部门列表中自己的部门
for(let i in user.departmentIds) {
for(let j in res.data) {
if(user.departmentIds[i] == res.data[j].id) {
res.data.splice(i, 1)
}
}
}
console.log('所有部门-----', res.data)
this.secondmentDepartOptions = res.data;
})
},
getFindUnderUser(departId) {
this.$axios.getFindUnderUser(departId).then((res) => {
this.secondmentMemberOptions = res.data;
console.log('根据部门查找人员-----', this.secondmentMemberOptions)
})
},
changeDepart(depart) {
console.log('切换-----------', depart)
this.getFindUnderUser(depart)
}
},
//生命周期 - 创建完成(可以访问当前this实例)
created () {
this.getFindUserByLevel();
},
//生命周期 - 挂载完成(可以访问DOM元素)
mounted () {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论