Ver código fonte

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

seyason 2 anos atrás
pai
commit
53344ad33b
19 arquivos alterados com 11260 adições e 7981 exclusões
  1. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DepartmentController.java
  2. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  3. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java
  4. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/DepartmentVO.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DepartmentService.java
  6. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  7. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java
  8. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/WxCorpInfoService.java
  9. 123 78
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java
  10. 30 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  11. 89 89
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  12. 74 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java
  13. 5411 3894
      fhKeeper/formulahousekeeper/octopus/package-lock.json
  14. 12 3
      fhKeeper/formulahousekeeper/octopus/src/views/customer/list.vue
  15. 5423 3906
      fhKeeper/formulahousekeeper/timesheet/package-lock.json
  16. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue
  17. 4 0
      fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue
  18. 72 0
      fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue
  19. 3 4
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/index/index.vue

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

@@ -36,7 +36,7 @@ public class DepartmentController {
     }
 
     @RequestMapping("/listAllMemb")
-    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) {
+    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) throws Exception {
         return departmentService.listAllMemb(request,keyword,cursor);
     }
 

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -1466,5 +1466,11 @@ public class ReportController {
     public HttpRespMsg pushReportDataToThird(String yearMonth){
         return reportService.pushReportDataToThird(yearMonth,request);
     }
+
+    //todo 修正员工工时
+    @RequestMapping("/correctWorkingTime")
+    public HttpRespMsg correctWorkingTime(String userIds,String startDate,String endDate){
+        return reportService.correctWorkingTime(userIds,startDate,endDate);
+    }
 }
 

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

@@ -73,12 +73,12 @@ public class UserController {
                                        Integer status, Integer roleId,
                                        Integer onlyDirect,
                                        String cursor,
-                                       @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
+                                       @RequestParam Integer pageIndex, @RequestParam Integer pageSize) throws Exception {
         return userService.getEmployeeList(departmentId, keyword, status, roleId, onlyDirect, cursor,pageIndex, pageSize, request);
     }
 
     @RequestMapping("/getSimpleActiveUserList")
-    public HttpRespMsg getSimpleActiveUserList(Integer departmentId,String keyword,String cursor) {
+    public HttpRespMsg getSimpleActiveUserList(Integer departmentId,String keyword,String cursor) throws Exception {
         return userService.getSimpleActiveUserList(departmentId,request,keyword,cursor);
     }
 

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/DepartmentVO.java

@@ -14,6 +14,7 @@ public class DepartmentVO {
     private Integer id;
     private String label;
     private Integer parentId;
+    private Integer corpwxDeptid;
     private String managerId;
     private String reportAuditUserid;
     private List<DepartmentVO> children;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DepartmentService.java

@@ -35,7 +35,7 @@ public interface DepartmentService extends IService<Department> {
 
     HttpRespMsg exportUserStatistic(String startDate, String endDate, String userIds, HttpServletRequest request);
 
-    HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor);
+    HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) throws Exception;
 
     HttpRespMsg listMyMembs(HttpServletRequest request);
 

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java

@@ -99,4 +99,6 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg pushReportDataToThird(String yearMonth,HttpServletRequest request);
 
     List<Map<String, Object>> getTaskReportList(Integer taskId);
+
+    HttpRespMsg correctWorkingTime(String userIds, String startDate, String endDate);
 }

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -23,7 +23,7 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg getUserInfo(String id);
 
-    HttpRespMsg getEmployeeList(Integer departmentId, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request);
+    HttpRespMsg getEmployeeList(Integer departmentId, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception;
 
     HttpRespMsg deleteUser(String userId, HttpServletRequest request);
 
@@ -68,7 +68,7 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg batchUpdateRole(String userIds, Integer roleId, HttpServletRequest request);
 
-    HttpRespMsg getSimpleActiveUserList(Integer departmentId, HttpServletRequest request,String keyword,String cursor);
+    HttpRespMsg getSimpleActiveUserList(Integer departmentId, HttpServletRequest request,String keyword,String cursor) throws Exception;
 
     HttpRespMsg getUserListByRole(HttpServletRequest request,String tableName);
 

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/WxCorpInfoService.java

@@ -8,6 +8,7 @@ import com.management.platform.entity.WxCorpInfo;
 import com.management.platform.util.HttpRespMsg;
 
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -62,4 +63,6 @@ public interface WxCorpInfoService extends IService<WxCorpInfo> {
     HttpRespMsg getBatchSearchUserInfo(WxCorpInfo wxCorpInfo, List<String> userNameList,String cursor) throws Exception;
 
     HttpRespMsg fixPunchRecord(Integer companyId, LocalDateTime start, LocalDateTime end, boolean b);
+
+    HashMap<String, List> getOpenId(String corpId, String keyword, String cursor,Integer queryType,Integer limit) throws Exception;
 }

+ 123 - 78
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -11,6 +11,7 @@ import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
 import com.management.platform.service.DepartmentService;
 import com.management.platform.service.ExcelExportService;
+import com.management.platform.service.WxCorpInfoService;
 import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.ListUtil;
@@ -72,6 +73,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     private WxCorpInfoMapper wxCorpInfoMapper;
     @Resource
     private ExcelExportService excelExportService;
+    @Resource
+    private WxCorpInfoService wxCorpInfoService;
 
     @Value("${corpId}")
     private String corpId;
@@ -799,6 +802,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             //合计
             List<String> sumRow = new ArrayList<String>();
             //sumRow.add("合计");
+            //sumRow.add("合计");
             sumRow.add(MessageUtils.message("entry.total"));
             sumRow.add("");
             if(functionTimeList.size()>0){
@@ -825,96 +829,98 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         return httpRespMsg;
     }
 
-    //获取provider_access_token
-    private String getProviderAccessToken() {
-        if (UserServiceImpl.provider_access_token == null || UserServiceImpl.providerTokenExpireTime < System.currentTimeMillis()) {
-            //失效了,需要重新获取
-            String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token";
-            HttpHeaders headers = new HttpHeaders();
-            RestTemplate restTemplate = new RestTemplate();
-            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-            headers.setContentType(type);
-            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
-            JSONObject reqParam = new JSONObject();
-            reqParam.put("corpid", corpId);
-            reqParam.put("provider_secret", providerSecret);
-            HttpEntity<JSONObject> Entity = new HttpEntity<>(reqParam, headers);
-            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
-            if (responseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = responseEntity.getBody();
-                JSONObject obj = JSONObject.parseObject(resp);
-                if (obj.getIntValue("errcode") == 0) {
-                    UserServiceImpl.provider_access_token = obj.getString("provider_access_token");
-                    UserServiceImpl.providerTokenExpireTime = System.currentTimeMillis() + obj.getIntValue("expires_in")*1000;
-                }
-            }
-        }
-        return UserServiceImpl.provider_access_token;
-    }
+//    //获取provider_access_token
+//    private String getProviderAccessToken() {
+//        if (UserServiceImpl.provider_access_token == null || UserServiceImpl.providerTokenExpireTime < System.currentTimeMillis()) {
+//            //失效了,需要重新获取
+//            String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token";
+//            HttpHeaders headers = new HttpHeaders();
+//            RestTemplate restTemplate = new RestTemplate();
+//            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+//            headers.setContentType(type);
+//            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+//            JSONObject reqParam = new JSONObject();
+//            reqParam.put("corpid", corpId);
+//            reqParam.put("provider_secret", providerSecret);
+//            HttpEntity<JSONObject> Entity = new HttpEntity<>(reqParam, headers);
+//            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
+//            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+//                String resp = responseEntity.getBody();
+//                JSONObject obj = JSONObject.parseObject(resp);
+//                if (obj.getIntValue("errcode") == 0) {
+//                    UserServiceImpl.provider_access_token = obj.getString("provider_access_token");
+//                    UserServiceImpl.providerTokenExpireTime = System.currentTimeMillis() + obj.getIntValue("expires_in")*1000;
+//                }
+//            }
+//        }
+//        return UserServiceImpl.provider_access_token;
+//    }
 
     //根据关键词查询微信通讯录人员的openid以及部门
     //keyword不可为空格或空字符串,否则请求参数错误
-    private HashMap<String, List> getOpenId(String corpId,String keyword,String cursor) {
-        HashMap<String, List> result = new HashMap<>();
-        List<Object> user = new ArrayList<>();
-        String itemCursor = "";
-        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
-        HttpHeaders headers = new HttpHeaders();
-        RestTemplate restTemplate = new RestTemplate();
-        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-        headers.setContentType(type);
-        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
-        String providerToken = getProviderAccessToken();
-        if (providerToken!=null){
-            //搜索通讯录名单
-            url = url.replace("ACCESS_TOKEN", providerToken);
-            JSONObject requestMap = new JSONObject();
-            requestMap.put("auth_corpid", corpId);
-            requestMap.put("query_word", keyword);
-            requestMap.put("query_type", 0);
-            requestMap.put("query_range", 1);
-            requestMap.put("limit", 20);
-            requestMap.put("cursor", cursor);
-            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
-            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
-            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = ResponseEntity.getBody();
-                JSONObject respJson = JSONObject.parseObject(resp);
-                    if (respJson.getInteger("errcode")==0){
-                        JSONObject queryResult = respJson.getJSONObject("query_result");
-                        if (!queryResult.isEmpty()){
-                            JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
-                            if (jsonArray!=null){
-                                Object[] objects = jsonArray.toArray();
-                                for (Object object : objects) {
-                                    user.add(object);
-                                }
-                            }
-                            Boolean is_last = respJson.getBoolean("is_last");
-                            if (!is_last){
-                                itemCursor = respJson.getString("next_cursor");
-                            }
-                        }
-                    }
-            }
-        }
-        List<Object> nextCursor = new ArrayList<>();
-        nextCursor.add(itemCursor);
-        result.put("nextCursor",nextCursor);
-        result.put("user",user);
-        return result;
-    }
+//    private HashMap<String, List> getOpenId(String corpId,String keyword,String cursor) {
+//        HashMap<String, List> result = new HashMap<>();
+//        List<Object> user = new ArrayList<>();
+//        String itemCursor = "";
+//        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
+//        HttpHeaders headers = new HttpHeaders();
+//        RestTemplate restTemplate = new RestTemplate();
+//        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+//        headers.setContentType(type);
+//        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+//        String providerToken = getProviderAccessToken();
+//        if (providerToken!=null){
+//            //搜索通讯录名单
+//            url = url.replace("ACCESS_TOKEN", providerToken);
+//            JSONObject requestMap = new JSONObject();
+//            requestMap.put("auth_corpid", corpId);
+//            requestMap.put("query_word", keyword);
+//            requestMap.put("query_type", 0);
+//            requestMap.put("query_range", 1);
+//            requestMap.put("limit", 20);
+//            requestMap.put("cursor", cursor);
+//            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+//            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+//            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
+//                String resp = ResponseEntity.getBody();
+//                JSONObject respJson = JSONObject.parseObject(resp);
+//                    if (respJson.getInteger("errcode")==0){
+//                        JSONObject queryResult = respJson.getJSONObject("query_result");
+//                        if (!queryResult.isEmpty()){
+//                            JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
+//                            if (jsonArray!=null){
+//                                Object[] objects = jsonArray.toArray();
+//                                for (Object object : objects) {
+//                                    user.add(object);
+//                                }
+//                            }
+//                            Boolean is_last = respJson.getBoolean("is_last");
+//                            if (!is_last){
+//                                itemCursor = respJson.getString("next_cursor");
+//                            }
+//                        }
+//                    }
+//            }
+//        }
+//        List<Object> nextCursor = new ArrayList<>();
+//        nextCursor.add(itemCursor);
+//        result.put("nextCursor",nextCursor);
+//        result.put("user",user);
+//        return result;
+//    }
 
     @Override
-    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) {
+    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) throws Exception {
         Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
         HttpRespMsg msg = new HttpRespMsg();
         List<HashMap> userMapList = new ArrayList<>();
+        List<HashMap> deptMapList = new ArrayList<>();
         //通讯录查询人员
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
         if (StringUtils.isNotBlank(keyword) && wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
-            HashMap<String, List> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
+            HashMap<String, List> result = wxCorpInfoService.getOpenId(wxCorpInfo.getCorpid(), keyword, cursor,0,20);
             List users = result.get("user");
+            List depts = result.get("dept");
             if (users.size()!=0){
                 List<User> realUser = userMapper.selectList(new QueryWrapper<User>().in("corpwx_userid", users));
                 if (realUser.size()!=0){
@@ -945,6 +951,26 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                     return msg;
                 }
             }
+            if (depts.size()!=0){
+                List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().in("corpwx_deptid", depts));
+                List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
+                List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("company_id", companyId));
+                //结果列表
+                List<DepartmentVO> list = new ArrayList<>();
+                List<Department> rootDepartments = departmentList.stream().filter(dept -> dept.getSuperiorId() == null).collect(Collectors.toList());
+                rootDepartments.forEach(root->{
+                    DepartmentVO rootDeptVO = formatDepartmentToVO(root, departmentOtherManagerList);
+                    list.add(rootDeptVO);
+                    fillSubDepartmentList(departmentList, rootDeptVO, departmentOtherManagerList);
+                });
+                //处理部门下人员列表
+                List<DepartmentVO> userListWithDept = getUserListWithDept(userList, list);
+                HashMap<String, Object> data = new HashMap<>();
+                data.put("data",userListWithDept);
+                data.put("nextCursor","");
+                msg.data = data;
+                return msg;
+            }
             ArrayList<Object> emptyList = new ArrayList<>();
             msg.data = emptyList;
             return msg;
@@ -972,6 +998,25 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         }
     }
 
+    public List<DepartmentVO> getUserListWithDept(List<User> userList,List<DepartmentVO> departmentVOList ){
+        if(departmentVOList!=null&&departmentVOList.size()>0){
+            for (DepartmentVO departmentVO : departmentVOList) {
+                List<HashMap> userMapList = new ArrayList<>();
+                List<User> collect = userList.stream().filter(ul -> ul.getDepartmentId() != null && ul.getDepartmentId().equals(departmentVO.getId())).collect(Collectors.toList());
+                for (User u : collect) {
+                    HashMap<String, Object> user = new HashMap<String, Object>();
+                    user.put("id", u.getId());
+                    user.put("name", u.getName());
+                    user.put("departmentId", u.getDepartmentId());
+                    userMapList.add(user);
+                }
+                departmentVO.setUserList(userMapList);
+                getUserListWithDept(userList,departmentVO.getChildren());
+            }
+        }
+        return departmentVOList;
+    }
+
     @Override
     public HttpRespMsg listMyMembs(HttpServletRequest request) {
         User currentUser = userMapper.selectById(request.getHeader("TOKEN"));

+ 30 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -5201,6 +5201,36 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         return reportList;
     }
 
+    @Override
+    public HttpRespMsg correctWorkingTime(String userIds, String startDate, String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
+        QueryWrapper<Report> queryWrapper=new QueryWrapper<>();
+        if(startDate!=null&&endDate!=null){
+            queryWrapper.between("create_date",startDate,endDate);
+        }
+        String[] split = userIds.split(",");
+        List<String> userIdList = Arrays.asList(split);
+        queryWrapper.in("creator_id",userIdList);
+        List<Report> reportList = reportMapper.selectList(queryWrapper);
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", userIdList));
+        for (String userId : userIdList) {
+            //当前人员所填的日报数据
+            List<Report> list = reportList.stream().filter(rl -> rl.getCreatorId().equals(userId)).collect(Collectors.toList());
+            //当前人员
+            User user = userList.stream().filter(ul -> ul.getId().equals(userId)).findFirst().get();
+            //满足 与人员当前部门不相符的日报数据才发生变更
+            List<Report> needChangeReportList = list.stream().filter(l -> !l.getDeptId().equals(user.getDepartmentId())).collect(Collectors.toList());
+            needChangeReportList.forEach(nl->{
+                nl.setDeptId(user.getDepartmentId());
+            });
+            if(needChangeReportList.size()>0&&!updateBatchById(needChangeReportList)){
+                msg.setError(MessageUtils.message("Company.validationError"));
+                return msg;
+            }
+        }
+        return msg;
+    }
+
     private void selfUpdateToNextWorkFlow(Integer companyId, User auditTargetUser, List<Integer> targetRids, List<Department> allDepts) {
         List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(
                 new QueryWrapper<AuditWorkflowTimeSetting>().eq("company_id", companyId)

+ 89 - 89
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -655,98 +655,98 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         return httpRespMsg;
     }
 
-    //获取provider_access_token
-    private String getProviderAccessToken() {
-        if (UserServiceImpl.provider_access_token == null || UserServiceImpl.providerTokenExpireTime < System.currentTimeMillis()) {
-            //失效了,需要重新获取
-            String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token";
-            HttpHeaders headers = new HttpHeaders();
-            RestTemplate restTemplate = new RestTemplate();
-            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-            headers.setContentType(type);
-            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
-            JSONObject reqParam = new JSONObject();
-            reqParam.put("corpid", corpId);
-            reqParam.put("provider_secret", providerSecret);
-            HttpEntity<JSONObject> Entity = new HttpEntity<>(reqParam, headers);
-            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
-            if (responseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = responseEntity.getBody();
-                System.err.println(resp);
-                JSONObject obj = JSONObject.parseObject(resp);
-                if (obj.getIntValue("errcode") == 0) {
-                    UserServiceImpl.provider_access_token = obj.getString("provider_access_token");
-                    UserServiceImpl.providerTokenExpireTime = System.currentTimeMillis() + obj.getIntValue("expires_in")*1000;
-                }else{
-                    System.err.println("====================token获取失败======================");
-                }
-            }
-        }
-        return UserServiceImpl.provider_access_token;
-    }
+//    //获取provider_access_token
+//    private String getProviderAccessToken() {
+//        if (UserServiceImpl.provider_access_token == null || UserServiceImpl.providerTokenExpireTime < System.currentTimeMillis()) {
+//            //失效了,需要重新获取
+//            String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token";
+//            HttpHeaders headers = new HttpHeaders();
+//            RestTemplate restTemplate = new RestTemplate();
+//            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+//            headers.setContentType(type);
+//            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+//            JSONObject reqParam = new JSONObject();
+//            reqParam.put("corpid", corpId);
+//            reqParam.put("provider_secret", providerSecret);
+//            HttpEntity<JSONObject> Entity = new HttpEntity<>(reqParam, headers);
+//            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
+//            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+//                String resp = responseEntity.getBody();
+//                System.err.println(resp);
+//                JSONObject obj = JSONObject.parseObject(resp);
+//                if (obj.getIntValue("errcode") == 0) {
+//                    UserServiceImpl.provider_access_token = obj.getString("provider_access_token");
+//                    UserServiceImpl.providerTokenExpireTime = System.currentTimeMillis() + obj.getIntValue("expires_in")*1000;
+//                }else{
+//                    System.err.println("====================token获取失败======================");
+//                }
+//            }
+//        }
+//        return UserServiceImpl.provider_access_token;
+//    }
 
     //根据关键词查询微信通讯录人员的openid
     //keyword不可为空格或空字符串,否则请求参数错误
-    private HashMap<String, List> getOpenId(String corpId,String keyword,String cursor) {
-        HashMap<String, List> result = new HashMap<>();
-        List<Object> user = new ArrayList<>();
-        String itemCursor = "";
-        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
-        HttpHeaders headers = new HttpHeaders();
-        RestTemplate restTemplate = new RestTemplate();
-        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-        headers.setContentType(type);
-        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
-        String providerToken = getProviderAccessToken();
-        if (providerToken!=null){
-            //搜索通讯录名单
-            url = url.replace("ACCESS_TOKEN", providerToken);
-            JSONObject requestMap = new JSONObject();
-            requestMap.put("auth_corpid", corpId);
-            requestMap.put("query_word", keyword);
-            requestMap.put("query_type", 1);
-            requestMap.put("query_range", 1);
-            requestMap.put("limit", 200);
-            requestMap.put("cursor", cursor);
-            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
-            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
-            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = ResponseEntity.getBody();
-                JSONObject respJson = JSONObject.parseObject(resp);
-                if (respJson.getInteger("errcode")==0){
-                    JSONObject queryResult = respJson.getJSONObject("query_result");
-                    if (!queryResult.isEmpty()){
-                        JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
-                        if (jsonArray!=null){
-                            Object[] objects = jsonArray.toArray();
-                            for (Object object : objects) {
-                                user.add(object);
-                            }
-                        }
-                    }else{
-                        System.err.println("==================通讯录查询请求无userid列表===================");
-                    }
-                    Boolean is_last = respJson.getBoolean("is_last");
-                    if (!is_last){
-                        itemCursor = respJson.getString("next_cursor");
-                    }
-                }else {
-                    System.err.println("===================通讯录查询请求失败=================");
-                }
-            }
-        }else {
-            System.out.println("=============token查询失败=================");
-        }
-        List<Object> nextCursor = new ArrayList<>();
-        nextCursor.add(itemCursor);
-        result.put("nextCursor",nextCursor);
-        result.put("user",user);
-        return result;
-    }
+//    private HashMap<String, List> getOpenId(String corpId,String keyword,String cursor) {
+//        HashMap<String, List> result = new HashMap<>();
+//        List<Object> user = new ArrayList<>();
+//        String itemCursor = "";
+//        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
+//        HttpHeaders headers = new HttpHeaders();
+//        RestTemplate restTemplate = new RestTemplate();
+//        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+//        headers.setContentType(type);
+//        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+//        String providerToken = getProviderAccessToken();
+//        if (providerToken!=null){
+//            //搜索通讯录名单
+//            url = url.replace("ACCESS_TOKEN", providerToken);
+//            JSONObject requestMap = new JSONObject();
+//            requestMap.put("auth_corpid", corpId);
+//            requestMap.put("query_word", keyword);
+//            requestMap.put("query_type", 1);
+//            requestMap.put("query_range", 1);
+//            requestMap.put("limit", 200);
+//            requestMap.put("cursor", cursor);
+//            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+//            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+//            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
+//                String resp = ResponseEntity.getBody();
+//                JSONObject respJson = JSONObject.parseObject(resp);
+//                if (respJson.getInteger("errcode")==0){
+//                    JSONObject queryResult = respJson.getJSONObject("query_result");
+//                    if (!queryResult.isEmpty()){
+//                        JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
+//                        if (jsonArray!=null){
+//                            Object[] objects = jsonArray.toArray();
+//                            for (Object object : objects) {
+//                                user.add(object);
+//                            }
+//                        }
+//                    }else{
+//                        System.err.println("==================通讯录查询请求无userid列表===================");
+//                    }
+//                    Boolean is_last = respJson.getBoolean("is_last");
+//                    if (!is_last){
+//                        itemCursor = respJson.getString("next_cursor");
+//                    }
+//                }else {
+//                    System.err.println("===================通讯录查询请求失败=================");
+//                }
+//            }
+//        }else {
+//            System.out.println("=============token查询失败=================");
+//        }
+//        List<Object> nextCursor = new ArrayList<>();
+//        nextCursor.add(itemCursor);
+//        result.put("nextCursor",nextCursor);
+//        result.put("user",user);
+//        return result;
+//    }
 
     //获取员工的列表
     @Override
-    public HttpRespMsg getEmployeeList(Integer departmentId, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) {
+    public HttpRespMsg getEmployeeList(Integer departmentId, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Integer WXCompanyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", WXCompanyId));
@@ -755,7 +755,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         //当企业开启了微信通讯录的情况下
         if (org.apache.commons.lang3.StringUtils.isNotBlank(keyword) && wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1 && departmentId == -1){
             System.out.println("====================开始查询通讯录名单======================");
-            HashMap<String, List> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
+            HashMap<String, List> result = wxCorpInfoService.getOpenId(wxCorpInfo.getCorpid(), keyword, cursor,1,200);
             List users = result.get("user");
             if (users.size()!=0){
                 List<User> realUser = userMapper.selectList(new QueryWrapper<User>().in("corpwx_userid", users));
@@ -2436,7 +2436,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     }
 
     @Override
-    public HttpRespMsg getSimpleActiveUserList(Integer departmentId, HttpServletRequest request,String keyword,String cursor) {
+    public HttpRespMsg getSimpleActiveUserList(Integer departmentId, HttpServletRequest request,String keyword,String cursor) throws Exception {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
@@ -2446,7 +2446,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", WXCompanyId));
         //当企业开启了微信通讯录的情况下
         if (org.apache.commons.lang3.StringUtils.isNotBlank(keyword) && wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
-            HashMap<String, List> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
+            HashMap<String, List> result = wxCorpInfoService.getOpenId(wxCorpInfo.getCorpid(), keyword, cursor,1,200);
             HashMap<String, Object> msgResult = new HashMap<>();
             nextCursor = result.get("nextCursor").get(0).toString();
             List users = result.get("user");

+ 74 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -1802,4 +1802,78 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         }
         return result;
     }
+
+    //根据关键词查询微信通讯录人员的openid
+    //keyword不可为空格或空字符串,否则请求参数错误
+    @Override
+    public HashMap<String, List> getOpenId(String corpId,String keyword,String cursor,Integer queryType,Integer limit) throws Exception {
+        HashMap<String, List> result = new HashMap<>();
+        List<Object> user = new ArrayList<>();
+        List<Object> dept = new ArrayList<>();
+        String itemCursor = "";
+        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
+        HttpHeaders headers = new HttpHeaders();
+        RestTemplate restTemplate = new RestTemplate();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+        String providerToken = getProviderAccessToken();
+        if (providerToken!=null){
+            //搜索通讯录名单
+            url = url.replace("ACCESS_TOKEN", providerToken);
+            JSONObject requestMap = new JSONObject();
+            requestMap.put("auth_corpid", corpId);
+            requestMap.put("query_word", keyword);
+            requestMap.put("query_type", queryType);
+            requestMap.put("query_range", 1);
+            requestMap.put("limit", limit);
+            requestMap.put("cursor", cursor);
+            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
+                String resp = ResponseEntity.getBody();
+                JSONObject respJson = JSONObject.parseObject(resp);
+                if (respJson.getInteger("errcode")==0){
+                    JSONObject queryResult = respJson.getJSONObject("query_result");
+                    if (!queryResult.isEmpty()){
+                        if(queryResult.getJSONObject("user")!=null){
+                            JSONArray userJsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
+                            if (userJsonArray!=null){
+                                Object[] objects = userJsonArray.toArray();
+                                for (Object object : objects) {
+                                    user.add(object);
+                                }
+                            }
+                        }
+                        if(queryResult.getJSONObject("party")!=null){
+                            JSONArray deptJsonArray = queryResult.getJSONObject("party").getJSONArray("department_id");
+                            if (deptJsonArray!=null){
+                                Object[] objects = deptJsonArray.toArray();
+                                for (Object object : objects) {
+                                    dept.add(object);
+                                }
+                            }
+                        }
+                    }else{
+                        System.err.println("==================通讯录查询请求无userid列表===================");
+                    }
+                    System.err.println(respJson.toString());
+                    Boolean is_last = respJson.getBoolean("is_last");
+                    if (!is_last){
+                        itemCursor = respJson.getString("next_cursor");
+                    }
+                }else {
+                    System.err.println("===================通讯录查询请求失败=================");
+                }
+            }
+        }else {
+            System.out.println("=============token查询失败=================");
+        }
+        List<Object> nextCursor = new ArrayList<>();
+        nextCursor.add(itemCursor);
+        result.put("nextCursor",nextCursor);
+        result.put("user",user);
+        result.put("dept",dept);
+        return result;
+    }
 }

Diferenças do arquivo suprimidas por serem muito extensas
+ 5411 - 3894
fhKeeper/formulahousekeeper/octopus/package-lock.json


+ 12 - 3
fhKeeper/formulahousekeeper/octopus/src/views/customer/list.vue

@@ -192,7 +192,7 @@
             </span>
         </el-dialog>
         <!-- 其他设置 -->
-        <el-dialog v-if="editDialogG" :visible.sync="editDialogG" title="其他设置">
+        <el-dialog v-if="editDialogG" :visible.sync="editDialogG" title="其他设置" width="850px">
             <el-form label-width="100px" class="otherForm">
                 <el-form-item><el-checkbox v-model="dialogData.reportWorkflow">是否开启审批流设置</el-checkbox></el-form-item>
                 <el-form-item><el-checkbox v-model="dialogData.needEvaluate">审核通过需输入评价</el-checkbox></el-form-item>
@@ -207,7 +207,7 @@
                 <el-form-item><el-checkbox v-model="dialogData.reportApproveMsgpush">日报审核通过是否推送消息</el-checkbox></el-form-item>
                 <el-form-item><el-checkbox v-model="dialogData.projectWithDept">项目是否有所属部门</el-checkbox></el-form-item>
                 <el-form-item><el-checkbox v-model="dialogData.financeJobnumEnabled">财务导入薪资是否支持工号</el-checkbox></el-form-item>
-                <el-form-item><el-checkbox v-model="dialogData.reportAutoApprove">是否开启日报自动审核</el-checkbox></el-form-item>
+                <!-- <el-form-item><el-checkbox v-model="dialogData.reportAutoApprove">是否开启日报自动审核</el-checkbox></el-form-item> -->
                 <el-form-item><el-checkbox v-model="dialogData.notAllowedNoAttendance">是否开启考勤为0不可填报</el-checkbox></el-form-item>
                 <el-form-item><el-checkbox v-model="dialogData.stageHasEvtime">是否开启预估工时</el-checkbox></el-form-item>
                 <!-- <el-form-item><el-checkbox v-model="dialogData.pushReportData">是否开通【推送工时数据】</el-checkbox></el-form-item> -->
@@ -222,6 +222,13 @@
                         <el-option :value="2" label="先分组审核再PM审核"></el-option>
                     </el-select>
                 </el-form-item>
+                <el-form-item>
+                    <el-checkbox v-model="dialogData.reportAutoApprove">是否开启日报自动审核</el-checkbox>
+                    <el-input-number v-if="dialogData.reportAutoApprove" v-model.number="dialogData.reportAutoApproveDays" controls-position="right" size="mini" style="margin: 0 10px 0 10px;width: 90px;" :min="0"></el-input-number>
+                    <el-tooltip effect="dark" :content="`${dialogData.reportAutoApproveDays}天后自动审核`" placement="top-start" v-if="dialogData.reportAutoApprove">
+                        <i class="el-icon-question"></i>
+                    </el-tooltip>
+                </el-form-item>
             </el-form>
             <!-- 是否开启审批流设置,是否启用主项目模式,是否秘薪模式,是否显示日报审批流程,是否CRO企业,是否仅使用导入日报审核(不要项目审核) reportAuditType-->
             <span slot="footer" class="dialog-footer">
@@ -381,6 +388,7 @@
                             this.$set(this.dialogData,'includeWeekends',res.data.includeWeekends ? true : false)
                             this.$set(this.dialogData,'multiWorktime',res.data.multiWorktime ? true : false)
                             this.$set(this.dialogData,'reportAuditType',res.data.reportAuditType)
+                            this.$set(this.dialogData,'reportAutoApproveDays',res.data.reportAutoApproveDays)
                         }else{
                             this.$message({
                                 message: res.msg,
@@ -659,7 +667,8 @@
                     // pushReportData: this.dialogData.pushReportData ? 1 : 0,
                     includeWeekends: this.dialogData.includeWeekends ? 1 : 0,
                     multiWorktime: this.dialogData.multiWorktime ? 1 : 0,
-                    reportAuditType: this.dialogData.reportAuditType
+                    reportAuditType: this.dialogData.reportAuditType,
+                    reportAutoApproveDays: this.dialogData.reportAutoApproveDays, // 自动审核的天数
                 },res => {
                     if(res.code == 'ok'){
                         this.editDialogG = false

Diferenças do arquivo suprimidas por serem muito extensas
+ 5423 - 3906
fhKeeper/formulahousekeeper/timesheet/package-lock.json


+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

@@ -56,7 +56,7 @@
                         <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 20px" v-if="item.jobNumber">{{ item.jobNumber }}</span>
                     </el-option>
                 </el-select>
-                <selectCat v-if="user.userNameNeedTranslate == 1" :size="'mini'" :subject="users" :subjectId="executorItem.executorId" :distinction="'1'" @selectCal="selectCal" :index="index" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)"></selectCat>
+                <selectCat v-if="user.userNameNeedTranslate == 1" :size="'mini'" :filterable="true" :subject="users" :subjectId="executorItem.executorId" :distinction="'1'" @selectCal="selectCal" :index="index" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)"></selectCat>
                 
                 <span style="margin-left:30px;margin-right:10px;">{{ $t('plantime') }}</span>
                 <el-input-number size="small" :disabled="(addForm.id != null && user.id != addForm.createrId && currentProject.inchargerId != user.id) && !permissions.projectManagement && !(groupResponsibleId == user.id)" v-model="gstimday[index]" style="width:16%;" :min="1" :max="100"  :placeholder="$t('danweitian')" @change="chggstim(0,index)"></el-input-number ><span style="margin-left:5px;">{{ $t('time.day') }}</span>

+ 4 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -975,6 +975,10 @@ import { error } from 'dingtalk-jsapi';
                     if(obj.showOrNot) {
                         this.getList()
                     }
+
+                    if(obj.submitInsert) {
+                        this.getList()
+                    }
                 } else {
                     this.backToParentTask()
                 }

+ 72 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -245,6 +245,7 @@
                     
                 <el-button size="small" type="primary" @click="handleSelectionZzjgbtn3" v-if="user.userNameNeedTranslate != 1">{{ $t('modifyingDepartments') }}</el-button>
                 <el-button size="small" type="primary" @click="handJue">{{ $t('modifyingRoles') }}</el-button>
+                <el-button size="small" type="primary" @click="workingHoursDialogClick()">修正工时所属部门</el-button>
                
                 
                 
@@ -262,6 +263,24 @@
         </el-col>
       </div>
 
+      <!-- 修正工时所属部门 -->
+      <el-dialog title="修正工时" :visible.sync="workingHoursDialog" width="650px" :before-close="handleClose">
+        <div>
+          <div class="workingHours">
+            <el-radio v-model="workingHoursRadio" label="1">全部工时</el-radio>
+            <el-radio v-model="workingHoursRadio" label="2">部分工时</el-radio>
+          </div>
+          <div class="workingHours workingHoursData" v-if="workingHoursRadio == 2">
+            <span class="workingHoursSpan">日期范围</span>
+            <el-date-picker v-model="workingHoursDatas" type="daterange" value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+          </div>
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="workingHoursDialog = false">取 消</el-button>
+          <el-button type="primary" @click="workingHours()">确 定</el-button>
+        </span>
+      </el-dialog>
+
       <!-- 批量修改弹出框 -->
         <el-dialog :title="$t('changes')" :visible.sync="handleSelectionZzjgshow" v-if="handleSelectionZzjgshow" width="30%">
             <el-form model="" label-width="20%">
@@ -803,6 +822,9 @@ export default {
   },
   data() {
     return {
+      workingHoursDialog: false,
+      workingHoursRadio: '1',
+      workingHoursDatas: [],
       recordMsgDialog: false,
       recordMsg: {indate: [],msg:''},
       roleNameFlg: '',
@@ -1715,6 +1737,16 @@ export default {
       }
       this.handleSelectionZzjgshow = true;
     },
+    workingHoursDialogClick() {
+      let endDate = this.dayjs(`${new Date()}`).format('YYYY-MM-DD')
+      let startDate = this.dayjs(`${new Date()}`).format('YYYY-MM') + '-01'
+      this.workingHoursDatas = [startDate, endDate]
+      if (this.handleSelectionZzjgDate.length == 0) {
+        this.$message(this.$t('pleaseselectpersonnel'));
+        return;
+      }
+      this.workingHoursDialog = true
+    },
     handJue() {
       if (this.handleSelectionZzjgDate.length == 0) {
         this.$message(this.$t('pleaseselectpersonnel'));
@@ -3385,6 +3417,36 @@ export default {
               this.$message({message: '其它错误',type: "error"});
           }      
        })
+    },
+    // 修正工时所属部门
+    workingHours() {
+      let obj = {
+        userIds: '',
+        startDate: '',
+        endDate: ''
+      }
+      if(this.workingHoursRadio == '2') {
+        obj.startDate = this.workingHoursDatas[0],
+        obj.endDate = this.workingHoursDatas[1]
+      }
+      let arr = []
+      for(var i in this.handleSelectionZzjgDate) {
+        arr.push(this.handleSelectionZzjgDate[i].id)
+      }
+      obj.userIds = arr.toString()
+      this.http.post('/report/correctWorkingTime', obj,
+      res => {
+        if (res.code == "ok") {
+          this.getUser();
+          this.workingHoursDialog = false
+          this.$message({message: '操作成功',type: "success"});
+        } else {
+            this.$message({message: res.msg,type: "error"});
+        }
+      },
+      error => {
+          this.$message({message: error,type: "error"});
+      });
     }
   },
   mounted() {
@@ -3412,6 +3474,16 @@ export default {
 </script>
 
 <style scoped>
+.workingHours {
+  padding: 0 60px;
+}
+.workingHoursData {
+  margin-top: 30px;
+}
+.workingHoursSpan {
+  display: inline-block;
+  margin-right: 20px;
+}
 .line {
   width: 30px;
   /* height: 500px; */

+ 3 - 4
fhKeeper/formulahousekeeper/timesheet_h5/src/views/index/index.vue

@@ -39,18 +39,17 @@
                 ],
                 routers: [],
                 key: 0,
-                isSyncData: null
+                isSyncData: false
             };
         },
         created() {
             if(localStorage.userInfo) {
                 this.user = JSON.parse(localStorage.userInfo)
+                // 是否为钉钉同步
+                this.isSyncData = this.user.timeType.syncDingding || this.user.timeType.syncFanwei;
             }
         },
         mounted() {
-            // 是否为钉钉同步
-            this.isSyncData = this.user.timeType.syncDingding || this.user.timeType.syncFanwei;
-
             //有错误信息,优先跳转到登录页面去
             if(window.location.href.indexOf('errorMsg') != '-1') {
                 this.$router.push("/login");