Browse Source

增加报工和组织架构

seyason 1 year ago
parent
commit
fc473965b2
19 changed files with 463 additions and 596 deletions
  1. 5 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportController.java
  2. 25 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedureTeam.java
  3. 4 6
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/vo/ReportVO.java
  4. 4 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ProdProcedureTeamMapper.java
  5. 2 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ReportService.java
  6. 40 29
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanProcedureTotalServiceImpl.java
  7. 33 104
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  8. 9 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  9. 2 2
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/application.yml
  10. 16 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProdProcedureTeamMapper.xml
  11. 69 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml
  12. 9 0
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/router/index.js
  13. 14 3
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/groupView/groupView.vue
  14. 1 1
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/index/index.vue
  15. 6 2
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/statisticsView/statisticsView.vue
  16. 188 7
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/workView/workView.vue
  17. 2 0
      fhKeeper/formulahousekeeper/timesheet-workshop/src/permissions.js
  18. 3 3
      fhKeeper/formulahousekeeper/timesheet-workshop/src/routes.js
  19. 31 436
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/workReport/daily.vue

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

@@ -107,6 +107,11 @@ public class ReportController {
     public HttpRespMsg getReportList(@RequestParam String date, @RequestParam(required = false) Integer deptId, @RequestParam(required = false) String userId) {
         return reportService.getReportList(date, deptId, userId, request);
     }
+
+    @RequestMapping("/getCheckerList")
+    public HttpRespMsg getCheckerList(Integer checkType, Integer deptId) {
+        return reportService.getChekerList(checkType, deptId);
+    }
 //
 //    /**
 //     * 导出报告

+ 25 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedureTeam.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
 import lombok.Data;
@@ -52,6 +53,30 @@ public class ProdProcedureTeam extends Model<ProdProcedureTeam> {
     @TableField("job_of_money")
     private BigDecimal jobOfMoney;
 
+    /**
+     * 完成度,百分比
+     */
+    @TableField("progress")
+    private Integer progress;
+
+    /**
+     * 检验人
+     */
+    @TableField("checker_id")
+    private String checkerId;
+
+    /**
+     * 检查人姓名
+     */
+    @TableField("checker_name")
+    private String checkerName;
+
+    /**
+     * 最近更新时间
+     */
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
 
     @Override
     protected Serializable pkVal() {

+ 4 - 6
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/vo/ReportVO.java

@@ -12,10 +12,8 @@ import java.time.LocalDateTime;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 public class ReportVO extends Report {
-    private String name;//用户姓名
-    private String project;//项目名称
-    private String subProjectName;//子项目名称
-    private String taskName;//任务名称
-    private String degreeName;//自定义维度名称
-    private String groupName;//分组名称
+    private String creatorName;//用户姓名
+    private String productName;//产品名称
+    private String procedureName;//工序名称
+    private String checkerName;//质检人姓名
 }

+ 4 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ProdProcedureTeamMapper.java

@@ -3,6 +3,9 @@ package com.management.platform.mapper;
 import com.management.platform.entity.ProdProcedureTeam;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * <p>
  *  Mapper 接口
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ProdProcedureTeamMapper extends BaseMapper<ProdProcedureTeam> {
 
+    public List<HashMap> getReportForWorkList(String userId);
 }

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

@@ -114,4 +114,6 @@ public interface ReportService extends IService<Report> {
 //    HttpRespMsg batchApproveByDate(String startDate, String endDate, HttpServletRequest request);
 
     HttpRespMsg submitReport(Report report, HttpServletRequest request);
+
+    HttpRespMsg getChekerList(Integer checkType, Integer deptId);
 }

+ 40 - 29
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanProcedureTotalServiceImpl.java

@@ -44,37 +44,48 @@ public class PlanProcedureTotalServiceImpl extends ServiceImpl<PlanProcedureTota
         HttpRespMsg msg=new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
         /*获取作为组员参与的数据*/
-        List<ProdProcedureTeam> ProdProcedureTeams = prodProcedureTeamMapper.selectList(new QueryWrapper<ProdProcedureTeam>().eq("user_id", user.getId()));
-        List<Map> mapList=new ArrayList<>();
-        if(ProdProcedureTeams!=null){
-            List<Integer> planIds = ProdProcedureTeams.stream().map(ProdProcedureTeam::getPlanId).collect(Collectors.toList());
-            List<Integer> procedureIds = ProdProcedureTeams.stream().map(ProdProcedureTeam::getProdProcedureId).collect(Collectors.toList());
-            planIds.add(-1);
-            procedureIds.add(-1);
-            List<Plan> planList = planMapper.selectList(new QueryWrapper<Plan>().in("id", planIds));
-            List<ProdProcedure> procedureList = prodProcedureMapper.selectList(new QueryWrapper<ProdProcedure>().in("id", procedureIds));
-            List<Integer> productIds = planList.stream().map(Plan::getProductId).distinct().collect(Collectors.toList());
-            List<Product> productList = productMapper.selectList(new QueryWrapper<Product>().in("id", productIds));
-            for (ProdProcedureTeam prodProcedureTeam : ProdProcedureTeams) {
-                Map map=new HashMap();
-                Optional<ProdProcedure> prodProcedure = procedureList.stream().filter(pl -> pl.getId().equals(prodProcedureTeam.getProdProcedureId())).findFirst();
-                map.put("jobOfMoney",prodProcedureTeam.getJobOfMoney());
-                map.put("workTime",prodProcedureTeam.getWorkTime());
-                if(prodProcedure.isPresent()){
-                    map.put("procedureName",prodProcedure.get().getName());
-                    map.put("checkType",prodProcedure.get().getCheckType());
-                }
-                Optional<Plan> plan = planList.stream().filter(pl -> pl.getId().equals(prodProcedureTeam.getPlanId())).findFirst();
-                if(plan.isPresent()){
-                    Optional<Product> product = productList.stream().filter(pl -> pl.getId().equals(plan.get().getProductId())).findFirst();
-                    if(product.isPresent()){
-                        map.put("productName",product.get().getName());
-                    }
-                    map.put("dateData",plan.get().getStartDate()+"-"+plan.get().getEndDate());
-                    map.put("titleName",plan.get().getPlanType()==0?plan.get().getProductSchedulingNum():plan.get().getTaskChangeNoticeNum());
-                }
+        List<HashMap> dataList = prodProcedureTeamMapper.getReportForWorkList(user.getId());
+        //抽取出所有的planId
+        List<Integer> planIdList = dataList.stream().map(item -> (Integer) item.get("planId")).collect(Collectors.toList());
+        //重新封装成两层结构,第一层为planId,第二层为planId下的数据
+        List<HashMap> resultList = new ArrayList<>();
+        Integer prePlanId = null;
+        for (int i = 0; i < dataList.size(); i++) {
+            HashMap map = dataList.get(i);
+            Integer curPlanId = (Integer) dataList.get(i).get("plan_id");
+            List<HashMap> procedureList = new ArrayList<>();
+            if (prePlanId == null || !prePlanId.equals(curPlanId)) {
+                prePlanId = curPlanId;
+                HashMap planMap = new HashMap();
+                planMap.put("plan_d", curPlanId);
+                planMap.put("plan_name", map.get("plan_name"));
+                planMap.put("start_date", map.get("start_date"));
+                planMap.put("end_date", map.get("end_date"));
+                planMap.put("product_name", map.get("product_name"));
+                planMap.put("product_scheduling_num", map.get("product_scheduling_num"));
+                planMap.put("task_type_name", map.get("task_type_name"));
+                planMap.put("task_name", map.get("task_name"));
+                planMap.put("task_change_notice_num", map.get("task_change_notice_num"));
+                planMap.put("plan_type", map.get("plan_type"));
+                planMap.put("procedureList", procedureList);
+                resultList.add(planMap);
+            } else {
+                procedureList = (List<HashMap>) resultList.get(resultList.size() - 1).get("procedureList");
             }
+            //放进去的是procedureList
+            HashMap procedureMap = new HashMap();
+            procedureMap.put("id", map.get("id"));
+            procedureMap.put("procedure_name", map.get("procedure_name"));
+            procedureMap.put("work_time", map.get("work_time"));
+            procedureMap.put("job_of_money", map.get("job_of_money"));
+            procedureMap.put("progress", map.get("progress"));
+            procedureMap.put("checker_name", map.get("checker_name"));
+            procedureMap.put("checker_id", map.get("checker_id"));
+            procedureMap.put("check_type", map.get("check_type"));
+            procedureList.add(procedureMap);
         }
+
+        msg.setData(resultList);
         return msg;
     }
 }

+ 33 - 104
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -93,6 +93,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Value("${wx.app_secret}")
     public String appSecret;
 
+
+    @Resource
+    private HttpServletRequest request;
     @Resource
     private ProjectAuditorMapper projectAuditorMapper;
     @Resource
@@ -101,11 +104,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     private DepartmentOtherManagerMapper departmentOtherManagerMapper;
     @Resource
     private ReportService reportService;
-
     @Resource
     WxCorpInfoService wxCorpInfoService;
-
-
     @Resource
     WxCorpInfoMapper wxCorpInfoMapper;
     @Resource
@@ -132,6 +132,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
     @Resource
     private ExcelExportService excelExportService;
+    @Resource
+    private PlanProcedureTotalMapper planProcedureTotalMapper;
     @Autowired
     RestTemplate restTemplate;
 
@@ -143,6 +145,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         report.setCreatorId(token);
+        //计算工作时长
+        planProcedureTotalMapper.selectOne(new QueryWrapper<PlanProcedureTotal>().eq("plan_id", report.getPlanId()).eq("procedure_id", report.getProdProcedureId()));
+
         if (report.getId() == null) {
             reportMapper.insert(report);
         } else {
@@ -150,7 +155,29 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         }
         return httpRespMsg;
     }
-//
+
+    @Override
+    public HttpRespMsg getChekerList(Integer checkType, Integer deptId) {
+        //根据checkType获取检查人列表
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        List<User> userList = new ArrayList<>();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        if (checkType == 0) {
+            user.setPassword(null);
+            userList.add(user);
+        } else if (checkType == 1) {
+            userList = userMapper.selectList(new QueryWrapper<User>().select("id, name, corpwx_userid").eq("department_id", deptId));
+        } else if (checkType == 2) {
+            List<DepartmentOtherManager> otherManagers = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("department_id", deptId));
+            List<String> userIds = otherManagers.stream().map(DepartmentOtherManager::getOtherManagerId).collect(Collectors.toList());
+            userList = userMapper.selectList(new QueryWrapper<User>().select("id, name, corpwx_userid").in("id", userIds));
+        }
+        httpRespMsg.data = userList;
+        return httpRespMsg;
+    }
+
+    //
     //获取报告列表
     @Override
     public HttpRespMsg getReportList(String date,  Integer deptId, String targetUid, HttpServletRequest request) {
@@ -178,26 +205,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         map.put("data", list);
                         double reportTime = 0;
                         BigDecimal total = new BigDecimal(0);
-                        int state = (int)list.get(0).get("state");
-                        boolean hasDeny = false;
-                        boolean hasWaiting = false;
+                        int state = 1;
                         for (Map<String, Object> m : list) {
                             double t = (double) m.get("time");
                             reportTime += t;
                             total = total.add((BigDecimal)m.get("cost"));
-                            int curState = (int)m.get("state");
-                            if (curState == 2) {
-                                hasDeny = true;
-                            }
-                            if (curState == 0) {
-                                hasWaiting = true;
-                            }
-                        }
-                        if(hasDeny) {
-                            state = 2;
-                        } else if (hasWaiting) {
-                            state = 0;
                         }
+
                         DecimalFormat df = new DecimalFormat("0.00");
                         map.put("reportTime", df.format(reportTime));
                         map.put("cost", total);
@@ -243,24 +257,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             double reportTime = 0;
                             if (rList.size() > 0) {
                                 int state = 1;
-                                for (Map<String, Object> m : rList) {
-                                    double t = (double) m.get("time");
-                                    reportTime += t;
-
-                                    //取最低的状态
-                                    if (state == 2) {
-                                        continue;
-                                    }
-                                    if (state == 0) {
-                                        if ((int)m.get("state") == 2) {
-                                            state = 2;
-                                        } else {
-                                            continue;
-                                        }
-                                    } else {
-                                        state = (int)m.get("state");
-                                    }
-                                }
                                 memb.put("state", state);
                             }
                             DecimalFormat df = new DecimalFormat("0.00");
@@ -268,56 +264,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         }
                     }
                 }
-                if(deptId==null&&targetUid==null){
-                    //担任项目经理或者日报审核人,查找相关的人员的日报
-                    List<Map<String, Object>> puserNames = reportMapper.getReportNameByDate(date, user.getCompanyId(), leaderId);
-                    List<Map<String, Object>> inchargeReportList= reportMapper.getInchargeReportByDate(date, leaderId, null);
-
-                    for (Map<String, Object> map2 : puserNames) {
-
-                        if (nameList.size() > 0) {
-                            String myUserId = (String)nameList.get(0).get("id");
-                            if (myUserId.equals(map2.get("id"))) {
-                                //自己的报告,之前已经添加过了,排重
-                                continue;
-                            }
-                        }
-                        List<Object> collect = nameList.stream().map(nl -> nl.get("")).collect(Collectors.toList());
-                        if(!collect.contains(map2.get("id"))){
-                            nameList.add(map2);
-                        }
-                        //再根据人分别获取当天的报告
-                        List<Map<String, Object>> list2 =
-                                inchargeReportList.stream().filter(i->i.get("creatorId").equals(map2.get("id"))).collect(Collectors.toList());
-                        map2.put("data", list2);
-
-                        double reportTime = 0;
-                        BigDecimal total = new BigDecimal(0);
-                        int state = 1;
-                        for (Map<String, Object> m : list2) {
-                            double t = (double) m.get("time");
-                            reportTime += t;
-                            total = total.add((BigDecimal)m.get("cost"));
-                            //取最低的状态
-                            if (state == 2) {
-                                continue;
-                            }
-                            if (state == 0) {
-                                if ((int)m.get("state") == 2) {
-                                    state = 2;
-                                } else {
-                                    continue;
-                                }
-                            } else {
-                                state = (int)m.get("state");
-                            }
-                        }
-                        DecimalFormat df = new DecimalFormat("0.00");
-                        map2.put("reportTime", df.format(reportTime));
-                        map2.put("cost", total);
-                        map2.put("state", state);
-                    }
-                }
             } else {
                 Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
                 List<Integer> ids = null;
@@ -364,23 +310,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         double reportTime = 0;
                         if (list.size() > 0) {
                             int state = 1;
-                            for (Map<String, Object> m : list) {
-                                double t = (double) m.get("time");
-                                reportTime += t;
-                                //取最低的状态
-                                if (state == 2) {
-                                    continue;
-                                }
-                                if (state == 0) {
-                                    if ((int)m.get("state") == 2) {
-                                        state = 2;
-                                    } else {
-                                        continue;
-                                    }
-                                } else {
-                                    state = (int)m.get("state");
-                                }
-                            }
                             map.put("state", state);
                         }
                         DecimalFormat df = new DecimalFormat("0.00");

+ 9 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -571,7 +571,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 //                mainMenu.setChildren(categoryMenuList);
             }
         }
-
+        //担任部门主要负责人的,有‘班组人员’的权限,用于手机端匹配菜单
+        int cnt = departmentMapper.selectCount(new QueryWrapper<Department>().eq("manager_id", user.getId()));
+        if (cnt > 0) {
+            SysModule module = new SysModule();
+            module.setName("班组人员");
+            module.setPath("/groupView");
+            module.setChildren(new ArrayList<>());
+            menuList.add(module);
+        }
         user.setModuleList(menuList);
         //此处返回权限集合
         List<Integer> functionIdList = new ArrayList<>();

+ 2 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/application.yml

@@ -122,7 +122,7 @@ management:
   security:
     enabled:false:
   server:
-    port: 10012
+    port: 10092
 #  endpoints:
 #    web:
 #      exposure:
@@ -159,7 +159,7 @@ providerSecret: wlwGIUXskWKsNtCfKUsAfJ6ueba55rZnqZvcC-rUM6nQ-LnRDyYgISQ2BO-UlL_A
 configEnv:
   isDev: true
   # 是否是私有化部署,企业内部应用
-  isPrivateDeploy: false
+  isPrivateDeploy: true
 
 privateDeployURL:
   pcUrl: http://dev.huoshishanxin.com/#/

+ 16 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProdProcedureTeamMapper.xml

@@ -11,11 +11,26 @@
         <result column="plan_id" property="planId" />
         <result column="work_time" property="workTime" />
         <result column="job_of_money" property="jobOfMoney" />
+        <result column="progress" property="progress" />
+        <result column="checker_id" property="checkerId" />
+        <result column="checker_name" property="checkerName" />
+        <result column="update_time" property="updateTime" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_id, user_id, prod_procedure_id, plan_id, work_time, job_of_money
+        id, company_id, user_id, prod_procedure_id, plan_id, work_time, job_of_money, progress, checker_id, checker_name, update_time
     </sql>
 
+
+    <select id="getReportForWorkList" resultType="java.util.HashMap" >
+        SELECT a.*, date_format(plan.`start_date`,'%Y-%m-%d') as start_date, date_format(plan.`end_date`,'%Y-%m-%d') as end_date, plan.`plan_type`, plan.`product_scheduling_num`,plan.task_type_name,plan.task_name,plan.task_change_notice_num,
+               product.`name` AS product_name,prod_procedure.name AS procedure_name, prod_procedure.check_type
+        FROM prod_procedure_team a
+                 LEFT JOIN plan ON plan.id = a.plan_id
+                 LEFT JOIN product ON product.id = plan.`product_id`
+                 LEFT JOIN prod_procedure ON prod_procedure.id = a.prod_procedure_id
+        where 1 = 1 and a.progress &lt; 100 and a.user_id=#{userId}
+        order by a.plan_id desc
+    </select>
 </mapper>

+ 69 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml

@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.management.platform.mapper.ReportMapper">
-
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.management.platform.entity.Report">
         <id column="id" property="id" />
@@ -24,6 +23,12 @@
         <result column="task_type_id" property="taskTypeId" />
         <result column="task_type_name" property="taskTypeName" />
     </resultMap>
+    <resultMap id="FullMap" type="com.management.platform.entity.vo.ReportVO" extends="BaseResultMap">
+        <result column="creatorName" property="creatorName" />
+        <result column="productName" property="productName" />
+        <result column="procedureName" property="procedureName" />
+        <result column="checkerName" property="checkerName" />
+    </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
@@ -69,4 +74,67 @@
         </if>
         GROUP BY user.id, report.create_date;
     </select>
+
+
+    <!--根据日期,部门,指定人员获取报告上传人-->
+    <select id="getReportNameByDateAndDept" resultType="java.util.Map">
+        SELECT DISTINCT b.id, b.name
+        FROM report AS a
+        JOIN user AS b ON a.creator_id=b.id
+        WHERE 1=1
+        <if test="date != null and date != ''">
+            AND a.create_date=#{date}
+        </if>
+        <if test="deptIds != null">
+            AND b.department_id in
+            <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
+                #{item, jdbcType=INTEGER}
+            </foreach>
+        </if>
+        <if test="companyId != null">
+            AND b.company_id = #{companyId}
+        </if>
+        <if test="userId != null">
+            AND b.id=#{userId}
+        </if>
+    </select>
+
+
+    <!--根据员工id,日期获取当天全部报告信息-->
+    <select id="getReportByDate" resultMap="FullMap">
+        select a.*,product.name as productName,prod_procedure.name as procedureName,checker.name as checkerName,u.name as creatorName
+        FROM report AS a
+        left JOIN product AS b ON a.product_id=b.id
+        left join prod_procedure on prod_procedure.id = a.prod_procedure_id
+        left join sub_project as d on d.id = a.sub_project_id
+        left join user u on u.id = a.project_auditor_id
+        left join user checker on checker.id = a.checker_id
+        WHERE 1=1
+        <if test="date != null and date != ''">
+            AND a.create_date=#{date}
+        </if>
+        AND a.creator_id=#{id}
+        ORDER BY a.creator_id ASC
+    </select>
+
+    <!-- 批量获取员工某天的报告 -->
+    <select id="getUserReportByDate" resultMap="FullMap">
+        select a.*,product.name as productName,prod_procedure.name as procedureName,checker.name as checkerName,u.name as creatorName
+        FROM report AS a
+        left JOIN product AS b ON a.product_id=b.id
+        left join prod_procedure on prod_procedure.id = a.prod_procedure_id
+        left join sub_project as d on d.id = a.sub_project_id
+        left join user u on u.id = a.project_auditor_id
+        left join user checker on checker.id = a.checker_id
+        WHERE 1=1
+        <if test="date != null and date != ''">
+            AND a.create_date=#{date}
+        </if>
+        AND a.creator_id in
+        <foreach item="item" collection="userIds" separator="," open="(" close=")" index="">
+            #{item, jdbcType=VARCHAR}
+        </foreach>
+        ORDER BY a.creator_id ASC
+    </select>
+
 </mapper>

+ 9 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/router/index.js

@@ -98,6 +98,15 @@ const router = new Router({
             keepAlive: false
         }
     },
+    
+    {
+        path: "/fillReport",
+        component: () => import("@/views/workView/fillReport"),
+        meta: {
+            title: "报工",
+            keepAlive: false
+        }
+    },
     {
         path: "/test",
         meta: {

+ 14 - 3
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/groupView/groupView.vue

@@ -1,6 +1,12 @@
 <template>
   <div>
-    班组人员
+    <van-nav-bar title="班组成员" left-text="返回"  @click-left="back" fixed left-arrow/>
+    <div style="margin-top: 44px;">
+      <van-list  :finished="true" >
+      <van-cell v-for="item in list" :key="item" :title="item" />
+      </van-list>
+    </div>
+    
   </div>
 </template>
 
@@ -10,14 +16,19 @@ export default {
   components: {},
   data() {
     return {
-
+        list:['张三','李四','王五']
     };
   },
   computed: {},
   watch: {},
   created() {},
   mounted() {},
-  methods: {},
+  methods: {
+    back() {
+      this.$router.go(-1);
+    },
+
+  },
 };
 </script>
 

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/index/index.vue

@@ -205,7 +205,7 @@ export default {
                 {
                     name: '报工',
                     moudelName: '查看报工',
-                    url: '/groupView',
+                    url: '/workView',
                     icon: 'balance-list-o'
                 },
             ]

+ 6 - 2
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/statisticsView/statisticsView.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    数据统计
+    <van-nav-bar title="数据统计" left-text="返回"  @click-left="back" fixed left-arrow/>
   </div>
 </template>
 
@@ -17,7 +17,11 @@ export default {
   watch: {},
   created() {},
   mounted() {},
-  methods: {},
+  methods: {
+    back() {
+      this.$router.go(-1);
+    },
+  },
 };
 </script>
 

+ 188 - 7
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/workView/workView.vue

@@ -1,26 +1,207 @@
 <template>
-  <div>
-    报工
+  <div class="distribution">
+    <van-nav-bar title="报工" left-text="返回"  @click-left="back" fixed left-arrow/>
+    
+    <div class="distribution_con contentRoll">
+      <div v-for="(prod, prodIndex) in myPlanProcedureList">
+          <div class="distribution_header">
+            <div>{{prod.product_name}}</div>
+            <div>{{prod.plan_type == 0? prod.product_scheduling_num:prod.task_change_notice_num}}</div>
+            <div>{{prod.start_date}}至{{prod.end_date}}</div>
+          </div>
+          <div class="distribution_box" v-for="item,index in prod.procedureList" :key="index" @click="reportItem(item)">
+            <div >
+              <van-row >
+                <van-col span="20">{{ item.procedure_name }}</van-col>
+                <van-col span="4">{{ item.working_time }}小时</van-col>
+              </van-row>
+              <div style="margin-top:10px;">
+                <van-row gutter="20" >
+                  <van-col span="8">
+                      <div class="valueCls">
+                        {{item.progress}}%
+                      </div>
+                      <div class="labelCls">
+                        进度
+                      </div>
+                  </van-col>
+                  <van-col span="8">
+                    <div class="valueCls">
+                        {{checkTypeTxt[item.check_type]}}
+                      </div>
+                      <div class="labelCls">
+                        质检方式
+                      </div>
+                  </van-col>
+                  <van-col span="8">
+                    <div class="valueCls">
+                        {{item.checker_name?item.checker_name:'待设置'}}
+                      </div>
+                      <div class="labelCls">
+                        质检人
+                      </div>
+                  </van-col>
+                </van-row>
+              </div>
+            </div>
+          </div>
+      </div>
+    </div>
+    <!-- 弹出层选人 -->
+    <van-popup v-model="popupShow" round position="bottom" :style="{ height: '80%',background: '#F4F4F4' }" >
+    </van-popup>
   </div>
 </template>
 
 <script>
 export default {
   props: {},
-  components: {},
+  components: {
+  },
   data() {
     return {
-
+      checkTypeTxt:['自检','互检','专检'],
+      myPlanProcedureList:[],
+      
+      distributionIndex: null,
+      popupShow: false,
+      titleText: '今日计划', // 默认文字
+      todayAndTomorrow: true, // true 今日计划,false 明日计划
     };
   },
   computed: {},
   watch: {},
   created() {},
-  mounted() {},
-  methods: {},
+  mounted() {
+    this.getMyPlanProcedureList();
+  },
+  methods: {
+    back() {
+      this.$router.go(-1);
+    },
+    // 下单计划
+    placeAnOrder() {
+      console.log('点击了下单计划')
+    },
+    distributionProp(item, index) {
+      this.distributionIndex = index
+      this.popupShow = true
+    },
+
+    getMyPlanProcedureList() {
+      const toast = this.$toast.loading({
+          forbidClick: true,
+          duration: 0
+      });
+      this.$axios.post("/plan-procedure-total/getReportForWorkList", this.form)
+      .then(res => {
+          if(res.code == "ok") {
+              this.$toast.clear();
+              this.myPlanProcedureList = res.data;
+          } else {
+              this.$toast.clear();
+              this.$toast.fail(res.msg);
+          }
+      }).catch(err=> {this.$toast.clear();});
+    },
+
+    //打开报工页面
+    reportItem(item) {
+      this.$router.push({
+        path: '/fillReport',
+        query: {
+          id: item.id
+        }
+      })
+    },
+  },
 };
 </script>
 
-<style scoped>
+<style scoped lang="less">
+  * {
+    box-sizing: border-box;
+  }
+  .valueCls {
+    color:#20a0ff;
+    margin-top: 5px;
+    margin-bottom: 5px;;
+  }
+  .labelCls {
+    color:#666;
+  }
+  .distribution {
+    width: 100%;
+    height: 100%;
+    padding: 54px 15px 15px 15px;
+    display: flex;
+    flex-direction: column;
+    flex-wrap: wrap;
+    background-color: #F4F4F4;
+    color: #333;
+
+    .distribution_header {
+      font-size: 16px;
+      div {
+        margin-top: 6px;
+      }
+    }
+
+    .distribution_con {
+      flex: 1;
+      overflow: auto;
+      margin-top: 14px;
+
+      .distribution_box {
+        width: 100%;
+        background-color: #fff;
+        border-radius: 4px;
+        padding: 10px;
+        margin-bottom: 15px;
+        position: relative;
+        overflow: hidden;
+
+        .distribution_ItemBom {
+          font-size: 16px;
+          display: flex;
+          flex-wrap: wrap;
+          padding: 0px 6px 6px 6px;
+
+          .PlanItem {
+            width: 50%;
+            display: flex;
+            padding-top: 12px;
+
+            &:first-child {
+              width: 100%;
+              padding-top: 10px;
+              span {
+                font-size: 18px;
+                color: #333;
+              }
+            }
+
+            &:nth-child(2) {
+              width: 100%;
+              span {
+                width: 230px;
+                word-break: break-all;
+              }
+            }
+
+            div {
+              width: 80px;
+              text-align: right;
+              color: #666;
+            }
 
+            span {
+              display: inline-block;
+              color: #333;
+            }
+          }
+        }
+      }
+    }
+  }
 </style>

+ 2 - 0
fhKeeper/formulahousekeeper/timesheet-workshop/src/permissions.js

@@ -40,6 +40,7 @@ const StringUtil = {
         reportsCompany: false, // 查看全公司工时 // 后台
         reportsPersonnel: false, // 查看相关人员工时 // 后台
         reportsFillOut: false, // 代填日报 //
+        reportSettings: false, //补报设置
         reportsDeleteAll: false, // 删除全公司日报
         importReport: false, //导入工时lij
         reportsDept: false, //查看本部门工时
@@ -154,6 +155,7 @@ const StringUtil = {
         arr[i] == '查看本部门工时' ? obj.reportsDept = true : ''
         arr[i] == '查看相关人员工时' ? obj.reportsPersonnel = true : ''
         arr[i] == '代填日报' ? obj.reportsFillOut = true : ''
+        arr[i] == '补报设置' ? obj.reportSettings = true : ''
         arr[i] == '自定义薪资项' ? obj.financialCustom = true : ''
         arr[i] == '分摊比例设置' ? obj.financialProportion = true : ''
         arr[i] == '薪资数据上传' ? obj.financialUpload = true : ''

+ 3 - 3
fhKeeper/formulahousekeeper/timesheet-workshop/src/routes.js

@@ -28,8 +28,8 @@ import team from './views/team/index.vue'
 import settings from './views/settings/settings.vue';
 
 
-//企业报表
-import corpReport from './views/corpreport/list';
+//数据统计报表
+import statistic from './views/statistic/index';
 
 // 任务管理
 import tasks from './views/task/list';
@@ -134,7 +134,7 @@ export const allRouters = [
         iconCls: 'iconfont firerock-iconbaobiao',
         leaf: true,
         children: [
-            { path: '/statistic', component: corpReport, name: '数据统计' }
+            { path: '/statistic', component: statistic, name: '数据统计' }
         ],
     },
     

+ 31 - 436
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/workReport/daily.vue

@@ -126,16 +126,11 @@
                                 </span>
                                 <span style="float:right;">
                                     <el-link type="primary" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReport(-1,0)">{{$t('textLink.fillInTheWork')}}</el-link>
-                                    <el-link v-if="reportTimeType.type != 0" type="primary" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReportss()">{{$t('textLink.fillInAWeek')}}</el-link>
                                     <el-link type="primary" v-if="permissions.reportsFillOut" style="margin-right:10px;" :underline="false" @click="isSubstitude=true; fillInReport(-1,2)">{{$t('textLink.helpToFillIn')}}</el-link>
-                                    <el-link type="primary" v-if="permissions.reportBatch" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReport(-1,1)">{{$t('textLink.batchFillIn')}}</el-link>
-                                    <el-link type="primary" v-if="permissions.importReport || user.manageDeptId != 0" style="margin-right:10px;" :underline="false" @click="imports()">{{$t('textLink.workHoursImport')}}</el-link>
+                                    <el-link type="primary" v-if="permissions.reportSettings" style="margin-right:10px;" :underline="false" @click="fillInReport(-1,2)">补报设置</el-link>
                                     <el-link type="primary" style="margin-right:10px;" :underline="false" @click="showExportDialog" v-if="permissions.reportExport">{{$t('textLink.exportWork')}}</el-link>
                                     <!--部门负责人给个导出工时的功能 -->
                                     <el-link type="primary" v-if="user.manageDeptId != 0" style="margin-right:10px;" :underline="false" @click="showExportTimeDialog">{{$t('textLink.exportingTimeStatistics')}}</el-link>
-                                    <el-link type="primary" v-if="user.timeType.pushReportData == 1 && permissions.reportPush" :underline="false" @click="pushWorkTime">推送工时</el-link>
-                                    <!-- <el-button v-if="user.timeType.pushReportData == 1 && permissions.reportPush" style="margin-left:10px;" icon="iconfont firerock-icontuisong" size="mini" @click="pushWorkTime"></el-button> -->
-
                                 </span>
                             </div>
                             <div :style="'height:'+(tableHeight-50)+'px;overflow:scroll;padding-top:10px;'">
@@ -2132,8 +2127,8 @@
             this.exportParam.dateRange = [startStr,t];
             this.getAllDate(1);
             // this.getReportList();
-            this.getProjectList();
-            this.getFillProjectList();
+            
+            // this.getFillProjectList();
             // this.getTimeType();
             this.getDepartment();
             this.scrollFunction()
@@ -4315,7 +4310,6 @@
                                 this.leaveAllNum += 1
                             } 
                         }
-                        this.stateChange()
                     } else {
                         this.$message({
                             message: res.msg,
@@ -4737,62 +4731,34 @@
             },
 
             //获取项目列表
-            getProjectList() {
-                this.listLoading = true;
-                this.http.post( this.port.project.list, {},
-                res => {
-                    this.listLoading = false;
-                    if (res.code == "ok") {
-                        for(var i in res.data) {
-                            if(res.data[i].projectCode == null || res.data[i].projectCode == 'null') {
-                                res.data[i].projectCode = ''
-                            }
-                        }
-                        this.projectList = res.data;
-                        
-                        // console.log("项目列表",this.projectList);
-                    } else {
-                        this.$message({
-                            message: res.msg,
-                            type: "error"
-                        });
-                    }
-                },
-                error => {
-                    this.listLoading = false;
-                    this.$message({
-                        message: error,
-                        type: "error"
-                    });
-                });
-            },
+            
             // 获取填报日报的项目下拉列表
-            getFillProjectList() {
-                this.http.post( this.port.project.list, {
-                    forReport: 1
-                },res => {
-                    if (res.code == "ok") {
-                        for(var i in res.data) {
-                            if(res.data[i].projectCode == null || res.data[i].projectCode == 'null') {
-                                res.data[i].projectCode = ''
-                            }
-                        }
-                        this.fillProjectList = res.data;
-                        this.getRecentlyProject() 
-                    } else {
-                        this.$message({
-                            message: res.msg,
-                            type: "error"
-                        });
-                    }
-                },
-                error => {
-                    this.$message({
-                        message: error,
-                        type: "error"
-                    });
-                });
-            },
+            // getFillProjectList() {
+            //     this.http.post( this.port.project.list, {
+            //         forReport: 1
+            //     },res => {
+            //         if (res.code == "ok") {
+            //             for(var i in res.data) {
+            //                 if(res.data[i].projectCode == null || res.data[i].projectCode == 'null') {
+            //                     res.data[i].projectCode = ''
+            //                 }
+            //             }
+            //             this.fillProjectList = res.data;
+            //             this.getRecentlyProject() 
+            //         } else {
+            //             this.$message({
+            //                 message: res.msg,
+            //                 type: "error"
+            //             });
+            //         }
+            //     },
+            //     error => {
+            //         this.$message({
+            //             message: error,
+            //             type: "error"
+            //         });
+            //     });
+            // },
             
             getAIReport(createDate) {
                 this.http.post('/report/getAIReport', {},
@@ -5113,209 +5079,6 @@
                 this.dialogVisible = true;
                 
             },
-            // 按周填报里内容的填写
-            tianxies(item, i, names, row) {
-                if (item.state == 0) {
-                    this.$message({
-                        message: '待审核状态不可修改,请返回到查看日报中先撤回',
-                        type: "error"
-                    });
-                    return;
-                }
-                if (item.state == 1) {
-                    this.$message({
-                        message: '已通过状态不可修改',
-                        type: "error"
-                    });
-                    return;
-                }
-                
-                if(this.user.timeType.notAllowedNoAttendance == 1){
-                    if(this.zhoData[i].corpTime){
-                        if(this.zhoData[i].corpTime.workHours == 0){
-                            this.$message({
-                                message: this.$t('wu-kao-qin-ji-lu-bu-ke-tian-bao'),
-                                type: 'error'
-                            })
-                            return
-                        }
-                    }else{
-                        this.$message({
-                            message: this.$t('wu-kao-qin-ji-lu-bu-ke-tian-bao'),
-                            type: 'error'
-                        })
-                        return
-                    }
-                }
-                var idd = ''
-                var obj = {}
-                for(var l in this.projectList) {
-                    if(this.projectList[l].projectName == names) idd = this.projectList[l].id
-                }
-                obj.projectId = idd
-                this.selectProject(obj, 0)
-                // console.log(this.workForm.domains[0], '打印出来的')
-                this.tianxieDialogVisible = true
-                this.scopess = item
-                var sss = {}
-                if (item.id != null) {
-                    sss.id = item.id;
-                    sss.state = item.state;
-                } else {
-                    sss.id = -1;
-                    sss.state = 3;
-                }
-                sss.projectId = idd;
-                sss.con = item.con
-                sss.progress = item.progress
-                sss.time = item.time
-                if (sss.time == '' && this.reportTimeType.type == 2) {
-                    //取已填时间范围中最大的一个作为开始时间
-                    var startTime = '09:00';
-                    var fillStartTime = '00:00';
-                    for (var t in this.selProjectList) {
-                        var fillItem = this.zhoData[i][this.selProjectList[t].projectName];
-                        if (fillItem.time) {
-                            if (fillItem.time[1] > fillStartTime) {
-                                fillStartTime = fillItem.time[1];
-                            }
-                        }
-                    }
-                    if (fillStartTime == '00:00') {
-                        fillStartTime = '09:00';
-                    }
-                    var fillEndMax = '18:00';
-                    if (fillStartTime >= '18:00') {
-                        fillEndMax = '23:59';
-                    }
-                    sss.time = [fillStartTime, fillEndMax];
-                }
-                sss.groupId = item.groupId
-                sss.stage = item.stage;
-                sss.workingTime = item.workingTime
-                sss.projectAuditorId = item.projectAuditorId;
-                if (this.timeBasecostList && this.timeBasecostList.length > 0) {
-                    //默认选中第一个
-                    sss.basecostId = this.timeBasecostList[0].id;
-                }
-                var that = this
-                setTimeout(() =>{
-                    var isFirstEdit = false;
-                    if(Object.keys(item).length < 5) {
-                        //首次点开当前的这个cell,初始化数据
-                        isFirstEdit = true;
-                        sss.subProjectId = that.workForm.domains[0].subProjectId
-                        sss.stage = that.workForm.domains[0].stage
-                        sss.subProjectList = that.workForm.domains[0].subProjectList
-                        sss.stages = that.workForm.domains[0].stages
-                        sss.taskGroups = that.workForm.domains[0].taskGroups;
-                        sss.auditUserList = obj.auditUserList;
-                    } else {
-                        sss.subProjectId = item.subProjectId
-                        sss.stage = item.stage
-                        sss.subProjectList = item.subProjectList
-                        sss.stages = item.stages
-                        sss.taskGroups = item.taskGroups;
-                        sss.auditUserList = obj.auditUserList;
-                        sss.degreeId = item.degreeId;
-                        sss.customData = item.customData;
-                    }
-                    if (sss.auditUserList != null && sss.auditUserList.length==1) {
-                        //只有一个审核人,自动设置上去
-                        sss.projectAuditorId = sss.auditUserList[0].auditorId;
-                    }
-                    sss.wuduList = row[0].wuduList
-                    // console.log(sss, '数据')
-                    that.zhoBaoIdx = i
-                    that.zhoBaoName = names
-                    that.zhoBao = sss
-                    that.zhis = row
-                    if (sss.groupId) {
-                        //最后一个参数表示是否保留stage的值,不要重置为空
-                        this.getGroupStages(that.zhoBao, 0, !isFirstEdit)
-                    }
-                    that.$forceUpdate();
-                },600);
-            },
-            // 按周填报里内容的填写点击确定
-            setWeekProItemData() {
-                //检查子项目是否必填
-                if (this.user.timeType.subProMustFill == 1 && this.zhoBao.subProjectList && this.zhoBao.subProjectList.length > 0 && !this.zhoBao.subProjectId) {
-                    this.$message({
-                        message: '子项目必填,请检查',
-                        type: "error"
-                    });
-                    return;
-                }
-                if (!this.zhoBao.projectAuditorId &&(this.user.timeType.reportAuditType == 0 || this.user.timeType.reportAuditType == 4)) {
-                    this.$message({
-                        message: this.$t('message.Pleaseselectareviewer'),
-                        type: "error"
-                    });
-                    return
-                }
-                if(this.user.timeType.reportAuditType == 3){
-                    let auditTips = ''
-                    if(!this.zhoBao.auditorFirst){ auditTips += this.$t('di-yi') }
-                    // if(!this.zhoBao.auditorSec && this.user.timeType.auditLevel > 1){ auditTips += '第二、' }
-                    // if(!this.zhoBao.auditorThird && this.user.timeType.auditLevel > 2){ auditTips += '第三、' }
-                    if(auditTips){
-                        auditTips = auditTips.substring(0,auditTips.length - 1)
-                        this.$message({
-                            message: this.$t('defaultText.pleaseChoose') + auditTips + this.$t('other.reviewer'),
-                            type: 'error'
-                        })
-                        return
-                    }
-                }
-                let errtips = ''
-                if(this.user.timeType.customDegreeStatus == 1 && this.zhoBao.wuduList.length != 0 && !this.zhoBao.degreeId) {
-                    errtips += this.user.timeType.customDegreeName + '、'
-                }
-                if(this.user.timeType.customDataStatus == 1 && !this.zhoBao.customData){
-                    errtips += this.user.timeType.customDataName + '、'
-                }
-                if(this.user.timeType.customTextStatus == 1 && !this.zhoBao.customText){
-                    errtips += this.user.timeType.customTextName + '、'
-                }
-                if(this.user.timeType.workContentState == 1 && !this.zhoBao.con){
-                    errtips +=  this.user.companyId==781?this.$t('other.specificcontentandresults')+'、': this.$t('other.workMatters') +'、'
-                }
-                if(errtips){
-                    errtips = errtips.substring(0,errtips.length - 1)
-                    this.$message({
-                        message: this.$t('other.pleaseYes') + errtips + this.$t('other.tofillin'),
-                        type: 'error'
-                    })
-                    return
-                }
-
-                this.tianxieDialogVisible = false
-                var zhong = this.zhoData
-                zhong[this.zhoBaoIdx][this.zhoBaoName] = this.zhoBao
-                this.zhoData = zhong
-                if(this.reportTimeType.type == 1) this.zhoXuan(this.zhoBao, this.zhoBaoIdx)
-                if(this.reportTimeType.type == 2) this.zhoTimes(this.zhoBao, this.zhoBaoIdx)
-                if(this.reportTimeType.type == 3) this.addBli(this.zhoBao, this.zhoBaoIdx)
-            },
-            // 获取本周
-            getCurrentWeek() {
-                //今天
-                this.targetWeekDate = new Date();
-                this.initWeekFormData();
-                // this.jiazai()
-            },
-            // 获取上周
-            handleGetPrevWeek() {
-                this.targetWeekDate = new Date(this.targetWeekDate.getTime() - 7*24*3600*1000);
-                this.initWeekFormData();
-                // this.jiazai()
-            },
-            // 获取下周
-            handleGetNextvWeek() {
-                this.targetWeekDate = new Date(this.targetWeekDate.getTime() + 7*24*3600*1000);
-                this.initWeekFormData()
-            },
             
             // 加载动画 
             jiazai() {
@@ -5333,117 +5096,6 @@
                 const d = (dt.getDate() + '').padStart(2, '0')
                 return `${y}-${m}-${d}`
             },
-            // 按周填报
-            fillInReportss() {
-                window.addEventListener('scroll', this.handleScroll, true)
-                // this.jiazai()
-                this.fillWeekDialogVisi = true
-                this.getCurrentWeek();
-                if (!this.timeBasecostList || this.timeBasecostList.length == 0) {
-                    //重新获取工时预警类型的预算项
-                    this.http.post('/project-basecost-setting/getReportBasecostList', {
-                        companyId: this.user.companyId
-                    },
-                    res => {
-                        if (res.code == "ok") {
-                            this.timeBasecostList = res.data;
-                        }
-                    });
-                }
-            },
-            // 按周填报的项目筛选
-            selListFun(){
-                this.selProjectList = []
-                if(this.selCon.length){
-                    for (let i = 0; i < this.selCon.length; i++) {
-                        this.selProjectList.push(this.projectList.find(item => item.id == this.selCon[i]))
-                    }
-                    this.selConShow = false ;
-                    for (let i in this.zhoData) {
-                        var obj = this.zhoData[i];
-                        for(var j in this.selProjectList) {
-                            var xinzhi = this.selProjectList[j].projectName 
-                            obj[xinzhi] = {}
-                            obj[xinzhi].time = ''
-                            obj[xinzhi].con = ''
-                            obj[xinzhi].progress = 0
-                            obj[xinzhi].workingTime = 0
-                        }
-                    }
-                    this.initWeekFormData();
-                }else{
-                    this.$message({
-                        message:this.$t('defaultText.pleaseSelectTheItemYouWantToFillIn'),
-                        type:'error'
-                    })
-                }
-            },
-            setWeekCardTimeData(list) {
-                for(let i in list){
-                    let datei = '';
-                    if (this.user.timeType.showDdCardtime == 1) {
-                        datei = list[i].workDate;
-                    } else if (this.user.timeType.showCorpwxCardtime == 1) {
-                        datei = list[i].createDate;
-                    } else if (this.user.timeType.syncFanwei == 1) {
-                        datei = list[i].workDate;
-                    }
-                    
-                    for(let m in this.zhoData) {
-                        if(datei == this.zhoData[m].zhoDataTime){
-                            let item = {
-                                startTime: list[i].startTime,
-                                endTime: list[i].endTime,
-                                workHours: list[i].workHours
-                            }
-                            this.$set(this.zhoData[m],'corpTime',item)
-                        }
-                    }
-                }
-            },
-            getWeeklyCardTime(){ //按周填报获取考勤信息
-                let dateStr = []
-                        for(let i in this.zhoData){
-                            dateStr.push(this.zhoData[i].zhoDataTime)
-                        }
-                        this.http.post('/report/getWeeklyCardTime',{
-                            dateStr: JSON.stringify(dateStr)
-                        },res => {
-                            if(res.code == 'ok'){
-                                for(let i in res.data){
-                                    let datei = '';
-                                    if (this.user.timeType.showDdCardtime == 1) {
-                                        datei = res.data[i].workDate.split('-');
-                                    } else if (this.user.timeType.showCorpwxCardtime == 1) {
-                                        datei = res.data[i].createDate.split('-');
-                                    }
-                                    
-                                    for(let m in this.zhoData){
-                                        let datem = new Date(this.zhoData[m].zhoDataTime)
-                                        
-                                        if(datei[0] == datem.getFullYear() && datei[1] == (datem.getMonth() + 1) && datei[2] == datem.getDate()){
-                                            let item = {
-                                                startTime: res.data[i].startTime,
-                                                endTime: res.data[i].endTime,
-                                                workHours: res.data[i].workHours
-                                            }
-                                            this.$set(this.zhoData[m],'corpTime',item)
-                                        }
-                                    }
-                                }
-                            }else{
-                                this.$message({
-                                    message: res.msg,
-                                    type: 'error'
-                                })
-                            }
-                        },err => {
-                            this.$message({
-                                message: err,
-                                type: 'error'
-                            })
-                        })
-            },
             
             selListqx(){
                 this.fillWeekDialogVisi = false
@@ -5453,64 +5105,7 @@
             handleScroll() {
                 this.changdu = this.projectList.length + 1
             },
-            // 自动选择时间点的事件
-            // async zhoTimes(item, i) {
-            //     var iss = i
-            //     if(item.time == null) {
-            //         return
-            //     } else {
-            //         const zhi = this.zhoData[iss];
-            //         let he = 0;
-            //         const timeArr = Object.values(zhi)
-            //         .filter(item => item.time && item.time.length > 0 && item !== zhi.zhoDataTime && item !== zhi.he)
-            //         .map(item => ({ startTime: item.time[0], endTime: item.time[1] }));
-            //         const data = await this.getWeekHoursByTimeRange(timeArr);
-            //         console.log(data, 'data');
-            //         zhi.he = `${he}h`;
-
-            //     }
-            // },
-            async zhoTimes(item, index) {
-                const zho = this.zhoData[index];
-                if (!item.time) {
-                    return;
-                }
-                const timeArr = Object.values(zho)
-                .filter(({ time }) => time && time.length > 0 && time !== zho.zhoDataTime && time !== zho.he)
-                .map(({ time }) => ({ startTime: time[0], endTime: time[1] }));
-                const totalHours = await Promise.all([{}].map(() => this.getWeekHoursByTimeRange(timeArr)));
-                zho.he = `${totalHours[0]}h`;
-            },
-            // 判断两个时间段是否重叠
-            timeOverlap(idx, dateAr) {
-                let zhi = 0
-                for (let k in dateAr) {
-                    if (idx !== k) {
-                        if (((dateAr[k].s <= dateAr[idx].s && dateAr[k].e >= dateAr[idx].s) || (dateAr[k].s <= dateAr[idx].s && dateAr[k].e <= dateAr[idx].e))) {
-                            // 选择的时间包含设置的休息时间段 (选择的开始时间和结束时间大于设置的休息时间段)
-                            if(dateAr[idx].s > dateAr[k].s && dateAr[idx].e < dateAr[k].e) {
-                                zhi += +this.getHour(dateAr[idx].s, dateAr[idx].e)
-                            }
-                            // 选择的时间包含在设置的休息时间 (选择的开始时间和结束时间都处于在设置的休息时间段内)
-                            if(dateAr[idx].s > dateAr[k].s && dateAr[idx].e > dateAr[k].e) {
-                                zhi += +this.getHour(dateAr[idx].s, dateAr[k].e)
-                            } else if(dateAr[idx].s < dateAr[k].s && dateAr[idx].e > dateAr[k].e) {
-                                zhi += +this.getHour(dateAr[k].e, dateAr[idx].s)
-                            } else {
-                                // 选择的结束时间处于设置的休息时间段内 (选择的结束时间处于的休息时间段)
-                                if(dateAr[k].e < dateAr[idx].e && dateAr[k].e > dateAr[idx].s) {
-                                    zhi += +this.getHour(dateAr[k].e, dateAr[idx].e)
-                                }
-                                // 选择的开始时间处于设置的休息时间段内 (选择的开始时间处于的休息时间段)
-                                if(dateAr[idx].s > dateAr[k].s && dateAr[idx].s < dateAr[k].e) {
-                                    zhi += +this.getHour(dateAr[k].e, dateAr[idx].s)
-                                }
-                            }
-                        }
-                    }
-                }
-                return zhi
-            },
+            
             // 计算时间
             getHourMinutes(str, end) {
                 var he = 0