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

brc 5-15

上级 30c19f0e
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
.el-dialog .el-dialog__body{ .el-dialog .el-dialog__body{
flex:1; flex:1;
overflow: auto; overflow: auto;
padding: 10px 40px 0;
} }
.el-dialog__header { .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'; let env = process.env.VUE_APP_TITLE === 'alpha' ? 'alpha' : 'production';
switch (env) { switch (env) {
case 'production': case 'production':
// baseUrl = "http://192.168.1.248:8090"; // 测试环境 // baseUrl = "http://192.168.1.248:8090"; // 测试环境
baseUrl = "http://192.168.1.117:8289"; // 测试环境 baseUrl = "http://192.168.1.36:8289"; // 测试环境
break; break;
case 'alpha': case 'alpha':
// baseUrl = "https://workbook.zjtys.com.cn"; // 阿里云环境 // baseUrl = "https://workbook.zjtys.com.cn"; // 阿里云环境
baseUrl = "http://192.168.1.117:8289"; // 阿里云环境 baseUrl = "http://192.168.1.36:8289"; // 阿里云环境
break; break;
} }
// https://workbook.zjtys.com.cn:8289 // https://workbook.zjtys.com.cn:8289
......
...@@ -453,6 +453,32 @@ const requests = { ...@@ -453,6 +453,32 @@ const requests = {
responseType: 'blob' 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; export default requests;
...@@ -21,9 +21,13 @@ ...@@ -21,9 +21,13 @@
<!--<input type="text" v-model="searchHeader" id="searchVal" placeholder="请输入" class="in-search" @keyup.enter="openSearch()"/>--> <!--<input type="text" v-model="searchHeader" id="searchVal" placeholder="请输入" class="in-search" @keyup.enter="openSearch()"/>-->
<!--</div>--> <!--</div>-->
<!--</span>--> <!--</span>-->
<span> <span @click="showOvertime" class="messageBadge">
<img class="menuImgs" title="帮助" src="../assets/images/nav-top-wh.png" style="cursor: pointer"> <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>
<!-- <span>
<img class="menuImgs" title="帮助" src="../assets/images/nav-top-wh.png" style="cursor: pointer">
</span> -->
<span @click="goFeedback"> <span @click="goFeedback">
<img class="menuImgs" title="反馈" src="../assets/images/feedBack.png" style="cursor: pointer"> <img class="menuImgs" title="反馈" src="../assets/images/feedBack.png" style="cursor: pointer">
</span> </span>
...@@ -83,7 +87,7 @@ ...@@ -83,7 +87,7 @@
<!--</div>--> <!--</div>-->
<!--</li>--> <!--</li>-->
<!--</ul>--> <!--</ul>-->
<messageList :addressListDialog="addressListDialog" @close="closeDialog"></messageList>
<password :showPasswordDialog="showPasswordDialog" @close="closePassword"></password> <password :showPasswordDialog="showPasswordDialog" @close="closePassword"></password>
</div> </div>
</template> </template>
...@@ -92,10 +96,11 @@ ...@@ -92,10 +96,11 @@
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等) //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》'; //例如:import 《组件名称》 from '《组件路径》';
import password from '../components/passwordChange' import password from '../components/passwordChange'
import messageList from '../components/messageList'
export default { export default {
name: "headerDetail", name: "headerDetail",
//import引入的组件需要注入到对象中才能使用 //import引入的组件需要注入到对象中才能使用
components: { password }, components: { password, messageList },
data () { data () {
//这里存放数据 //这里存放数据
return { return {
...@@ -105,6 +110,8 @@ ...@@ -105,6 +110,8 @@
showPasswordDialog: false, showPasswordDialog: false,
name: '', name: '',
showExpand: false, showExpand: false,
addressListDialog: false, //控制消息弹窗
readMessage: 1, //未读消息提示
}; };
}, },
//监听属性 类似于data概念 //监听属性 类似于data概念
...@@ -143,7 +150,16 @@ ...@@ -143,7 +150,16 @@
}, },
closePassword() { closePassword() {
this.showPasswordDialog = false; this.showPasswordDialog = false;
} },
showOvertime() {
this.addressListDialog = true;
},
closeDialog() {
this.addressListDialog = false;
},
changeReadMessage(type) { //未读消息提示
this.readMessage = type
},
}, },
//生命周期 - 创建完成(可以访问当前this实例) //生命周期 - 创建完成(可以访问当前this实例)
created () { created () {
...@@ -350,4 +366,14 @@ ...@@ -350,4 +366,14 @@
width: 190px; width: 190px;
height: 40px; height: 40px;
} }
.messageBadge {
position: relative;
}
.messageBadge .item {
position: absolute;
right: 20px;
top: 0;
}
</style> </style>
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
</el-submenu> </el-submenu>
<el-submenu v-if="authority.username !== 'root' && authority.username !== 'HR'" index="4"> <el-submenu v-if="authority.username !== 'root' && authority.username !== 'HR'" index="4">
<template slot="title"> <template slot="title">
<img class="attImg" src="../assets/images/attMenuImg.png"/> <img class="addressImg" src="../assets/images/addressBook.png"/>
<span>通讯录</span> <span>通讯录</span>
</template> </template>
<el-menu-item-group> <el-menu-item-group>
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
margin-top: 50px; margin-top: 50px;
} }
.taskImg, .personImg, .attImg{ .taskImg, .personImg, .attImg, .addressImg{
width: 16px; width: 16px;
margin-right: 20px; margin-right: 20px;
} }
...@@ -306,6 +306,9 @@ ...@@ -306,6 +306,9 @@
.el-menu-vertical-demo .is-opened .attImg { .el-menu-vertical-demo .is-opened .attImg {
content: url("../assets/images/attMenuImgHover.png"); 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 { /deep/ .el-menu-vertical-demo .is-opened .el-submenu__icon-arrow {
color: #FFF !important; color: #FFF !important;
} }
...@@ -330,6 +333,9 @@ ...@@ -330,6 +333,9 @@
.el-submenu__title:hover .attImg { .el-submenu__title:hover .attImg {
content: url("../assets/images/attMenuImgHover.png"); content: url("../assets/images/attMenuImgHover.png");
} }
.el-submenu__title:hover .addressImg {
content: url("../assets/images/addressBookHover.png");
}
/deep/ .el-submenu__title i { /deep/ .el-submenu__title i {
color: #5059d5; 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 @@ ...@@ -123,6 +123,28 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </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>
<div class="upload-container"> <div class="upload-container">
<div class="upload-file" style="margin-left: 0px;"> <div class="upload-file" style="margin-left: 0px;">
...@@ -166,7 +188,7 @@ ...@@ -166,7 +188,7 @@
import EditorBar from '../../components/taskEditer' import EditorBar from '../../components/taskEditer'
export default { export default {
name: "AddTask", name: "AddTask",
//import引入的组件需要注入到对象中才能使用 //import引入的组件需要注入到对象中才能使用
components: { EditorBar }, components: { EditorBar },
data () { data () {
let stateTimeVal = (rule, value, callback) => { let stateTimeVal = (rule, value, callback) => {
...@@ -276,6 +298,10 @@ ...@@ -276,6 +298,10 @@
}, },
leaderOptions: [], // 组长 leaderOptions: [], // 组长
memberOptions: [], // 组员 memberOptions: [], // 组员
secondmentDepartOptions: [], // 借调组员-部门
secondmentMemberOptions: [], // 借调组员-人员
secondmentMemberTarget: [], // 借调组员-选中的人员
targetDepart: '', //借调组员-选择的部门
auditOptions:[], // 审核者 auditOptions:[], // 审核者
content: '', // 任务内容 content: '', // 任务内容
isClear: false, isClear: false,
...@@ -533,6 +559,7 @@ ...@@ -533,6 +559,7 @@
postTaskData(formName, sta) { // 表单验证通过后 postTaskData(formName, sta) { // 表单验证通过后
console.log(this.taskForm); console.log(this.taskForm);
let data = JSON.parse(JSON.stringify(this.taskForm)); let data = JSON.parse(JSON.stringify(this.taskForm));
let arr = []; let arr = [];
this.attachmentsArr.forEach((v, i) => { this.attachmentsArr.forEach((v, i) => {
arr.push(v.id); arr.push(v.id);
...@@ -559,6 +586,12 @@ ...@@ -559,6 +586,12 @@
data.endTime = ''; data.endTime = '';
data.workload = Number(data.workload); data.workload = Number(data.workload);
data.workloadCount = 1; 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) { if (this.showAuditName === true) {
data.audit = this.userLoginData.id; data.audit = this.userLoginData.id;
} else { } else {
...@@ -705,10 +738,37 @@ ...@@ -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实例) //生命周期 - 创建完成(可以访问当前this实例)
created () { created () {
this.getFindUserByLevel();
}, },
//生命周期 - 挂载完成(可以访问DOM元素) //生命周期 - 挂载完成(可以访问DOM元素)
mounted () { mounted () {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论