|
|
@@ -57,9 +57,9 @@ |
|
|
|
<div class="yiyun_col-12 fl">
|
|
|
|
<div class="yiyunlargeItem">
|
|
|
|
<el-form-item label="项目名称">
|
|
|
|
<el-input v-model="newProjData.projectData.projName" placeholder="请输入项目名称" class="labelinputbefore">
|
|
|
|
</el-input>
|
|
|
|
</el-form-item>
|
|
|
|
<el-input v-model="newProjData.projectData.projName" placeholder="请输入项目名称" class="labelinputbefore">
|
|
|
|
</el-input>
|
|
|
|
</el-form-item>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="yiyun_col-12 fl">
|
|
|
@@ -107,7 +107,7 @@ |
|
|
|
<div class="clear"></div>
|
|
|
|
<div class="yiyun_col-6">
|
|
|
|
<div class="pageImgBox">
|
|
|
|
<img v-lazy="coverSrc" alt="" />
|
|
|
|
<img :src="coverSrc" alt="" />
|
|
|
|
<file-Uploader :mutiple="false" :label="uploadLabel" :auto="true" accept="image" ref="webUploadlist"
|
|
|
|
:btn-id="filePicker" :companyId="uploadCompId" :typeId="uploadTypeCover" @upload-success="coverUploadSuccess"
|
|
|
|
:url="chunkUploadUrl" class="listUpdateBtn">
|
|
|
@@ -146,10 +146,10 @@ |
|
|
|
<div class="fl firstPeople">
|
|
|
|
<!-- 默认添加 -->
|
|
|
|
<div >
|
|
|
|
<div class="avtarface" :title="currUser.cnName">
|
|
|
|
<img src="" v-lazy="headSrc+currUser.headImgUrl" />
|
|
|
|
<div class="avtarface" :title="currUser.userName">
|
|
|
|
<img src="" v-lazy="headSrc+currUser.headImgUrl"/>
|
|
|
|
</div>
|
|
|
|
<span class="Text_tiny tinyText_wirte">{{currUser.cnName}}</span>
|
|
|
|
<span class="Text_tiny tinyText_wirte">{{currUser.userName}}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- 竖线 -->
|
|
|
@@ -158,17 +158,17 @@ |
|
|
|
<div class="fl addBtn_new" title="添加项目负责人" @click="addManager()">
|
|
|
|
<i class="el-icon-plus middleaddEC"></i>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="fl chengyuanbox">
|
|
|
|
<ul class="ECworkerList">
|
|
|
|
<li v-for="(user,index) in newProjData.projectData.listProjManager" :key="index">
|
|
|
|
<div v-if="index < 14 || showAll ">
|
|
|
|
<div class="avtarface" :title="user.cnName">
|
|
|
|
<div class="avtarface" :title="user.userName">
|
|
|
|
<img src="" v-lazy="headSrc+user.headImgUrl" />
|
|
|
|
</div>
|
|
|
|
<span class="Text_tiny tinyText_wirte">{{user.cnName}}</span>
|
|
|
|
<span class="Text_tiny tinyText_wirte">{{user.userName}}</span>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
@@ -279,10 +279,11 @@ |
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<span class="fl label_text">自定义工作</span>
|
|
|
|
<span class="fr mt-10" @click="addProjFolderWork()"><i class="yiyunPlusmini"></i></span>
|
|
|
|
</div>
|
|
|
|
<!--暂时先不用-->
|
|
|
|
<!--<div>-->
|
|
|
|
<!--<span class="fl label_text">自定义工作</span>-->
|
|
|
|
<!--<span class="fr mt-10" @click="addProjFolderWork()"><i class="yiyunPlusmini"></i></span>-->
|
|
|
|
<!--</div>-->
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- 选择负责人 -->
|
|
|
@@ -429,37 +430,38 @@ |
|
|
|
</span>
|
|
|
|
<span class="btnlabelTitle">从部门中选择职员</span>
|
|
|
|
</template>
|
|
|
|
<el-collapse accordion v-for="(dept,group_index) in listDept" v-show="dept.listUser.length>0"
|
|
|
|
:key="group_index">
|
|
|
|
<!-- 二级折叠面板 -->
|
|
|
|
<el-collapse-item>
|
|
|
|
<template slot="title">
|
|
|
|
11111111111111111111111111
|
|
|
|
<el-collapse accordion v-for="(dept,group_index) in listDept" v-show="listDept.length > 0"
|
|
|
|
:key="group_index">
|
|
|
|
<!-- 二级折叠面板 -->
|
|
|
|
<el-collapse-item>
|
|
|
|
<template slot="title">
|
|
|
|
<span class="quanxuanbtn">
|
|
|
|
<el-checkbox class="checkBoxCol" v-model="dept.selected" :key="group_index" @change="handleCheckItemAll(group_index,$event)">全选</el-checkbox>
|
|
|
|
<el-checkbox class="checkBoxCol" v-model="dept.disabled" :key="group_index" @change="handleCheckItemAll(group_index,$event)">全选</el-checkbox>
|
|
|
|
</span>
|
|
|
|
<span class="btnlabelTitle">{{dept.deptName}} </span>
|
|
|
|
</template>
|
|
|
|
<div class="user_info_item" v-for="(user,index) in listUserComputed(dept.listUser)" :label="user"
|
|
|
|
:key="index">
|
|
|
|
<el-checkbox class="checkBoxCol" v-model="user.selected" @change="handleCheckedOne(group_index,user,$event)"
|
|
|
|
:disabled="disabled">
|
|
|
|
<div class="checkboxlabelitem">
|
|
|
|
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
|
|
|
|
<span class="user_info_name">{{user.cnName}}</span>
|
|
|
|
<el-popover placement="bottom-start" width="180" trigger="hover">
|
|
|
|
<ul class="popover_ul popover_ul">
|
|
|
|
<li><a href="javascript:;">{{user.companyName}}</a></li>
|
|
|
|
<li><a href="javascript:;">{{user.phone}}</a></li>
|
|
|
|
<li><a href="javascript:;">所在项目{{user.projCount}}个</a></li>
|
|
|
|
</ul>
|
|
|
|
<span class="user_info_job" slot="reference">{{user.position}}</span>
|
|
|
|
</el-popover>
|
|
|
|
<span class="user_info_role">{{user.roleName}}</span>
|
|
|
|
</div>
|
|
|
|
</el-checkbox>
|
|
|
|
</div>
|
|
|
|
</el-collapse-item>
|
|
|
|
</el-collapse>
|
|
|
|
<span class="btnlabelTitle">{{dept.data.deptName}} </span>
|
|
|
|
</template>
|
|
|
|
<div class="user_info_item" v-for="(user,index) in listUserComputed(dept)" :label="user"
|
|
|
|
:key="index">
|
|
|
|
<el-checkbox class="checkBoxCol" v-model="user.disabled" @change="handleCheckedOne(group_index,user,$event)"
|
|
|
|
:disabled="disabled">
|
|
|
|
<div class="checkboxlabelitem">
|
|
|
|
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
|
|
|
|
<span class="user_info_name">{{user.userName}}</span>
|
|
|
|
<el-popover placement="bottom-start" width="180" trigger="hover">
|
|
|
|
<ul class="popover_ul popover_ul">
|
|
|
|
<li><a href="javascript:;">{{user.companyName}}</a></li>
|
|
|
|
<li><a href="javascript:;">{{user.phone}}</a></li>
|
|
|
|
<li><a href="javascript:;">所在项目{{user.projCount}}个</a></li>
|
|
|
|
</ul>
|
|
|
|
<span class="user_info_job" slot="reference">{{user.position}}</span>
|
|
|
|
</el-popover>
|
|
|
|
<span class="user_info_role">{{user.roleName}}</span>
|
|
|
|
</div>
|
|
|
|
</el-checkbox>
|
|
|
|
</div>
|
|
|
|
</el-collapse-item>
|
|
|
|
</el-collapse>
|
|
|
|
</el-collapse-item>
|
|
|
|
</el-collapse>
|
|
|
|
</div>
|
|
|
@@ -483,7 +485,7 @@ |
|
|
|
:key="index">
|
|
|
|
<i class="icon font_family icon-icon_huangguan-jihuo middlehuangguan fl" title="负责人"></i>
|
|
|
|
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
|
|
|
|
<span class="user_info_name">{{user.cnName}}</span>
|
|
|
|
<span class="user_info_name">{{user.userName}}</span>
|
|
|
|
<el-popover placement="bottom-start" width="180" trigger="hover">
|
|
|
|
<ul class="popover_ul popover_ul">
|
|
|
|
<li><a href="javascript:;">{{user.roleName}}</a></li>
|
|
|
@@ -511,7 +513,7 @@ |
|
|
|
<div class="user_info_item" v-if="user.deptID ==dept.deptID">
|
|
|
|
<!-- <i class="huangguan" @click="setManageUser(user)" title="设置负责人"></i> -->
|
|
|
|
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
|
|
|
|
<span class="user_info_name">{{user.cnName}}</span>
|
|
|
|
<span class="user_info_name">{{user.userName}}</span>
|
|
|
|
<el-popover placement="bottom-start" width="180" trigger="hover">
|
|
|
|
<ul class="popover_ul popover_ul">
|
|
|
|
<li><a href="javascript:;">{{user.roleName}}</a></li>
|
|
|
@@ -550,6 +552,8 @@ |
|
|
|
|
|
|
|
<script>
|
|
|
|
import * as templateService from '@/services/template';
|
|
|
|
import { fetchAddressBook } from '@/services/user.js';
|
|
|
|
|
|
|
|
export default {
|
|
|
|
props: {
|
|
|
|
isNewProj: {
|
|
|
@@ -621,7 +625,8 @@ |
|
|
|
uploadTypeCover: 2,
|
|
|
|
ischeckAll: false, //是否是全部选中
|
|
|
|
newProjFolderIndex: 1,
|
|
|
|
projectCreaterName: sessionStorage.cnName,
|
|
|
|
// projectCreaterName: sessionStorage.cnName,
|
|
|
|
projectCreaterName: JSON.parse(sessionStorage.user).userName,
|
|
|
|
createDate: new Date().toLocaleDateString(),
|
|
|
|
listNewFolder: [],
|
|
|
|
listMyPermFolders: [], //获取项目文件夹
|
|
|
@@ -649,31 +654,35 @@ |
|
|
|
watch: {
|
|
|
|
isNewProj(val) {
|
|
|
|
if (val == false) {
|
|
|
|
// this.offDialog();
|
|
|
|
this.reSetDialog();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
marchWorkerPalDialog() {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
components: {},
|
|
|
|
created: function() {
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
mounted: function() {
|
|
|
|
this.listDeptUsers();
|
|
|
|
this.getSelectTemplateData();
|
|
|
|
// 监听滚动事件
|
|
|
|
window.addEventListener('scroll', this.handleScroll, true)
|
|
|
|
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
/**
|
|
|
|
* 过滤后的部门列表:去除没有用户数据的部门
|
|
|
|
*/
|
|
|
|
listDeptComputed: function() {
|
|
|
|
return this.listDept.filter(function(dept) {
|
|
|
|
return dept.listUser.length > 0;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// listDeptComputed: function() {
|
|
|
|
// return this.listDept.filter(function(dept) {
|
|
|
|
// return dept.children && dept.children.length > 0;
|
|
|
|
// });
|
|
|
|
// },
|
|
|
|
/**
|
|
|
|
* 过滤后的已选择负责人列表
|
|
|
|
*/
|
|
|
@@ -960,8 +969,19 @@ |
|
|
|
this.isShowManager=false;
|
|
|
|
//左侧选中状态根据右侧人员状态改变
|
|
|
|
// this.setFolderPerm(this.newProjData.listFolder[parseInt(index)]);
|
|
|
|
fetchAddressBook(this.$store.state.currentCompanyId).then(res => {
|
|
|
|
this.$nextTick(() => {
|
|
|
|
this.listDept = res[0].children//是一个包含公司部门的对象数组 每一个对象里面有具体的数据
|
|
|
|
this.listDept = [...this.listDept];
|
|
|
|
console.log('111111111111111111111',this.listDept);
|
|
|
|
this.$forceUpdate();
|
|
|
|
})
|
|
|
|
}).catch(err => {
|
|
|
|
console.log(err);
|
|
|
|
})
|
|
|
|
this.selectedUser = this.newProjData.projectData.listProjManager;
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
/*
|
|
|
|
*删除新建项目中被选中的人员
|
|
|
@@ -1039,19 +1059,19 @@ |
|
|
|
* e:点击触发的事件
|
|
|
|
*/
|
|
|
|
handleCheckItemAll(index, e) {
|
|
|
|
for (var i = 0; i < this.listDept[index].listUser.length; i++) {
|
|
|
|
for (var i = 0; i < this.listDept[index].children.length; i++) {
|
|
|
|
if(!this.isShowManager)
|
|
|
|
{
|
|
|
|
if(this.currUser.userID == this.listDept[index].listUser[i].userID)
|
|
|
|
if(this.currUser.userID == this.listDept[index].children[i].userID)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (e) {
|
|
|
|
this.handleCheckedOne(index, this.listDept[index].listUser[i], false);
|
|
|
|
this.handleCheckedOne(index, this.listDept[index].listUser[i], e);
|
|
|
|
this.handleCheckedOne(index, this.listDept[index].children[i], false);
|
|
|
|
this.handleCheckedOne(index, this.listDept[index].children[i], e);
|
|
|
|
} else {
|
|
|
|
this.handleCheckedOne(index, this.listDept[index].listUser[i], e);
|
|
|
|
this.handleCheckedOne(index, this.listDept[index].children[i], e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
@@ -1067,7 +1087,6 @@ |
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (e) {
|
|
|
|
|
|
|
|
this.checkDeptUserName(e, user); //将选中的人员返回给添加合作人页面
|
|
|
|
user.folderPerm = 1;
|
|
|
|
} else {
|
|
|
@@ -1272,13 +1291,22 @@ |
|
|
|
* 设置系统封面
|
|
|
|
*/
|
|
|
|
setSystemCover: function() {
|
|
|
|
this.coverSrc = "static\\img\\faceImg\\face0" + this.srcIndex + ".png";
|
|
|
|
this.newProjData.projectData.showImgUrl = this.srcIndex;
|
|
|
|
if (this.srcIndex < 9) {
|
|
|
|
this.srcIndex = this.srcIndex + 1;
|
|
|
|
} else {
|
|
|
|
this.srcIndex = 1;
|
|
|
|
}
|
|
|
|
let temp = Math.ceil(Math.random()*10);
|
|
|
|
while(this.srcIndex === temp) {
|
|
|
|
temp = Math.ceil(Math.random()*10);
|
|
|
|
}
|
|
|
|
this.srcIndex = temp;
|
|
|
|
let tempStr = '0' + temp;
|
|
|
|
this.newProjData.projectData.showImgUrl = this.srcIndex;
|
|
|
|
this.coverSrc = `static\\img\\faceImg\\face${tempStr.substr(tempStr.length-2)}.png`;
|
|
|
|
|
|
|
|
// this.coverSrc = "static\\img\\faceImg\\face" + this.srcIndex + ".png";
|
|
|
|
// this.newProjData.projectData.showImgUrl = this.srcIndex;
|
|
|
|
// if (this.srcIndex < 9) {
|
|
|
|
// this.srcIndex = this.srcIndex + 1;
|
|
|
|
// } else {
|
|
|
|
// this.srcIndex = 1;
|
|
|
|
// }
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* 封面上传成功时
|
|
|
@@ -1404,18 +1432,18 @@ |
|
|
|
* 获取全部的Dept数据
|
|
|
|
*/
|
|
|
|
listDeptUsers: function() {
|
|
|
|
var companyId = sessionStorage.companyId;
|
|
|
|
var thisApp = this;
|
|
|
|
this.$axios({
|
|
|
|
method: 'get',
|
|
|
|
url: encodeURI(process.env.API_HOST + "sysinfo/deptusers/" + companyId),
|
|
|
|
})
|
|
|
|
.then(response => {
|
|
|
|
thisApp.listDept = response.data.data;
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
console.log(error);
|
|
|
|
});
|
|
|
|
// var companyId = sessionStorage.companyId;
|
|
|
|
// var thisApp = this;
|
|
|
|
// this.$axios({
|
|
|
|
// method: 'get',
|
|
|
|
// url: encodeURI(process.env.API_HOST + "sysinfo/deptusers/" + companyId),
|
|
|
|
// })
|
|
|
|
// .then(response => {
|
|
|
|
// thisApp.listDept = response.data.data;
|
|
|
|
// })
|
|
|
|
// .catch(error => {
|
|
|
|
// console.log(error);
|
|
|
|
// });
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
* 获取模板列表数据
|
|
|
|