فهرست منبع

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

ggooalice 2 سال پیش
والد
کامیت
bf7fc4e808
23فایلهای تغییر یافته به همراه374 افزوده شده و 67 حذف شده
  1. 40 17
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  2. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java
  3. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  4. 4 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java
  5. 9 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WXController.java
  6. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  7. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceServiceImpl.java
  8. 42 20
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  9. 98 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties
  10. 101 4
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties
  11. 8 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  12. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee project allocation proportion import Template.xlsx
  13. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee hours import Template.xlsx
  14. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee hours statistics Template.xlsx
  15. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Expense Reimbursement import Template.xlsx
  16. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/New customer import Template.xlsx
  17. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Personnel import Template.xlsx
  18. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Project import Template.xlsx
  19. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Project task import Template.xlsx
  20. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Research center import Template.xlsx
  21. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Resource demand import Template.xlsx
  22. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Supplier import Template.xlsx
  23. 61 14
      fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

+ 40 - 17
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -320,8 +320,9 @@ public class ProjectController {
         operationRecord.setProjectName(project1.getProjectName());
         operationRecord.setProjectName(project1.getProjectName());
         operationRecord.setOperationTime(LocalDateTime.now());
         operationRecord.setOperationTime(LocalDateTime.now());
         //operationRecord.setModuleName("项目管理");
         //operationRecord.setModuleName("项目管理");
-        operationRecord.setModuleName("项目管理");
-        operationRecord.setContent("完成了项目");
+        operationRecord.setModuleName(MessageUtils.message("Template.projectManage"));
+        //operationRecord.setContent("完成了项目");
+        operationRecord.setContent(MessageUtils.message("Template.finishProject"));
         operationRecord.setOperatorName(user.getName());
         operationRecord.setOperatorName(user.getName());
         operationRecord.setCompanyId(user.getCompanyId());
         operationRecord.setCompanyId(user.getCompanyId());
         operationRecordService.save(operationRecord);
         operationRecordService.save(operationRecord);
@@ -345,8 +346,10 @@ public class ProjectController {
             OperationRecord operationRecord=new OperationRecord();
             OperationRecord operationRecord=new OperationRecord();
             operationRecord.setProjectName(project1.getProjectName());
             operationRecord.setProjectName(project1.getProjectName());
             operationRecord.setOperationTime(LocalDateTime.now());
             operationRecord.setOperationTime(LocalDateTime.now());
-            operationRecord.setContent("撤销了项目");
-            operationRecord.setModuleName("项目管理");
+            //operationRecord.setContent("撤销了项目");
+            operationRecord.setContent(MessageUtils.message("Template.revokeProject"));
+            //operationRecord.setModuleName("项目管理");
+            operationRecord.setModuleName(MessageUtils.message("Template.projectManage"));
             operationRecord.setOperatorName(user.getName());
             operationRecord.setOperatorName(user.getName());
             operationRecord.setCompanyId(user.getCompanyId());
             operationRecord.setCompanyId(user.getCompanyId());
             operationRecordService.save(operationRecord);
             operationRecordService.save(operationRecord);
@@ -832,8 +835,10 @@ public class ProjectController {
                             HSSFDataValidation data_validation_list =null;
                             HSSFDataValidation data_validation_list =null;
                             switch (rowList.get(i)){
                             switch (rowList.get(i)){
                                 case "是否为公共项目":
                                 case "是否为公共项目":
+                                case "Whether it is a public project":
                                     // 加载下拉列表内容
                                     // 加载下拉列表内容
-                                    textList= new String[]{"是", "否"};
+                                    //textList= new String[]{"是", "否"};
+                                    textList= new String[]{MessageUtils.message("excel.yes"), MessageUtils.message("excel.no")};
                                     constraint = DVConstraint
                                     constraint = DVConstraint
                                             .createExplicitListConstraint(textList);
                                             .createExplicitListConstraint(textList);
                                     // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
                                     // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
@@ -845,12 +850,16 @@ public class ProjectController {
                                     sheet.addValidationData(data_validation_list);
                                     sheet.addValidationData(data_validation_list);
                                     comment = drawing.createCellComment(anchor);
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("是否为公共项目\n" +
-                                            "是:公共项目\n" +
-                                            "否:普通项目"));
+                                    //comment.setString(new HSSFRichTextString("是否为公共项目\n" +
+                                            //"是:公共项目\n" +
+                                            //"否:普通项目"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.publicProject")+"\n" +
+                                            MessageUtils.message("excel.yesPublic")+"\n" +
+                                            MessageUtils.message("excel.noPublic")));
                                     cell.setCellComment(comment);
                                     cell.setCellComment(comment);
                                     break;
                                     break;
                                 case "级别":
                                 case "级别":
+                                case "level":
                                     // 加载下拉列表内容
                                     // 加载下拉列表内容
                                     if(timeType.getProjectLevelState()==1){
                                     if(timeType.getProjectLevelState()==1){
                                         List<String> list = projectLevelList.stream().map(pl -> pl.getProjectLevelName()).collect(Collectors.toList());
                                         List<String> list = projectLevelList.stream().map(pl -> pl.getProjectLevelName()).collect(Collectors.toList());
@@ -860,7 +869,8 @@ public class ProjectController {
                                             textList[i1]=array[i1].toString();
                                             textList[i1]=array[i1].toString();
                                         }
                                         }
                                     }else {
                                     }else {
-                                        textList= new String[]{"正常", "紧急","重要","重要且紧急"};
+                                        //textList= new String[]{"正常", "紧急","重要","重要且紧急"};
+                                        textList= new String[]{MessageUtils.message("excel.normal"), MessageUtils.message("excel.urgent"),MessageUtils.message("excel.important"),MessageUtils.message("excel.impAndUrg")};
                                     }
                                     }
                                     constraint = DVConstraint
                                     constraint = DVConstraint
                                             .createExplicitListConstraint(textList);
                                             .createExplicitListConstraint(textList);
@@ -873,35 +883,45 @@ public class ProjectController {
                                     sheet.addValidationData(data_validation_list);
                                     sheet.addValidationData(data_validation_list);
                                     break;
                                     break;
                                 case "项目名称":
                                 case "项目名称":
+                                case "project name":
                                     comment = drawing.createCellComment(anchor);
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("项目名称必填"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.projectName")));
                                     cell.setCellComment(comment);
                                     cell.setCellComment(comment);
                                     break;
                                     break;
                                 case "参与人":
                                 case "参与人":
+                                case "Participants":
                                     comment = drawing.createCellComment(anchor);
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("多个参与人使用中文逗号(,)隔开"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.manyPeople")));
                                     cell.setCellComment(comment);
                                     cell.setCellComment(comment);
                                     break;
                                     break;
                                 case "项目经理":
                                 case "项目经理":
+                                case "project manager":
                                     comment = drawing.createCellComment(anchor);
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("项目经理需存在于参与人中"));
+                                    //comment.setString(new HSSFRichTextString("项目经理需存在于参与人中"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.projectManager")));
                                     cell.setCellComment(comment);
                                     cell.setCellComment(comment);
                                     break;
                                     break;
                                 case "开始日期":
                                 case "开始日期":
+                                case "Start Date":
                                 case "截止日期":
                                 case "截止日期":
+                                case "end date":
                                     // 输入批注信息
                                     // 输入批注信息
                                     comment = drawing.createCellComment(anchor);
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString("日期格式:yyyy-MM-dd\n" +
-                                            "例如: 2021-01-01"));
+                                    //comment.setString(new HSSFRichTextString("日期格式:yyyy-MM-dd\n" +
+                                    //        "例如: 2021-01-01"));
+                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.dateFormat")+"\n" +
+                                            MessageUtils.message("excel.forExample")));
                                     cell.setCellComment(comment);
                                     cell.setCellComment(comment);
                                     break;
                                     break;
                                 case "项目状态":
                                 case "项目状态":
+                                case "Project Status":
                                     // 加载下拉列表内容
                                     // 加载下拉列表内容
-                                    textList= new String[]{"全部", "进行中", "已完成", "已撤销", "暂停"};
+                                    //textList= new String[]{"全部", "进行中", "已完成", "已撤销", "暂停"};
+                                    textList= new String[]{MessageUtils.message("excel.whole"), MessageUtils.message("excel.onGoing"), MessageUtils.message("excel.complete"), MessageUtils.message("excel.revoke"), MessageUtils.message("excel.pause")};
                                     constraint = DVConstraint
                                     constraint = DVConstraint
                                             .createExplicitListConstraint(textList);
                                             .createExplicitListConstraint(textList);
                                     // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
                                     // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
@@ -913,6 +933,7 @@ public class ProjectController {
                                     sheet.addValidationData(data_validation_list);
                                     sheet.addValidationData(data_validation_list);
                                     break;
                                     break;
                                 case "项目阶段":
                                 case "项目阶段":
+                                case "Project Phase":
                                     // 加载下拉列表内容
                                     // 加载下拉列表内容
                                     List<String> list = projectStageList.stream().map(pc -> pc.getProjectStageName()).collect(Collectors.toList());
                                     List<String> list = projectStageList.stream().map(pc -> pc.getProjectStageName()).collect(Collectors.toList());
                                     textList= new String[list.size()];
                                     textList= new String[list.size()];
@@ -930,9 +951,11 @@ public class ProjectController {
                                     sheet.addValidationData(data_validation_list);
                                     sheet.addValidationData(data_validation_list);
                                     break;
                                     break;
                             }
                             }
-                            if(rowList.get(i).contains("节点状态")){
+                            //if(rowList.get(i).contains("节点状态")){
+                            if(rowList.get(i).contains(MessageUtils.message("excel.nodeStatus"))){
                                 // 加载下拉列表内容
                                 // 加载下拉列表内容
-                                textList= new String[]{"正常", "延期", "完成"};
+                                //textList= new String[]{"正常", "延期", "完成"};
+                                textList= new String[]{MessageUtils.message("excel.normal"), MessageUtils.message("excel.postpone"), MessageUtils.message("excel.finish")};
                                 constraint = DVConstraint
                                 constraint = DVConstraint
                                         .createExplicitListConstraint(textList);
                                         .createExplicitListConstraint(textList);
                                 // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
                                 // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java

@@ -177,7 +177,8 @@ public class StagesController {
             stage.setGroupId(item.getGroupId());
             stage.setGroupId(item.getGroupId());
             stage.setSequence(1);
             stage.setSequence(1);
             stage.setProjectId(item.getProjectId());
             stage.setProjectId(item.getProjectId());
-            stage.setStagesName("工作开展");
+            //stage.setStagesName("工作开展");
+            stage.setStagesName(MessageUtils.message("excel.WorkUnfolds"));
             stagesService.save(stage);
             stagesService.save(stage);
         }
         }
         List<Stages> list = stagesService.list(stagesQueryWrapper);
         List<Stages> list = stagesService.list(stagesQueryWrapper);

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -221,7 +221,8 @@ public class TaskController {
         comment.setUserId(user.getId());
         comment.setUserId(user.getId());
         comment.setUserName(user.getName());
         comment.setUserName(user.getName());
         comment.setType(isNew?1:2);
         comment.setType(isNew?1:2);
-        comment.setContent(user.getName()+(isNew?"创建":"编辑")+"了任务");
+        //comment.setContent(user.getName()+(isNew?"创建":"编辑")+"了任务");
+        comment.setContent(user.getName()+(isNew?MessageUtils.message("entry.create"):MessageUtils.message("entry.editedTask"))+MessageUtils.message("entry.task"));
         taskCommentMapper.insert(comment);
         taskCommentMapper.insert(comment);
 
 
         //新增任务,需要重新计算项目进度
         //新增任务,需要重新计算项目进度

+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java

@@ -139,7 +139,8 @@ public class TaskGroupController {
             //创建默认分组
             //创建默认分组
             TaskGroup group = new TaskGroup();
             TaskGroup group = new TaskGroup();
             group.setProjectId(item.getProjectId());
             group.setProjectId(item.getProjectId());
-            group.setName("项目阶段");
+            //group.setName("项目阶段");
+            group.setName(MessageUtils.message("entry.projectStage"));
             taskGroupService.save(group);
             taskGroupService.save(group);
         }
         }
         msg.data = taskGroupService.list(queryWrapper);
         msg.data = taskGroupService.list(queryWrapper);
@@ -203,7 +204,8 @@ public class TaskGroupController {
         List<Stages> stagesList = stagesService.list(new QueryWrapper<Stages>().eq("group_id", id).orderByAsc("sequence"));
         List<Stages> stagesList = stagesService.list(new QueryWrapper<Stages>().eq("group_id", id).orderByAsc("sequence"));
         TaskGroup copyItem = new TaskGroup();
         TaskGroup copyItem = new TaskGroup();
         copyItem.setProjectId(taskGroup.getProjectId());
         copyItem.setProjectId(taskGroup.getProjectId());
-        copyItem.setName(taskGroup.getName()+"-复制");
+        //copyItem.setName(taskGroup.getName()+"-复制");
+        copyItem.setName(taskGroup.getName()+MessageUtils.message("entry.copy"));
         taskGroupService.save(copyItem);
         taskGroupService.save(copyItem);
         if (stagesList.size() > 0) {
         if (stagesList.size() > 0) {
             for (Stages stages : stagesList) {
             for (Stages stages : stagesList) {

+ 9 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WXController.java

@@ -2,6 +2,7 @@ package com.management.platform.controller;
 
 
 import com.management.platform.service.UserService;
 import com.management.platform.service.UserService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.HttpRespMsg;
+import com.management.platform.util.MessageUtils;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
@@ -55,10 +56,14 @@ public class WXController {
                 .url("http://mob.ttkuaiban.com/")//点击模版消息要访问的网址
                 .url("http://mob.ttkuaiban.com/")//点击模版消息要访问的网址
                 .build();
                 .build();
         //3,如果是正式版发送模版消息,这里需要配置你的信息
         //3,如果是正式版发送模版消息,这里需要配置你的信息
-                templateMessage.addData(new WxMpTemplateData("first", "您今天的工时填报还未完成", "#FF00FF"));
-                templateMessage.addData(new WxMpTemplateData("keyword1", "屈跃庭", "#000000"));
-                templateMessage.addData(new WxMpTemplateData("keyword2", "市场部", "#000000"));
-                templateMessage.addData(new WxMpTemplateData("remark", "请尽快填报", "#000000"));
+                //templateMessage.addData(new WxMpTemplateData("first", "您今天的工时填报还未完成", "#FF00FF"));
+                templateMessage.addData(new WxMpTemplateData("first", MessageUtils.message("push.fillIn"), "#FF00FF"));
+                //templateMessage.addData(new WxMpTemplateData("keyword1", "屈跃庭", "#000000"));
+                templateMessage.addData(new WxMpTemplateData("keyword1", MessageUtils.message("push.name"), "#000000"));
+                //templateMessage.addData(new WxMpTemplateData("keyword2", "市场部", "#000000"));
+                templateMessage.addData(new WxMpTemplateData("keyword2", MessageUtils.message("push.Dep"), "#000000"));
+                //templateMessage.addData(new WxMpTemplateData("remark", "请尽快填报", "#000000"));
+                templateMessage.addData(new WxMpTemplateData("remark", MessageUtils.message("push.ASAP"), "#000000"));
         //                templateMessage.addData(new WxMpTemplateData(name2, value2, color2));
         //                templateMessage.addData(new WxMpTemplateData(name2, value2, color2));
         try {
         try {
             wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
             wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -25,7 +25,8 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getOnlyJoinProjects(@Param("userId") String userId, @Param("companyId") Integer companyId);
     List<Map<String, Object>> getOnlyJoinProjects(@Param("userId") String userId, @Param("companyId") Integer companyId);
 
 
     List<Map<String, Object>> getTimeCost(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
     List<Map<String, Object>> getTimeCost(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
-        @Param("projectId") Integer projectId, @Param("userId") String userId,@Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds);
+                                          @Param("projectId") Integer projectId, @Param("userId") String userId,
+                                          @Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds, @Param("deptRelatedProjectIds") List<Integer> deptRelatedProjectIds);
 
 
     List<Map<String, Object>> getCustomDataSum(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
     List<Map<String, Object>> getCustomDataSum(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("projectId") Integer projectId, @Param("userId") String userId);
                                           @Param("projectId") Integer projectId, @Param("userId") String userId);

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceServiceImpl.java

@@ -11,6 +11,7 @@ import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
 import com.management.platform.util.MessageUtils;
 import com.management.platform.util.UserNotFoundException;
 import com.management.platform.util.UserNotFoundException;
+import com.taobao.api.internal.util.StringUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.apache.log4j.Logger;
@@ -232,6 +233,10 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                 finance.setName(name);
                 finance.setName(name);
                 if (includeJobNumber) {
                 if (includeJobNumber) {
                     finance.setJobNumber(jobNumberCell.getStringCellValue());
                     finance.setJobNumber(jobNumberCell.getStringCellValue());
+                    if (StringUtils.isEmpty(finance.getJobNumber())) {
+                        msg.setError("工号不能为空");
+                        return msg;
+                    }
                 }
                 }
 
 
                 Optional<User> first = userList.stream().filter(u -> includeJobNumber?
                 Optional<User> first = userList.stream().filter(u -> includeJobNumber?

+ 42 - 20
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1029,24 +1029,35 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<SysRichFunction> functionDpartList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看负责部门");
             List<SysRichFunction> functionDpartList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看负责部门");
             List<SysRichFunction> functionTimeList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看工时统计");
             List<SysRichFunction> functionTimeList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看工时统计");
             List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
             List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
+            List<Integer> deptRelatedProjectIds = new ArrayList<>();
             //判断查看权限
             //判断查看权限
             if(functionAllList.size()==0){
             if(functionAllList.size()==0){
                 deptIds=new ArrayList<>();
                 deptIds=new ArrayList<>();
                 deptIds.add(-1);
                 deptIds.add(-1);
+
+                //获取负责的部门的相关的项目,对于这些项目是有查看全部参与人的权限的
+                List<Integer> allMyManagedDeptIds = new ArrayList<>();
+                List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
+                List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
+                collect.addAll(otherCollect);
+                for (Integer integer : collect) {
+                    List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
+                    allMyManagedDeptIds.addAll(branchDepartment);
+                }
+                if (allMyManagedDeptIds.size() > 0) {
+                    List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").in("dept_id", allMyManagedDeptIds));
+                    deptRelatedProjectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
+                }
+
                 if(functionDpartList.size()>0){
                 if(functionDpartList.size()>0){
                     if(functionTimeList.size()>0||functionCostList.size()>0){
                     if(functionTimeList.size()>0||functionCostList.size()>0){
-                        List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
-                        List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
-                        collect.addAll(otherCollect);
-                        for (Integer integer : collect) {
-                            List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
-                            deptIds.addAll(branchDepartment);
-                        }
+                        deptIds.addAll(allMyManagedDeptIds);
                     }
                     }
                 }
                 }
+
             }
             }
 
 
-            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, null, userId,deptIds,null);
+            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, null, userId,deptIds,null, deptRelatedProjectIds);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             for (Map<String, Object> map : list) {
             for (Map<String, Object> map : list) {
                 if (!map.containsKey("cost")) {
                 if (!map.containsKey("cost")) {
@@ -1100,6 +1111,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<SysRichFunction> functionDpartList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看负责部门");
             List<SysRichFunction> functionDpartList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看负责部门");
             List<SysRichFunction> functionTimeList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看工时统计");
             List<SysRichFunction> functionTimeList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看工时统计");
             List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
             List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
+            List<Integer> deptRelatedProjectIds = new ArrayList<>();
+
             //判断查看权限
             //判断查看权限
             List<Integer> filterDeptIds=null;
             List<Integer> filterDeptIds=null;
             if(deptId!=null){
             if(deptId!=null){
@@ -1108,16 +1121,18 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             if(functionAllList.size()==0){
             if(functionAllList.size()==0){
                 deptIds=new ArrayList<>();
                 deptIds=new ArrayList<>();
                 deptIds.add(-1);
                 deptIds.add(-1);
-                if(functionDpartList.size()>0){
-                    if(functionTimeList.size()>0||functionCostList.size()>0){
-                        List<Integer> collect = departmentList.stream().map(dp -> dp.getDepartmentId()).distinct().collect(Collectors.toList());
-                        List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
-                        collect.addAll(otherCollect);
-                        for (Integer integer : collect) {
-                            List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
-                            deptIds.addAll(branchDepartment);
-                        }
-                    }
+                //获取负责的部门的相关的项目,对于这些项目是有查看全部参与人的权限的
+                List<Integer> allMyManagedDeptIds = new ArrayList<>();
+                List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
+                List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
+                collect.addAll(otherCollect);
+                for (Integer integer : collect) {
+                    List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
+                    allMyManagedDeptIds.addAll(branchDepartment);
+                }
+                if (allMyManagedDeptIds.size() > 0) {
+                    List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").in("dept_id", allMyManagedDeptIds));
+                    deptRelatedProjectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
                 }
                 }
                 //没有查看全公司的权限 只能先判断当前部门/父级别是否在负责部门才能获取数据
                 //没有查看全公司的权限 只能先判断当前部门/父级别是否在负责部门才能获取数据
                 if(deptId!=null){
                 if(deptId!=null){
@@ -1133,7 +1148,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
                 }
             }
             }
             System.out.println(filterDeptIds);
             System.out.println(filterDeptIds);
-            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userId,deptIds,filterDeptIds);
+            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userId,deptIds,filterDeptIds,deptRelatedProjectIds);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             List<List<String>> allList=null ;
             List<List<String>> allList=null ;
             List<String> sumRow = null;
             List<String> sumRow = null;
@@ -1180,7 +1195,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     }
                     //统计每个项目中的人员时间成本投入
                     //统计每个项目中的人员时间成本投入
                     int curProjectId = (Integer)map.get("id");
                     int curProjectId = (Integer)map.get("id");
-                    List<Map<String, Object>> membList = projectMapper.getProjectCost(companyId,startDate, endDate, curProjectId,stateKey, userId,deptIds,filterDeptIds);
+                    //判断是否是当前项目的所属部门的主要或者其他负责人
+                    List<Integer> finalDeptIds = null;
+                    if (deptRelatedProjectIds.contains(curProjectId)) {
+                        //有权限看该项目的全部参与人员,不需要按照部门过滤了
+                    } else {
+                        finalDeptIds = deptIds;
+                    }
+                    List<Map<String, Object>> membList = projectMapper.getProjectCost(companyId,startDate, endDate, curProjectId,stateKey, userId,finalDeptIds,filterDeptIds);
                     map.put("membList", membList);
                     map.put("membList", membList);
                     for (Map<String, Object> membMap : membList) {
                     for (Map<String, Object> membMap : membList) {
                         double pTotalTime = 0;
                         double pTotalTime = 0;

+ 98 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -231,7 +231,7 @@ wx.AssCompletedByParam=处理完毕。本次自动关联了:{0}位人员:{1}
 leave.businessRepeat=该时间段已有出差申请,不能重复提交
 leave.businessRepeat=该时间段已有出差申请,不能重复提交
 leave.repeatedLeave=该时间段已有请假申请,不能重复请假
 leave.repeatedLeave=该时间段已有请假申请,不能重复请假
 #报销相关
 #报销相关
-Reimbursement.nameNull=报销人名称不能fa为空
+Reimbursement.nameNull=报销人名称不能为空
 Reimbursement.costTypeNull=费用类型不能为空
 Reimbursement.costTypeNull=费用类型不能为空
 Reimbursement.dataNull=填报日期不能为空
 Reimbursement.dataNull=填报日期不能为空
 Reimbursement.PeopleNull=报销人["{0}"]不存在
 Reimbursement.PeopleNull=报销人["{0}"]不存在
@@ -254,6 +254,9 @@ Template.lackSonProject=缺少子项目列,请下载最新模板
 Template.lackMasterRow=缺少主项目列,请下载最新模板
 Template.lackMasterRow=缺少主项目列,请下载最新模板
 Template.lackDepartment=缺少部门列,请下载最新模板进行导入
 Template.lackDepartment=缺少部门列,请下载最新模板进行导入
 Template.lackJobNumber=缺少工号列,请下载最新模板导入
 Template.lackJobNumber=缺少工号列,请下载最新模板导入
+Template.projectManage=项目管理
+Template.finishProject=完成了项目
+Template.revokeProject=撤销了项目
 #角色相关
 #角色相关
 role.noExist=该角色不存在
 role.noExist=该角色不存在
 role.deleteRootError=不可删除超级管理员
 role.deleteRootError=不可删除超级管理员
@@ -347,9 +350,102 @@ entry.goWorkTime=上班时间
 entry.offWorkTime=下班时间
 entry.offWorkTime=下班时间
 entry.actualWorkTime=实际工作时长
 entry.actualWorkTime=实际工作时长
 entry.unknown=未知
 entry.unknown=未知
+entry.create=创建
+entry.editedTask=编辑
+entry.task=了任务
+entry.copy=-复制
 #文件名
 #文件名
 fileName.financialCost={0}_财务人员成本模板
 fileName.financialCost={0}_财务人员成本模板
 fileName.projectImport={0}_项目导入模板
 fileName.projectImport={0}_项目导入模板
 fileName.resourceDemand=资源需求统计报表_{0}
 fileName.resourceDemand=资源需求统计报表_{0}
 fileName.workHour=_人员工时统计模板{0}至{1}
 fileName.workHour=_人员工时统计模板{0}至{1}
-
+fileName.reimburse=费用报销导入模板
+fileName.supplier=供应商导入模板
+fileName.people=人员导入模板
+fileName.projectTask=项目任务导入模板
+fileName.customer=新增客户导入模板
+fileName.researchCenter=研究中心导入模板
+fileName.allocation=员工项目分摊比例导入模板
+fileName.resImport=资源需求导入模板
+#excel
+excel.publicProject=是否为公共项目
+excel.projectName=项目名称必填
+excel.manyPeople=多个参与人使用中文逗号(,)隔开
+excel.projectManager=项目经理需存在于参与人中
+excel.projectCharge=负责人需存在于参与人中
+excel.dateFormat=日期格式:yyyy-MM-dd
+excel.forExample=例如: 2021-01-01
+excel.yesPublic=是:公共项目
+excel.noPublic=否:普通项目
+excel.yes=是
+excel.no=否
+excel.normal=正常
+excel.urgent=紧急
+excel.important=重要
+excel.impAndUrg=重要且紧急
+excel.whole=全部
+excel.onGoing=进行中
+excel.complete=已完成
+excel.revoke=已撤销
+excel.pause=暂停
+excel.nodeStatus=节点状态
+excel.postpone=延期
+excel.finish=完成
+excel.mainPeople=主要负责人
+excel.WorkUnfolds=工作开展
+excel.receipt=报销单据
+excel.reiPer=报销人
+excel.fillDate=填报日期
+excel.expenseType=费用类型
+excel.remark=备注
+excel.general=一般
+excel.trip=差旅
+excel.outsource=外包
+excel.BelongProject=所属项目
+excel.expenseDate=费用日期
+excel.invoiceType=发票种类
+excel.VAT=增值税普通发票
+excel.VATS=增值税专用发票
+excel.expenseAmount=费用金额(含税)
+excel.invoiceNo=发票号
+excel.taxRate=税率%
+excel.supplierNo=供应商编号
+excel.supplierName=供应商名称
+excel.contacts=联系人
+excel.phone=联系电话
+excel.email=邮箱
+excel.address=地址
+excel.phoneNumber=手机号码
+excel.department=部门
+excel.taskListP=任务列表(阶段)
+excel.taskContent=任务内容
+excel.type=类型
+excel.executor=执行人
+excel.task=任务
+excel.taskLevel=任务级别
+excel.milepost=里程碑
+excel.risk=风险
+excel.integer=整数不带单位
+excel.plannedWork=计划工时(h)
+excel.description=详细描述
+excel.customerNo=客户编号
+excel.customerName=客户名称
+excel.centerName=中心名称
+excel.date=日期
+excel.staff=员工
+excel.leYou=乐优商城系统
+excel.enterpriseOffice=企业办公自动化系统
+excel.projectFormat=修改为自己的项目.如需指定子项目,请用 / 隔开。范例: 主项目/子项目
+excel.moreProject=可以增加更多项目
+excel.employeeHours=员工工时导入模板
+excel.post=岗位
+excel.development=开发
+excel.market=市场
+excel.technology=技术部
+excel.Marketing=市场部
+excel.empStatistics=员工工时统计模板
+#推送
+push.fillIn=您今天的工时填报还未完成
+push.name=屈跃庭
+push.Dep=市场部
+push.ASAP=请尽快填报

+ 101 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -254,6 +254,9 @@ Template.lackSonProject=The sub item column is missing. Please download the late
 Template.lackMasterRow=The main item column is missing. Please download the latest template.
 Template.lackMasterRow=The main item column is missing. Please download the latest template.
 Template.lackDepartment=The department column is missing. Please download the latest template to import.
 Template.lackDepartment=The department column is missing. Please download the latest template to import.
 Template.lackJobNumber=The job number column is missing. Please download the latest template to import.
 Template.lackJobNumber=The job number column is missing. Please download the latest template to import.
+Template.projectManage=project management
+Template.finishProject=completed the project
+Template.revokeProject=cancelled the project
 #角色相关
 #角色相关
 role.noExist=The role does not exist
 role.noExist=The role does not exist
 role.deleteRootError=Cannot delete super administrator
 role.deleteRootError=Cannot delete super administrator
@@ -318,7 +321,7 @@ entry.level=level
 entry.department=Department
 entry.department=Department
 entry.customer=customer
 entry.customer=customer
 entry.startData=Start Date
 entry.startData=Start Date
-entry.endDate=closing date
+entry.endDate=end date
 entry.contract=Contract amount
 entry.contract=Contract amount
 entry.warrantyST=Warranty start time
 entry.warrantyST=Warranty start time
 entry.warrantyET=Warranty deadline
 entry.warrantyET=Warranty deadline
@@ -336,7 +339,7 @@ entry.contractDemand=Contract requirements
 entry.depSpeed=Progress of participating departments
 entry.depSpeed=Progress of participating departments
 entry.mileSpeed=Milestone Progress
 entry.mileSpeed=Milestone Progress
 entry.startTime=start time
 entry.startTime=start time
-entry.endTime=End time
+entry.endTime=end time
 entry.finishTime={0} - Completion time: {1}
 entry.finishTime={0} - Completion time: {1}
 entry.completeTask=Completed the task
 entry.completeTask=Completed the task
 entry.restartTask=Restart the task
 entry.restartTask=Restart the task
@@ -347,8 +350,102 @@ entry.goWorkTime=work shift
 entry.offWorkTime=closing time
 entry.offWorkTime=closing time
 entry.actualWorkTime=Actual working hours
 entry.actualWorkTime=Actual working hours
 entry.unknown=unknown
 entry.unknown=unknown
+entry.create=create
+entry.editedTask=editedTask
+entry.task=the Task
+entry.copy=-copy
 #文件名
 #文件名
 fileName.financialCost={0}_ Financial Staff Cost Template
 fileName.financialCost={0}_ Financial Staff Cost Template
-fileName.projectImport={0}_ Project import template
+fileName.projectImport={0}_ Project import Template
 fileName.resourceDemand=Resource demand statistics report_ {0}
 fileName.resourceDemand=Resource demand statistics report_ {0}
-fileName.workHour=_ Personnel Hours Statistics Template {0} to {1}
+fileName.workHour=_ Personnel Hours Statistics Template {0} to {1}
+fileName.reimburse=Expense Reimbursement import Template
+fileName.supplier=Supplier import Template
+fileName.people=Personnel import Template
+fileName.projectTask=Project task import Template
+fileName.customer=New customer import Template
+fileName.researchCenter=Research center import Template
+fileName.resImport=Resource demand import Template
+#excel
+excel.publicProject=Whether it is a public project
+excel.projectName=Project name is required
+excel.manyPeople=Multiple participants are separated by commas (,)
+excel.projectManager=The project manager must exist in the participants
+excel.projectCharge=The person in charge must exist in the participants
+excel.dateFormat=Date Format:yyyy-MM-dd
+excel.forExample=for example: 2021-01-01
+excel.yesPublic=yes:public project
+excel.noPublic=no:average project
+excel.yes=yes
+excel.no=no
+excel.normal=normal
+excel.urgent=urgent
+excel.important=important
+excel.impAndUrg=important And urgent
+excel.whole=whole
+excel.onGoing=on going
+excel.complete=Completed
+excel.revoke=rescinded
+excel.pause=pause
+excel.nodeStatus=node status
+excel.postpone=postpone
+excel.finish=Finish
+excel.mainPeople=main in-charge
+excel.WorkUnfolds=Work unfolds
+excel.receipt=Receipt
+excel.reiPer=Reimbursement applicant
+excel.fillDate=Fill in the date
+excel.expenseType=Expense type
+excel.remark=Remark
+excel.general=general
+excel.trip=travel on business
+excel.outsource=outsource
+excel.BelongProject=Project
+excel.expenseDate=Expense Date
+excel.invoiceType=Invoice type
+excel.VAT=VAT ordinary invoice
+excel.VATS=VAT special invoice
+excel.expenseAmount=Expense amount (tax included)
+excel.invoiceNo=Invoice No
+excel.taxRate=Tax rate%
+excel.supplierNo=Supplier No
+excel.supplierName=Supplier name
+excel.contacts=contact name
+excel.phone=contact number
+excel.email=email
+excel.address=address
+excel.phoneNumber=phone number
+excel.department=Department
+excel.taskListP=Task List (Phase)
+excel.taskContent=Task content
+excel.type=type
+excel.executor=Executor
+excel.task=task
+excel.taskLevel=Task level
+excel.milepost=milepost
+excel.risk=risk
+excel.integer=Integer without unit
+excel.plannedWork=Planned working hours (h)
+excel.description=Detailed description
+excel.customerNo=Customer No
+excel.customerName=Customer Name
+excel.centerName=Center name
+excel.date=Data
+excel.staff=staff
+excel.leYou=Leyou Mall System
+excel.enterpriseOffice=Enterprise office automation system
+excel.projectFormat=Modify to your own project To specify sub items, separate them with /. Example: Main project/sub project.
+excel.moreProject=More items can be added
+excel.employeeHours=Employee hours import Template
+excel.post=post
+excel.development=development
+excel.market=market
+excel.technology=Technology Department
+excel.Marketing=Marketing Department
+excel.empStatistics=Employee hours statistics Template
+fileName.allocation=Employee  project allocation proportion import Template
+#推送
+push.fillIn=Your work hour report for today has not been completed.
+push.name=Qu Yue ting
+push.Dep=Marketing Department
+push.ASAP=Please fill in as soon as possible.

+ 8 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -145,10 +145,17 @@
             </when>
             </when>
             <otherwise>
             <otherwise>
                 <if test="deptIds!=null and deptIds.size()>0">
                 <if test="deptIds!=null and deptIds.size()>0">
-                    and b.dept_id in
+                    and (b.dept_id in
                     <foreach collection="deptIds" open="(" item="item" separator="," close=")">
                     <foreach collection="deptIds" open="(" item="item" separator="," close=")">
                         #{item}
                         #{item}
                     </foreach>
                     </foreach>
+                    <if test="deptRelatedProjectIds.size() > 0">
+                        or a.id in
+                        <foreach collection="deptRelatedProjectIds" open="(" item="pid" separator="," close=")">
+                            #{pid}
+                        </foreach>
+                    </if>
+                    )
                 </if>
                 </if>
             </otherwise>
             </otherwise>
         </choose>
         </choose>

BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee project allocation proportion import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee hours import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Employee hours statistics Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Expense Reimbursement import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/New customer import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Personnel import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Project import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Project task import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Research center import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Resource demand import Template.xlsx


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/Supplier import Template.xlsx


+ 61 - 14
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -17,7 +17,14 @@
                 <el-tree :data="data" :props="defaultProps" :expand-on-click-node="false" accordion @node-click="handleNodeClick" :default-expanded-keys="jDarr" @node-expand="jieDian" @node-collapse="shutDown" @current-change="chufa">
                 <el-tree :data="data" :props="defaultProps" :expand-on-click-node="false" accordion @node-click="handleNodeClick" :default-expanded-keys="jDarr" @node-expand="jieDian" @node-collapse="shutDown" @current-change="chufa">
                     <span class="custom-tree-node" style="position: relative;box-sizing: border-box;width: 10%;" slot-scope="{ node }" @mouseleave= mouseleave(data,$event) @mouseover= mouseover(data,$event)>
                     <span class="custom-tree-node" style="position: relative;box-sizing: border-box;width: 10%;" slot-scope="{ node }" @mouseleave= mouseleave(data,$event) @mouseover= mouseover(data,$event)>
 
 
-                        <span style="padding-right: 50px;box-sizing: border-box;overflow:hidden;text-overflow:ellipsis;line-height: 36px; display: inline-block;">{{ node.label }}</span>
+                        <span style="padding-right: 50px;box-sizing: border-box;overflow:hidden;text-overflow:ellipsis;line-height: 36px; display: inline-block;">
+                          <span v-if="user.userNameNeedTranslate == '1'">
+                            <ww-open-data type='departmentName' :openid='node.label'></ww-open-data>
+                          </span>
+                          <span v-else>
+                            {{ node.label }}
+                          </span>
+                        </span>
 
 
                         <!-- <span v-if="node.label != '全部人员'" class="node none"> -->
                         <!-- <span v-if="node.label != '全部人员'" class="node none"> -->
                         <span v-if="node.label != $t('lable.allStaff') && node.label != $t('lable.unassigned')" class="node none poAub">
                         <span v-if="node.label != $t('lable.allStaff') && node.label != $t('lable.unassigned')" class="node none poAub">
@@ -73,7 +80,7 @@
                     <el-form-item style="float:right;" v-if="permissions.structureExport">
                     <el-form-item style="float:right;" v-if="permissions.structureExport">
                         <el-link type="primary" :underline="false" @click="showExportDialog">{{ $t('exportpersonnel') }}</el-link>
                         <el-link type="primary" :underline="false" @click="showExportDialog">{{ $t('exportpersonnel') }}</el-link>
                     </el-form-item>
                     </el-form-item>
-                    <el-form-item style="float:right;" v-if="user.dingdingUserid == null && permissions.structureAdd">
+                    <el-form-item style="float:right;" v-if="user.dingdingUserid == null && permissions.structureAdd && user.userNameNeedTranslate != '1'">
                         <el-link type="primary" :underline="false" @click="openInsertDialog(null)">{{ $t('addpersonnel') }}</el-link>
                         <el-link type="primary" :underline="false" @click="openInsertDialog(null)">{{ $t('addpersonnel') }}</el-link>
                     </el-form-item>
                     </el-form-item>
                     
                     
@@ -84,7 +91,8 @@
                         <el-link type="primary" :underline="false" @click="syncMembByCardTime">{{ $t('associateenterprisemicroidentity') }}</el-link>
                         <el-link type="primary" :underline="false" @click="syncMembByCardTime">{{ $t('associateenterprisemicroidentity') }}</el-link>
                     </el-form-item>
                     </el-form-item>
                     <el-form-item style="float:right;" v-if="user.corpwxUserid != null && permissions.structureImport && user.companyId!=469">
                     <el-form-item style="float:right;" v-if="user.corpwxUserid != null && permissions.structureImport && user.companyId!=469">
-                        <el-link type="primary" :underline="false" @click="syncWithCorpWx">{{ $t('synchronizetheenterprisemicrodirectory') }}</el-link>
+                        <el-link type="primary" v-if="user.userNameNeedTranslate != '1'" :underline="false" @click="syncWithCorpWx">{{ $t('synchronizetheenterprisemicrodirectory') }}</el-link>
+                        <el-link type="primary" v-if="user.userNameNeedTranslate == '1'" :underline="false" @click="newSyncWithCorpWx">{{ $t('synchronizetheenterprisemicrodirectory') }}</el-link>
                     </el-form-item>
                     </el-form-item>
                     <el-form-item style="float:right;" v-if="user.dingdingUserid != null && permissions.structureImport">
                     <el-form-item style="float:right;" v-if="user.dingdingUserid != null && permissions.structureImport">
                         <el-link type="primary" :underline="false" @click="syncWithCorpDingding">{{ $t('synchronizetheaddressbook') }}</el-link>
                         <el-link type="primary" :underline="false" @click="syncWithCorpDingding">{{ $t('synchronizetheaddressbook') }}</el-link>
@@ -157,18 +165,18 @@
                     </div>
                     </div>
                   </template>
                   </template>
                 </el-table-column>
                 </el-table-column>
-                <el-table-column prop="jobNumber" :label="$t('Worknumber')" >
+                <el-table-column prop="jobNumber" :label="$t('Worknumber')" ></el-table-column>
+                <el-table-column prop="phone" :label="$t('shou-ji')" width="120"></el-table-column>
+                <el-table-column prop="departmentName" :label="$t('lable.department')" width="220">
                   <template slot-scope="scope">
                   <template slot-scope="scope">
                     <div>
                     <div>
                       <div v-if="user.userNameNeedTranslate == 1">
                       <div v-if="user.userNameNeedTranslate == 1">
-                        <ww-open-data type='userName' :openid='scope.row.jobNumber'></ww-open-data>
+                        <ww-open-data type='departmentName' :openid='scope.row.departmentName'></ww-open-data>
                       </div>
                       </div>
-                      <div v-else>{{scope.row.jobNumber}}</div>
+                      <div v-else>{{scope.row.name}}</div>
                     </div>
                     </div>
                   </template>
                   </template>
                 </el-table-column>
                 </el-table-column>
-                <el-table-column prop="phone" :label="$t('shou-ji')" width="120"></el-table-column>
-                <el-table-column prop="departmentName" :label="$t('lable.department')" width="220"></el-table-column>
                 <el-table-column :label="$t('jiao-se')" width="100">
                 <el-table-column :label="$t('jiao-se')" width="100">
                     <template slot-scope="scope">{{scope.row.roleName}}</template>
                     <template slot-scope="scope">{{scope.row.roleName}}</template>
                 </el-table-column>
                 </el-table-column>
@@ -295,7 +303,7 @@
         <el-dialog :title="title" :visible.sync="dialogVisible" width="550px" >
         <el-dialog :title="title" :visible.sync="dialogVisible" width="550px" >
             <el-form ref="form12" :model="insertForm" :rules="rules" label-width="80px">
             <el-form ref="form12" :model="insertForm" :rules="rules" label-width="80px">
                 <el-form-item :label="$t('lable.name')" prop="name">
                 <el-form-item :label="$t('lable.name')" prop="name">
-                    <el-input v-model="insertForm.name" :placeholder="$t('peaseenterthe')" clearable></el-input>
+                    <el-input v-model="insertForm.name" :placeholder="$t('peaseenterthe')" clearable :disabled="user.userNameNeedTranslate == '1'"></el-input>
                 </el-form-item>
                 </el-form-item>
                 <el-form-item :label="$t('phone')" prop="phone">
                 <el-form-item :label="$t('phone')" prop="phone">
                     <el-input v-model="insertForm.phone" :placeholder="$t('peaseenterthe')" clearable></el-input>
                     <el-input v-model="insertForm.phone" :placeholder="$t('peaseenterthe')" clearable></el-input>
@@ -381,9 +389,8 @@
         <!-- 编辑超级管理员的Dialog -->
         <!-- 编辑超级管理员的Dialog -->
         <el-dialog :title="$t('editorialstaff')" :visible.sync="dialogVisible1" width="550px" >
         <el-dialog :title="$t('editorialstaff')" :visible.sync="dialogVisible1" width="550px" >
             <el-form ref="form1" :model="insertForm" :rules="rules" label-width="80px">
             <el-form ref="form1" :model="insertForm" :rules="rules" label-width="80px">
-                
                 <el-form-item :label="$t('lable.name')" prop="name">
                 <el-form-item :label="$t('lable.name')" prop="name">
-                    <el-input v-model="insertForm.name" :placeholder="$t('peaseenterthe')" clearable></el-input>
+                    <el-input v-model="insertForm.name" :placeholder="$t('peaseenterthe')" clearable :disabled="user.userNameNeedTranslate == '1'"></el-input>
                 </el-form-item>
                 </el-form-item>
                 <el-form-item :label="$t('phone')" prop="phone">
                 <el-form-item :label="$t('phone')" prop="phone">
                     <el-input v-model="insertForm.phone" :placeholder="$t('peaseenterthe')" clearable></el-input>
                     <el-input v-model="insertForm.phone" :placeholder="$t('peaseenterthe')" clearable></el-input>
@@ -696,6 +703,7 @@ export default {
   },
   },
   data() {
   data() {
     return {
     return {
+      fullscreenLoading: false,
       syncMembByCardTimeResultGialog:false,
       syncMembByCardTimeResultGialog:false,
       syncMembByCardTimeMsg:null,
       syncMembByCardTimeMsg:null,
       editSecret: false,
       editSecret: false,
@@ -1060,6 +1068,45 @@ export default {
         }
         }
       );
       );
     },
     },
+    // 从企业微信同步通讯录 (待测试)
+    newSyncWithCorpWx() {
+      const loading = this.$loading({
+          lock: true,
+          text: '同步中',
+          spinner: 'el-icon-loading',
+          background: 'rgba(0, 0, 0, 0.7)'
+        });
+      this.http.post(
+        "/wxcorp/getCorpMembsFromPlatform",
+        {
+          companyId: this.user.companyId,
+        },
+        (res) => {
+          loading.close();
+          if (res.code == "ok") {
+            this.$message({
+              message: '同步成功',
+              type: "success",
+            });
+            this.getUser();
+            this.getUsers();
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error",
+            });
+          }
+        },
+        (err) => {
+          loading.close();
+          this.tableLoading = false;
+          this.$message({
+            message: err,
+            type: "error",
+          });
+        }
+      );
+    },
     // 从钉钉同步通讯录
     // 从钉钉同步通讯录
     syncWithCorpDingding() {
     syncWithCorpDingding() {
       this.$confirm(
       this.$confirm(
@@ -3057,9 +3104,9 @@ export default {
     this.getProfessional();
     this.getProfessional();
     this.getStaffCountMax();
     this.getStaffCountMax();
     // 获取企业微信的参数
     // 获取企业微信的参数
-    if(this.user.companyId == '1081' || this.user.companyId == '7') {
-      this.agentConfig()
-    }
+    // if(this.user.companyId == '1081' || this.user.companyId == '7') {
+    //   this.agentConfig()
+    // }
   },
   },
 };
 };
 </script>
 </script>