Ver Fonte

Merge remote-tracking branch 'origin/master'

Guo1B0 há 10 meses atrás
pai
commit
02e0c5bc28
27 ficheiros alterados com 538 adições e 35 exclusões
  1. 24 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  2. 66 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportWriteOffController.java
  3. 66 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportWriteOff.java
  4. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/OvertimeListVO.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  6. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java
  7. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportWriteOffMapper.java
  8. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  9. 17 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportWriteOffService.java
  10. 5 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  11. 50 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  12. 26 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportWriteOffServiceImpl.java
  13. 15 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  14. 60 7
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  15. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportWriteOffMapper.xml
  16. 17 6
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/WxCorpInfoController.java
  17. 8 4
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  18. 11 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/task/TimingTask.java
  19. 1 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml
  20. 13 1
      fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json
  21. 13 1
      fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json
  22. 96 4
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  23. 1 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue
  24. 1 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit-01.vue
  25. 1 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit-02.vue
  26. 1 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit-03.vue
  27. 1 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue

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

@@ -2737,5 +2737,29 @@ public class ReportController {
     public HttpRespMsg cancelReminder(String createDate,String userId) throws Exception {
         return reportService.cancelReminder(request,createDate,userId);
     }
+
+    /**
+    * @Description:获取转移工时数据的列表
+    * @Param: [startDate, endDate, userId, projectId, pageIndex, pageSize]
+    * @return: com.management.platform.util.HttpRespMsg
+    * @Author: yurk
+    * @Date: 2024/7/17
+    */
+    @RequestMapping("/getReportListWithTransfer")
+    public HttpRespMsg getReportListWithTransfer(String startDate,String endDate,String userIds,Integer projectId,Integer pageIndex,Integer pageSize){
+        return reportService.getReportListWithTransfer(startDate,endDate,userIds,projectId,pageIndex,pageSize);
+    }
+
+    /**
+    * @Description:提供转移工时数据
+    * @Param: [reportIds, projectId, groupId, stageId]
+    * @return: com.management.platform.util.HttpRespMsg
+    * @Author: yurk
+    * @Date: 2024/7/17
+    */
+    @RequestMapping("/transferReport")
+    public HttpRespMsg transferReport(String reportIds,@RequestParam Integer projectId,@RequestParam Integer groupId,@RequestParam Integer stageId){
+        return reportService.transferReport(reportIds,projectId,groupId,stageId);
+    }
 }
 

+ 66 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportWriteOffController.java

@@ -0,0 +1,66 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.entity.ReportWriteOff;
+import com.management.platform.entity.User;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ReportWriteOffService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-07-17
+ */
+@RestController
+@RequestMapping("/report-write-off")
+public class ReportWriteOffController {
+
+    @Resource
+    private ReportWriteOffService reportWriteOffService;
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    private UserMapper userMapper;
+
+
+    /**
+     * @Description:核销日报加班 传值 1-表示核销操作 0-恢复操作
+     * @Param: [reportId, type]
+     * @return: com.management.platform.util.HttpRespMsg
+     * @Author: yurk
+     * @Date: 2024/7/17
+     */
+    @RequestMapping("/writeOffReport")
+    public HttpRespMsg writeOffReport(@RequestParam Integer reportId, @RequestParam Integer type,String reason){
+        HttpRespMsg msg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        ReportWriteOff reportWriteOff = reportWriteOffService.getById(reportId);
+        if(reportWriteOff==null){
+            reportWriteOff=new ReportWriteOff();
+            reportWriteOff.setReportId(reportId);
+            reportWriteOff.setCreatorId(user.getId());
+            reportWriteOff.setCreatorName(user.getName());
+        }
+        reportWriteOff.setWriteOff(type);
+        reportWriteOff.setReason(reason);
+        reportWriteOff.setCreateTime(LocalDateTime.now());
+        if(!reportWriteOffService.saveOrUpdate(reportWriteOff)){
+            msg.setError("验证失败");
+        }
+        return msg;
+    }
+
+}
+

+ 66 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportWriteOff.java

@@ -0,0 +1,66 @@
+package com.management.platform.entity;
+
+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;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-07-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ReportWriteOff extends Model<ReportWriteOff> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("report_id")
+    private Integer reportId;
+
+    /**
+     * 0-正常 1-已核销
+     */
+    @TableField("write_off")
+    private Integer writeOff;
+
+    /**
+     * 核销人id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 核销人
+     */
+    @TableField("creator_name")
+    private String creatorName;
+
+    /**
+     * 核销时间
+     */
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 核销原因
+     */
+    @TableField("reason")
+    private String reason;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.reportId;
+    }
+
+}

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

@@ -16,4 +16,5 @@ public class OvertimeListVO {
     private String startDate;
     private String endDate;
     private Integer[] departmentId;
+    private Integer writeOffValue;
 }

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

@@ -90,7 +90,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     //获取按照项目分组导出的项目数据
     List<HashMap<String, Object>> getExportGroupData(String projectCategorySub,Integer companyId);
 
-    List<Map<String, Object>> getOvertimeDetail(String userId, Integer companyId, String startDate, String endDate, Integer projectId,List<Integer> branchDepartment,List<Integer> deptIds);
+    List<Map<String, Object>> getOvertimeDetail(String userId, Integer companyId, String startDate, String endDate, Integer projectId,List<Integer> branchDepartment,List<Integer> deptIds,Integer writeOffValue);
 
     //获取项目的成本预警和实际工时表
     List<HashMap> getProjectCostAlarm(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId);

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -219,4 +219,7 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     List<Map<String, Object>> getUserDailyWorkTimeReminder(Integer companyId,String startDate, String endDate,@Param("list") List<Integer> deptIds,Integer deptId,String leaderId);
 
+    List<Map<String, Object>> getReportListWithTransfer(Integer companyId, String startDate, String endDate,@Param("list") List<String> userIdList, Integer projectId, Integer start, Integer size);
+
+    Integer getReportListWithTransferCount(Integer companyId, String startDate, String endDate,@Param("list") List<String> userIdList, Integer projectId);
 }

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportWriteOffMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ReportWriteOff;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-07-17
+ */
+public interface ReportWriteOffMapper extends BaseMapper<ReportWriteOff> {
+
+}

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

@@ -161,4 +161,8 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg cancelReminder(HttpServletRequest request, String createDate, String userId);
 
     HttpRespMsg cancelHasPushForSap(String uuids);
+
+    HttpRespMsg getReportListWithTransfer(String startDate, String endDate, String userIds, Integer projectId, Integer pageIndex, Integer pageSize);
+
+    HttpRespMsg transferReport(String reportIds, Integer projectId, Integer groupId, Integer stageId);
 }

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportWriteOffService.java

@@ -0,0 +1,17 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ReportWriteOff;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-07-17
+ */
+public interface ReportWriteOffService extends IService<ReportWriteOff> {
+
+}

+ 5 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -4097,6 +4097,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         String endDate = overtimeListVO.getEndDate();
         String userId = overtimeListVO.getUserId();
         Integer[] deptId = overtimeListVO.getDepartmentId();
+        Integer writeOffValue = overtimeListVO.getWriteOffValue();
         ArrayList<Integer> departmentId = null;
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
@@ -4129,7 +4130,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 branchDepartment.addAll(getBranchDepartment(dept, allDepartmentList));
             }
         }
-        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,branchDepartment,deptIds);
+        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,branchDepartment,deptIds,writeOffValue);
         boolean hasViewSalary = sysFunctionService.hasPriviledge(user.getRoleId(), "查看加班成本");
         if (!hasViewSalary) {
             //去掉权限
@@ -4158,6 +4159,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         String endDate = overtimeListVO.getEndDate();
         Integer projectId = overtimeListVO.getProjectId();
         Integer[] deptId = overtimeListVO.getDepartmentId();
+        Integer writeOffValue = overtimeListVO.getWriteOffValue();
         try {
             String token = request.getHeader("TOKEN");
             User user = userMapper.selectById(token);
@@ -4192,7 +4194,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     branchDepartment.addAll(getBranchDepartment(dept, allDepartmentList));
                 }
             }
-            List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,branchDepartment,deptIds);
+            List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,branchDepartment,deptIds,writeOffValue);
             boolean hasViewSalary = sysFunctionService.hasPriviledge(user.getRoleId(), "查看加班成本");
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             List<String> headList = new ArrayList<String>();
@@ -7487,7 +7489,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
             }
         }
-        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null,deptIds);
+        List<Map<String, Object>> list = projectMapper.getOvertimeDetail(userId, user.getCompanyId(), startDate, endDate, projectId,null,deptIds,null);
         boolean hasViewSalary = sysFunctionService.hasPriviledge(user.getRoleId(), "查看加班成本");
         if (!hasViewSalary) {
             //去掉权限

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

@@ -5608,6 +5608,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             titles.add("部门主要负责人");
             titles.add(MessageUtils.message("entry.projectId"));
             titles.add(MessageUtils.message("entry.projectName"));
+            titles.add(MessageUtils.message("entry.projectStage"));
             if(companyId==936){
                 titles.add("项目状态");
                 titles.add("自主项目类别");
@@ -5913,6 +5914,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
                 item.add((String) map.get("projectCode"));
                 item.add((String) map.get("project"));
+                item.add(map.get("stageName")==null?"":(String) map.get("stageName"));
                 if(companyId==936){
                     String projectStatus="";
                     switch (Integer.valueOf(String.valueOf(map.get("projectStatus")))){
@@ -9600,4 +9602,52 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         cancelReportPushSap(uuids,user);
         return msg;
     }
+
+    @Override
+    public HttpRespMsg getReportListWithTransfer(String startDate, String endDate, String userIds, Integer projectId, Integer pageIndex, Integer pageSize) {
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        Integer start=null;
+        Integer size=null;
+        if(pageIndex!=null&&pageSize!=null){
+            size=pageSize;
+            start=(pageIndex-1)*size;
+        }
+        List<String> userIdList=new ArrayList<>();
+        if(!StringUtils.isEmpty(userIds)){
+            userIdList = Arrays.asList(userIds.split(","));
+        }
+        List<Map<String,Object>> resultList=reportMapper.getReportListWithTransfer(companyId,startDate,endDate,userIdList,projectId,start,size);
+        Integer count=reportMapper.getReportListWithTransferCount(companyId,startDate,endDate,userIdList,projectId);
+        Map<String,Object> map=new HashMap<>();
+        map.put("result",resultList);
+        map.put("count",count);
+        msg.setData(map);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg transferReport(String reportIds, Integer projectId, Integer groupId, Integer stageId) {
+        HttpRespMsg msg=new HttpRespMsg();
+        if(!StringUtils.isEmpty(reportIds)){
+            List<String> reportIdList = Arrays.asList(reportIds.split(","));
+            List<Report> transferReportList=new ArrayList<>();
+            String stagesName = stagesMapper.selectById(stageId).getStagesName();
+            for (String reportIdStr : reportIdList) {
+                Integer reportId = Integer.valueOf(reportIdStr);
+                Report report = new Report();
+                report.setId(reportId);
+                report.setProjectId(projectId);
+                report.setGroupId(groupId);
+                report.setStage(stagesName);
+                transferReportList.add(report);
+            }
+            if(transferReportList.size()>0){
+                if(!reportService.updateBatchById(transferReportList)){
+                    msg.setError("验证失败");
+                }
+            }
+        }
+        return msg;
+    }
 }

+ 26 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportWriteOffServiceImpl.java

@@ -0,0 +1,26 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ReportWriteOff;
+import com.management.platform.mapper.ReportWriteOffMapper;
+import com.management.platform.service.ReportWriteOffService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-07-17
+ */
+@Service
+public class ReportWriteOffServiceImpl extends ServiceImpl<ReportWriteOffMapper, ReportWriteOff> implements ReportWriteOffService {
+
+    @Resource
+    private ReportWriteOffMapper reportWriteOffMapper;
+
+}

+ 15 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -780,15 +780,18 @@
 
     <!-- 获取某个员工的某时间段内的加班详情 -->
     <select id="getOvertimeDetail" resultType="java.util.Map">
-        SELECT date_format(report.`create_date`, '%Y-%m-%d') AS createDate,
+        SELECT report.id AS reportId,date_format(report.`create_date`, '%Y-%m-%d') AS createDate,
         report.`creator_id` AS userId, user.`name` AS username,user.corpwx_userid as corpwxUserId,user.job_number as jobNumber, report.`working_time` AS workingTime,
         IFNULL(report.`overtime_hours`, 0) AS overtimeHours,project.id as projectId,department.corpwx_deptid as corpwxDeptId,
         project.project_name as projectName,project.project_code as projectCode,
         IFNULL(report.overtime_cost, 0) AS cost,
-        IFNULL(report_extra_degree.name,'') as degreeName, department.department_name as departmentName FROM report LEFT JOIN user ON user.id = report.`creator_id`
+        IFNULL(report_extra_degree.name,'') as degreeName, department.department_name as departmentName,
+        (CASE WHEN rwo.`write_off`=1 THEN 1 ELSE 0 END) AS writeOffValue,rwo.creator_name as writeOffUser,date_format(rwo.`create_time`, '%Y-%m-%d %H:%i:%s') as writeOffTime,rwo.reason as writeOffReason
+        FROM report LEFT JOIN user ON user.id = report.`creator_id`
         left join project on project.id = report.project_id
         left join report_extra_degree on report_extra_degree.id = report.degree_id
         left join department on department.department_id = report.dept_id
+        LEFT JOIN report_write_off rwo ON rwo.`report_id`=report.`id`
         WHERE report.is_overtime = 1
         and report.`state` = 1
         AND report.`create_date` BETWEEN #{startDate} and #{endDate}
@@ -811,6 +814,16 @@
                 #{item}
             </foreach>
         </if>
+        <if test="writeOffValue!=null">
+            <choose>
+                <when test="writeOffValue==1">
+                    and rwo.write_off=1
+                </when>
+                <otherwise>
+                    and (rwo.write_off is null or rwo.write_off=0)
+                </otherwise>
+            </choose>
+        </if>
         order by user.create_time asc, report.create_date desc
     </select>
 

+ 60 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -70,7 +70,7 @@
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId,a.custom_data as customData
         ,u.name as projectAuditorName,u.corpwx_userid as projectAuditorCorpwxUserId, a.project_auditor_id as projectAuditorId, department.department_name as departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText,a.project_audit_time  as projectAuditTime,project_main.name as projectMainName,
         a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3, a.batch_id as batchId,a.sap_service_id as sapServiceId,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
-        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,b.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -127,7 +127,7 @@
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId,a.custom_data as customData
         ,u.name as projectAuditorName,u.corpwx_userid as projectAuditorCorpwxUserId, a.project_auditor_id as projectAuditorId, department.department_name as departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText,a.project_audit_time  as projectAuditTime,project_main.name as projectMainName,
         GROUP_CONCAT(rlog.operator_id,'@', rlog.operate_date,'@', rlog.msg SEPARATOR '❤') AS logMsg,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3,a.batch_id as batchId,a.sap_service_id as sapServiceId,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
-        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,b.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -211,7 +211,7 @@
         departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText, a.project_audit_time as
         projectAuditTime,project_main.name as projectMainName,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3, a.batch_id as batchId,a.sap_service_id as sapServiceId,b.status as projectStatus,
         DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
-        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,b.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -279,7 +279,7 @@
         departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText, a.project_audit_time as
         projectAuditTime,project_main.name as projectMainName,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub,
         GROUP_CONCAT(rlog.operator_id,'@', rlog.operate_date,'@', rlog.msg SEPARATOR '❤') AS logMsg,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3
-        , a.batch_id as batchId,a.sap_service_id as sapServiceId,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        , a.batch_id as batchId,a.sap_service_id as sapServiceId,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,project.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -342,7 +342,7 @@
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId, a.custom_data as customData
         ,u.name as projectAuditorName,u.corpwx_userid as projectAuditorCorpwxUserId, a.project_auditor_id as projectAuditorId, department.department_name as departmentName,dp2.department_name as buDepartmentName,department.department_id as departmentId, a.overtime_hours as overtimeHours, a.custom_text as customText, a.project_audit_time as projectAuditTime,project_main.name as projectMainName
         ,a.extra_field1 as extraField1,a.extra_field2 as extraField2,a.extra_field3 as extraField3, a.batch_id as batchId,a.sap_service_id as sapServiceId,b.status as projectStatus,DATE_FORMAT(b.finish_date,'%Y-%m-%d') as finishDate,ps.project_category_sub as projectCategorySub
-        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId
+        ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,b.current_stage_name as stageName
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -966,14 +966,16 @@
         )
     </select>
     <select id="getMyOvertime"  resultType="java.lang.Double">
-        select IFNULL(sum(overtime_hours),0) from report where creator_id=#{userId}
+        SELECT IFNULL(SUM(overtime_hours),0) FROM report
+        LEFT JOIN report_write_off rwo ON rwo.`report_id`=report.id
+        WHERE report.creator_id=#{userId} AND (rwo.`write_off` IS NULL OR rwo.`write_off`=0)
         <if test="startDate != null">
             and create_date &gt;= #{startDate}
         </if>
     </select>
     <select id="getProWaitingApproveCnt" resultType="java.util.HashMap">
         select count(1) as num, user.dingding_userid as auditorDDId ,user.corpwx_userid as corpwxUserid from report
-                                                                                                                 left join `user` on `user`.id = project_auditor_id
+        left join `user` on `user`.id = project_auditor_id
         where state = 0 and project_audit_state = 0 and is_dept_audit = 0
           and report.company_id = #{companyId}
           and `user`.is_active=1
@@ -1287,4 +1289,55 @@
         GROUP BY r.create_date,r.creator_id
         order by u.id,r.create_date
     </select>
+
+    <select id="getReportListWithTransfer" resultType="java.util.Map">
+        SELECT r.id AS reportId,u.`job_number` AS jobNumber,u.name AS userName,d.`department_name` AS deptName,
+        p.`project_code` AS projectCode,p.`project_name` AS projectName,date_format(r.`create_date`,'%Y-%m-%d') AS createDate,r.`working_time` AS workingTime,
+        tg.`name` AS groupName,s.`stages_name` AS stageName FROM report r
+        LEFT JOIN `user` u ON r.`creator_id`=u.`id`
+        LEFT JOIN project p ON r.`project_id`=p.`id`
+        LEFT JOIN task_group tg ON tg.`project_id`=r.`group_id`
+        LEFT JOIN stages s ON s.`project_id`=p.id AND s.`group_id`=tg.`id`
+        LEFT JOIN department d ON d.`department_id`=u.`department_id`
+        WHERE r.company_id=#{companyId}
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            AND r.create_date BETWEEN #{startDate} AND #{endDate}
+        </if>
+        <if test="list!=null and list.size()>0">
+            AND r.creator_id in
+            <foreach collection="list" separator="," open="(" close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
+        <if test="projectId!=null">
+            AND p.id=#{projectId}
+        </if>
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>
+    </select>
+
+    <select id="getReportListWithTransferCount" resultType="java.lang.Integer">
+        select count(1) from (
+        SELECT r.id AS reportId FROM report r
+        LEFT JOIN `user` u ON r.`creator_id`=u.`id`
+        LEFT JOIN project p ON r.`project_id`=p.`id`
+        LEFT JOIN task_group tg ON tg.`project_id`=r.`group_id`
+        LEFT JOIN stages s ON s.`project_id`=p.id AND s.`group_id`=tg.`id`
+        LEFT JOIN department d ON d.`department_id`=u.`department_id`
+        WHERE r.company_id=#{companyId}
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            AND r.create_date BETWEEN #{startDate} AND #{endDate}
+        </if>
+        <if test="list!=null and list.size()>0">
+            AND r.creator_id in
+            <foreach collection="list" separator="," open="(" close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
+        <if test="projectId!=null">
+            AND p.id=#{projectId}
+        </if>
+        ) as total
+    </select>
 </mapper>

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportWriteOffMapper.xml

@@ -0,0 +1,20 @@
+<?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.ReportWriteOffMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ReportWriteOff">
+        <id column="report_id" property="reportId" />
+        <result column="write_off" property="writeOff" />
+        <result column="creator_id" property="creatorId" />
+        <result column="creator_name" property="creatorName" />
+        <result column="create_time" property="createTime" />
+        <result column="reason" property="reason" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        report_id, write_off, creator_id, creator_name, create_time, reason
+    </sql>
+
+</mapper>

+ 17 - 6
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/WxCorpInfoController.java

@@ -126,6 +126,11 @@ public class WxCorpInfoController {
                 JSONObject info = approvalInfoDetail.getJSONObject("info");
                 JSONObject applyer = info.getJSONObject("applyer");
                 String userid = applyer.getString("userid");
+                //过滤审核状态只需要审核通过的数据
+                int sp_status = info.getIntValue("sp_status");
+                if(sp_status!=2){
+                    continue;
+                }
                 Optional<User> first = userList.stream().filter(u ->u.getCorpwxRealUserid()!=null&&u.getCorpwxRealUserid().equals(userid)).findFirst();
                 if(!first.isPresent()){
                     continue;
@@ -233,6 +238,11 @@ public class WxCorpInfoController {
                 JSONObject info = approvalInfoDetail.getJSONObject("info");
                 JSONObject applyer = info.getJSONObject("applyer");
                 String userid = applyer.getString("userid");
+                //过滤审核状态只需要审核通过的数据
+                int sp_status = info.getIntValue("sp_status");
+                if(sp_status!=2){
+                    continue;
+                }
                 Optional<User> first = userList.stream().filter(u ->u.getCorpwxRealUserid()!=null&&u.getCorpwxRealUserid().equals(userid)).findFirst();
                 if(!first.isPresent()){
                     continue;
@@ -246,6 +256,7 @@ public class WxCorpInfoController {
                 plan.setCreateTime(LocalDateTime.now());
                 plan.setPlanType(1);
                 plan.setCreateId(first.get().getId());
+                plan.setTaskChangeNoticeNum(info.getString("sp_no"));
                 //参与人员列表
                 List<String> userTeams=new ArrayList<>();
                 //初始化 单价(元/小时)
@@ -296,12 +307,12 @@ public class WxCorpInfoController {
                             plan.setTaskName(text);
                         }
                     }
-                    if(title.getJSONObject(0).getString("text").equals("审批编号")){
-                        if(control.equals("Text")||control.equals("Textarea")){
-                            String text = value.getString("text");
-                            plan.setTaskChangeNoticeNum(text);
-                        }
-                    }
+//                    if(title.getJSONObject(0).getString("text").equals("审批编号")){
+//                        if(control.equals("Text")||control.equals("Textarea")){
+//                            String text = value.getString("text");
+//                            plan.setTaskChangeNoticeNum(text);
+//                        }
+//                    }
                     //先处理多个人员 公用此单据非工时部分内容
                     if(title.getJSONObject(0).getString("text").equals("参与人员")){
                         if(control.equals("Contact")){

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

@@ -5012,15 +5012,19 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 //            item.add(map.get("steelNumArray")==null?"":String.valueOf(map.get("steelNumArray")));
             item.add(map.get("projectName")==null?"":String.valueOf(map.get("projectName")));
 //            item.add(String.valueOf(map.get("productName")));
+            item.add(map.get("productSchedulingNum")==null?"":String.valueOf(map.get("productSchedulingNum")));
             if(planType==0){
-                item.add(map.get("productSchedulingNum")==null?"":String.valueOf(map.get("productSchedulingNum")));
+                item.add(map.get("productOrderNum")==null?"":String.valueOf(map.get("productOrderNum")));
             }else {
                 item.add(map.get("taskChangeNoticeNum")==null?"":String.valueOf(map.get("taskChangeNoticeNum")));
             }
-            item.add(map.get("productOrderNum")==null?"":String.valueOf(map.get("productOrderNum")));
-            item.add(String.valueOf(map.get("procedureName")));
+            if(planType==0){
+                item.add(map.get("procedureName")==null?"":String.valueOf(map.get("procedureName")));
+            }else {
+                item.add("临时报工");
+            }
             item.add(map.get("steelNumArray")==null?"":String.valueOf(map.get("steelNumArray")));
-            item.add(String.valueOf(map.get("productName")));
+            item.add(map.get("productName")==null?"":String.valueOf(map.get("productName")));
             item.add("");
 //            item.add(String.valueOf(map.get("progress"))+"%");
             item.add(String.valueOf(map.get("finishNum")));

+ 11 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/task/TimingTask.java

@@ -259,6 +259,11 @@ public class TimingTask {
                     JSONObject info = approvalInfoDetail.getJSONObject("info");
                     JSONObject applyer = info.getJSONObject("applyer");
                     String userid = applyer.getString("userid");
+                    //过滤审核状态只需要审核通过的数据
+                    int sp_status = info.getIntValue("sp_status");
+                    if(sp_status!=2){
+                        continue;
+                    }
                     Optional<User> first = userList.stream().filter(u ->u.getCorpwxRealUserid()!=null&& u.getCorpwxRealUserid().equals(userid)).findFirst();
                     if(!first.isPresent()){
                         continue;
@@ -375,6 +380,11 @@ public class TimingTask {
                 JSONObject info = approvalInfoDetail.getJSONObject("info");
                 JSONObject applyer = info.getJSONObject("applyer");
                 String userid = applyer.getString("userid");
+                //过滤审核状态只需要审核通过的数据
+                int sp_status = info.getIntValue("sp_status");
+                if(sp_status!=2){
+                    continue;
+                }
                 Optional<User> first = userList.stream().filter(u ->u.getCorpwxRealUserid()!=null&&u.getCorpwxRealUserid().equals(userid)).findFirst();
                 if(!first.isPresent()){
                     continue;
@@ -388,6 +398,7 @@ public class TimingTask {
                 plan.setCreateTime(LocalDateTime.now());
                 plan.setPlanType(1);
                 plan.setCreateId(first.get().getId());
+                plan.setTaskChangeNoticeNum(info.getString("sp_no"));
                 //参与人员列表
                 List<String> userTeams=new ArrayList<>();
                 //初始化 单价(元/小时)

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

@@ -573,7 +573,7 @@
         select p.project_name as projectName,p.product_order_num as productOrderNum, p.plan_type as planType,u.name as userName,u.job_number as jobNumber,d.department_id as departmentId,p.product_scheduling_num as productSchedulingNum,
         p.task_change_notice_num as taskChangeNoticeNum,r.steel_num_array as steelNumArray,r.working_time as workingTime,p.product_name as productName,r.finish_num as finishNum,
         pp.name as procedureName,r.progress as progress,(CASE r.check_type WHEN 0 THEN '自检' WHEN 1 THEN '互检' ELSE '专检' END ) as checkType ,uu.name as checkerName,
-        date_format(r.create_date,'%Y-%m-%d') as createDate,date_format(r.create_time,'%Y-%m-%d %T') as reportTime, pp.unit_price as unitPrice,r.cost  from report r
+        date_format(r.create_date,'%Y-%m-%d') as createDate,date_format(r.create_time,'%Y-%m-%d %T') as reportTime,(CASE WHEN p.plan_type=0 THEN pp.unit_price ELSE p.money_of_job END) as unitPrice,r.cost  from report r
         left join plan p on p.id=r.plan_id
         left join department d on d.department_id=p.station_id
         left join user u on r.creator_id=u.id

+ 13 - 1
fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json

@@ -2165,5 +2165,17 @@
   "buShuYuNingDeQuanXianNei": "Not within your permission",
   "piLiangXiuGaiXiangMuJieDuan": "Batch modification project phase",
   "piLiangCaoZuo": "Batch operation",
-  "piLiangTianJiaRenWuChanYuRen": "Batch add task participants"
+  "piLiangTianJiaRenWuChanYuRen": "Batch add task participants",
+  "heXiao": "Write off",
+  "heXiaoGongShiShu": "Write off work hours",
+  "heXiaoRen": "Verification personnel",
+  "heXiaoShiJian": "Verification time",
+  "heXiaoYanYing": "Reason for verification",
+  "heXiaoZhuangTai": "Verification status",
+  "huiFu": "recovery",
+  "jiaBanHeXiao": "Overtime verification",
+  "qingJiaJiWeiTianBaoJiShi": "Leave calculation for timely reporting",
+  "qingShuRuHeXiaoYuanYing": "Please enter the reason for verification",
+  "wuXiaoJiaBan": "Invalid overtime",
+  "yiFaFangJIaBanGongShi": "Overtime pay has been paid"
 }

+ 13 - 1
fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json

@@ -2165,5 +2165,17 @@
   "piLiangXiuGaiXiangMuJieDuan": "批量修改项目阶段",
   "buShuYuNingDeQuanXianNei": "不属于您的权限内",
   "piLiangCaoZuo": "批量操作",
-  "piLiangTianJiaRenWuChanYuRen": "批量添加任务参与人"
+  "piLiangTianJiaRenWuChanYuRen": "批量添加任务参与人",
+  "heXiaoZhuangTai": "核销状态",
+  "heXiaoRen": "核销人",
+  "heXiaoShiJian": "核销时间",
+  "heXiaoYanYing": "核销原因",
+  "huiFu": "恢复",
+  "heXiao": "核销",
+  "qingJiaJiWeiTianBaoJiShi": "请假计为填报及时",
+  "heXiaoGongShiShu": "核销工时数",
+  "jiaBanHeXiao": "加班核销",
+  "qingShuRuHeXiaoYuanYing": "请输入核销原因",
+  "yiFaFangJIaBanGongShi": "已发放加班工资",
+  "wuXiaoJiaBan": "无效加班"
 }

+ 96 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -111,6 +111,12 @@
             </el-select>
           </span>
         </template>
+        <template v-if="ins == 6">
+          <el-select v-model="writeOffStatus" :placeholder="$t('defaultText.pleaseChoose')" @change="picks()" size="small" clearable>
+            <el-option label="正常" :value="0" ></el-option>
+            <el-option label="已核销" :value="1" ></el-option>
+          </el-select>
+        </template>
           
         <!-- 按部门/项目筛选 -->
         <!-- <el-select v-if="ins == 10" v-model="departmentOrProject" placeholder="请选择" size="small" @change="selcts(10)" style="margin-left:10px;width:120px">
@@ -588,6 +594,18 @@
                     <span style="padding-right: 15px;">{{scope.row.workingTime.toFixed(1)}}h</span>
                   </template>
                 </el-table-column>
+                <el-table-column prop="writeOffValue" :label="$t('heXiaoZhuangTai')" width="120">
+                  <template slot-scope="scope" >
+                      {{ scope.row.writeOffValue == 1 ? '已核销' : '正常' }}
+                  </template>
+                </el-table-column>
+                <el-table-column prop="writeOffUser" :label="$t('heXiaoRen')" width="120">
+                  <template slot-scope="scope" >
+                      <TranslationOpenDataText type='userName' :openid='scope.row.writeOffUser'></TranslationOpenDataText>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="writeOffTime" :label="$t('heXiaoShiJian')" width="160"></el-table-column>
+                <el-table-column prop="writeOffReason" :label="$t('heXiaoYanYing')" width="160"></el-table-column>
                 <el-table-column prop="overtimeHours" :label="$t('jia-ban-shi-chang')+'(h)'" width="100" fixed="right" align="right">
                   <template slot-scope="scope">
                     <span style="padding-right: 15px;">{{scope.row.overtimeHours.toFixed(1)}}h</span>
@@ -598,6 +616,12 @@
                     <span>¥{{scope.row.cost | numberToCurrency}}</span>
                   </template>
                 </el-table-column>
+                <el-table-column prop="cost" :label="$t('operation')" width="100" v-if="user.roleName == $t('role.superAdministrator')" fixed="right" align="right">
+                  <template slot-scope="scope">
+                    <el-button type="text" @click="writeOffOperation(scope.row, 'restore')" v-if="scope.row.writeOffValue == 1">{{ $t('huiFu') }}</el-button>
+                    <el-button type="text" @click="writeOffOperation(scope.row, 'writeoff')" v-else>{{ $t('heXiao') }}</el-button>
+                  </template>
+                </el-table-column>
               </el-table>
 
               <!-- 人员工时分配表 -->
@@ -734,7 +758,7 @@
                 <el-table-column prop="timelinessRate" :label="$t('timelyreportingrate')" min-width="200" align="center">
                   <template slot="header">
                     <span>{{ $t('timelyreportingrate') + $t('han-qing-jia') }}</span>
-                    <el-tooltip effect="dark" :content="'请假计为填报及时'" placement="top-start">
+                    <el-tooltip effect="dark" :content="$t('qingJiaJiWeiTianBaoJiShi')" placement="top-start">
                         <i class="el-icon-question" style="color:#606266"></i>
                     </el-tooltip>
                   </template>
@@ -877,7 +901,7 @@
                     </div>
                   </template>
                 </el-table-column>
-                <el-table-column align="center" prop="whether" :label="补足工时" min-width="180">
+                <el-table-column align="center" prop="whether" :label=" $t('buZuGongShi')" min-width="180">
                   <template slot-scope="scope">
                     <div>
                       <el-button
@@ -1575,6 +1599,28 @@
             </div>
           </div>
         </el-dialog>
+
+        <!-- 核销弹窗 -->
+        <el-dialog :title="$t('jiaBanHeXiao')" :visible.sync="writeOffOperationVisable" width="600px" :before-close="handleClose">
+          <div class="">
+            <div style="width: 100%;text-align:center;margin-bottom:20px;">{{ $t('heXiaoGongShiShu') }}:{{ writeOffOperationTransitionData.overtimeHours }} {{ $t('time.hour') }}</div>
+            <div>
+              <el-select v-model="writeOffOperationTransitionData.writeOffReason" filterable allow-create default-first-option :placeholder="$t('qingShuRuHeXiaoYuanYing')" 
+              style="width: 100%;">
+                <el-option
+                  v-for="item in writeOffOperationTransitionData.options"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </div>
+          </div>
+          <span slot="footer" class="dialog-footer">
+            <el-button @click="writeOffOperationVisable = false">{{ $t('quXiao') }}</el-button>
+            <el-button type="primary" @click="editWriteOffOperation()">{{ $t('queDing') }}</el-button>
+          </span>
+        </el-dialog>
   </section>
 </template>
 
@@ -1809,7 +1855,12 @@ export default {
       showUserTaskDialog:false,
       userTaskData:[], //员工任务数据列表
       userTasklistLoading:false,
-      userTaskUserId:null
+      userTaskUserId:null,
+
+      // 核销变量
+      writeOffOperationVisable: false,
+      writeOffOperationTransitionData: {},
+      writeOffStatus: '',
     };
   },
   computed: {},
@@ -1842,6 +1893,7 @@ export default {
     this.getSubUserCustom()
   },
   filters: {
+
       numberToCurrency(value) {
           if (value == undefined || !value) return '0.00'
           value = value.toFixed(2)
@@ -2977,6 +3029,9 @@ export default {
       if(this.userId) {
         obj.userId = this.userId
       }
+      if(this.writeOffStatus != '') {
+        obj.writeOffValue = this.writeOffStatus
+      }
       console.log(this.departmentIdArray, '加班情况统计表')
       if(this.departmentIdArray.length != 0 && this.departmentIdArray[0] != ''){
         let deptid = []
@@ -2995,7 +3050,14 @@ export default {
         res => {
             if (res.code == "ok") {
                 this.listLoading = false
-                this.overTimeList = res.data
+                this.overTimeList = res.data.map(item => {
+                  let obj = {
+                    writeOffTime: '',
+                    writeOffUser: '',
+                    writeOffReason: '',
+                  }
+                  return item.writeOffValue == 0 ? { ...item, ...obj } : { ...item }
+                })
             } else {
                 this.$message({
                 message: res.msg,
@@ -4158,6 +4220,36 @@ export default {
       this.projectEstimatedWorkData = data.records
       this.total = data.total
       this.listLoading = false
+    },
+    writeOffOperation(item, type) {
+      const list = [
+        { label: this.$t('yiFaFangJIaBanGongShi'), value: this.$t('yiFaFangJIaBanGongShi') },
+        { label: this.$t('wuXiaoJiaBan'), value: this.$t('wuXiaoJiaBan') },
+      ]
+      if(type == 'restore') {
+        this.writeOffOperationTransitionData = { ...item, writeOffType: 0, writeOffReason: '', options: list }
+        this.editWriteOffOperation()
+      }
+      if(type == 'writeoff') {
+        this.writeOffOperationTransitionData = { ...item, writeOffType: 1, writeOffReason: '', options: list }
+        this.writeOffOperationVisable = true
+      }
+    },
+    async editWriteOffOperation() {
+      const { reportId, writeOffType, writeOffReason } = this.writeOffOperationTransitionData
+      let parameter = {
+        reportId,
+        type: writeOffType,
+      }
+      writeOffType ? parameter.reason = writeOffReason : ''
+      let { data, code } = await this.postData('/report-write-off/writeOffReport', {
+        ...parameter
+      })
+      console.log(data, '<======= 操作')
+      if(code) {
+        this.writeOffOperationVisable = false
+      }
+      this.getList(6)
     }
   },
 };

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -1077,7 +1077,7 @@ export default {
         },
         getSubprojectList(domainItem) {
             domainItem.subProjectList = [];
-            this.$axios.post("/sub-project/list", { projectId: domainItem.projectId })
+            this.$axios.post("/sub-project/list", { projectId: domainItem.projectId,isReport:true })
                 .then(res => {
                     if (res.code == "ok") {
                         domainItem.subProjectList = res.data;

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit-01.vue

@@ -863,7 +863,7 @@
             },
             getSubprojectList(domainItem) {
                 domainItem.subProjectList = [];
-                this.$axios.post("/sub-project/list", {projectId: domainItem.projectId})
+                this.$axios.post("/sub-project/list", {projectId: domainItem.projectId,isReport:true})
                     .then(res => {
                         if(res.code == "ok") {
                             domainItem.subProjectList = res.data;

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit-02.vue

@@ -1003,7 +1003,7 @@
             },
             getSubprojectList(domainItem) {
                 domainItem.subProjectList = [];
-                this.$axios.post("/sub-project/list", {projectId: domainItem.projectId})
+                this.$axios.post("/sub-project/list", {projectId: domainItem.projectId,isReport:true})
                     .then(res => {
                         if(res.code == "ok") {
                             domainItem.subProjectList = res.data;

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit-03.vue

@@ -1056,7 +1056,7 @@
             },
             getSubprojectList(domainItem) {
                 domainItem.subProjectList = [];
-                this.$axios.post("/sub-project/list", {projectId: domainItem.projectId})
+                this.$axios.post("/sub-project/list", {projectId: domainItem.projectId,isReport:true})
                     .then(res => {
                         if(res.code == "ok") {
                             domainItem.subProjectList = res.data;

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue

@@ -1090,7 +1090,7 @@
             },
             getSubprojectList(domainItem) {
                 domainItem.subProjectList = [];
-                this.$axios.post("/sub-project/list", {projectId: domainItem.projectId})
+                this.$axios.post("/sub-project/list", {projectId: domainItem.projectId,isReport:true})
                     .then(res => {
                         if(res.code == "ok") {
                             domainItem.subProjectList = res.data;