Browse Source

项目所属BU负责人要能维护项目内的任务分组

seyason 1 year ago
parent
commit
2aec0c5a66

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java

@@ -444,6 +444,11 @@ public class Project extends Model<Project> {
 
     @TableField(exist = false)
     private BigDecimal payment;
+
+    //所属BU或上级BU的负责人
+    @TableField(exist = false)
+    private boolean isManageDept;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 27 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1708,7 +1708,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     @Override
     public HttpRespMsg detail(Integer id, HttpServletRequest request) {
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        User user = userMapper.selectById(request.getHeader("token"));
+        Integer companyId = user.getCompanyId();
         Project project = projectMapper.selectById(id);
         List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
         if (project.getInchargerId() != null) {
@@ -1732,9 +1733,33 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             ProjectSeparate projectSeparate = projectSeparateMapper.selectById(id);
             project.setProjectSeparate(projectSeparate);
         }
+        //判断当前用户是否是这个项目所属BU的直接或者上级部门负责人(主要或其他负责人)
+        String deptCascade = project.getDeptCascade();
+        if (!StringUtils.isEmpty(deptCascade)) {
+            if (user.getManageDeptId() > 0) {
+                String[] split = deptCascade.split(",");
+                //判断split中是否包含user.getManageDeptId()
+                if (Arrays.asList(split).contains(user.getManageDeptId().toString())) {
+                    project.setManageDept(true);
+                }
+            }
+            if (!project.isManageDept()) {
+                List<DepartmentOtherManager> otherManagers = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
+                if (otherManagers.size() > 0) {
+                    List<Integer> deptIds = otherManagers.stream().map(DepartmentOtherManager::getDepartmentId).collect(Collectors.toList());
+                    String[] split = deptCascade.split(",");
+                    //判断split中是否包含deptIds
+                    for (String s : split) {
+                        if (deptIds.contains(Integer.parseInt(s))) {
+                            project.setManageDept(true);
+                            break;
+                        }
+                    }
+                }
+            }
+        }
         HttpRespMsg msg = new HttpRespMsg();
         msg.data = project;
-
         return msg;
     }
 

+ 11 - 9
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -34,7 +34,7 @@
                     <el-aside :style="'overflow:auto;padding-left:10px;padding-right:5px;height:'+tableHeight+'px;width:'+groupWidth+'px;'">
                         <el-input v-model="groupSearch" size="small" :placeholder="$t('searchgroup')" @input="startSearchGroup" style="margin-top:10px"/>
                         <p ><span class="heavyTxt">{{ $t('other.taskGroup') }}</span>
-                            <i class="el-icon-plus pull-right" style="color:#666;margin-right:10px;" @click="createGroup" v-if="projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement"></i>
+                            <i class="el-icon-plus pull-right" style="color:#666;margin-right:10px;" @click="createGroup" v-if="projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement || isManageDept"></i>
                         </p>
                         <el-menu :default-active="defaultGroupId" ref="defaultMenu"  class="el-menu-vertical-demo" @select="groupChange" style="border-right:none;">
                             <el-menu-item :index="item.id" v-for="item in groupList" :key="item.id"  class="group_style">
@@ -47,27 +47,27 @@
                                     <span class="taskGroupClass" v-else>{{item.name}}</span>
                                 </div>
                                 <!-- <el-button size="mini" @click="test(item)">test</el-button> -->
-                                <el-dropdown trigger="click" style="float:right;margin-right:-10px;" :disabled="!(user.id == item.inchargerId || user.id == projectCreatorId || user.id == projectInchargerId || permissions.projectManagement)">
+                                <el-dropdown trigger="click" style="float:right;margin-right:-10px;" :disabled="!(user.id == item.inchargerId || user.id == projectCreatorId || user.id == projectInchargerId || permissions.projectManagement || isManageDept)">
                                     <i class="iconfont firerock-iconcaidan" ></i>
                                     <el-dropdown-menu slot="dropdown">
-                                        <el-dropdown-item @click.native="copyGroup(item)" :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement)">
+                                        <el-dropdown-item @click.native="copyGroup(item)" :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement || isManageDept)">
                                             <i class="el-icon-document-copy"></i>
                                             {{ $t('replicationgroup') }}</el-dropdown-item>
-                                        <el-dropdown-item divided @click.native="renameGroup(item)" :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement)">
+                                        <el-dropdown-item divided @click.native="renameGroup(item)" :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement || isManageDept)">
                                             <i class="el-icon-edit"></i>
                                             {{ $t('changegroups') }}</el-dropdown-item>
-                                        <el-dropdown-item divided @click.native="addToTemplate(item)" :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement)">
+                                        <el-dropdown-item divided @click.native="addToTemplate(item)" :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement || isManageDept)">
                                             <i class="el-icon-plus"></i>
                                             {{ $t('settemplate') }}</el-dropdown-item>
                                         <el-dropdown-item divided @click.native="editIncharger(item)" 
-                                        :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement)">
+                                        :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement || isManageDept)">
                                             <i class="el-icon-user"></i>
                                             {{ $t('sethead') }} </el-dropdown-item>
                                         <el-dropdown-item divided @click.native="setupParticipants(item)" 
-                                        :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || item.inchargerId == user.id || permissions.projectManagement)">
+                                        :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || item.inchargerId == user.id || permissions.projectManagement || isManageDept)">
                                             <i class="iconfont firerock-iconusers"></i>
                                             {{ $t('aparticipant') }} </el-dropdown-item>
-                                        <el-dropdown-item divided @click.native="deleteGroup(item)" :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement)">
+                                        <el-dropdown-item divided @click.native="deleteGroup(item)" :disabled="!(projectCreatorId == user.id || projectInchargerId == user.id || permissions.projectManagement || isManageDept)">
                                             <i class="el-icon-delete"></i>
                                             {{ $t('deletethegroup') }} </el-dropdown-item>
                                             <!-- 设置参与人 0000 -->
@@ -1256,6 +1256,7 @@
         
         data() {
             return {
+                isManageDept: false,
                 componentFlg: false,
                 mileageCup: false,
                 loadingExport : false,
@@ -3625,11 +3626,12 @@
                 },
                 res => {
                     if (res.code == "ok") {
-                        console.log('触发更新试一下')
                         this.currentProject = res.data;
                         this.getjurisdictionIds(this.currentProject)
                         this.joinMembList = this.currentProject.participationList;
+                        this.isManageDept = this.currentProject.manageDept;
                     } else {
+                        
                     }
                 },
                 error => {

+ 3 - 15
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -33,19 +33,6 @@
                           <span v-else>
                             {{ node.label }} <i v-if="node.data.ddDeptid != null" class="iconfont firerock-icondingding"></i>
                           </span>
-
-                          <!-- <span v-if="user.userNameNeedTranslate == '1'">
-                              <span v-if="node.data.children">
-                                  <ww-open-data type='departmentName' :openid='node.label'></ww-open-data>
-                              </span>
-                              <span v-else>
-                                  <ww-open-data type='userName' :openid='node.label'></ww-open-data>
-                              </span>
-                          </span>
-                          <span v-if="user.userNameNeedTranslate != '1'">
-                              {{ node.label }}
-                          </span> -->
-
                           <span v-if="node.label != $t('lable.allStaff') && node.label != $t('lable.unassigned') && adjustPosition" class="treeIons">
                             <i class="el-icon-s-operation" style="color: #409eff"></i>
                           </span>
@@ -56,7 +43,7 @@
                             <el-button type="text" size="mini" @click="createDepartment(-2)" v-if="user.userNameNeedTranslate != '1'">
                                 <i class="el-icon-circle-plus-outline"></i> <!-- 新增 -->
                             </el-button>
-                            <el-button type="text" size="mini" @click="deleteDep(null)" v-if="user.userNameNeedTranslate != '1'">
+                            <el-button type="text" size="mini" @click="deleteDep(null)" >
                                 <i class="el-icon-delete"></i> <!-- 删除 -->
                             </el-button>
                         </span>
@@ -3242,9 +3229,10 @@ export default {
     // 删除部门
     deleteDep() {
       var that = this;
+      var txtMsg = this.user.userNameNeedTranslate == '1'?'确定要删除该部门吗?':this.$t('deletethedepartment') + that.depData.label + this.$t('ma')
       setTimeout(() => {
         that
-          .$confirm(this.$t('deletethedepartment') + that.depData.label + this.$t('ma'), this.$t('deletethedepartmentdsa'), {
+          .$confirm(txtMsg, this.$t('deletethedepartmentdsa'), {
             confirmButtonText: this.$t('btn.determine'),
             cancelButtonText: this.$t('btn.cancel'),
             type: "warning",