Преглед изворни кода

Merge branch 'master' of http://47.100.37.243:10191/quyueting/manHourHousekeeper

yusm пре 1 дан
родитељ
комит
cf4f126c43
18 измењених фајлова са 1229 додато и 1152 уклоњено
  1. 38 16
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  2. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java
  3. 8 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserGroup.java
  4. 9 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java
  5. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  6. 133 58
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  7. 47 10
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  8. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml
  9. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserGroupMapper.xml
  10. 7 7
      fhKeeper/formulahousekeeper/timesheet/src/views/Expire.vue
  11. 24 46
      fhKeeper/formulahousekeeper/timesheet/src/views/Login.vue
  12. 69 4
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  13. 318 318
      fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue
  14. 9 11
      fhKeeper/formulahousekeeper/timesheet/src/views/projectApproval/projectApproval.vue
  15. 342 473
      fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue
  16. 15 1
      fhKeeper/formulahousekeeper/timesheet/src/views/userGrouping/userGrouping.vue
  17. 109 109
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/dailyReportReview.vue
  18. 88 88
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/weeklyReportReview.vue

+ 38 - 16
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -302,7 +302,7 @@ public class ReportController {
                                               Integer departmentId,
                                               Integer departmentId,
                                               @RequestParam(defaultValue = "1") Integer pageIndex,
                                               @RequestParam(defaultValue = "1") Integer pageIndex,
                                               @RequestParam(defaultValue = "20") Integer pageSize,
                                               @RequestParam(defaultValue = "20") Integer pageSize,
-                                              String userId) {
+                                              String userId, Integer orderByAuditor) {
         //startDate和endDate间隔不得超过1年
         //startDate和endDate间隔不得超过1年
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         LocalDate start = LocalDate.parse(startDate, dateTimeFormatter);
         LocalDate start = LocalDate.parse(startDate, dateTimeFormatter);
@@ -312,7 +312,7 @@ public class ReportController {
             httpRespMsg.setError("查询日报时间间隔不得超过1年");
             httpRespMsg.setError("查询日报时间间隔不得超过1年");
             return httpRespMsg;
             return httpRespMsg;
         }
         }
-        return reportService.getReportListForExport(startDate, endDate, projectId, state, departmentId, pageIndex, pageSize, userId, request);
+        return reportService.getReportListForExport(startDate, endDate, projectId, state, departmentId, pageIndex, pageSize, userId,orderByAuditor, request);
     }
     }
 
 
     /**
     /**
@@ -327,7 +327,7 @@ public class ReportController {
     public HttpRespMsg exportReportListForExport(String startDate, String endDate,
     public HttpRespMsg exportReportListForExport(String startDate, String endDate,
                                                  Integer projectId,
                                                  Integer projectId,
                                                  Integer state,
                                                  Integer state,
-                                                 Integer departmentId, String userId) {
+                                                 Integer departmentId, String userId, Integer orderByAuditor) {
         //startDate和endDate间隔不得超过1年
         //startDate和endDate间隔不得超过1年
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         LocalDate start = LocalDate.parse(startDate, dateTimeFormatter);
         LocalDate start = LocalDate.parse(startDate, dateTimeFormatter);
@@ -337,11 +337,11 @@ public class ReportController {
             httpRespMsg.setError("导出日报时间间隔不得超过1年");
             httpRespMsg.setError("导出日报时间间隔不得超过1年");
             return httpRespMsg;
             return httpRespMsg;
         }
         }
-        return reportService.exportReportListForExport(startDate, endDate, projectId, state, departmentId, userId, request);
+        return reportService.exportReportListForExport(startDate, endDate, projectId, state, departmentId, userId, orderByAuditor, request);
     }
     }
 
 
     @RequestMapping("/getReportGroupByDay")
     @RequestMapping("/getReportGroupByDay")
-    public HttpRespMsg getReportGroupByDay(String startDate, String endDate,String userId, Integer departmentId, Integer projectId, Integer state) {
+    public HttpRespMsg getReportGroupByDay(String startDate, String endDate,String userId, Integer departmentId, Integer projectId, Integer state, Integer orderByAuditor) {
         //startDate和endDate间隔不得超过1年
         //startDate和endDate间隔不得超过1年
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         LocalDate start = LocalDate.parse(startDate, dateTimeFormatter);
         LocalDate start = LocalDate.parse(startDate, dateTimeFormatter);
@@ -351,7 +351,7 @@ public class ReportController {
             httpRespMsg.setError("日报时间间隔不得超过1年");
             httpRespMsg.setError("日报时间间隔不得超过1年");
             return httpRespMsg;
             return httpRespMsg;
         }
         }
-        return reportService.getReportGroupByDay(startDate, endDate,userId, departmentId, projectId, state, request);
+        return reportService.getReportGroupByDay(startDate, endDate,userId, departmentId, projectId, state, orderByAuditor, request);
     }
     }
 
 
     @RequestMapping("/exportReportGroupByDay")
     @RequestMapping("/exportReportGroupByDay")
@@ -674,6 +674,8 @@ public class ReportController {
                 }
                 }
             }
             }
         }
         }
+        //获取用户分组的数据
+        List<UserGroup> userGroupList = comTimeType.getPayOvertimeMode() == 1? userGroupMapper.selectList(new QueryWrapper<UserGroup>().eq("company_id", company.getId())) : null;
         if (company.getPackageProject() == 1) {
         if (company.getPackageProject() == 1) {
             //检查是否设置了预算的工时预警
             //检查是否设置了预算的工时预警
             ProjectBasecostSetting alarmSetting = projectBasecostSettingMapper.selectOne(new QueryWrapper<ProjectBasecostSetting>()
             ProjectBasecostSetting alarmSetting = projectBasecostSettingMapper.selectOne(new QueryWrapper<ProjectBasecostSetting>()
@@ -979,6 +981,7 @@ public class ReportController {
             }
             }
         }
         }
 
 
+        List<User> reportUserList = new ArrayList<>();
         //代填
         //代填
         if (targetUids != null && targetUids.length > 0) {
         if (targetUids != null && targetUids.length > 0) {
             String val = targetUids[0];
             String val = targetUids[0];
@@ -988,6 +991,10 @@ public class ReportController {
                 targetUidList.add(ids[i]);
                 targetUidList.add(ids[i]);
             }
             }
             targetUserList = userService.list(new QueryWrapper<User>().in("id", targetUidList));
             targetUserList = userService.list(new QueryWrapper<User>().in("id", targetUidList));
+            reportUserList.addAll(targetUserList);
+        } else {
+            //自己填自己的
+            reportUserList.add(user);
         }
         }
 
 
         LocalDate now = LocalDate.now();
         LocalDate now = LocalDate.now();
@@ -1299,9 +1306,9 @@ public class ReportController {
                             }
                             }
                             //计算工时和成本
                             //计算工时和成本
                             if (report.getMultiWorktime() == 0) {
                             if (report.getMultiWorktime() == 0) {
-                                fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], startTime==null?null:startTime[i], endTime==null?null:endTime[i],  sdf, comTimeType, excludeTimeList);
+                                fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], startTime==null?null:startTime[i], endTime==null?null:endTime[i],  sdf, comTimeType, excludeTimeList, reportUserList, userGroupList);
                             } else {
                             } else {
-                                fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], null, null, sdf, comTimeType, excludeTimeList);
+                                fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], null, null, sdf, comTimeType, excludeTimeList, reportUserList, userGroupList);
                             }
                             }
 
 
                             //项目专业的进展
                             //项目专业的进展
@@ -1365,9 +1372,9 @@ public class ReportController {
                                 hourCost = subsUser.getCost();
                                 hourCost = subsUser.getCost();
                                 //计算工时和成本
                                 //计算工时和成本
                                 if (report.getMultiWorktime() == 0) {
                                 if (report.getMultiWorktime() == 0) {
-                                    fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], startTime==null?null:startTime[i], endTime==null?null:endTime[i],  sdf, comTimeType, excludeTimeList);
+                                    fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], startTime==null?null:startTime[i], endTime==null?null:endTime[i],  sdf, comTimeType, excludeTimeList, reportUserList, userGroupList);
                                 } else {
                                 } else {
-                                    fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], null, null, sdf, comTimeType, excludeTimeList);
+                                    fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], null, null, sdf, comTimeType, excludeTimeList, reportUserList, userGroupList);
                                 }
                                 }
                                 fillReportProgress(report, professionProgress[i]);
                                 fillReportProgress(report, professionProgress[i]);
                                 reportList.add(report);
                                 reportList.add(report);
@@ -1429,9 +1436,9 @@ public class ReportController {
                         }
                         }
                         //计算工时和成本
                         //计算工时和成本
                         if (report.getMultiWorktime() == 0) {
                         if (report.getMultiWorktime() == 0) {
-                            fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], startTime==null?null:startTime[i], endTime==null?null:endTime[i], sdf, comTimeType, excludeTimeList);
+                            fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], startTime==null?null:startTime[i], endTime==null?null:endTime[i], sdf, comTimeType, excludeTimeList, reportUserList, userGroupList);
                         } else {
                         } else {
-                            fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], null, null, sdf, comTimeType, excludeTimeList);
+                            fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], null, null, sdf, comTimeType, excludeTimeList, reportUserList, userGroupList);
                         }
                         }
 
 
                         fillReportProgress(report, professionProgress[i]);
                         fillReportProgress(report, professionProgress[i]);
@@ -1507,9 +1514,9 @@ public class ReportController {
                             hourCost = subsUser.getCost();
                             hourCost = subsUser.getCost();
                             //计算工时和成本
                             //计算工时和成本
                             if (report.getMultiWorktime() == 0) {
                             if (report.getMultiWorktime() == 0) {
-                                fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], startTime==null?null:startTime[i], endTime==null?null:endTime[i],  sdf, comTimeType, excludeTimeList);
+                                fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], startTime==null?null:startTime[i], endTime==null?null:endTime[i],  sdf, comTimeType, excludeTimeList, reportUserList, userGroupList);
                             } else {
                             } else {
-                                fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], null, null, sdf, comTimeType, excludeTimeList);
+                                fillReportHours(report, hourCost, workingTime==null?null:workingTime[i], timeType==null?null:timeType[i], null, null, sdf, comTimeType, excludeTimeList, reportUserList, userGroupList);
                             }
                             }
 
 
                             fillReportProgress(report, professionProgress[i]);
                             fillReportProgress(report, professionProgress[i]);
@@ -2707,7 +2714,7 @@ public class ReportController {
         return msg;
         return msg;
     }
     }
 
 
-    private void fillReportHours(Report report, BigDecimal hourCost, Double workingTime, Integer timeType, String startTime, String endTime, SimpleDateFormat sdf, TimeType comTimeType, List<TimeAutoExclude> excludeTimeList) {
+    private void fillReportHours(Report report, BigDecimal hourCost, Double workingTime, Integer timeType, String startTime, String endTime, SimpleDateFormat sdf, TimeType comTimeType, List<TimeAutoExclude> excludeTimeList, List<User> reportUserList, List<UserGroup> userGroupList) {
         if (report.getMultiWorktime() == 0) {
         if (report.getMultiWorktime() == 0) {
             //普通工时成本计算
             //普通工时成本计算
             if (report.getReportTimeType() == 0) {
             if (report.getReportTimeType() == 0) {
@@ -2799,7 +2806,22 @@ public class ReportController {
 
 
         //如果设置了加班有工资并且当前存在加班的勾选,需要计算一下
         //如果设置了加班有工资并且当前存在加班的勾选,需要计算一下
         if (report.getIsOvertime() != null && report.getIsOvertime() == 1 && comTimeType.getPayOvertime()) {
         if (report.getIsOvertime() != null && report.getIsOvertime() == 1 && comTimeType.getPayOvertime()) {
-            BigDecimal overtimeCost = hourCost.multiply(new BigDecimal(report.getOvertimeHours())).multiply(new BigDecimal(comTimeType.getOvertimeRatio()));
+            BigDecimal overtimeCost = new BigDecimal(0);
+            if (comTimeType.getPayOvertimeMode() == 0) {
+                overtimeCost = hourCost.multiply(new BigDecimal(report.getOvertimeHours())).multiply(new BigDecimal(comTimeType.getOvertimeRatio()));
+            } else {
+                User targetUser = reportUserList.stream().filter(u->u.getId().equals(report.getCreatorId())).findFirst().orElse(null);
+
+                if (targetUser != null) {
+                    if (targetUser.getUserGroupId() != null) {
+                        UserGroup userGroup = userGroupList.stream().filter(ug->ug.getId().equals(targetUser.getUserGroupId())).findFirst().orElse(null);
+                        if (userGroup != null) {
+                            //重新计算加班成本
+                            overtimeCost = userGroup.getOvertimeHourCost().multiply(new BigDecimal(report.getOvertimeHours()));
+                        }
+                    }
+                }
+            }
             report.setOvertimeCost(overtimeCost);
             report.setOvertimeCost(overtimeCost);
             //重新计算总的cost
             //重新计算总的cost
             BigDecimal nonOvertimeCost = hourCost.multiply(new BigDecimal(report.getWorkingTime() - report.getOvertimeHours()));
             BigDecimal nonOvertimeCost = hourCost.multiply(new BigDecimal(report.getWorkingTime() - report.getOvertimeHours()));

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -735,6 +735,12 @@ public class TimeType extends Model<TimeType> {
     private Boolean timeInputNormal;
     private Boolean timeInputNormal;
 
 
 
 
+    /**
+     * 0-按工资时薪倍数,1-按分组设置固定时薪
+     */
+    @TableField("pay_overtime_mode")
+    private Integer payOvertimeMode;
+
     @TableField(exist = false)
     @TableField(exist = false)
     private List<User> userList;
     private List<User> userList;
     @TableField(exist = false)
     @TableField(exist = false)

+ 8 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserGroup.java

@@ -1,5 +1,6 @@
 package com.management.platform.entity;
 package com.management.platform.entity;
 
 
+import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -15,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  * </p>
  *
  *
  * @author Seyason
  * @author Seyason
- * @since 2024-07-29
+ * @since 2026-05-20
  */
  */
 @Data
 @Data
 @EqualsAndHashCode(callSuper = false)
 @EqualsAndHashCode(callSuper = false)
@@ -45,6 +46,12 @@ public class UserGroup extends Model<UserGroup> {
     @TableField("no_project_percent")
     @TableField("no_project_percent")
     private Integer noProjectPercent;
     private Integer noProjectPercent;
 
 
+    /**
+     * 加班时薪
+     */
+    @TableField("overtime_hour_cost")
+    private BigDecimal overtimeHourCost;
+
 
 
     @Override
     @Override
     protected Serializable pkVal() {
     protected Serializable pkVal() {

+ 9 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -32,8 +32,14 @@ public interface ReportMapper extends BaseMapper<Report> {
                                                      @Param("endDate") String endDate,
                                                      @Param("endDate") String endDate,
                                                      @Param("projectId") Integer projectId,
                                                      @Param("projectId") Integer projectId,
                                                      @Param("state") Integer state,
                                                      @Param("state") Integer state,
-                                                     @Param("branchDepartment")List<Integer> branchDepartment
-    );
+                                                     @Param("branchDepartment")List<Integer> branchDepartment, Integer start, Integer size, Integer orderByAuditor);
+    int getAllReportByDateForExportCount(@Param("startDate") String startDate,
+                                                              @Param("companyId") Integer companyId,
+                                                              @Param("userId") String userId,
+                                                              @Param("endDate") String endDate,
+                                                              @Param("projectId") Integer projectId,
+                                                              @Param("state") Integer state,
+                                                              @Param("branchDepartment")List<Integer> branchDepartment);
     List<HashMap<String, Object>> getAllReportByDate(@Param("startDate") String startDate,
     List<HashMap<String, Object>> getAllReportByDate(@Param("startDate") String startDate,
                                                      @Param("companyId") Integer companyId,
                                                      @Param("companyId") Integer companyId,
                                                      @Param("userId") String userId,
                                                      @Param("userId") String userId,
@@ -299,18 +305,16 @@ public interface ReportMapper extends BaseMapper<Report> {
                                                    @Param("startDate") String startDate,
                                                    @Param("startDate") String startDate,
                                                    @Param("endDate") String endDate,
                                                    @Param("endDate") String endDate,
                                                    @Param("userId") String userId,
                                                    @Param("userId") String userId,
-                                                   @Param("departmentId") Integer departmentId,
                                                    @Param("projectId") Integer projectId,
                                                    @Param("projectId") Integer projectId,
                                                    @Param("state") Integer state,
                                                    @Param("state") Integer state,
                                                    @Param("deptIds") List<Integer> deptIds,
                                                    @Param("deptIds") List<Integer> deptIds,
                                                    @Param("pageStart") Integer pageStart,
                                                    @Param("pageStart") Integer pageStart,
-                                                   @Param("pageSize") Integer pageSize);
+                                                   @Param("pageSize") Integer pageSize, Integer orderByAuditor);
 
 
     Integer getReportGroupByDayCount(@Param("companyId") Integer companyId,
     Integer getReportGroupByDayCount(@Param("companyId") Integer companyId,
                                       @Param("startDate") String startDate,
                                       @Param("startDate") String startDate,
                                       @Param("endDate") String endDate,
                                       @Param("endDate") String endDate,
                                       @Param("userId") String userId,
                                       @Param("userId") String userId,
-                                      @Param("departmentId") Integer departmentId,
                                       @Param("projectId") Integer projectId,
                                       @Param("projectId") Integer projectId,
                                      @Param("state") Integer state,
                                      @Param("state") Integer state,
                                       @Param("deptIds") List<Integer> deptIds);
                                       @Param("deptIds") List<Integer> deptIds);

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

@@ -28,9 +28,9 @@ public interface ReportService extends IService<Report> {
 
 
     HttpRespMsg exportReport(@RequestParam String startDate, @RequestParam String endDate,Integer exportType, Integer projectId,Integer stateKey,String departmentIds,String plate, HttpServletRequest request);
     HttpRespMsg exportReport(@RequestParam String startDate, @RequestParam String endDate,Integer exportType, Integer projectId,Integer stateKey,String departmentIds,String plate, HttpServletRequest request);
 
 
-    HttpRespMsg getReportListForExport(String startDate, String endDate, Integer projectId, Integer state, Integer departmentId, Integer pageIndex, Integer pageSize, String targetUserId, HttpServletRequest request);
+    HttpRespMsg getReportListForExport(String startDate, String endDate, Integer projectId, Integer state, Integer departmentId, Integer pageIndex, Integer pageSize, String targetUserId, Integer orderByAuditor, HttpServletRequest request);
 
 
-    HttpRespMsg exportReportListForExport(String startDate, String endDate, Integer projectId, Integer state, Integer departmentId, String targetUserId, HttpServletRequest request);
+    HttpRespMsg exportReportListForExport(String startDate, String endDate, Integer projectId, Integer state, Integer departmentId, String targetUserId, Integer orderByAuditor, HttpServletRequest request);
 
 
     HttpRespMsg getReport(String date, HttpServletRequest request);
     HttpRespMsg getReport(String date, HttpServletRequest request);
 
 
@@ -216,7 +216,7 @@ public interface ReportService extends IService<Report> {
 
 
     HttpRespMsg exportMissingCardTimeUserList(String startDate, String endDate, Integer departmentId, HttpServletRequest request);
     HttpRespMsg exportMissingCardTimeUserList(String startDate, String endDate, Integer departmentId, HttpServletRequest request);
 
 
-    HttpRespMsg getReportGroupByDay(String startDate, String endDate, String userId, Integer departmentId, Integer projectId, Integer state, HttpServletRequest request);
+    HttpRespMsg getReportGroupByDay(String startDate, String endDate, String userId, Integer departmentId, Integer projectId, Integer state, Integer orderByAuditor, HttpServletRequest request);
 
 
     HttpRespMsg exportReportGroupByDay(String startDate, String endDate, String userId, Integer departmentId, Integer projectId, Integer state, HttpServletRequest request);
     HttpRespMsg exportReportGroupByDay(String startDate, String endDate, String userId, Integer departmentId, Integer projectId, Integer state, HttpServletRequest request);
 
 

+ 133 - 58
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -14581,7 +14581,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
     }
 
 
     @Override
     @Override
-    public HttpRespMsg getReportListForExport(String startDate, String endDate, Integer projectId, Integer state, Integer departmentId, Integer pageIndex, Integer pageSize, String targetUserId, HttpServletRequest request) {
+    public HttpRespMsg getReportListForExport(String startDate, String endDate, Integer projectId, Integer state, Integer departmentId, Integer pageIndex, Integer pageSize, String targetUserId, Integer orderByAuditor, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
         try {
             String userId = request.getHeader("Token");
             String userId = request.getHeader("Token");
@@ -14596,50 +14596,49 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             if (!StringUtils.isEmpty(departmentId)) {
             if (!StringUtils.isEmpty(departmentId)) {
                 branchDepartment = departmentService.getDeptIncludeSubDeptIds(departmentId, departments);
                 branchDepartment = departmentService.getDeptIncludeSubDeptIds(departmentId, departments);
             }
             }
-            
-
-//            List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
-
-//            if (functionList.size() == 0) {
-//                // 检查是否是部门负责人
-//                List<Integer> allVisibleDeptIdList = getAllVisibleDeptIdList(user, null);
-//                if (allVisibleDeptIdList.size() > 0) {
-//                    allReportByDate = reportMapper.getDeptMembReportByDate(startDate, null, allVisibleDeptIdList, endDate, projectId, stateKey, branchDepartment, user.getId(), field, fieldValue);
-//                }
-//
-//                if (allReportByDate == null) {
-//                    allReportByDate = new ArrayList<>();
-//                }
-//            } else {
-//                }
             // 有查看全公司工时权限
             // 有查看全公司工时权限
-            List<HashMap<String, Object>> allReportByDate = reportMapper.getAllReportByDateForExport(startDate, companyId, targetUserId, endDate, projectId, state, branchDepartment);
-
+            Integer startIndex = pageIndex != null ? (pageIndex - 1) * pageSize : null;
+            List<HashMap<String, Object>> allReportByDate = reportMapper.getAllReportByDateForExport(startDate, companyId, targetUserId, endDate, projectId, state, branchDepartment, startIndex, pageSize, orderByAuditor);
+            // 处理数据
             // 分页处理
             // 分页处理
-            int total = allReportByDate.size();
-            int startIndex = (pageIndex - 1) * pageSize;
-            int endIndex = Math.min(startIndex + pageSize, total);
-            
-            List<HashMap<String, Object>> pagedData = new ArrayList<>();
-            if (startIndex < total) {
-                pagedData = new ArrayList<>(allReportByDate.subList(startIndex, endIndex));
-                //处理日期显示
-                for (int i = 0; i < pagedData.size(); i++) {
-                    HashMap mapItem = pagedData.get(i);
-                    String createDate = new SimpleDateFormat("yyyy-MM-dd")
-                            .format((java.sql.Date) mapItem.get("createDate"));
-                    mapItem.put("createDate", createDate);
-                    //计算非加班工时
-                    double workingTime = (Double) mapItem.get("duration");
-                    double overtime = (Double) mapItem.get("overtimeHours");
-                    mapItem.put("normalWorkingTime", workingTime - overtime);
-                    //处理部门审核人
-                    String deptAuditorId = (String)mapItem.get("deptAuditorName");
-                    if (deptAuditorId != null) {
-                        User targetUser = allUserList.stream().filter(us->us.getId().equals(deptAuditorId)).findFirst().orElse(null);
-                        if (targetUser != null) {
-                            mapItem.put("deptAuditorName", targetUser.getName());
+            int total = reportMapper.getAllReportByDateForExportCount(startDate, companyId, targetUserId, endDate, projectId, state, branchDepartment);
+            DateTimeFormatter hmDtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+            //处理日期显示
+            for (int i = 0; i < allReportByDate.size(); i++) {
+                HashMap mapItem = allReportByDate.get(i);
+                String createDate = new SimpleDateFormat("yyyy-MM-dd")
+                        .format((java.sql.Date) mapItem.get("createDate"));
+                mapItem.put("createDate", createDate);
+                //计算非加班工时
+                double workingTime = (Double) mapItem.get("duration");
+                double overtime = (Double) mapItem.get("overtimeHours");
+                mapItem.put("normalWorkingTime", workingTime - overtime);
+                //处理部门审核人
+                String deptAuditorId = (String)mapItem.get("deptAuditorName");
+                if (deptAuditorId != null) {
+                    User targetUser = allUserList.stream().filter(us->us.getId().equals(deptAuditorId)).findFirst().orElse(null);
+                    if (targetUser != null) {
+                        mapItem.put("deptAuditorName", targetUser.getName());
+                    }
+                }
+                String lastOperateTime = mapItem.get("lastOperateTime") == null ? "" : mapItem.get("lastOperateTime").toString();
+                //计算时间
+                if (lastOperateTime != null && !lastOperateTime.equals("")) {
+                    LocalDateTime time = LocalDateTime.parse(lastOperateTime, hmDtf);
+                    //计算与当前时间的间隔
+                    Duration duration = Duration.between(time, LocalDateTime.now());
+                    long days = duration.toDays();
+                    long hours = duration.toHours() % 24;
+                    long minutes = duration.toMinutes() % 60;
+                    //时间格式化
+                    if (days == 0) {
+                        if (hours == 0) {
+                            mapItem.put("timeText", minutes + "分");
+                        } else {
+                            mapItem.put("timeText", hours + "小时" + minutes + "分");
                         }
                         }
+                    } else {
+                        mapItem.put("timeText", days + "天" + hours + "小时" + minutes + "分");
                     }
                     }
                 }
                 }
             }
             }
@@ -14649,8 +14648,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             resultMap.put("total", total);
             resultMap.put("total", total);
             resultMap.put("pageIndex", pageIndex);
             resultMap.put("pageIndex", pageIndex);
             resultMap.put("pageSize", pageSize);
             resultMap.put("pageSize", pageSize);
-            resultMap.put("totalPages", (int) Math.ceil((double) total / pageSize));
-            resultMap.put("list", pagedData);
+            resultMap.put("totalPages", pageSize != null?(int) Math.ceil((double) total / pageSize) : null);
+            resultMap.put("list", allReportByDate);
             
             
             httpRespMsg.setData(resultMap);
             httpRespMsg.setData(resultMap);
         } catch (Exception e) {
         } catch (Exception e) {
@@ -14661,11 +14660,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
     }
 
 
     @Override
     @Override
-    public HttpRespMsg exportReportListForExport(String startDate, String endDate, Integer projectId, Integer state, Integer departmentId, String targetUserId, HttpServletRequest request) {
+    public HttpRespMsg exportReportListForExport(String startDate, String endDate, Integer projectId, Integer state, Integer departmentId, String targetUserId, Integer orderByAuditor, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
         try {
             // 调用getReportListForExport获取全部数据(不分页)
             // 调用getReportListForExport获取全部数据(不分页)
-            HttpRespMsg queryResult = getReportListForExport(startDate, endDate, projectId, state, departmentId, 1, Integer.MAX_VALUE, targetUserId, request);
+            HttpRespMsg queryResult = getReportListForExport(startDate, endDate, projectId, state, departmentId, null, null, targetUserId,orderByAuditor, request);
             
             
             if (queryResult.code != null && !queryResult.code.equals("ok")) {
             if (queryResult.code != null && !queryResult.code.equals("ok")) {
                 return queryResult; // 返回错误信息
                 return queryResult; // 返回错误信息
@@ -14699,6 +14698,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             titles.add("加班时长(h)");
             titles.add("加班时长(h)");
             titles.add("工作内容");
             titles.add("工作内容");
             titles.add("当前审核人");
             titles.add("当前审核人");
+            titles.add("审核滞留时长");
             titles.add("审核状态");
             titles.add("审核状态");
             
             
             dataList.add(titles);
             dataList.add(titles);
@@ -14706,15 +14706,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             // 填充数据
             // 填充数据
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             DecimalFormat df = new DecimalFormat("0.0");
             DecimalFormat df = new DecimalFormat("0.0");
-            
+            DateTimeFormatter hmDtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
             for (HashMap<String, Object> map : allReportByDate) {
             for (HashMap<String, Object> map : allReportByDate) {
                 List<String> item = new ArrayList<>();
                 List<String> item = new ArrayList<>();
                 
                 
                 // 员工
                 // 员工
                 if (wxCorpInfo != null && wxCorpInfo.getSaasSyncContact() == 1) {
                 if (wxCorpInfo != null && wxCorpInfo.getSaasSyncContact() == 1) {
                     item.add("$userName=" + (map.get("corpwxUserId") == null ? "" : map.get("corpwxUserId")) + "$");
                     item.add("$userName=" + (map.get("corpwxUserId") == null ? "" : map.get("corpwxUserId")) + "$");
-                } else if (dingding != null && dingding.getContactNeedTranslate() == 1) {
-                    item.add("$userName=" + (map.get("name") == null ? "" : map.get("name")) + "$");
                 } else {
                 } else {
                     item.add((String) map.get("name"));
                     item.add((String) map.get("name"));
                 }
                 }
@@ -14725,8 +14723,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 // 所属部门
                 // 所属部门
                 if (wxCorpInfo != null && wxCorpInfo.getSaasSyncContact() == 1) {
                 if (wxCorpInfo != null && wxCorpInfo.getSaasSyncContact() == 1) {
                     item.add("$departmentName=" + (map.get("corpwxDeptId") == null ? "" : map.get("corpwxDeptId")) + "$");
                     item.add("$departmentName=" + (map.get("corpwxDeptId") == null ? "" : map.get("corpwxDeptId")) + "$");
-                } else if (dingding != null && dingding.getContactNeedTranslate() == 1) {
-                    item.add("$departmentName=" + (map.get("departmentName") == null ? "" : map.get("departmentName")) + "$");
                 } else {
                 } else {
                     item.add(map.get("departmentName") != null ? (String) map.get("departmentName") : "");
                     item.add(map.get("departmentName") != null ? (String) map.get("departmentName") : "");
                 }
                 }
@@ -14776,6 +14772,28 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 // 工作内容
                 // 工作内容
                 item.add(map.get("content") != null ? (String) map.get("content") : "");
                 item.add(map.get("content") != null ? (String) map.get("content") : "");
 
 
+                String lastOperateTime = map.get("lastOperateTime") == null ? "" : map.get("lastOperateTime").toString();
+                //计算时间
+                String timeText = "";
+                if (lastOperateTime != null && !lastOperateTime.equals("")) {
+                    LocalDateTime time = LocalDateTime.parse(lastOperateTime, hmDtf);
+                    //计算与当前时间的间隔
+                    Duration duration = Duration.between(time, LocalDateTime.now());
+                    long days = duration.toDays();
+                    long hours = duration.toHours() % 24;
+                    long minutes = duration.toMinutes() % 60;
+                    //时间格式化
+                    if (days == 0) {
+                        if (hours == 0) {
+                            timeText =  minutes + "分";
+                        } else {
+                            timeText = hours + "小时" + minutes + "分";
+                        }
+                    } else {
+                        timeText = days + "天" + hours + "小时" + minutes + "分";
+                    }
+                }
+
                 // 审核状态
                 // 审核状态
                 Integer stateValue = (Integer) map.get("state");
                 Integer stateValue = (Integer) map.get("state");
                 String auditStatus = "";
                 String auditStatus = "";
@@ -14803,6 +14821,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 } else {
                 } else {
                     item.add("-");
                     item.add("-");
                 }
                 }
+                item.add(timeText);
+
                 item.add(auditStatus);
                 item.add(auditStatus);
                 
                 
                 dataList.add(item);
                 dataList.add(item);
@@ -14820,7 +14840,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
     }
 
 
     @Override
     @Override
-    public HttpRespMsg getReportGroupByDay(String startDate, String endDate, String userId, Integer departmentId, Integer projectId, Integer state, HttpServletRequest request) {
+    public HttpRespMsg getReportGroupByDay(String startDate, String endDate, String userId, Integer departmentId, Integer projectId, Integer state, Integer orderByAuditor, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
         try {
             String token = request.getHeader("Token");
             String token = request.getHeader("Token");
@@ -14878,14 +14898,15 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             
             
             // 查询按人按天汇总的数据
             // 查询按人按天汇总的数据
             List<Map<String, Object>> groupedReportList = reportMapper.getReportGroupByDay(
             List<Map<String, Object>> groupedReportList = reportMapper.getReportGroupByDay(
-                companyId, startDate, endDate, userId, departmentId, projectId, state, visibleDeptIds, pageStart, pageSize);
+                companyId, startDate, endDate, userId, projectId, state, visibleDeptIds, pageStart, pageSize, orderByAuditor);
 
 
             // 获取总数
             // 获取总数
             Integer totalCount = reportMapper.getReportGroupByDayCount(
             Integer totalCount = reportMapper.getReportGroupByDayCount(
-                companyId, startDate, endDate, userId, departmentId, projectId, state, visibleDeptIds);
+                companyId, startDate, endDate, userId, projectId, state, visibleDeptIds);
             
             
             // 获取考勤数据
             // 获取考勤数据
             DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
             DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            DateTimeFormatter hmDtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
             if (groupedReportList.size() > 0 && (timeType.getShowCorpwxCardtime() == 1 || timeType.getShowDdCardtime() == 1 || timeType.getSyncFanwei() == 1)) {
             if (groupedReportList.size() > 0 && (timeType.getShowCorpwxCardtime() == 1 || timeType.getShowDdCardtime() == 1 || timeType.getSyncFanwei() == 1)) {
                 List<String> dateList = groupedReportList.stream().map(m -> (String)m.get("reportDate")).distinct().collect(Collectors.toList());
                 List<String> dateList = groupedReportList.stream().map(m -> (String)m.get("reportDate")).distinct().collect(Collectors.toList());
                 String minDate = dateList.stream().min(Comparator.comparing(String::toString)).get();
                 String minDate = dateList.stream().min(Comparator.comparing(String::toString)).get();
@@ -14984,8 +15005,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     map.put("cardRecord", "");
                     map.put("cardRecord", "");
                 }
                 }
 
 
-                // 13. 审核流程 - auditWorkflow已在SQL中拼接
-                
+
                 // 14. 审核状态
                 // 14. 审核状态
                 Integer auditState = (Integer)map.get("auditState");
                 Integer auditState = (Integer)map.get("auditState");
                 String auditStatusText = "";
                 String auditStatusText = "";
@@ -15011,6 +15031,32 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                     }
                 }
                 }
                 map.put("auditStatusText", auditStatusText);
                 map.put("auditStatusText", auditStatusText);
+
+                //计算审核滞留时长
+                String auditWorkflow = (String)map.get("auditWorkflow");
+                if (auditWorkflow != null) {
+                    String[] array = auditWorkflow.split("->");
+                    String lastOperate = array[array.length - 1];
+                    String[] array2 = lastOperate.split(" ");
+                    String lastOperateTime = array2[0] + " " + array2[1];//最后一次操作时间
+                    // 日期格式化
+                    LocalDateTime lastOperateDate = LocalDateTime.parse(lastOperateTime, hmDtf);
+                    //计算距离现在的时间间隔
+                    Duration duration = Duration.between(lastOperateDate, LocalDateTime.now());
+                    long days = duration.toDays();
+                    long hours = duration.toHours() % 24;
+                    long minutes = duration.toMinutes() % 60;
+                    //时间格式化
+                    if (days == 0) {
+                        if (hours == 0) {
+                            map.put("timeText", minutes + "分");
+                        } else {
+                            map.put("timeText", hours + "小时" + minutes + "分");
+                        }
+                    } else {
+                        map.put("timeText", days + "天" + hours + "小时" + minutes + "分");
+                    }
+                }
             }
             }
             //处理加班申请
             //处理加班申请
             List<Overtime> overtimeList = userIds.size() > 0?overtimeMapper.selectList(new QueryWrapper<Overtime>().eq("company_id", companyId)
             List<Overtime> overtimeList = userIds.size() > 0?overtimeMapper.selectList(new QueryWrapper<Overtime>().eq("company_id", companyId)
@@ -15101,10 +15147,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             }
             }
             // 查询按人按天汇总的数据
             // 查询按人按天汇总的数据
             List<Map<String, Object>> groupedReportList = reportMapper.getReportGroupByDay(
             List<Map<String, Object>> groupedReportList = reportMapper.getReportGroupByDay(
-                    companyId, startDate, endDate, userId, departmentId, projectId, state, visibleDeptIds, null, null);
+                    companyId, startDate, endDate, userId, projectId, state, visibleDeptIds, null, null, null);
 
 
             // 获取考勤数据
             // 获取考勤数据
             DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
             DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            DateTimeFormatter hmDtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
             if (groupedReportList.size() > 0 && (timeType.getShowCorpwxCardtime() == 1 || timeType.getShowDdCardtime() == 1 || timeType.getSyncFanwei() == 1)) {
             if (groupedReportList.size() > 0 && (timeType.getShowCorpwxCardtime() == 1 || timeType.getShowDdCardtime() == 1 || timeType.getSyncFanwei() == 1)) {
                 List<String> dateList = groupedReportList.stream().map(m -> (String)m.get("reportDate")).distinct().collect(Collectors.toList());
                 List<String> dateList = groupedReportList.stream().map(m -> (String)m.get("reportDate")).distinct().collect(Collectors.toList());
                 String minDate = dateList.stream().min(Comparator.comparing(String::toString)).get();
                 String minDate = dateList.stream().min(Comparator.comparing(String::toString)).get();
@@ -15230,7 +15277,34 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                     }
                 }
                 }
                 map.put("auditStatusText", auditStatusText);
                 map.put("auditStatusText", auditStatusText);
+
+                String auditWorkflow = (String)map.get("auditWorkflow");
+                //计算时间
+                if (auditWorkflow != null) {
+                    String[] array = auditWorkflow.split("->");
+                    String lastOperate = array[array.length - 1];
+                    String[] array2 = lastOperate.split(" ");
+                    String lastOperateTime = array2[0] + " " + array2[1];//最后一次操作时间
+                    // 日期格式化
+                    LocalDateTime lastOperateDate = LocalDateTime.parse(lastOperateTime, hmDtf);
+                    //计算距离现在的时间间隔
+                    Duration duration = Duration.between(lastOperateDate, LocalDateTime.now());
+                    long days = duration.toDays();
+                    long hours = duration.toHours() % 24;
+                    long minutes = duration.toMinutes() % 60;
+                    //时间格式化
+                    if (days == 0) {
+                        if (hours == 0) {
+                            map.put("timeText", minutes + "分");
+                        } else {
+                            map.put("timeText", hours + "小时" + minutes + "分");
+                        }
+                    } else {
+                        map.put("timeText", days + "天" + hours + "小时" + minutes + "分");
+                    }
+                }
             }
             }
+
             //处理加班申请
             //处理加班申请
             List<Overtime> overtimeList = userIds.size() > 0?overtimeMapper.selectList(new QueryWrapper<Overtime>().eq("company_id", companyId)
             List<Overtime> overtimeList = userIds.size() > 0?overtimeMapper.selectList(new QueryWrapper<Overtime>().eq("company_id", companyId)
                     .between("date", startDate, endDate).in("user_id", userIds)): new ArrayList<>();
                     .between("date", startDate, endDate).in("user_id", userIds)): new ArrayList<>();
@@ -15262,6 +15336,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             titles.add("[加班工时]明细条数");
             titles.add("[加班工时]明细条数");
             titles.add("审核流程");
             titles.add("审核流程");
             titles.add("当前审核人");
             titles.add("当前审核人");
+            titles.add("审核滞留时长");
             titles.add("审核状态");
             titles.add("审核状态");
 
 
             dataList.add(titles);
             dataList.add(titles);
@@ -15359,6 +15434,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 } else {
                 } else {
                     item.add("-");
                     item.add("-");
                 }
                 }
+                item.add((String)map.get("timeText"));
                 // 审核状态
                 // 审核状态
                 item.add(map.get("auditStatusText") != null ? (String) map.get("auditStatusText") : "");
                 item.add(map.get("auditStatusText") != null ? (String) map.get("auditStatusText") : "");
 
 
@@ -15367,7 +15443,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
 
             // 生成Excel文件导出
             // 生成Excel文件导出
             String fileName = "工时日报列表_" + startDate + "至" + endDate + "_" + System.currentTimeMillis();
             String fileName = "工时日报列表_" + startDate + "至" + endDate + "_" + System.currentTimeMillis();
-            System.out.println("到处日报文件==>" + fileName);
             return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo, dingding, fileName, dataList, path);
             return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo, dingding, fileName, dataList, path);
 
 
         } catch (Exception e) {
         } catch (Exception e) {

+ 47 - 10
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -71,10 +71,12 @@
         a.end_time  as endTime, d.name as subProjectName,d.code as subProjectCode,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,
         a.end_time  as endTime, d.name as subProjectName,d.code as subProjectCode,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,
         a.department_audit_state as departmentAuditState, a.stage, a.pic_str as picStr, multi_worktime as multiWorktime,a.is_dept_audit as isDeptAudit,a.group_audit_state as groupAuditState,task_group.incharger_id as inchargerId,a.project_audit_state as projectAuditState,a.audit_dept_managerid as deptAuditorName
         a.department_audit_state as departmentAuditState, a.stage, a.pic_str as picStr, multi_worktime as multiWorktime,a.is_dept_audit as isDeptAudit,a.group_audit_state as groupAuditState,task_group.incharger_id as inchargerId,a.project_audit_state as projectAuditState,a.audit_dept_managerid as deptAuditorName
         ,c.plate1 as plate1,c.plate2 as plate2,c.plate3 as plate3,c.plate4 as plate4,c.plate5 as plate5
         ,c.plate1 as plate1,c.plate2 as plate2,c.plate3 as plate3,c.plate4 as plate4,c.plate5 as plate5
-        , 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
+        , 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,
         ,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
         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,b.current_stage_name as stageName, extra_field4 as extraField4,extra_field5 as extraField5
         ,u2.name as projectManagerName,u2.corpwx_userid as projectManagerCorpwxUserId, multi_degr_id as multiDegrId,b.current_stage_name as stageName, extra_field4 as extraField4,extra_field5 as extraField5
+        ,(select DATE_FORMAT(max(rlog.operate_date), '%Y-%m-%d %H:%i')
+        from report_log rlog where rlog.creator_id = a.creator_id AND rlog.create_date = a.create_date)  AS lastOperateTime
         FROM report AS a
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
         LEFT JOIN project_separate AS ps on b.id=ps.id
@@ -111,7 +113,42 @@
                 #{deptId}
                 #{deptId}
             </foreach>
             </foreach>
         </if>
         </if>
-        ORDER BY a.creator_id, a.create_date desc
+        <if test="orderByAuditor != null">
+            ORDER BY audit_dept_managerid asc,a.creator_id, a.create_date desc
+        </if>
+        <if test="orderByAuditor == null">
+            ORDER BY a.creator_id, a.create_date desc
+        </if>
+        <if test="start != null and size != null">
+        limit #{start}, #{size}
+        </if>
+    </select>
+    <select id="getAllReportByDateForExportCount" resultType="java.lang.Integer">
+        SELECT count(1)
+        FROM report AS a
+        left join department on department.department_id = a.dept_id
+        WHERE a.company_id = #{companyId}
+        <if test="state == null">
+            and (a.state = 0 or a.state = 1 or a.state = 2)
+        </if>
+        <if test="state != null">
+            and a.state = #{state}
+        </if>
+        <if test="startDate != null and startDate != ''">
+            AND a.create_date between #{startDate} and #{endDate}
+        </if>
+        <if test="projectId != null">
+            AND a.project_id = #{projectId}
+        </if>
+        <if test="userId != null">
+            AND a.creator_id = #{userId}
+        </if>
+        <if test="branchDepartment != null and branchDepartment.size()>0">
+            AND department.department_id in
+            <foreach collection="branchDepartment" item="deptId" separator="," close=")" open="(" index="index">
+                #{deptId}
+            </foreach>
+        </if>
     </select>
     </select>
     <!--根据日期获取全部报告信息-->
     <!--根据日期获取全部报告信息-->
     <select id="getAllReportByDate" resultType="java.util.Map">
     <select id="getAllReportByDate" resultType="java.util.Map">
@@ -1940,9 +1977,6 @@
         <if test="userId != null and userId != ''">
         <if test="userId != null and userId != ''">
             AND r.creator_id = #{userId}
             AND r.creator_id = #{userId}
         </if>
         </if>
-        <if test="departmentId != null">
-            AND u.department_id = #{departmentId}
-        </if>
         <if test="projectId != null">
         <if test="projectId != null">
             AND r.project_id = #{projectId}
             AND r.project_id = #{projectId}
         </if>
         </if>
@@ -1952,8 +1986,14 @@
                 #{deptId}
                 #{deptId}
             </foreach>
             </foreach>
         </if>
         </if>
-        GROUP BY u.id, r.create_date
-        ORDER BY r.create_date DESC, u.name
+        <if test="orderByAuditor != null">
+            GROUP BY audit_dept_managerid, u.id, r.create_date
+            ORDER BY audit_dept_managerid asc, r.create_date DESC, u.name
+        </if>
+        <if test="orderByAuditor == null">
+            GROUP BY u.id, r.create_date
+            ORDER BY r.create_date DESC, u.name
+        </if>
         <if test="pageStart != null and pageSize != null">
         <if test="pageStart != null and pageSize != null">
             LIMIT #{pageStart}, #{pageSize}
             LIMIT #{pageStart}, #{pageSize}
         </if>
         </if>
@@ -1980,9 +2020,6 @@
         <if test="userId != null and userId != ''">
         <if test="userId != null and userId != ''">
             AND r.creator_id = #{userId}
             AND r.creator_id = #{userId}
         </if>
         </if>
-        <if test="departmentId != null">
-            AND u.department_id = #{departmentId}
-        </if>
         <if test="projectId != null">
         <if test="projectId != null">
             AND r.project_id = #{projectId}
             AND r.project_id = #{projectId}
         </if>
         </if>

Разлика између датотеке није приказан због своје велике величине
+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserGroupMapper.xml

@@ -8,11 +8,12 @@
         <result column="company_id" property="companyId" />
         <result column="company_id" property="companyId" />
         <result column="group_name" property="groupName" />
         <result column="group_name" property="groupName" />
         <result column="no_project_percent" property="noProjectPercent" />
         <result column="no_project_percent" property="noProjectPercent" />
+        <result column="overtime_hour_cost" property="overtimeHourCost" />
     </resultMap>
     </resultMap>
 
 
     <!-- 通用查询结果列 -->
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
-        id, company_id, group_name, no_project_percent
+        id, company_id, group_name, no_project_percent, overtime_hour_cost
     </sql>
     </sql>
 
 
 </mapper>
 </mapper>

+ 7 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/Expire.vue

@@ -3,16 +3,16 @@
         <div class="expire_par">
         <div class="expire_par">
             <div class="expire_container">
             <div class="expire_container">
                 <img class="expire_logo" src="../assets/image/login_logo.png" />
                 <img class="expire_logo" src="../assets/image/login_logo.png" />
-                <p class="expire_title">{{ $t('workingHoursHousekeeper') }}</p>
-                <p class="expire_tips">{{ $t('ninHaoNinGouMaiDeBanBenYiDaoQi') }}</p>
+                <p class="expire_title">工时管家</p>
+                <p class="expire_tips">您好,您购买的版本已到期</p>
                 <p class="expire_text">
                 <p class="expire_text">
-                    {{ $t('zunJingDeYongHuNinGouMaiDeBanBen') }} [{{versionList[versionId]}}] {{ $t('yiDaoQi') }}({{ $t('time.dueDate') }}{{expDate}})
-                    ,{{ $t('ruoXuJiXuShiYongQingQianWangQiYeWeiXinYingYongShiChangXuFeiGeiGuiGongSiDaiLaiBuBianJingQingLiangJie') }} 
+                    尊敬的用户,您购买的版本 [{{versionList[versionId]}}] 已到期(到期日期:{{expDate}})
+                    ,若需继续使用请前往企业微信应用市场续费给贵公司带来不便敬请谅解 
                 </p>
                 </p>
                 <!-- <p class="expire_kf">联系客服</p> -->
                 <!-- <p class="expire_kf">联系客服</p> -->
                 <div class="expire_service">
                 <div class="expire_service">
                     <p style="color: #333">
                     <p style="color: #333">
-                        {{ $t('qingYongQiYeWeiXinSaoMaTianJiaKeFu') }} </p>
+                        请用企业微信扫码添加客服 </p>
                     <img src="../assets/image/qwcode.png" />
                     <img src="../assets/image/qwcode.png" />
                     <p>
                     <p>
                         <span style="color: #333">QQ:</span
                         <span style="color: #333">QQ:</span
@@ -29,7 +29,7 @@ export default {
     data() {
     data() {
         return {
         return {
           versionId: 0,
           versionId: 0,
-          versionList: ['verson',this.$t('jiChuBan'),this.$t('zhuanYeBan'),this.$t('qiJianBan'),this.$t('jianZhuGongChengBan')],
+          versionList: ['verson','基础版','专业版','旗舰版','建筑工程版'],
           expDate: 'date',
           expDate: 'date',
         };
         };
     },
     },
@@ -92,4 +92,4 @@ export default {
         }
         }
     }
     }
 }
 }
-</style>
+</style>

+ 24 - 46
fhKeeper/formulahousekeeper/timesheet/src/views/Login.vue

@@ -16,13 +16,13 @@
               style="width: 80px; height: 80px"
               style="width: 80px; height: 80px"
             />
             />
           </div>
           </div>
-          <h3 class="title">{{ $t("workingHoursHousekeeper") }}</h3>
+          <h3 class="title">工时管家</h3>
           <el-form-item class="login-input" prop="username">
           <el-form-item class="login-input" prop="username">
             <el-input
             <el-input
               type="text"
               type="text"
               v-model="ruleForm.username"
               v-model="ruleForm.username"
               autocomplete="off"
               autocomplete="off"
-              :placeholder="$t('zhang-hao-shou-ji-hao')"
+              :placeholder="'账号/手机号'"
               clearable
               clearable
               prefix-icon="el-icon-user-solid"
               prefix-icon="el-icon-user-solid"
             ></el-input>
             ></el-input>
@@ -33,7 +33,7 @@
               v-model="ruleForm.password"
               v-model="ruleForm.password"
               @keyup.enter.native="handleSubmit"
               @keyup.enter.native="handleSubmit"
               autocomplete="off"
               autocomplete="off"
-              :placeholder="$t('mi-ma')"
+              :placeholder="'密码'"
               show-password
               show-password
               prefix-icon="el-icon-lock"
               prefix-icon="el-icon-lock"
             ></el-input>
             ></el-input>
@@ -44,11 +44,11 @@
               style="width: 100%"
               style="width: 100%"
               @click.native.prevent="handleSubmit"
               @click.native.prevent="handleSubmit"
               :loading="logining"
               :loading="logining"
-              >{{ $t("login") }}</el-button
+              >登录</el-button
             >
             >
           </el-form-item>
           </el-form-item>
           <div class="additional" v-if="wxHrefFlg">
           <div class="additional" v-if="wxHrefFlg">
-            <el-divider content-position="center">{{ $t("huo") }}</el-divider>
+            <el-divider content-position="center"></el-divider>
           </div>
           </div>
           <div class="externalLanding" v-if="wxHrefFlg">
           <div class="externalLanding" v-if="wxHrefFlg">
             <div class="externalLanding_img" @click="wxworkCli()">
             <div class="externalLanding_img" @click="wxworkCli()">
@@ -64,9 +64,9 @@
               class="btn"
               class="btn"
               style="float: left"
               style="float: left"
               :underline="false"
               :underline="false"
-              >{{ $t("lian-xi-ke-fu") }}
+              >联系客服
               <div class="service">
               <div class="service">
-                <p style="color: #333">{{ $t("sao-ma-jia-ke-fu-wei-xin") }}</p>
+                <p style="color: #333">扫码加客服微信</p>
                 <img src="../assets/image/code.jpg" />
                 <img src="../assets/image/code.jpg" />
                 <p>
                 <p>
                   <span style="color: #333">QQ:</span
                   <span style="color: #333">QQ:</span
@@ -80,20 +80,20 @@
               @click="dialogVisible = true"
               @click="dialogVisible = true"
               :underline="false"
               :underline="false"
             >
             >
-              {{ $t("shi-yong-shuo-ming") }}
+              使用说明
             </el-link>
             </el-link>
             <el-link
             <el-link
               type="primary"
               type="primary"
               v-if="!isCorpWX"
               v-if="!isCorpWX"
               @click="jumpTo"
               @click="jumpTo"
               :underline="false"
               :underline="false"
-              >{{ $t("qi-ye-zhu-ce") }}</el-link
+              >企业注册</el-link
             >
             >
           </div>
           </div>
         </el-form>
         </el-form>
       </div>
       </div>
       <el-dialog
       <el-dialog
-        :title="$t('shi-yong-shuo-ming')"
+        title="使用说明"
         :visible.sync="dialogVisible"
         :visible.sync="dialogVisible"
         width="500px"
         width="500px"
       >
       >
@@ -129,7 +129,7 @@
         </p>
         </p>
       </el-dialog>
       </el-dialog>
       <el-dialog
       <el-dialog
-        :title="$t('qiYeWeiXinSaoMaDengLu')"
+        title="企业微信扫码登陆"
         :visible.sync="wxworkFlg"
         :visible.sync="wxworkFlg"
         width="500px"
         width="500px"
       >
       >
@@ -140,7 +140,7 @@
     </div>
     </div>
     <!-- 绑定企业微信的话显示这个 -->
     <!-- 绑定企业微信的话显示这个 -->
     <div class="qiweix" v-if="bindingqywx">
     <div class="qiweix" v-if="bindingqywx">
-      {{ $t("zhengZaiJinRuXiTong") }}
+      正在进入系统...
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
@@ -165,14 +165,14 @@ export default {
         username: [
         username: [
           {
           {
             required: true,
             required: true,
-            message: this.$t("peaseenterthe"),
+            message: "请输入",
             trigger: "blur",
             trigger: "blur",
           },
           },
         ],
         ],
         password: [
         password: [
           {
           {
             required: true,
             required: true,
-            message: this.$t("peaseenterthe"),
+            message: "请输入",
             trigger: "blur",
             trigger: "blur",
           },
           },
         ],
         ],
@@ -261,11 +261,7 @@ export default {
               this.$router.push({ path: user.moduleList[0].path });
               this.$router.push({ path: user.moduleList[0].path });
             } else {
             } else {
               //没有授权任何模块,需要提示用户
               //没有授权任何模块,需要提示用户
-              alert(
-                this.$t(
-                  "wuQuanFangWenQingLianXiGuanLiYuanWeiNinFenPeiQuanXian",
-                ),
-              );
+              alert("无权访问,请联系管理员为您分配权限");
             }
             }
           }
           }
         } else if (href.indexOf("errorMsg=") > 0) {
         } else if (href.indexOf("errorMsg=") > 0) {
@@ -305,9 +301,7 @@ export default {
             this.$router.push({ path: user.moduleList[0].path });
             this.$router.push({ path: user.moduleList[0].path });
           } else {
           } else {
             //没有授权任何模块,需要提示用户
             //没有授权任何模块,需要提示用户
-            alert(
-              this.$t("wuQuanFangWenQingLianXiGuanLiYuanWeiNinFenPeiQuanXian"),
-            );
+            alert("无权访问,请联系管理员为您分配权限");
           }
           }
         }
         }
       } else {
       } else {
@@ -564,11 +558,7 @@ export default {
               }
               }
             } else {
             } else {
               //没有授权任何模块,需要提示用户
               //没有授权任何模块,需要提示用户
-              alert(
-                this.$t(
-                  "wuQuanFangWenQingLianXiGuanLiYuanWeiNinFenPeiQuanXian",
-                ),
-              );
+              alert("无权访问,请联系管理员为您分配权限");
             }
             }
           } else {
           } else {
             this.$message({
             this.$message({
@@ -601,11 +591,7 @@ export default {
               this.$router.push({ path: user.moduleList[0].path });
               this.$router.push({ path: user.moduleList[0].path });
             } else {
             } else {
               //没有授权任何模块,需要提示用户
               //没有授权任何模块,需要提示用户
-              alert(
-                this.$t(
-                  "wuQuanFangWenQingLianXiGuanLiYuanWeiNinFenPeiQuanXian",
-                ),
-              );
+              alert("无权访问,请联系管理员为您分配权限");
             }
             }
           } else {
           } else {
             this.$message({
             this.$message({
@@ -649,11 +635,11 @@ export default {
                 if (res.data.moduleList.length == 0) {
                 if (res.data.moduleList.length == 0) {
                   this.$message({
                   this.$message({
                     message:
                     message:
-                      this.$t("qing-lian-xi-guan-li-yuan-wei") +
+                      "请联系管理员为" +
                       "\u3000" +
                       "\u3000" +
                       res.data.roleName +
                       res.data.roleName +
                       "\u3000" +
                       "\u3000" +
-                      this.$t("assignpermissions"),
+                      "分配权限",
                     type: "error",
                     type: "error",
                   });
                   });
                   return;
                   return;
@@ -713,11 +699,11 @@ export default {
             if (res.data.moduleList.length == 0) {
             if (res.data.moduleList.length == 0) {
               this.$message({
               this.$message({
                 message:
                 message:
-                  this.$t("qing-lian-xi-guan-li-yuan-wei") +
+                  "请联系管理员为" +
                   "\u3000" +
                   "\u3000" +
                   res.data.roleName +
                   res.data.roleName +
                   "\u3000" +
                   "\u3000" +
-                  this.$t("assignpermissions"),
+                  "分配权限",
                 type: "error",
                 type: "error",
               });
               });
               return;
               return;
@@ -735,11 +721,7 @@ export default {
                 sessionStorage.setItem("autoRoute", user.moduleList[0].path);
                 sessionStorage.setItem("autoRoute", user.moduleList[0].path);
               } else {
               } else {
                 //没有授权任何模块,需要提示用户
                 //没有授权任何模块,需要提示用户
-                alert(
-                  this.$t(
-                    "wuQuanFangWenQingLianXiGuanLiYuanWeiNinFenPeiQuanXian",
-                  ),
-                );
+                alert("无权访问,请联系管理员为您分配权限");
               }
               }
             }
             }
           } else {
           } else {
@@ -776,11 +758,7 @@ export default {
               this.$router.push({ path: user.moduleList[0].path });
               this.$router.push({ path: user.moduleList[0].path });
             } else {
             } else {
               //没有授权任何模块,需要提示用户
               //没有授权任何模块,需要提示用户
-              alert(
-                this.$t(
-                  "wuQuanFangWenQingLianXiGuanLiYuanWeiNinFenPeiQuanXian",
-                ),
-              );
+              alert("无权访问,请联系管理员为您分配权限");
             }
             }
           } else {
           } else {
             this.$message({
             this.$message({

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

@@ -965,6 +965,20 @@
               <el-option label="待审核" :value="0"></el-option>
               <el-option label="待审核" :value="0"></el-option>
               <el-option label="已驳回" :value="2"></el-option>
               <el-option label="已驳回" :value="2"></el-option>
             </el-select>
             </el-select>
+            <!-- 按审核人排序(工时日报表) -->
+            <el-checkbox
+              v-if="ins == 37"
+              v-model="dailyWorkHoursSortByAuditor"
+              @change="onDailyWorkHoursSortChange"
+              style="margin-left: 10px"
+            >按审核人排序</el-checkbox>
+            <!-- 按审核人排序(日报明细表) -->
+            <el-checkbox
+              v-if="ins == 38"
+              v-model="dailyDetailSortByAuditor"
+              @change="onDailyDetailSortChange"
+              style="margin-left: 10px"
+            >按审核人排序</el-checkbox>
             <!-- 月度财务报表单独筛选条件 -->
             <!-- 月度财务报表单独筛选条件 -->
             <template v-if="ins == 31">
             <template v-if="ins == 31">
               <div class="monthlyFinance">
               <div class="monthlyFinance">
@@ -2114,8 +2128,7 @@
                 <template
                 <template
                   v-if="
                   v-if="
                     user.companyId == 8555 ||
                     user.companyId == 8555 ||
-                    user.companyId == 5792 ||
-                    user.companyId == 10
+                    user.companyId == 5792
                   "
                   "
                 >
                 >
                   <div style="margin-bottom: 15px">
                   <div style="margin-bottom: 15px">
@@ -5847,7 +5860,7 @@
                   prop="auditorName"
                   prop="auditorName"
                   align="center"
                   align="center"
                   label="当前审核人"
                   label="当前审核人"
-                  width="120"
+                  width="140"
                 >
                 >
                   <template slot-scope="scope">
                   <template slot-scope="scope">
                     <span v-if="scope.row.auditStatusText == '待审核'">
                     <span v-if="scope.row.auditStatusText == '待审核'">
@@ -5861,6 +5874,19 @@
                     <span v-else>-</span>
                     <span v-else>-</span>
                   </template>
                   </template>
                 </el-table-column>
                 </el-table-column>
+                <el-table-column
+                  prop="auditorName"
+                  align="center"
+                  label="审核滞留时长"
+                  width="120"
+                >
+                  <template slot-scope="scope">
+                    <span v-if="scope.row.auditStatusText == '待审核'">
+                      {{ scope.row.timeText }}
+                    </span>
+                    <span v-else>-</span>
+                  </template>
+                </el-table-column>
                 <el-table-column
                 <el-table-column
                   prop="auditStatusText"
                   prop="auditStatusText"
                   align="center"
                   align="center"
@@ -6010,7 +6036,7 @@
                   prop="auditorName"
                   prop="auditorName"
                   align="center"
                   align="center"
                   label="当前审核人"
                   label="当前审核人"
-                  width="120"
+                  width="140"
                 >
                 >
                   <template slot-scope="scope">
                   <template slot-scope="scope">
                     <span v-if="scope.row.state == 0">
                     <span v-if="scope.row.state == 0">
@@ -6024,6 +6050,19 @@
                     <span v-else>-</span>
                     <span v-else>-</span>
                   </template>
                   </template>
                 </el-table-column>
                 </el-table-column>
+                <el-table-column
+                  prop="auditorName"
+                  align="center"
+                  label="审核滞留时长"
+                  width="120"
+                >
+                  <template slot-scope="scope">
+                    <span v-if="scope.row.auditStatusText == '待审核'">
+                      {{ scope.row.timeText }}
+                    </span>
+                    <span v-else>-</span>
+                  </template>
+                </el-table-column>
                 <el-table-column
                 <el-table-column
                   prop="auditStatus"
                   prop="auditStatus"
                   align="center"
                   align="center"
@@ -7882,10 +7921,12 @@ export default {
       // 工时日报表
       // 工时日报表
       dailyWorkHoursList: [],
       dailyWorkHoursList: [],
       dailyWorkHoursLoading: false,
       dailyWorkHoursLoading: false,
+      dailyWorkHoursSortByAuditor: false, // 工时日报表是否按审核人排序
 
 
       // 日报明细表
       // 日报明细表
       dailyDetailList: [],
       dailyDetailList: [],
       dailyDetailLoading: false,
       dailyDetailLoading: false,
+      dailyDetailSortByAuditor: false, // 日报明细表是否按审核人排序
 
 
       // 工时日报表/日报明细表状态筛选
       // 工时日报表/日报明细表状态筛选
       dailyState: "",
       dailyState: "",
@@ -9247,6 +9288,9 @@ export default {
         if (this.dailyState !== "" && this.dailyState !== null) {
         if (this.dailyState !== "" && this.dailyState !== null) {
           sl.state = this.dailyState;
           sl.state = this.dailyState;
         }
         }
+        if (this.dailyWorkHoursSortByAuditor) {
+          sl.orderByAuditor = 1;
+        }
       } else if (this.ins == 38) {
       } else if (this.ins == 38) {
         fName = `日报明细表.xlsx`;
         fName = `日报明细表.xlsx`;
         url = `/report/exportReportListForExport`;
         url = `/report/exportReportListForExport`;
@@ -9266,6 +9310,9 @@ export default {
         if (this.dailyState !== "" && this.dailyState !== null) {
         if (this.dailyState !== "" && this.dailyState !== null) {
           sl.state = this.dailyState;
           sl.state = this.dailyState;
         }
         }
+        if (this.dailyDetailSortByAuditor) {
+          sl.orderByAuditor = 1;
+        }
       } else if (this.ins == 39) {
       } else if (this.ins == 39) {
         fName = `项目薪资成本表.xlsx`;
         fName = `项目薪资成本表.xlsx`;
         url = `/project/exportTimeCostForTable`;
         url = `/project/exportTimeCostForTable`;
@@ -10789,6 +10836,12 @@ export default {
       }
       }
     },
     },
 
 
+    // 日报明细表按审核人排序勾选处理
+    onDailyDetailSortChange() {
+      this.page = 1;
+      this.getDailyDetail();
+    },
+
     // 获取日报明细表
     // 获取日报明细表
     getDailyDetail() {
     getDailyDetail() {
       this.dailyDetailLoading = true;
       this.dailyDetailLoading = true;
@@ -10811,6 +10864,9 @@ export default {
       if (this.dailyState !== "" && this.dailyState !== null) {
       if (this.dailyState !== "" && this.dailyState !== null) {
         parameter.state = this.dailyState;
         parameter.state = this.dailyState;
       }
       }
+      if (this.dailyDetailSortByAuditor) {
+        parameter.orderByAuditor = 1;
+      }
       this.postData(`/report/getReportListForExport`, parameter)
       this.postData(`/report/getReportListForExport`, parameter)
         .then((res) => {
         .then((res) => {
           this.dailyDetailList = res.data.list || [];
           this.dailyDetailList = res.data.list || [];
@@ -11977,6 +12033,12 @@ export default {
         });
         });
     },
     },
 
 
+    // 工时日报表按审核人排序勾选处理
+    onDailyWorkHoursSortChange() {
+      this.page = 1;
+      this.getDailyWorkHours();
+    },
+
     // 获取工时日报表
     // 获取工时日报表
     getDailyWorkHours() {
     getDailyWorkHours() {
       this.dailyWorkHoursLoading = true;
       this.dailyWorkHoursLoading = true;
@@ -11999,6 +12061,9 @@ export default {
       if (this.dailyState !== "" && this.dailyState !== null) {
       if (this.dailyState !== "" && this.dailyState !== null) {
         parameter.state = this.dailyState;
         parameter.state = this.dailyState;
       }
       }
+      if (this.dailyWorkHoursSortByAuditor) {
+        parameter.orderByAuditor = 1;
+      }
       this.postData(`/report/getReportGroupByDay`, parameter)
       this.postData(`/report/getReportGroupByDay`, parameter)
         .then((res) => {
         .then((res) => {
           this.dailyWorkHoursList = res.data.data || [];
           this.dailyWorkHoursList = res.data.data || [];

Разлика између датотеке није приказан због своје велике величине
+ 318 - 318
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue


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

@@ -13,9 +13,7 @@
               v-model="keyword"
               v-model="keyword"
               class="input-with-select"
               class="input-with-select"
               @keyup.enter.native="searchList"
               @keyup.enter.native="searchList"
-              :placeholder="
-                searchField == '1' ? $t('peaseenterthe') : $t('peaseenterthe')
-              "
+              placeholder="请输入"
               clearable="true"
               clearable="true"
               size="small"
               size="small"
             >
             >
@@ -23,13 +21,13 @@
                 v-model="searchField"
                 v-model="searchField"
                 style="width: 120px"
                 style="width: 120px"
                 slot="prepend"
                 slot="prepend"
-                :placeholder="$t('defaultText.pleaseChoose')"
+                placeholder="请选择"
               >
               >
                 <el-option
                 <el-option
-                  :label="$t('headerTop.projectName')"
+                  label="项目名称"
                   value="1"
                   value="1"
                 ></el-option>
                 ></el-option>
-                <el-option :label="$t('Itemno')" value="2"></el-option>
+                <el-option label="项目编号" value="2"></el-option>
               </el-select>
               </el-select>
               <el-button
               <el-button
                 slot="append"
                 slot="append"
@@ -42,12 +40,12 @@
         <!-- 分类筛选 -->
         <!-- 分类筛选 -->
         <el-form-item>
         <el-form-item>
           <span style="margin-left: 5px; margin-right: 5px; color: #606266">{{
           <span style="margin-left: 5px; margin-right: 5px; color: #606266">{{
-            $t("fen-lei")
+            "分类"
           }}</span>
           }}</span>
           <el-select
           <el-select
             v-model="statusClf"
             v-model="statusClf"
             style="width: 140px"
             style="width: 140px"
-            :placeholder="$t('defaultText.pleaseChoose')"
+            placeholder="请选择"
             clearable
             clearable
             @change="searchClfList"
             @change="searchClfList"
             size="small"
             size="small"
@@ -93,7 +91,7 @@
       </el-form>
       </el-form>
     </el-col>
     </el-col>
     <el-dialog
     <el-dialog
-      :title="$t('defaultText.pleaseEnterTheReason')"
+      title="请输入原因"
       v-if="denyReasonDialog"
       v-if="denyReasonDialog"
       :visible.sync="denyReasonDialog"
       :visible.sync="denyReasonDialog"
       :close-on-click-modal="false"
       :close-on-click-modal="false"
@@ -111,13 +109,13 @@
       </div>
       </div>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
         <el-button @click="denyReasonDialog = false">{{
         <el-button @click="denyReasonDialog = false">{{
-          $t("btn.cancel")
+          "取消"
         }}</el-button>
         }}</el-button>
         <el-button
         <el-button
           type="primary"
           type="primary"
           @click="deny()"
           @click="deny()"
           :disabled="!denyReasonRReason"
           :disabled="!denyReasonRReason"
-          >{{ $t("btn.determine") }}</el-button
+          >{{ "确定" }}</el-button
         >
         >
       </div>
       </div>
     </el-dialog>
     </el-dialog>

Разлика између датотеке није приказан због своје велике величине
+ 342 - 473
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue


+ 15 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/userGrouping/userGrouping.vue

@@ -10,6 +10,11 @@
       <el-table :data="tableData" border v-loading="tableLoading" style="width: 100%; height: 100%">
       <el-table :data="tableData" border v-loading="tableLoading" style="width: 100%; height: 100%">
         <el-table-column align="center" prop="groupName" label="分组名称"></el-table-column>
         <el-table-column align="center" prop="groupName" label="分组名称"></el-table-column>
         <el-table-column align="center" prop="noProjectPercent" label="非项目工时占比上限(%)"></el-table-column>
         <el-table-column align="center" prop="noProjectPercent" label="非项目工时占比上限(%)"></el-table-column>
+        <el-table-column align="center" prop="overtimeHourCost" label="加班时薪(元)" v-if="user.timeType && user.timeType.payOvertimeMode === 1">
+          <template slot-scope="scope">
+            {{ (scope.row.overtimeHourCost || 0).toFixed(2) }}
+          </template>
+        </el-table-column>
         <el-table-column align="center" prop="operation" label="操作" width="160">
         <el-table-column align="center" prop="operation" label="操作" width="160">
           <template slot-scope="scope">
           <template slot-scope="scope">
             <el-button size="small" @click="showGroupVisable(scope.row)">编辑</el-button>
             <el-button size="small" @click="showGroupVisable(scope.row)">编辑</el-button>
@@ -32,6 +37,11 @@
           <el-input-number v-model="editGroupForm.noProjectPercent" size="small" controls-position="right"
           <el-input-number v-model="editGroupForm.noProjectPercent" size="small" controls-position="right"
             :precision="0" :min="0" :max="100" class="flex1 textNumber" style="text-align: left;"></el-input-number>
             :precision="0" :min="0" :max="100" class="flex1 textNumber" style="text-align: left;"></el-input-number>
         </div>
         </div>
+        <div class="groupFormItem" v-if="user.timeType && user.timeType.payOvertimeMode === 1">
+          <div class="label">加班时薪(元)</div>
+          <el-input-number v-model="editGroupForm.overtimeHourCost" size="small" controls-position="right"
+            :precision="2" :min="0" :max="999999" class="flex1 textNumber" style="text-align: left;"></el-input-number>
+        </div>
       </div>
       </div>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
         <el-button @click="editGroupVisable = false">取 消</el-button>
         <el-button @click="editGroupVisable = false">取 消</el-button>
@@ -52,12 +62,14 @@ export default {
       tableLoading: false,
       tableLoading: false,
       editGroupVisable: false,
       editGroupVisable: false,
       editGroupBtnLoading: false,
       editGroupBtnLoading: false,
+      user: JSON.parse(sessionStorage.getItem("user")),
       tableData: [],
       tableData: [],
       editGroupForm: {
       editGroupForm: {
         id: '',
         id: '',
         companyId: '',
         companyId: '',
         groupName: '',
         groupName: '',
         noProjectPercent: 0,
         noProjectPercent: 0,
+        overtimeHourCost: 0,
       }
       }
     };
     };
   },
   },
@@ -119,6 +131,7 @@ export default {
           companyId: '',
           companyId: '',
           groupName: '',
           groupName: '',
           noProjectPercent: 0,
           noProjectPercent: 0,
+          overtimeHourCost: 0,
         }
         }
         this.editGroupVisable = true
         this.editGroupVisable = true
         return
         return
@@ -126,7 +139,8 @@ export default {
 
 
       this.editGroupForm = {
       this.editGroupForm = {
         ...row,
         ...row,
-        noProjectPercent: row.noProjectPercent || 0
+        noProjectPercent: row.noProjectPercent || 0,
+        overtimeHourCost: row.overtimeHourCost || 0,
       }
       }
       this.editGroupVisable = true
       this.editGroupVisable = true
     },
     },

+ 109 - 109
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/dailyReportReview.vue

@@ -4,16 +4,16 @@
       <div class="reviewTop">
       <div class="reviewTop">
           <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
           <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
               <el-form :inline="true">
               <el-form :inline="true">
-                  <el-form-item :label="$t('lable.department')" style="width: 165px">
-                      <el-cascader v-if="user.userNameNeedTranslate != 1" v-model="search.departmentIdArray" :placeholder="$t('defaultText.pleaseChoose')" style="width: 125px"
+                  <el-form-item :label="'部门'" style="width: 165px">
+                      <el-cascader v-if="user.userNameNeedTranslate != 1" v-model="search.departmentIdArray" :placeholder="'请选择'" style="width: 125px"
                       :options="option" :props="{ checkStrictly: false,expandTrigger: 'hover' }" :show-all-levels="false" clearable
                       :options="option" :props="{ checkStrictly: false,expandTrigger: 'hover' }" :show-all-levels="false" clearable
                       @change="getList(1)" size="mini"></el-cascader>
                       @change="getList(1)" size="mini"></el-cascader>
 
 
                       <vueCascader :size="'mini'" :widthStr="'125'" :clearable="true" :subject="option" :radios="false" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
                       <vueCascader :size="'mini'" :widthStr="'125'" :clearable="true" :subject="option" :radios="false" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
                   </el-form-item>
                   </el-form-item>
 
 
-                  <el-form-item :label="$t('tian-bao-ren')" style="width: 210px">
-                      <el-select v-if="user.userNameNeedTranslate != '1'" v-model="search.userIdArray" :placeholder="$t('defaultText.pleaseChoose')" clearable @visible-change="usersSearch" @remove-tag="usersSearch(false)" @clear="usersSearch(false)" filterable="true" size="mini" style="width: 150px" multiple collapse-tags>
+                  <el-form-item :label="'填报人'" style="width: 210px">
+                      <el-select v-if="user.userNameNeedTranslate != '1'" v-model="search.userIdArray" :placeholder="'请选择'" clearable @visible-change="usersSearch" @remove-tag="usersSearch(false)" @clear="usersSearch(false)" filterable="true" size="mini" style="width: 150px" multiple collapse-tags>
                           <el-option v-for="item in searchUsersList" :key="item.id" :label="item.name" :value="item.id">
                           <el-option v-for="item in searchUsersList" :key="item.id" :label="item.name" :value="item.id">
                               <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></span>
                               <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></span>
                               <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.name}}</span>
                               <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.name}}</span>
@@ -24,8 +24,8 @@
                       <!-- <selectCat :size="'size'" :subject="searchUsersList" :clearable="true" :filterable="true" @selectCal="selectCal"></selectCat> -->
                       <!-- <selectCat :size="'size'" :subject="searchUsersList" :clearable="true" :filterable="true" @selectCal="selectCal"></selectCat> -->
                   </el-form-item>
                   </el-form-item>
 
 
-                  <el-form-item :label="$t('other.reviewer')" style="width: 210px">
-                      <el-select v-if="user.userNameNeedTranslate != '1'" v-model="search.auditUserId" :filterable="true" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="usersSearch(false)" size="mini" style="width: 150px" collapse-tags>
+                  <el-form-item :label="'审核人'" style="width: 210px">
+                      <el-select v-if="user.userNameNeedTranslate != '1'" v-model="search.auditUserId" :filterable="true" :placeholder="'请选择'" clearable @change="usersSearch(false)" size="mini" style="width: 150px" collapse-tags>
                           <el-option v-for="item in searchUsersList" :key="item.id" :label="item.name" :value="item.id">
                           <el-option v-for="item in searchUsersList" :key="item.id" :label="item.name" :value="item.id">
                               <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></span>
                               <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></span>
                               <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.name}}</span>
                               <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.name}}</span>
@@ -35,8 +35,8 @@
                       <selectCat v-if="user.userNameNeedTranslate == '1'" :filterable="true" :size="'size'" :subject="searchUsersList" :clearable="true" :distinction="'2'" @selectCal="selectCal"></selectCat>
                       <selectCat v-if="user.userNameNeedTranslate == '1'" :filterable="true" :size="'size'" :subject="searchUsersList" :clearable="true" :distinction="'2'" @selectCal="selectCal"></selectCat>
                   </el-form-item>
                   </el-form-item>
 
 
-                  <el-form-item :label="$t('other.project')" style="width: 215px">
-                      <el-select v-model="search.projectId" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="getList()" filterable="true" size="mini" style="width: 175px" popper-class="projectSelectPopperClass">
+                  <el-form-item :label="'项目'" style="width: 215px">
+                      <el-select v-model="search.projectId" :placeholder="'请选择'" clearable @change="getList()" filterable="true" size="mini" style="width: 175px" popper-class="projectSelectPopperClass">
                           <el-option v-for="item in projectList" :key="item.id" :label="item.projectName + item.projectCode" :value="item.id">
                           <el-option v-for="item in projectList" :key="item.id" :label="item.projectName + item.projectCode" :value="item.id">
                               <span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
                               <span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
                               <span style="float: right;font-size: 13px;">{{ item.projectName }}</span>
                               <span style="float: right;font-size: 13px;">{{ item.projectName }}</span>
@@ -49,25 +49,25 @@
                   </el-form-item> -->
                   </el-form-item> -->
                   <!-- <div> -->
                   <!-- <div> -->
                       
                       
-                      <el-form-item :label="$t('weekDay.date')">
+                      <el-form-item :label="'日期'">
                           <!-- <el-date-picker v-model="search.date" :editable="false" format="yyyy-MM-dd" value-format="yyyy-MM-dd" 
                           <!-- <el-date-picker v-model="search.date" :editable="false" format="yyyy-MM-dd" value-format="yyyy-MM-dd" 
                           @change="getList()" :clearable="true" type="date" placeholder="选择工作日期"></el-date-picker> -->
                           @change="getList()" :clearable="true" type="date" placeholder="选择工作日期"></el-date-picker> -->
                           <el-date-picker
                           <el-date-picker
                               v-model="dataTime"
                               v-model="dataTime"
                               type="daterange"
                               type="daterange"
-                              :range-separator="$t('other.to')"
-                              :start-placeholder="$t('time.startDate')"
-                              :end-placeholder="$t('time.endDate')"
+                              :range-separator="'至'"
+                              :start-placeholder="'开始日期'"
+                              :end-placeholder="'结束日期'"
                               format="yyyy-MM-dd" value-format="yyyy-MM-dd" @change="dataTimes()" size="mini">
                               format="yyyy-MM-dd" value-format="yyyy-MM-dd" @change="dataTimes()" size="mini">
                           </el-date-picker>
                           </el-date-picker>
                       </el-form-item>
                       </el-form-item>
 
 
                       <el-form-item   style="margin-left:20px;">
                       <el-form-item   style="margin-left:20px;">
-                          <el-button @click="batchApprove(true)" style="margin-left:10px;" :loading="batchApproveLoading" :disabled="multipleSelection.length==0" size="mini">{{ $t('Batchthrough') }}</el-button>
-                          <el-button @click="batchApprove(false)"   :disabled="multipleSelection.length==0" size="mini">{{ $t('Batchrejected') }}</el-button>
+                          <el-button @click="batchApprove(true)" style="margin-left:10px;" :loading="batchApproveLoading" :disabled="multipleSelection.length==0" size="mini">{{ '批量通过' }}</el-button>
+                          <el-button @click="batchApprove(false)"   :disabled="multipleSelection.length==0" size="mini">{{ '批量驳回' }}</el-button>
                       </el-form-item>
                       </el-form-item>
                       <el-form-item style="margin-left:20px;">
                       <el-form-item style="margin-left:20px;">
-                      <el-link type="primary" @click="recordList(),recordDialogVisible = true,pageIndexList = 1,pageSizeList = 20">{{ $t('Auditrecords') }}</el-link>
+                      <el-link type="primary" @click="recordList(),recordDialogVisible = true,pageIndexList = 1,pageSizeList = 20">{{ '审核记录' }}</el-link>
                       </el-form-item>
                       </el-form-item>
                       <el-form-item style="margin-left:20px;" v-if="user.companyId == 469">
                       <el-form-item style="margin-left:20px;" v-if="user.companyId == 469">
                       <el-link type="primary" @click="exportListByState" :loading="exportLoading">导出待审核日报</el-link>
                       <el-link type="primary" @click="exportListByState" :loading="exportLoading">导出待审核日报</el-link>
@@ -99,104 +99,104 @@
                           </div>
                           </div>
                           <el-timeline-item v-for="(item,index) in props.row.data" :key="index">
                           <el-timeline-item v-for="(item,index) in props.row.data" :key="index">
                               <el-card shadow="never">
                               <el-card shadow="never">
-                                  <p>{{ $t('other.project') + ':' }}<b>{{item.projectCode+'/'+item.project}}<span v-if="item.subProjectName != null"> / {{item.subProjectName}}</span>
+                                  <p>{{ '项目' + ':' }}<b>{{item.projectCode+'/'+item.project}}<span v-if="item.subProjectName != null"> / {{item.subProjectName}}</span>
                                   <span style="margin-left:15px;color:#DAA520;" >[ 
                                   <span style="margin-left:15px;color:#DAA520;" >[ 
                                       <span v-if="user.timeType.reportAuditType == 7">
                                       <span v-if="user.timeType.reportAuditType == 7">
-                                          {{$t('other.reviewer')}}:<TranslationOpenData :configurationItems="{ openType: 'userName', openId: item.projectAuditorName, renderIndex: 0 }" /><span v-if="item.projectAuditState==1">√</span>
+                                          {{'审核人'}}:<TranslationOpenData :configurationItems="{ openType: 'userName', openId: item.projectAuditorName, renderIndex: 0 }" /><span v-if="item.projectAuditState==1">√</span>
                                           <span v-if="item.deptAuditorName">、</span>
                                           <span v-if="item.deptAuditorName">、</span>
                                           <TranslationOpenData :configurationItems="{ openType: 'userName', openId: item.deptAuditorName, renderIndex: 0 }" /><span v-if="item.departmentAuditState==1">√</span>
                                           <TranslationOpenData :configurationItems="{ openType: 'userName', openId: item.deptAuditorName, renderIndex: 0 }" /><span v-if="item.departmentAuditState==1">√</span>
                                       </span>
                                       </span>
                                       <span v-else>
                                       <span v-else>
                                           <span v-if="item.isDeptAudit==0">
                                           <span v-if="item.isDeptAudit==0">
                                               <span v-if="item.projectAuditState==0">
                                               <span v-if="item.projectAuditState==0">
-                                                  {{ user.companyId == 469?"待部门主管":$t('other.waitForTheProjectReviewer') }}<span v-if="item.projectAuditorName != null">(
+                                                  {{ user.companyId == 469?"待部门主管":'待项目审核人' }}<span v-if="item.projectAuditorName != null">(
                                                       <!-- {{item.projectAuditorName}} -->
                                                       <!-- {{item.projectAuditorName}} -->
                                                       <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.projectAuditorName'></TranslationOpenDataText></span>
                                                       <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.projectAuditorName'></TranslationOpenDataText></span>
                                                       <span v-if="user.userNameNeedTranslate != '1'">{{item.projectAuditorName}}</span>
                                                       <span v-if="user.userNameNeedTranslate != '1'">{{item.projectAuditorName}}</span>
-                                                      )</span>{{ $t('other.audit') }}
+                                                      )</span>{{ '审核' }}
                                               </span>
                                               </span>
                                               <span style="color:#32CD32;" v-else-if="item.projectAuditState==1">
                                               <span style="color:#32CD32;" v-else-if="item.projectAuditState==1">
-                                                  {{ user.companyId == 469?"待部门主管":$t('other.projectAuditor') }}<span v-if="item.projectAuditorName != null">(
+                                                  {{ user.companyId == 469?"待部门主管":'项目审核人' }}<span v-if="item.projectAuditorName != null">(
                                                       <!-- {{item.projectAuditorName}} -->
                                                       <!-- {{item.projectAuditorName}} -->
                                                       <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.projectAuditorName'></TranslationOpenDataText></span>
                                                       <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.projectAuditorName'></TranslationOpenDataText></span>
                                                       <span v-if="user.userNameNeedTranslate != '1'">{{item.projectAuditorName}}</span>
                                                       <span v-if="user.userNameNeedTranslate != '1'">{{item.projectAuditorName}}</span>
-                                                  )</span>{{ $t('state.approved') }}
+                                                  )</span>{{ '审核通过' }}
                                               </span>
                                               </span>
                                           </span>
                                           </span>
                                           <span v-else-if="item.isDeptAudit==1">
                                           <span v-else-if="item.isDeptAudit==1">
-                                              <!-- {{($t('other.await') +item.auditDeptName+('('+item.deptAuditorName+')')+ $t('other.audit'))}} -->
-                                              ({{$t('other.await')}}
+                                              <!-- {{('待' +item.auditDeptName+('('+item.deptAuditorName+')')+ '审核')}} -->
+                                              ({{'待'}}
                                               <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='departmentName' :openid='item.auditDeptName'></TranslationOpenDataText></span>
                                               <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='departmentName' :openid='item.auditDeptName'></TranslationOpenDataText></span>
                                               <span v-if="user.userNameNeedTranslate != '1'">{{item.auditDeptName}}</span>
                                               <span v-if="user.userNameNeedTranslate != '1'">{{item.auditDeptName}}</span>
                                               (<span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.deptAuditorName'></TranslationOpenDataText></span>
                                               (<span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.deptAuditorName'></TranslationOpenDataText></span>
                                               <span v-if="user.userNameNeedTranslate != '1'">{{item.deptAuditorName}}</span>)
                                               <span v-if="user.userNameNeedTranslate != '1'">{{item.deptAuditorName}}</span>)
-                                              {{$t('other.audit')}})
+                                              {{'审核'}})
                                           </span>
                                           </span>
                                       </span>]
                                       </span>]
                                   </span>
                                   </span>
                                   </b></p>
                                   </b></p>
-                                  <p v-if="user.timeType.reportAuditType == 6" >{{ $t('shenHeLiuCheng') }}<span v-if="item.auditorList && item.auditorList.length == 1">{{ $t('yiCengShenHe') }}(<span class="themeFontColor">{{ item.auditorList[0].name }}</span>)</span>
-                                  <span v-if="item.auditorList && item.auditorList.length == 2">{{ $t('liangCengShenHe') }}(<span class="themeFontColor">{{ item.auditorList[0].name }}->{{ item.auditorList[1].name }}</span>)</span>
-                                  <el-button size="small" @click="viewOneReport(item)" v-if="!item.auditorList">{{ $t('cha-kan') }}</el-button>
+                                  <p v-if="user.timeType.reportAuditType == 6" >{{ '审核流程:' }}<span v-if="item.auditorList && item.auditorList.length == 1">{{ '一层审核' }}(<span class="themeFontColor">{{ item.auditorList[0].name }}</span>)</span>
+                                  <span v-if="item.auditorList && item.auditorList.length == 2">{{ '两层审核' }}(<span class="themeFontColor">{{ item.auditorList[0].name }}->{{ item.auditorList[1].name }}</span>)</span>
+                                  <el-button size="small" @click="viewOneReport(item)" v-if="!item.auditorList">{{ '查看' }}</el-button>
                                   </p>
                                   </p>
                                   <p v-if="user.timeType.customDegreeActive==1 && (item.degree_id != null || item.multiDegrId != '[]')">{{user.timeType.customDegreeName}}:{{item.degreeName}}</p>
                                   <p v-if="user.timeType.customDegreeActive==1 && (item.degree_id != null || item.multiDegrId != '[]')">{{user.timeType.customDegreeName}}:{{item.degreeName}}</p>
                                   <p v-if="user.timeType.customDataActive==1">{{user.timeType.customDataName}}:{{item.customData}}</p>
                                   <p v-if="user.timeType.customDataActive==1">{{user.timeType.customDataName}}:{{item.customData}}</p>
                                   <p v-if="user.timeType.customTextActive==1">{{user.timeType.customTextName}}:{{item.customText}}</p>
                                   <p v-if="user.timeType.customTextActive==1">{{user.timeType.customTextName}}:{{item.customText}}</p>
                                   <p v-if="user.company.packageEngineering == 1">
                                   <p v-if="user.company.packageEngineering == 1">
-                                      {{ $t('other.professionalProgress') +':'}} <span style="margin-right:10px;" v-for="progressItem in item.professionProgressList" :key="progressItem.id">
+                                      {{ '专业进度' +':'}} <span style="margin-right:10px;" v-for="progressItem in item.professionProgressList" :key="progressItem.id">
                                           {{progressItem.professionName}}({{progressItem.progress}}%)
                                           {{progressItem.professionName}}({{progressItem.progress}}%)
-                                          <el-tooltip v-if="progressItem.auditState == 0"  :content="$t('state.WaitingAudit')" effect="light" placement="top">
+                                          <el-tooltip v-if="progressItem.auditState == 0"  :content="'待审核'" effect="light" placement="top">
                                           <i class="iconfont firerock-icondaibandengdaishenhe"></i>
                                           <i class="iconfont firerock-icondaibandengdaishenhe"></i>
                                           </el-tooltip>
                                           </el-tooltip>
-                                          <el-tooltip v-if="progressItem.auditState == 1" :content="$t('state.alreadyPassed')" effect="light" placement="top">
+                                          <el-tooltip v-if="progressItem.auditState == 1" :content="'已通过'" effect="light" placement="top">
                                           <i  class="iconfont firerock-iconshenhetongguo"></i>
                                           <i  class="iconfont firerock-iconshenhetongguo"></i>
                                           </el-tooltip>
                                           </el-tooltip>
-                                          <el-tooltip v-if="progressItem.auditState == 2" :content="$t('state.notThrough')" effect="light" placement="top">
+                                          <el-tooltip v-if="progressItem.auditState == 2" :content="'不通过'" effect="light" placement="top">
                                           <i  class="iconfont firerock-iconshenhebohui"></i>
                                           <i  class="iconfont firerock-iconshenhebohui"></i>
                                           </el-tooltip>
                                           </el-tooltip>
                                           </span> 
                                           </span> 
                                   </p>
                                   </p>
                                   <p v-if="user.companyId == yuzhongCompId">
                                   <p v-if="user.companyId == yuzhongCompId">
-                                                          <span>{{ $t('jiao-se') }}:{{item.extraField1? roleList.filter(r=>r.value == item.extraField1)[0].label:''}}</span>
-                                                      <span style="margin-left:10px;">{{ $t('gongZuoZhiZe') }}:{{ item.extraField2? item.extraField2Name:''}}</span>
-                                                      <span style="margin-left:10px;">{{ $t('gongZuoNeiRong') }}:{{ item.extraField3? item.extraField3Name:''}}</span></p>
+                                                          <span>{{ '角色' }}:{{item.extraField1? roleList.filter(r=>r.value == item.extraField1)[0].label:''}}</span>
+                                                      <span style="margin-left:10px;">{{ '工作职责' }}:{{ item.extraField2? item.extraField2Name:''}}</span>
+                                                      <span style="margin-left:10px;">{{ '工作内容' }}:{{ item.extraField3? item.extraField3Name:''}}</span></p>
                                   <p v-if="(user.companyId == 4811) && item.constructionStageStr">
                                   <p v-if="(user.companyId == 4811) && item.constructionStageStr">
                                         <span>施工分项工程 :{{item.constructionStageStr}}</span>
                                         <span>施工分项工程 :{{item.constructionStageStr}}</span>
                                   </p>
                                   </p>
-                                  <p v-if="item.taskId != null">{{$t('other.task')}}:{{item.taskName}}
-                                      <span style="margin-left:10px;" v-if="user.companyId==3092">-- {{ $t('fuWu') }}:{{ item.sapServiceName }}</span></p>
+                                  <p v-if="item.taskId != null">{{'任务'}}:{{item.taskName}}
+                                      <span style="margin-left:10px;" v-if="user.companyId==3092">-- {{ '服务' }}:{{ item.sapServiceName }}</span></p>
                                   <p v-if="item.groupId">
                                   <p v-if="item.groupId">
-                                      <span>{{$t('other.taskGroup')}}:{{item.groupName}}</span>
+                                      <span>{{'任务分组'}}:{{item.groupName}}</span>
                                       <!-- 阶段 -->
                                       <!-- 阶段 -->
-                                      <span v-if="item.stage != null && user.companyId != yuzhongCompId" style="margin-left:10px;"> {{$t('other.inputStage')}}:{{item.stage}}</span>
+                                      <span v-if="item.stage != null && user.companyId != yuzhongCompId" style="margin-left:10px;"> {{'投入阶段'}}:{{item.stage}}</span>
                                   </p>
                                   </p>
                                   <!-- 工单号,行号 -->
                                   <!-- 工单号,行号 -->
                                   <p v-if="user.timeType.reportExtraField4Name">{{ user.timeType.reportExtraField4Name }}: {{ item.extraField4 }}</p>
                                   <p v-if="user.timeType.reportExtraField4Name">{{ user.timeType.reportExtraField4Name }}: {{ item.extraField4 }}</p>
                                   <p v-if="user.timeType.reportExtraField5Name">{{ user.timeType.reportExtraField5Name }}: {{ item.extraField5 }}</p>
                                   <p v-if="user.timeType.reportExtraField5Name">{{ user.timeType.reportExtraField5Name }}: {{ item.extraField5 }}</p>
                                   <p v-if="user.company.companyName == '成都明夷电子科技有限公司'">
                                   <p v-if="user.company.companyName == '成都明夷电子科技有限公司'">
-                                      <span>{{ $t('lable.percentageOfTime') }} :{{ item.progress }}%</span>
+                                      <span>{{ '用时占比' }} :{{ item.progress }}%</span>
                                   </p>
                                   </p>
                                   <p v-else>
                                   <p v-else>
-                                      <span v-if="item.multiWorktime==1">{{ $t('other.project') }}</span>
-                                      <span>{{$t('time.duration')}}:</span>
+                                      <span v-if="item.multiWorktime==1">{{ '项目' }}</span>
+                                      <span>{{'时长'}}:</span>
                                       <span v-if="item.startTime">{{ item.startTime + '-' + item.endTime }}</span>
                                       <span v-if="item.startTime">{{ item.startTime + '-' + item.endTime }}</span>
                                       <span>{{item.time.toFixed(2)}}h </span>
                                       <span>{{item.time.toFixed(2)}}h </span>
                                       <span class="propsbtn" v-if="item.isOvertime === 1">
                                       <span class="propsbtn" v-if="item.isOvertime === 1">
-                                      <el-tag type="danger" size="mini" style="margin-left: 65px">{{ $t('other.WorkOvertime') }}<span v-if="item.overtimeHours">{{item.overtimeHours.toFixed(1)}}{{$t('time.hour')}}</span></el-tag></span>
+                                      <el-tag type="danger" size="mini" style="margin-left: 65px">{{ '加班' }}<span v-if="item.overtimeHours">{{item.overtimeHours.toFixed(1)}}{{'小时'}}</span></el-tag></span>
                                   </p>
                                   </p>
 
 
                                   <div v-if="item.multiWorktime==0">
                                   <div v-if="item.multiWorktime==0">
-                                  <p v-if="!user.timeType.hideContent">{{ $t('other.matters') }}:<span v-html="formatContent(item.content)"></span></p>
+                                  <p v-if="!user.timeType.hideContent">{{ '工作内容' }}:<span v-html="formatContent(item.content)"></span></p>
                                   </div>
                                   </div>
                                   <div v-if="item.multiWorktime==1" >
                                   <div v-if="item.multiWorktime==1" >
                                       <div v-for="(timeItem, tIndex) in item.worktimeList" :key="tIndex"
                                       <div v-for="(timeItem, tIndex) in item.worktimeList" :key="tIndex"
                                           style="border: 0.5px #ddd solid;margin:5px 0px;padding:5px; ">
                                           style="border: 0.5px #ddd solid;margin:5px 0px;padding:5px; ">
-                                          <p style="line-height:20px;margin:5px 0px;">{{$t('time.duration')}}:
+                                          <p style="line-height:20px;margin:5px 0px;">{{'时长'}}:
                                               <span v-if="item.reportTimeType == 2" style="margin-right:10px;">{{timeItem.startTime+'-'+timeItem.endTime}}</span>
                                               <span v-if="item.reportTimeType == 2" style="margin-right:10px;">{{timeItem.startTime+'-'+timeItem.endTime}}</span>
                                           {{timeItem.time.toFixed(1)}}h  
                                           {{timeItem.time.toFixed(1)}}h  
                                           <span v-if="timeItem.detail" style="margin-left:10px;"> {{timeItem.detail}} </span>
                                           <span v-if="timeItem.detail" style="margin-left:10px;"> {{timeItem.detail}} </span>
                                           </p>
                                           </p>
-                                          <p style="line-height:20px;margin:5px 0px;" v-if="!user.timeType.hideContent">{{ $t('other.matters') }}:<span v-html="formatContent(timeItem.content)"></span></p>
+                                          <p style="line-height:20px;margin:5px 0px;" v-if="!user.timeType.hideContent">{{ '工作内容' }}:<span v-html="formatContent(timeItem.content)"></span></p>
                                       </div>
                                       </div>
                                   </div>
                                   </div>
 
 
@@ -214,7 +214,7 @@
                   </template>
                   </template>
               </el-table-column>
               </el-table-column>
               
               
-              <el-table-column prop="name" :label="$t('lable.name')" sortable>
+              <el-table-column prop="name" :label="'姓名'" sortable>
                   <template slot-scope="scope">
                   <template slot-scope="scope">
                       <div>
                       <div>
                           <span v-if="user.userNameNeedTranslate == '1'">
                           <span v-if="user.userNameNeedTranslate == '1'">
@@ -226,7 +226,7 @@
                       </div>
                       </div>
                   </template>
                   </template>
               </el-table-column>
               </el-table-column>
-              <el-table-column prop="departmentName" :label="$t('lable.department')" sortable>
+              <el-table-column prop="departmentName" :label="'部门'" sortable>
                   <template slot-scope="scope">
                   <template slot-scope="scope">
                       <div>
                       <div>
                           <span v-if="user.userNameNeedTranslate == '1'">
                           <span v-if="user.userNameNeedTranslate == '1'">
@@ -238,12 +238,12 @@
                       </div>
                       </div>
                   </template>
                   </template>
               </el-table-column>
               </el-table-column>
-              <el-table-column prop="dateStr" :label="$t('weekDay.date')" sortable>
+              <el-table-column prop="dateStr" :label="'日期'" sortable>
                 <template slot-scope="scope">
                 <template slot-scope="scope">
                     {{scope.row.dateStr}} &nbsp; &nbsp; <el-tag v-if="!scope.row.isWorkDay">休</el-tag>
                     {{scope.row.dateStr}} &nbsp; &nbsp; <el-tag v-if="!scope.row.isWorkDay">休</el-tag>
                 </template>
                 </template>
               </el-table-column>
               </el-table-column>
-              <el-table-column prop="reportTime" :label="$t('screening.workTime') + '(h)'" v-if="user.companyId != 469">
+              <el-table-column prop="reportTime" :label="'工作时长' + '(h)'" v-if="user.companyId != 469">
                   <template slot-scope="scope">
                   <template slot-scope="scope">
                       {{scope.row.reportTime | amounts}}
                       {{scope.row.reportTime | amounts}}
                   </template>
                   </template>
@@ -253,7 +253,7 @@
                       <span :style="scope.row.abnormalTime?'color:red':''">{{scope.row.abnormalName}}</span>
                       <span :style="scope.row.abnormalTime?'color:red':''">{{scope.row.abnormalName}}</span>
                   </template>
                   </template>
               </el-table-column>
               </el-table-column>
-              <el-table-column width="320" prop="cardHours" :label="$t('workAttendance') + '(h)'" v-if="user.timeType.showCorpwxCardtime==1||user.timeType.showDdCardtime==1 || user.timeType.syncFanwei==1">
+              <el-table-column width="320" prop="cardHours" :label="'考勤时长' + '(h)'" v-if="user.timeType.showCorpwxCardtime==1||user.timeType.showDdCardtime==1 || user.timeType.syncFanwei==1">
                   <template slot-scope="scope">
                   <template slot-scope="scope">
                     <div style="display: flex;align-items: center;">
                     <div style="display: flex;align-items: center;">
                         <span v-if="scope.row.cardHours" :style="scope.row.cardHours != scope.row.reportTime?'color:red':''">
                         <span v-if="scope.row.cardHours" :style="scope.row.cardHours != scope.row.reportTime?'color:red':''">
@@ -297,61 +297,61 @@
                       </div>
                       </div>
                   </template>
                   </template>
               </el-table-column>
               </el-table-column>
-              <el-table-column prop="state" :label="$t('state.states')" sortable width="200">
+              <el-table-column prop="state" :label="'状态'" sortable width="200">
                   <template slot-scope="scope">
                   <template slot-scope="scope">
                       <span v-if="scope.row.state == 0" style="color:#DAA520;">
                       <span v-if="scope.row.state == 0" style="color:#DAA520;">
-                          <span v-if="user.timeType.reportAuditType == 7">{{ $t('state.WaitingAudit') }}</span>
+                          <span v-if="user.timeType.reportAuditType == 7">{{ '待审核' }}</span>
                           <span v-else>
                           <span v-else>
                               <span v-if="user.userNameNeedTranslate != '1'">
                               <span v-if="user.userNameNeedTranslate != '1'">
                                   <span v-if="user.company.companyName != '成都明夷电子科技有限公司'">
                                   <span v-if="user.company.companyName != '成都明夷电子科技有限公司'">
-                                      <!-- {{scope.row.isDeptAudit==0?$t('other.Tobereviewedbytheprojectreviewer'):($t('other.await')+scope.row.auditDeptName+('('+scope.row.deptAuditorName+')')+$t('other.audit'))}} -->
+                                      <!-- {{scope.row.isDeptAudit==0?'待项目审核人审核':('待'+scope.row.auditDeptName+('('+scope.row.deptAuditorName+')')+'审核')}} -->
                                       <span v-if="scope.row.isDeptAudit==0">
                                       <span v-if="scope.row.isDeptAudit==0">
                                           <span>
                                           <span>
-                                              {{ user.companyId == 469?"待部门主管":$t('other.waitForTheProjectReviewer') }}<span>(
+                                              {{ user.companyId == 469?"待部门主管":'待项目审核人' }}<span>(
                                                   <template v-for="(auditItem, auditindexs) in (scope.row.reviewerNames || [])">
                                                   <template v-for="(auditItem, auditindexs) in (scope.row.reviewerNames || [])">
                                                       <TranslationOpenDataText type='userName' :openid='auditItem'></TranslationOpenDataText>
                                                       <TranslationOpenDataText type='userName' :openid='auditItem'></TranslationOpenDataText>
                                                       <span v-if="auditindexs < scope.row.reviewerNames.length-1">,</span>
                                                       <span v-if="auditindexs < scope.row.reviewerNames.length-1">,</span>
                                                   </template>
                                                   </template>
-                                                  )</span>{{ $t('other.audit') }}
+                                                  )</span>{{ '审核' }}
                                           </span>
                                           </span>
                                       </span>
                                       </span>
                                       <span v-else>
                                       <span v-else>
-                                          {{ ($t('other.await')+scope.row.auditDeptName+('('+scope.row.deptAuditorName+')')+$t('other.audit')) }}
+                                          {{ ('待'+scope.row.auditDeptName+('('+scope.row.deptAuditorName+')')+'审核') }}
                                       </span>
                                       </span>
                                   </span>
                                   </span>
                                   <span v-else>
                                   <span v-else>
-                                      {{ $t('state.WaitingAudit') }}
+                                      {{ '待审核' }}
                                   </span>
                                   </span>
                               </span>
                               </span>
                               <span v-if="user.userNameNeedTranslate == '1'">
                               <span v-if="user.userNameNeedTranslate == '1'">
-                                  <!-- <span v-if="scope.row.isDeptAudit==0">{{$t('other.Tobereviewedbytheprojectreviewer')}}</span> -->
+                                  <!-- <span v-if="scope.row.isDeptAudit==0">{{'待项目审核人审核'}}</span> -->
                                    <span v-if="scope.row.isDeptAudit==0">
                                    <span v-if="scope.row.isDeptAudit==0">
                                       <span>
                                       <span>
-                                          {{ user.companyId == 469?"待部门主管":$t('other.waitForTheProjectReviewer') }}<span>(
+                                          {{ user.companyId == 469?"待部门主管":'待项目审核人' }}<span>(
                                               <template v-for="(auditItem, auditindexs) in (scope.row.reviewerNames || [])">
                                               <template v-for="(auditItem, auditindexs) in (scope.row.reviewerNames || [])">
                                                   <TranslationOpenDataText type='userName' :openid='auditItem'></TranslationOpenDataText>
                                                   <TranslationOpenDataText type='userName' :openid='auditItem'></TranslationOpenDataText>
                                                   <span v-if="auditindexs < scope.row.reviewerNames.length-1">,</span>
                                                   <span v-if="auditindexs < scope.row.reviewerNames.length-1">,</span>
                                               </template>
                                               </template>
-                                              )</span>{{ $t('other.audit') }}
+                                              )</span>{{ '审核' }}
                                       </span>
                                       </span>
                                    </span>
                                    </span>
                                   <span v-else>
                                   <span v-else>
-                                      {{$t('other.await')}}
+                                      {{'待'}}
                                       <TranslationOpenDataText type='departmentName' :openid='scope.row.auditDeptName'></TranslationOpenDataText>
                                       <TranslationOpenDataText type='departmentName' :openid='scope.row.auditDeptName'></TranslationOpenDataText>
                                       (<TranslationOpenDataText type='userName' :openid='scope.row.deptAuditorName'></TranslationOpenDataText>)
                                       (<TranslationOpenDataText type='userName' :openid='scope.row.deptAuditorName'></TranslationOpenDataText>)
-                                      {{$t('other.audit')}}
+                                      {{'审核'}}
                                   </span>
                                   </span>
                               </span>
                               </span>
                           </span>
                           </span>
                       </span>
                       </span>
-                      <span v-else-if="scope.row.state == 1" style="color:#32CD32;">{{ $t('state.alreadyPassed') }}</span>
-                      <span v-else-if="scope.row.state == 2" style="color:#FF0000;">{{ $t('state.rejected') }}</span>
+                      <span v-else-if="scope.row.state == 1" style="color:#32CD32;">{{ '已通过' }}</span>
+                      <span v-else-if="scope.row.state == 2" style="color:#FF0000;">{{ '已驳回' }}</span>
                   </template>
                   </template>
               </el-table-column>
               </el-table-column>
-              <el-table-column :label="$t('operation')" width="220">
+              <el-table-column :label="'操作'" width="220">
                   <template slot-scope="scope">
                   <template slot-scope="scope">
-                      <el-button type="primary" :loading="logining" size="small" @click="approve(scope.row.id,scope.row.date, scope.row)">{{ $t('btn.through') }}</el-button>
-                      <el-button type="danger" :loading="logining" size="small" @click="showDenyDialog(scope.row.id,0,scope.row.dateStr, scope.row)">{{ $t('btn.rejected') }}</el-button>
+                      <el-button type="primary" :loading="logining" size="small" @click="approve(scope.row.id,scope.row.date, scope.row)">{{ '通过' }}</el-button>
+                      <el-button type="danger" :loading="logining" size="small" @click="showDenyDialog(scope.row.id,0,scope.row.dateStr, scope.row)">{{ '驳回' }}</el-button>
                   </template>
                   </template>
               </el-table-column>
               </el-table-column>
           </el-table>
           </el-table>
@@ -370,23 +370,23 @@
           >
           >
           </el-pagination>
           </el-pagination>
       </div>        <!--驳回弹出框 -->
       </div>        <!--驳回弹出框 -->
-      <el-dialog :title="$t('defaultText.pleaseEnterTheReason')"  v-if="denyReasonDialog" :visible.sync="denyReasonDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入原因'"  v-if="denyReasonDialog" :visible.sync="denyReasonDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <span style="color:red;">*</span><el-input type="textarea" v-model="denyForm.reason" rows="2" :placeholder="$t('defaultText.pleaseEnterYourDecision')+(denyForm.i==0?$t('btn.rejected'):$t('btn.undo'))+$t('other.reason')" />
+              <span style="color:red;">*</span><el-input type="textarea" v-model="denyForm.reason" rows="2" :placeholder="'请输入您决定'+(denyForm.i==0?'驳回':'撤销')+'原因'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="denyReasonDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="deny()" :disabled="user.timeType.forceRejectReason && !denyForm.reason">{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="denyReasonDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="deny()" :disabled="user.timeType.forceRejectReason && !denyForm.reason">{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       <!--批量驳回弹出框 -->
       <!--批量驳回弹出框 -->
-      <el-dialog :title="$t('defaultText.pleaseEnterTheReason')"  v-if="batchDenyDialog" :visible.sync="batchDenyDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入原因'"  v-if="batchDenyDialog" :visible.sync="batchDenyDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <span style="color:red;">*</span><el-input type="textarea" v-model="batchDenyData.reason" rows="2" :placeholder="$t('reasonforyourdecisiontoreject')" />
+              <span style="color:red;">*</span><el-input type="textarea" v-model="batchDenyData.reason" rows="2" :placeholder="'请输入您决定驳回的原因'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="batchDenyDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="batchDenyClick()" :loading="batchDenyLoading" :disabled="user.timeType.forceRejectReason && !batchDenyData.reason">{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="batchDenyDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="batchDenyClick()" :loading="batchDenyLoading" :disabled="user.timeType.forceRejectReason && !batchDenyData.reason">{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       <!--工具条-->
       <!--工具条-->
@@ -404,10 +404,10 @@
 
 
       
       
       <!-- 审核记录弹窗 -->
       <!-- 审核记录弹窗 -->
-      <el-dialog :title="$t('Auditrecords')" :visible.sync="recordDialogVisible" width="1200px" :before-close="handleClose">
+      <el-dialog :title="'审核记录'" :visible.sync="recordDialogVisible" width="1200px" :before-close="handleClose">
           <div style="height: 430px">
           <div style="height: 430px">
               <el-table :data="recordLists" style="width: 100%" height="400">
               <el-table :data="recordLists" style="width: 100%" height="400">
-                  <el-table-column prop="userName" :label="$t('other.operator')" width="120">
+                  <el-table-column prop="userName" :label="'操作人'" width="120">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
                               <span v-if="user.userNameNeedTranslate == '1'">
                               <span v-if="user.userNameNeedTranslate == '1'">
@@ -417,9 +417,9 @@
                           </div>
                           </div>
                       </template>
                       </template>
                   </el-table-column>
                   </el-table-column>
-                  <el-table-column prop="indate" :label="$t('AuditTime')" width="240"></el-table-column>
-                  <el-table-column prop="result" :label="$t('Reviewtheresults')" width="120" show-overflow-tooltip></el-table-column>
-                  <el-table-column prop="date" :label="$t('EmployeeDate')">
+                  <el-table-column prop="indate" :label="'审核时间'" width="240"></el-table-column>
+                  <el-table-column prop="result" :label="'审核结果'" width="120" show-overflow-tooltip></el-table-column>
+                  <el-table-column prop="date" :label="'员工/日期'">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
                               <div v-if="scope.row.membdateList.length > 1">
                               <div v-if="scope.row.membdateList.length > 1">
@@ -465,15 +465,15 @@
                           </div>
                           </div>
                       </template>
                       </template>
                   </el-table-column>
                   </el-table-column>
-                  <el-table-column prop="projectName" :label="$t('other.project')" width="200" show-overflow-tooltip></el-table-column>
-                  <el-table-column prop="date" :label="$t('operation')" width="180">
+                  <el-table-column prop="projectName" :label="'项目'" width="200" show-overflow-tooltip></el-table-column>
+                  <el-table-column prop="date" :label="'操作'" width="180">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
                               <template v-if="scope.row.membdateList.length < 2 && scope.row.flg">
                               <template v-if="scope.row.membdateList.length < 2 && scope.row.flg">
-                                  <el-button type="warning" size="mini" v-if="scope.row.membdateList[0].state == 1" @click="undoCli(scope.row, 0)">{{ $t('btn.undo') }}</el-button>
-                                  <el-link type="info" v-else :underline="false">{{scope.row.membdateList[0].state == 2 ? $t('state.rejected') : $t('state.undone')}}</el-link>
+                                  <el-button type="warning" size="mini" v-if="scope.row.membdateList[0].state == 1" @click="undoCli(scope.row, 0)">{{ '撤销' }}</el-button>
+                                  <el-link type="info" v-else :underline="false">{{scope.row.membdateList[0].state == 2 ? '已驳回' : '已撤销'}}</el-link>
                               </template>
                               </template>
-                              <el-button size="mini" v-if="scope.row.membdateList.length >= 2 && scope.row.flg" @click="detailsClick(scope.row, scope.$index)">{{ $t('details') }}</el-button>
+                              <el-button size="mini" v-if="scope.row.membdateList.length >= 2 && scope.row.flg" @click="detailsClick(scope.row, scope.$index)">{{ '详情' }}</el-button>
                               <!-- <el-button size="mini" v-if="scope.row.membdateList.length >= 2 && scope.row.flg" @click="batchRevokeClick(scope.row, scope.$index)">批量撤销</el-button> -->
                               <!-- <el-button size="mini" v-if="scope.row.membdateList.length >= 2 && scope.row.flg" @click="batchRevokeClick(scope.row, scope.$index)">批量撤销</el-button> -->
                           </div>
                           </div>
                       </template>
                       </template>
@@ -493,30 +493,30 @@
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       <!-- 审核记录撤销 -->
       <!-- 审核记录撤销 -->
-      <el-dialog :title="$t('defaultText.pleaseEnterTheReason')"  v-if="undoFormDialog" :visible.sync="undoFormDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入原因'"  v-if="undoFormDialog" :visible.sync="undoFormDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <el-input type="textarea" v-model="undoForm.reason" rows="2" :placeholder="$t('yourdecisiontorevoke')" />
+              <el-input type="textarea" v-model="undoForm.reason" rows="2" :placeholder="'请输入您决定撤销的原因'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="undoFormDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="clickCancel()" :loading="undoFormLoading">{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="undoFormDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="clickCancel()" :loading="undoFormLoading">{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       <!-- 审核记录批量撤销 -->
       <!-- 审核记录批量撤销 -->
-      <el-dialog :title="$t('defaultText.pleaseEnterTheReason')"  v-if="undoBathFormDialog" :visible.sync="undoBathFormDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入原因'"  v-if="undoBathFormDialog" :visible.sync="undoBathFormDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <el-input type="textarea" v-model="undoBathForm.reason" rows="2" :placeholder="$t('yourdecisiontorevoke')" />
+              <el-input type="textarea" v-model="undoBathForm.reason" rows="2" :placeholder="'请输入您决定撤销的原因'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="undoBathFormDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="clickBathCancel()" :loading="undoBathFormLoading">{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="undoBathFormDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="clickBathCancel()" :loading="undoBathFormLoading">{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       <!-- 审核记录详情列表 -->
       <!-- 审核记录详情列表 -->
-      <el-dialog :title="$t('Auditrecords')"  v-if="detailsDialog" :visible.sync="detailsDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'审核记录'"  v-if="detailsDialog" :visible.sync="detailsDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
               <el-table :data="detailsList" style="width: 100%" height="55vh">
               <el-table :data="detailsList" style="width: 100%" height="55vh">
-                  <el-table-column prop="userName" :label="$t('EmployeeDate')">
+                  <el-table-column prop="userName" :label="'员工/日期'">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
                               <span v-if="user.userNameNeedTranslate == '1'">
                               <span v-if="user.userNameNeedTranslate == '1'">
@@ -528,12 +528,12 @@
                           </div>
                           </div>
                       </template>
                       </template>
                   </el-table-column>
                   </el-table-column>
-                  <el-table-column prop="date" :label="$t('operation')" width="80">
+                  <el-table-column prop="date" :label="'操作'" width="80">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
-                              <el-button type="warning" size="mini" @click="undoCli(scope.row, 1)" v-if="scope.row.state == 1">{{ $t('btn.undo') }}</el-button>
+                              <el-button type="warning" size="mini" @click="undoCli(scope.row, 1)" v-if="scope.row.state == 1">{{ '撤销' }}</el-button>
                               <!-- <div >{{scope.row.state == 2 ? '已驳回' : '已撤销'}}</div> -->
                               <!-- <div >{{scope.row.state == 2 ? '已驳回' : '已撤销'}}</div> -->
-                              <el-link type="info" v-else :underline="false">{{scope.row.state == 2 ? $t('state.rejected') : $t('state.undone')}}</el-link>
+                              <el-link type="info" v-else :underline="false">{{scope.row.state == 2 ? '已驳回' : '已撤销'}}</el-link>
                           </div>
                           </div>
                       </template>
                       </template>
                   </el-table-column>
                   </el-table-column>
@@ -541,7 +541,7 @@
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
               <el-button  @click="batchRevokeClick()" size="mini">批量撤销</el-button>
               <el-button  @click="batchRevokeClick()" size="mini">批量撤销</el-button>
-              <el-button  @click="detailsDialog = false" size="mini">{{ $t('btn.cancel') }}</el-button>
+              <el-button  @click="detailsDialog = false" size="mini">{{ '取消' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
 
 
@@ -558,14 +558,14 @@
       </el-dialog>
       </el-dialog>
 
 
       <!-- 审核通过评价 -->
       <!-- 审核通过评价 -->
-      <el-dialog :title="$t('enterapassrating')" v-if="approveinDialog" :visible.sync="approveinDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入通过评价'" v-if="approveinDialog" :visible.sync="approveinDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <el-input type="textarea" v-model="approveinData.evaluate" rows="2" :placeholder="$t('defaultText.Pleaseenterthereviewyoudecidetopass')" />
+              <el-input type="textarea" v-model="approveinData.evaluate" rows="2" :placeholder="'请输入您决定通过的评价'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="approveinDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="batchApproveinfun()" v-if="isbatch">{{ $t('btn.determine') }}</el-button>
-              <el-button type="primary" @click="approveinfun()" v-else>{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="approveinDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="batchApproveinfun()" v-if="isbatch">{{ '确定' }}</el-button>
+              <el-button type="primary" @click="approveinfun()" v-else>{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
   </div>
   </div>
@@ -773,7 +773,7 @@
                   this.undoBathFormLoading = false
                   this.undoBathFormLoading = false
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       this.$message({
                       this.$message({
-                          message: this.$t('Revocationofsuccess'),
+                          message: '撤销成功',
                           type: "success"
                           type: "success"
                       });
                       });
                       this.undoBathFormDialog = false
                       this.undoBathFormDialog = false
@@ -843,7 +843,7 @@
                   this.undoFormLoading = false
                   this.undoFormLoading = false
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       this.$message({
                       this.$message({
-                          message: this.$t('Revocationofsuccess'),
+                          message: '撤销成功',
                           type: "success"
                           type: "success"
                       });
                       });
                       this.undoFormDialog = false
                       this.undoFormDialog = false
@@ -894,7 +894,7 @@
               res => {
               res => {
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       for (var i in res.data.records) {
                       for (var i in res.data.records) {
-                          res.data.records[i].result.indexOf(this.$t('btn.through')) == '-1' ? res.data.records[i].flg = false : res.data.records[i].flg = true
+                          res.data.records[i].result.indexOf('通过') == '-1' ? res.data.records[i].flg = false : res.data.records[i].flg = true
                       }
                       }
                       this.recordLists = res.data.records
                       this.recordLists = res.data.records
                       this.totals = res.data.total
                       this.totals = res.data.total
@@ -1203,7 +1203,7 @@
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       this.approveinDialog = false
                       this.approveinDialog = false
                       this.$message({
                       this.$message({
-                          message: this.$t('message.Reviewsucceeded'),
+                          message: '审核成功',
                           type: "success"
                           type: "success"
                       });
                       });
                       this.getList();
                       this.getList();
@@ -1285,7 +1285,7 @@
                   this.logining = false;
                   this.logining = false;
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       this.$message({
                       this.$message({
-                          message: this.denyForm.i==0?this.$t('message.rejectedsuccessfully'):this.$t('Revocationofsuccess'),
+                          message: this.denyForm.i==0?'驳回成功':'撤销成功',
                           type: "success"
                           type: "success"
                       });
                       });
                       this.getList();
                       this.getList();

+ 88 - 88
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/weeklyReportReview.vue

@@ -4,16 +4,16 @@
       <div class="reviewTop">
       <div class="reviewTop">
           <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
           <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
               <el-form :inline="true">
               <el-form :inline="true">
-                  <el-form-item :label="$t('lable.department')" style="width: 165px">
-                      <el-cascader v-if="user.userNameNeedTranslate != 1" v-model="search.departmentIdArray" :placeholder="$t('defaultText.pleaseChoose')" style="width: 125px"
+                  <el-form-item :label="'部门'" style="width: 165px">
+                      <el-cascader v-if="user.userNameNeedTranslate != 1" v-model="search.departmentIdArray" :placeholder="'请选择'" style="width: 125px"
                       :options="option" :props="{ checkStrictly: false,expandTrigger: 'hover' }" :show-all-levels="false" clearable
                       :options="option" :props="{ checkStrictly: false,expandTrigger: 'hover' }" :show-all-levels="false" clearable
                       @change="getList(1)" size="mini"></el-cascader>
                       @change="getList(1)" size="mini"></el-cascader>
 
 
                       <vueCascader :size="'mini'" :widthStr="'125'" :clearable="true" :subject="option" :radios="false" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
                       <vueCascader :size="'mini'" :widthStr="'125'" :clearable="true" :subject="option" :radios="false" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
                   </el-form-item>
                   </el-form-item>
 
 
-                  <el-form-item :label="$t('tian-bao-ren')" style="width: 210px">
-                      <el-select v-if="user.userNameNeedTranslate != '1'" v-model="search.userIdArray" :placeholder="$t('defaultText.pleaseChoose')" clearable @visible-change="usersSearch" @remove-tag="usersSearch(false)" @clear="usersSearch(false)" filterable="true" size="mini" style="width: 150px" multiple collapse-tags>
+                  <el-form-item :label="'填报人'" style="width: 210px">
+                      <el-select v-if="user.userNameNeedTranslate != '1'" v-model="search.userIdArray" :placeholder="'请选择'" clearable @visible-change="usersSearch" @remove-tag="usersSearch(false)" @clear="usersSearch(false)" filterable="true" size="mini" style="width: 150px" multiple collapse-tags>
                           <el-option v-for="item in searchUsersList" :key="item.id" :label="item.name" :value="item.id">
                           <el-option v-for="item in searchUsersList" :key="item.id" :label="item.name" :value="item.id">
                               <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></span>
                               <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></span>
                               <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.name}}</span>
                               <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.name}}</span>
@@ -24,8 +24,8 @@
                       <!-- <selectCat :size="'size'" :subject="searchUsersList" :clearable="true" :filterable="true" @selectCal="selectCal"></selectCat> -->
                       <!-- <selectCat :size="'size'" :subject="searchUsersList" :clearable="true" :filterable="true" @selectCal="selectCal"></selectCat> -->
                   </el-form-item>
                   </el-form-item>
 
 
-                  <el-form-item :label="$t('other.reviewer')" style="width: 210px">
-                      <el-select v-if="user.userNameNeedTranslate != '1'" v-model="search.auditUserId" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="usersSearch(false)" size="mini" style="width: 150px" collapse-tags>
+                  <el-form-item :label="'审核人'" style="width: 210px">
+                      <el-select v-if="user.userNameNeedTranslate != '1'" v-model="search.auditUserId" :placeholder="'请选择'" clearable @change="usersSearch(false)" size="mini" style="width: 150px" collapse-tags>
                           <el-option v-for="item in searchUsersList" :key="item.id" :label="item.name" :value="item.id">
                           <el-option v-for="item in searchUsersList" :key="item.id" :label="item.name" :value="item.id">
                               <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></span>
                               <span style="float: left" v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></span>
                               <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.name}}</span>
                               <span style="float: left" v-if="user.userNameNeedTranslate != '1'">{{item.name}}</span>
@@ -35,31 +35,31 @@
                       <selectCat v-if="user.userNameNeedTranslate == '1'" :filterable="true" :size="'size'" :subject="searchUsersList" :clearable="true" :distinction="'2'" @selectCal="selectCal"></selectCat>
                       <selectCat v-if="user.userNameNeedTranslate == '1'" :filterable="true" :size="'size'" :subject="searchUsersList" :clearable="true" :distinction="'2'" @selectCal="selectCal"></selectCat>
                   </el-form-item>
                   </el-form-item>
 
 
-                  <el-form-item :label="$t('other.project')" style="width: 215px">
-                      <el-select v-model="search.projectId" :placeholder="$t('defaultText.pleaseChoose')" clearable @change="getList()" filterable="true" size="mini" style="width: 175px" popper-class="projectSelectPopperClass">
+                  <el-form-item :label="'项目'" style="width: 215px">
+                      <el-select v-model="search.projectId" :placeholder="'请选择'" clearable @change="getList()" filterable="true" size="mini" style="width: 175px" popper-class="projectSelectPopperClass">
                           <el-option v-for="item in projectList" :key="item.id" :label="item.projectName + item.projectCode" :value="item.id">
                           <el-option v-for="item in projectList" :key="item.id" :label="item.projectName + item.projectCode" :value="item.id">
                               <span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
                               <span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
                               <span style="float: right;font-size: 13px;">{{ item.projectName }}</span>
                               <span style="float: right;font-size: 13px;">{{ item.projectName }}</span>
                           </el-option>
                           </el-option>
                       </el-select>
                       </el-select>
                   </el-form-item>
                   </el-form-item>
-                      <el-form-item :label="$t('weekDay.date')" v-if="false">
+                      <el-form-item :label="'日期'" v-if="false">
                           <el-date-picker
                           <el-date-picker
                               v-model="dataTime"
                               v-model="dataTime"
                               type="daterange"
                               type="daterange"
-                              :range-separator="$t('other.to')"
-                              :start-placeholder="$t('time.startDate')"
-                              :end-placeholder="$t('time.endDate')"
+                              :range-separator="'至'"
+                              :start-placeholder="'开始日期'"
+                              :end-placeholder="'结束日期'"
                               format="yyyy-MM-dd" value-format="yyyy-MM-dd" @change="dataTimes()" size="mini">
                               format="yyyy-MM-dd" value-format="yyyy-MM-dd" @change="dataTimes()" size="mini">
                           </el-date-picker>
                           </el-date-picker>
                       </el-form-item>
                       </el-form-item>
 
 
                       <el-form-item   style="margin-left:20px;">
                       <el-form-item   style="margin-left:20px;">
-                          <el-button @click="batchCallThrough()" style="margin-left:10px;" :loading="batchApproveLoading" :disabled="multipleSelection.length==0" size="mini">{{ $t('Batchthrough') }}</el-button>
-                          <el-button @click="batchRejection()"   :disabled="multipleSelection.length==0" size="mini">{{ $t('Batchrejected') }}</el-button>
+                          <el-button @click="batchCallThrough()" style="margin-left:10px;" :loading="batchApproveLoading" :disabled="multipleSelection.length==0" size="mini">{{ '批量通过' }}</el-button>
+                          <el-button @click="batchRejection()"   :disabled="multipleSelection.length==0" size="mini">{{ '批量驳回' }}</el-button>
                       </el-form-item>
                       </el-form-item>
                       <el-form-item style="margin-left:20px;">
                       <el-form-item style="margin-left:20px;">
-                      <el-link type="primary" @click="recordList(),recordDialogVisible = true,pageIndexList = 1,pageSizeList = 20">{{ $t('Auditrecords') }}</el-link>
+                      <el-link type="primary" @click="recordList(),recordDialogVisible = true,pageIndexList = 1,pageSizeList = 20">{{ '审核记录' }}</el-link>
                       </el-form-item>
                       </el-form-item>
                       <el-form-item style="margin-left:20px;" v-if="user.companyId == 469">
                       <el-form-item style="margin-left:20px;" v-if="user.companyId == 469">
                       <el-link type="primary" @click="exportListByState" :loading="exportLoading">导出待审核日报</el-link>
                       <el-link type="primary" @click="exportListByState" :loading="exportLoading">导出待审核日报</el-link>
@@ -131,31 +131,31 @@
           >
           >
           </el-pagination>
           </el-pagination>
       </div>        <!--驳回弹出框 -->
       </div>        <!--驳回弹出框 -->
-      <el-dialog :title="$t('defaultText.pleaseEnterTheReason')"  v-if="denyReasonDialog" :visible.sync="denyReasonDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入原因'"  v-if="denyReasonDialog" :visible.sync="denyReasonDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <span style="color:red;">*</span><el-input type="textarea" v-model="denyForm.reason" rows="2" :placeholder="$t('defaultText.pleaseEnterYourDecision')+(denyForm.i==0?$t('btn.rejected'):$t('btn.undo'))+$t('other.reason')" />
+              <span style="color:red;">*</span><el-input type="textarea" v-model="denyForm.reason" rows="2" :placeholder="'请输入您决定'+(denyForm.i==0?'驳回':'撤销')+'原因'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="denyReasonDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="deny()" :disabled="user.timeType.forceRejectReason && !denyForm.reason">{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="denyReasonDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="deny()" :disabled="user.timeType.forceRejectReason && !denyForm.reason">{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       <!--批量驳回弹出框 -->
       <!--批量驳回弹出框 -->
-      <el-dialog :title="$t('defaultText.pleaseEnterTheReason')"  v-if="batchDenyDialog" :visible.sync="batchDenyDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入原因'"  v-if="batchDenyDialog" :visible.sync="batchDenyDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <span style="color:red;">*</span><el-input type="textarea" v-model="batchDenyData.reason" rows="2" :placeholder="$t('reasonforyourdecisiontoreject')" />
+              <span style="color:red;">*</span><el-input type="textarea" v-model="batchDenyData.reason" rows="2" :placeholder="'请输入您决定驳回的原因'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="batchDenyDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="batchDenyClick()" :loading="batchDenyLoading" :disabled="user.timeType.forceRejectReason && !batchDenyData.reason">{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="batchDenyDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="batchDenyClick()" :loading="batchDenyLoading" :disabled="user.timeType.forceRejectReason && !batchDenyData.reason">{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       
       
       <!-- 审核记录弹窗 -->
       <!-- 审核记录弹窗 -->
-      <el-dialog :title="$t('Auditrecords')" :visible.sync="recordDialogVisible" width="1200px" :before-close="handleClose">
+      <el-dialog :title="'审核记录'" :visible.sync="recordDialogVisible" width="1200px" :before-close="handleClose">
           <div style="height: 430px">
           <div style="height: 430px">
               <el-table :data="recordLists" style="width: 100%" height="400">
               <el-table :data="recordLists" style="width: 100%" height="400">
-                  <el-table-column prop="userName" :label="$t('other.operator')" width="120">
+                  <el-table-column prop="userName" :label="'操作人'" width="120">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
                               <span v-if="user.userNameNeedTranslate == '1'">
                               <span v-if="user.userNameNeedTranslate == '1'">
@@ -165,9 +165,9 @@
                           </div>
                           </div>
                       </template>
                       </template>
                   </el-table-column>
                   </el-table-column>
-                  <el-table-column prop="indate" :label="$t('AuditTime')" width="240"></el-table-column>
-                  <el-table-column prop="result" :label="$t('Reviewtheresults')" width="120" show-overflow-tooltip></el-table-column>
-                  <el-table-column prop="date" :label="$t('EmployeeDate')">
+                  <el-table-column prop="indate" :label="'审核时间'" width="240"></el-table-column>
+                  <el-table-column prop="result" :label="'审核结果'" width="120" show-overflow-tooltip></el-table-column>
+                  <el-table-column prop="date" :label="'员工/日期'">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
                               <div v-if="scope.row.membdateList.length > 1">
                               <div v-if="scope.row.membdateList.length > 1">
@@ -213,15 +213,15 @@
                           </div>
                           </div>
                       </template>
                       </template>
                   </el-table-column>
                   </el-table-column>
-                  <el-table-column prop="projectName" :label="$t('other.project')" width="200" show-overflow-tooltip></el-table-column>
-                  <el-table-column prop="date" :label="$t('operation')" width="180">
+                  <el-table-column prop="projectName" :label="'项目'" width="200" show-overflow-tooltip></el-table-column>
+                  <el-table-column prop="date" :label="'操作'" width="180">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
                               <template v-if="scope.row.membdateList.length < 2 && scope.row.flg">
                               <template v-if="scope.row.membdateList.length < 2 && scope.row.flg">
-                                  <el-button type="warning" size="mini" v-if="scope.row.membdateList[0].state == 1" @click="undoCli(scope.row, 0)">{{ $t('btn.undo') }}</el-button>
-                                  <el-link type="info" v-else :underline="false">{{scope.row.membdateList[0].state == 2 ? $t('state.rejected') : $t('state.undone')}}</el-link>
+                                  <el-button type="warning" size="mini" v-if="scope.row.membdateList[0].state == 1" @click="undoCli(scope.row, 0)">{{ '撤销' }}</el-button>
+                                  <el-link type="info" v-else :underline="false">{{scope.row.membdateList[0].state == 2 ? '已驳回' : '已撤销'}}</el-link>
                               </template>
                               </template>
-                              <el-button size="mini" v-if="scope.row.membdateList.length >= 2 && scope.row.flg" @click="detailsClick(scope.row, scope.$index)">{{ $t('details') }}</el-button>
+                              <el-button size="mini" v-if="scope.row.membdateList.length >= 2 && scope.row.flg" @click="detailsClick(scope.row, scope.$index)">{{ '详情' }}</el-button>
                               <!-- <el-button size="mini" v-if="scope.row.membdateList.length >= 2 && scope.row.flg" @click="batchRevokeClick(scope.row, scope.$index)">批量撤销</el-button> -->
                               <!-- <el-button size="mini" v-if="scope.row.membdateList.length >= 2 && scope.row.flg" @click="batchRevokeClick(scope.row, scope.$index)">批量撤销</el-button> -->
                           </div>
                           </div>
                       </template>
                       </template>
@@ -241,30 +241,30 @@
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       <!-- 审核记录撤销 -->
       <!-- 审核记录撤销 -->
-      <el-dialog :title="$t('defaultText.pleaseEnterTheReason')"  v-if="undoFormDialog" :visible.sync="undoFormDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入原因'"  v-if="undoFormDialog" :visible.sync="undoFormDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <el-input type="textarea" v-model="undoForm.reason" rows="2" :placeholder="$t('yourdecisiontorevoke')" />
+              <el-input type="textarea" v-model="undoForm.reason" rows="2" :placeholder="'请输入您决定撤销的原因'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="undoFormDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="clickCancel()" :loading="undoFormLoading">{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="undoFormDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="clickCancel()" :loading="undoFormLoading">{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       <!-- 审核记录批量撤销 -->
       <!-- 审核记录批量撤销 -->
-      <el-dialog :title="$t('defaultText.pleaseEnterTheReason')"  v-if="undoBathFormDialog" :visible.sync="undoBathFormDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入原因'"  v-if="undoBathFormDialog" :visible.sync="undoBathFormDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <el-input type="textarea" v-model="undoBathForm.reason" rows="2" :placeholder="$t('yourdecisiontorevoke')" />
+              <el-input type="textarea" v-model="undoBathForm.reason" rows="2" :placeholder="'请输入您决定撤销的原因'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="undoBathFormDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="clickBathCancel()" :loading="undoBathFormLoading">{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="undoBathFormDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="clickBathCancel()" :loading="undoBathFormLoading">{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
       <!-- 审核记录详情列表 -->
       <!-- 审核记录详情列表 -->
-      <el-dialog :title="$t('Auditrecords')"  v-if="detailsDialog" :visible.sync="detailsDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'审核记录'"  v-if="detailsDialog" :visible.sync="detailsDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
               <el-table :data="detailsList" style="width: 100%" height="55vh">
               <el-table :data="detailsList" style="width: 100%" height="55vh">
-                  <el-table-column prop="userName" :label="$t('EmployeeDate')">
+                  <el-table-column prop="userName" :label="'员工/日期'">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
                               <span v-if="user.userNameNeedTranslate == '1'">
                               <span v-if="user.userNameNeedTranslate == '1'">
@@ -276,12 +276,12 @@
                           </div>
                           </div>
                       </template>
                       </template>
                   </el-table-column>
                   </el-table-column>
-                  <el-table-column prop="date" :label="$t('operation')" width="80">
+                  <el-table-column prop="date" :label="'操作'" width="80">
                       <template slot-scope="scope">
                       <template slot-scope="scope">
                           <div>
                           <div>
-                              <el-button type="warning" size="mini" @click="undoCli(scope.row, 1)" v-if="scope.row.state == 1">{{ $t('btn.undo') }}</el-button>
+                              <el-button type="warning" size="mini" @click="undoCli(scope.row, 1)" v-if="scope.row.state == 1">{{ '撤销' }}</el-button>
                               <!-- <div >{{scope.row.state == 2 ? '已驳回' : '已撤销'}}</div> -->
                               <!-- <div >{{scope.row.state == 2 ? '已驳回' : '已撤销'}}</div> -->
-                              <el-link type="info" v-else :underline="false">{{scope.row.state == 2 ? $t('state.rejected') : $t('state.undone')}}</el-link>
+                              <el-link type="info" v-else :underline="false">{{scope.row.state == 2 ? '已驳回' : '已撤销'}}</el-link>
                           </div>
                           </div>
                       </template>
                       </template>
                   </el-table-column>
                   </el-table-column>
@@ -289,124 +289,124 @@
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
               <el-button  @click="batchRevokeClick()" size="mini">批量撤销</el-button>
               <el-button  @click="batchRevokeClick()" size="mini">批量撤销</el-button>
-              <el-button  @click="detailsDialog = false" size="mini">{{ $t('btn.cancel') }}</el-button>
+              <el-button  @click="detailsDialog = false" size="mini">{{ '取消' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
 
 
       <!-- 审核通过评价 -->
       <!-- 审核通过评价 -->
-      <el-dialog :title="$t('enterapassrating')" v-if="approveinDialog" :visible.sync="approveinDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+      <el-dialog :title="'请输入通过评价'" v-if="approveinDialog" :visible.sync="approveinDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
           <div>
           <div>
-              <el-input type="textarea" v-model="approveinData.evaluate" rows="2" :placeholder="$t('defaultText.Pleaseenterthereviewyoudecidetopass')" />
+              <el-input type="textarea" v-model="approveinData.evaluate" rows="2" :placeholder="'请输入您决定通过的评价'" />
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="approveinDialog = false" >{{ $t('btn.cancel') }}</el-button>
-              <el-button type="primary" @click="batchApproveinfun()" v-if="isbatch">{{ $t('btn.determine') }}</el-button>
-              <el-button type="primary" @click="approveinfun()" v-else>{{ $t('btn.determine') }}</el-button>
+              <el-button  @click="approveinDialog = false" >{{ '取消' }}</el-button>
+              <el-button type="primary" @click="batchApproveinfun()" v-if="isbatch">{{ '确定' }}</el-button>
+              <el-button type="primary" @click="approveinfun()" v-else>{{ '确定' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
 
 
       <el-dialog title="查看详情" v-if="FilteredDataRowVisable" :visible.sync="FilteredDataRowVisable" :close-on-click-modal="false" customClass="customWidth" width="800px">
       <el-dialog title="查看详情" v-if="FilteredDataRowVisable" :visible.sync="FilteredDataRowVisable" :close-on-click-modal="false" customClass="customWidth" width="800px">
           <div>
           <div>
             <el-card shadow="never">
             <el-card shadow="never">
-                <p>{{ $t('other.project') + ':' }}<b>{{FilteredDataRow.projectCode+'/'+FilteredDataRow.project}}<span v-if="FilteredDataRow.subProjectName != null"> / {{FilteredDataRow.subProjectName}}</span>
+                <p>{{ '项目' + ':' }}<b>{{FilteredDataRow.projectCode+'/'+FilteredDataRow.project}}<span v-if="FilteredDataRow.subProjectName != null"> / {{FilteredDataRow.subProjectName}}</span>
                     <span style="margin-left:15px;color:#DAA520;" >[ 
                     <span style="margin-left:15px;color:#DAA520;" >[ 
                         <span v-if="user.timeType.reportAuditType == 7">
                         <span v-if="user.timeType.reportAuditType == 7">
-                            {{$t('other.reviewer')}}:<TranslationOpenData :configurationItems="{ openType: 'userName', openId: FilteredDataRow.projectAuditorName, renderIndex: 0 }" /><span v-if="FilteredDataRow.projectAuditState==1">√</span>
+                            {{'审核人'}}:<TranslationOpenData :configurationItems="{ openType: 'userName', openId: FilteredDataRow.projectAuditorName, renderIndex: 0 }" /><span v-if="FilteredDataRow.projectAuditState==1">√</span>
                             <span v-if="FilteredDataRow.deptAuditorName">、</span>
                             <span v-if="FilteredDataRow.deptAuditorName">、</span>
                             <TranslationOpenData :configurationItems="{ openType: 'userName', openId: FilteredDataRow.deptAuditorName, renderIndex: 0 }" /><span v-if="FilteredDataRow.departmentAuditState==1">√</span>
                             <TranslationOpenData :configurationItems="{ openType: 'userName', openId: FilteredDataRow.deptAuditorName, renderIndex: 0 }" /><span v-if="FilteredDataRow.departmentAuditState==1">√</span>
                         </span>
                         </span>
                         <span v-else>
                         <span v-else>
                             <span v-if="FilteredDataRow.isDeptAudit==0">
                             <span v-if="FilteredDataRow.isDeptAudit==0">
                                 <span v-if="FilteredDataRow.projectAuditState==0">
                                 <span v-if="FilteredDataRow.projectAuditState==0">
-                                    {{ user.companyId == 469?"待部门主管":$t('other.waitForTheProjectReviewer') }}<span v-if="FilteredDataRow.projectAuditorName != null">(
+                                    {{ user.companyId == 469?"待部门主管":'待项目审核人' }}<span v-if="FilteredDataRow.projectAuditorName != null">(
                                         <!-- {{FilteredDataRow.projectAuditorName}} -->
                                         <!-- {{FilteredDataRow.projectAuditorName}} -->
                                         <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='FilteredDataRow.projectAuditorName'></TranslationOpenDataText></span>
                                         <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='FilteredDataRow.projectAuditorName'></TranslationOpenDataText></span>
                                         <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.projectAuditorName}}</span>
                                         <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.projectAuditorName}}</span>
-                                        )</span>{{ $t('other.audit') }}
+                                        )</span>{{ '审核' }}
                                 </span>
                                 </span>
                                 <span style="color:#32CD32;" v-else-if="FilteredDataRow.projectAuditState==1">
                                 <span style="color:#32CD32;" v-else-if="FilteredDataRow.projectAuditState==1">
-                                    {{ user.companyId == 469?"待部门主管":$t('other.projectAuditor') }}<span v-if="FilteredDataRow.projectAuditorName != null">(
+                                    {{ user.companyId == 469?"待部门主管":'项目审核人' }}<span v-if="FilteredDataRow.projectAuditorName != null">(
                                         <!-- {{FilteredDataRow.projectAuditorName}} -->
                                         <!-- {{FilteredDataRow.projectAuditorName}} -->
                                         <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='FilteredDataRow.projectAuditorName'></TranslationOpenDataText></span>
                                         <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='FilteredDataRow.projectAuditorName'></TranslationOpenDataText></span>
                                         <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.projectAuditorName}}</span>
                                         <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.projectAuditorName}}</span>
-                                    )</span>{{ $t('state.approved') }}
+                                    )</span>{{ '审核通过' }}
                                 </span>
                                 </span>
                             </span>
                             </span>
                             <span v-else-if="FilteredDataRow.isDeptAudit==1">
                             <span v-else-if="FilteredDataRow.isDeptAudit==1">
-                                <!-- {{($t('other.await') +FilteredDataRow.auditDeptName+('('+FilteredDataRow.deptAuditorName+')')+ $t('other.audit'))}} -->
-                                ({{$t('other.await')}}
+                                <!-- {{('待' +FilteredDataRow.auditDeptName+('('+FilteredDataRow.deptAuditorName+')')+ '审核')}} -->
+                                ({{'待'}}
                                 <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='departmentName' :openid='FilteredDataRow.auditDeptName'></TranslationOpenDataText></span>
                                 <span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='departmentName' :openid='FilteredDataRow.auditDeptName'></TranslationOpenDataText></span>
                                 <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.auditDeptName}}</span>
                                 <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.auditDeptName}}</span>
                                 (<span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='FilteredDataRow.deptAuditorName'></TranslationOpenDataText></span>
                                 (<span v-if="user.userNameNeedTranslate == '1'"><TranslationOpenDataText type='userName' :openid='FilteredDataRow.deptAuditorName'></TranslationOpenDataText></span>
                                 <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.deptAuditorName}}</span>)
                                 <span v-if="user.userNameNeedTranslate != '1'">{{FilteredDataRow.deptAuditorName}}</span>)
-                                {{$t('other.audit')}})
+                                {{'审核'}})
                             </span>
                             </span>
                         </span>]
                         </span>]
                     </span>
                     </span>
                     </b>
                     </b>
                 </p>
                 </p>
-                <p v-if="user.timeType.reportAuditType == 6" >{{ $t('shenHeLiuCheng') }}<span v-if="FilteredDataRow.auditorList && FilteredDataRow.auditorList.length == 1">{{ $t('yiCengShenHe') }}(<span class="themeFontColor">{{ FilteredDataRow.auditorList[0].name }}</span>)</span>
-                <span v-if="FilteredDataRow.auditorList && FilteredDataRow.auditorList.length == 2">{{ $t('liangCengShenHe') }}(<span class="themeFontColor">{{ FilteredDataRow.auditorList[0].name }}->{{ FilteredDataRow.auditorList[1].name }}</span>)</span>
-                <el-button size="small" @click="viewOneReport(FilteredDataRow)" v-if="!FilteredDataRow.auditorList">{{ $t('cha-kan') }}</el-button>
+                <p v-if="user.timeType.reportAuditType == 6" >{{ '审核流程:' }}<span v-if="FilteredDataRow.auditorList && FilteredDataRow.auditorList.length == 1">{{ '一层审核' }}(<span class="themeFontColor">{{ FilteredDataRow.auditorList[0].name }}</span>)</span>
+                <span v-if="FilteredDataRow.auditorList && FilteredDataRow.auditorList.length == 2">{{ '两层审核' }}(<span class="themeFontColor">{{ FilteredDataRow.auditorList[0].name }}->{{ FilteredDataRow.auditorList[1].name }}</span>)</span>
+                <el-button size="small" @click="viewOneReport(FilteredDataRow)" v-if="!FilteredDataRow.auditorList">{{ '查看' }}</el-button>
                 </p>
                 </p>
                 <p v-if="user.timeType.customDegreeActive==1 && (FilteredDataRow.degree_id != null || FilteredDataRow.multiDegrId != '[]')">{{user.timeType.customDegreeName}}:{{FilteredDataRow.degreeName}}</p>
                 <p v-if="user.timeType.customDegreeActive==1 && (FilteredDataRow.degree_id != null || FilteredDataRow.multiDegrId != '[]')">{{user.timeType.customDegreeName}}:{{FilteredDataRow.degreeName}}</p>
                 <p v-if="user.timeType.customDataActive==1">{{user.timeType.customDataName}}:{{FilteredDataRow.customData}}</p>
                 <p v-if="user.timeType.customDataActive==1">{{user.timeType.customDataName}}:{{FilteredDataRow.customData}}</p>
                 <p v-if="user.timeType.customTextActive==1">{{user.timeType.customTextName}}:{{FilteredDataRow.customText}}</p>
                 <p v-if="user.timeType.customTextActive==1">{{user.timeType.customTextName}}:{{FilteredDataRow.customText}}</p>
                 <p v-if="user.company.packageEngineering == 1">
                 <p v-if="user.company.packageEngineering == 1">
-                    {{ $t('other.professionalProgress') +':'}} <span style="margin-right:10px;" v-for="progressItem in FilteredDataRow.professionProgressList" :key="progressItem.id">
+                    {{ '专业进度' +':'}} <span style="margin-right:10px;" v-for="progressItem in FilteredDataRow.professionProgressList" :key="progressItem.id">
                         {{progressItem.professionName}}({{progressItem.progress}}%)
                         {{progressItem.professionName}}({{progressItem.progress}}%)
-                        <el-tooltip v-if="progressItem.auditState == 0"  :content="$t('state.WaitingAudit')" effect="light" placement="top">
+                        <el-tooltip v-if="progressItem.auditState == 0"  :content="'待审核'" effect="light" placement="top">
                         <i class="iconfont firerock-icondaibandengdaishenhe"></i>
                         <i class="iconfont firerock-icondaibandengdaishenhe"></i>
                         </el-tooltip>
                         </el-tooltip>
-                        <el-tooltip v-if="progressItem.auditState == 1" :content="$t('state.alreadyPassed')" effect="light" placement="top">
+                        <el-tooltip v-if="progressItem.auditState == 1" :content="'已通过'" effect="light" placement="top">
                         <i  class="iconfont firerock-iconshenhetongguo"></i>
                         <i  class="iconfont firerock-iconshenhetongguo"></i>
                         </el-tooltip>
                         </el-tooltip>
-                        <el-tooltip v-if="progressItem.auditState == 2" :content="$t('state.notThrough')" effect="light" placement="top">
+                        <el-tooltip v-if="progressItem.auditState == 2" :content="'不通过'" effect="light" placement="top">
                         <i  class="iconfont firerock-iconshenhebohui"></i>
                         <i  class="iconfont firerock-iconshenhebohui"></i>
                         </el-tooltip>
                         </el-tooltip>
                         </span> 
                         </span> 
                 </p>
                 </p>
                 <p v-if="user.companyId == yuzhongCompId">
                 <p v-if="user.companyId == yuzhongCompId">
-                                        <span>{{ $t('jiao-se') }}:{{FilteredDataRow.extraField1? roleList.filter(r=>r.value == FilteredDataRow.extraField1)[0].label:''}}</span>
-                                    <span style="margin-left:10px;">{{ $t('gongZuoZhiZe') }}:{{ FilteredDataRow.extraField2? FilteredDataRow.extraField2Name:''}}</span>
-                                    <span style="margin-left:10px;">{{ $t('gongZuoNeiRong') }}:{{ FilteredDataRow.extraField3? FilteredDataRow.extraField3Name:''}}</span></p>
-                <p v-if="FilteredDataRow.taskId != null">{{$t('other.task')}}:{{FilteredDataRow.taskName}}
-                    <span style="margin-left:10px;" v-if="user.companyId==3092">-- {{ $t('fuWu') }}:{{ FilteredDataRow.sapServiceName }}</span></p>
+                                        <span>{{ '角色' }}:{{FilteredDataRow.extraField1? roleList.filter(r=>r.value == FilteredDataRow.extraField1)[0].label:''}}</span>
+                                    <span style="margin-left:10px;">{{ '工作职责' }}:{{ FilteredDataRow.extraField2? FilteredDataRow.extraField2Name:''}}</span>
+                                    <span style="margin-left:10px;">{{ '工作内容' }}:{{ FilteredDataRow.extraField3? FilteredDataRow.extraField3Name:''}}</span></p>
+                <p v-if="FilteredDataRow.taskId != null">{{'任务'}}:{{FilteredDataRow.taskName}}
+                    <span style="margin-left:10px;" v-if="user.companyId==3092">-- {{ '服务' }}:{{ FilteredDataRow.sapServiceName }}</span></p>
                 <p v-if="FilteredDataRow.groupId">
                 <p v-if="FilteredDataRow.groupId">
-                    <span>{{$t('other.taskGroup')}}:{{FilteredDataRow.groupName}}</span>
+                    <span>{{'任务分组'}}:{{FilteredDataRow.groupName}}</span>
                     <!-- 阶段 -->
                     <!-- 阶段 -->
-                    <span v-if="FilteredDataRow.stage != null && user.companyId != yuzhongCompId" style="margin-left:10px;"> {{$t('other.inputStage')}}:{{FilteredDataRow.stage}}</span>
+                    <span v-if="FilteredDataRow.stage != null && user.companyId != yuzhongCompId" style="margin-left:10px;"> {{'投入阶段'}}:{{FilteredDataRow.stage}}</span>
                 </p>
                 </p>
                 <p v-if="user.company.companyName == '成都明夷电子科技有限公司'">
                 <p v-if="user.company.companyName == '成都明夷电子科技有限公司'">
-                    <span>{{ $t('lable.percentageOfTime') }} :{{ FilteredDataRow.progress }}%</span>
+                    <span>{{ '用时占比' }} :{{ FilteredDataRow.progress }}%</span>
                 </p>
                 </p>
                 <p v-else>
                 <p v-else>
-                    <span v-if="FilteredDataRow.multiWorktime==1">{{ $t('other.project') }}</span>
-                    <span>{{$t('time.duration')}}:</span>
+                    <span v-if="FilteredDataRow.multiWorktime==1">{{ '项目' }}</span>
+                    <span>{{'时长'}}:</span>
                     <span v-if="FilteredDataRow.startTime">{{ FilteredDataRow.startTime + '-' + FilteredDataRow.endTime }}</span>
                     <span v-if="FilteredDataRow.startTime">{{ FilteredDataRow.startTime + '-' + FilteredDataRow.endTime }}</span>
                     <span>{{FilteredDataRow.time.toFixed(1)}}h </span>
                     <span>{{FilteredDataRow.time.toFixed(1)}}h </span>
                     <span class="propsbtn" v-if="FilteredDataRow.isOvertime === 1">
                     <span class="propsbtn" v-if="FilteredDataRow.isOvertime === 1">
-                    <el-tag type="danger" size="mini" style="margin-left: 65px">{{ $t('other.WorkOvertime') }}<span v-if="FilteredDataRow.overtimeHours">{{FilteredDataRow.overtimeHours.toFixed(1)}}{{$t('time.hour')}}</span></el-tag></span>
+                    <el-tag type="danger" size="mini" style="margin-left: 65px">{{ '加班' }}<span v-if="FilteredDataRow.overtimeHours">{{FilteredDataRow.overtimeHours.toFixed(1)}}{{'小时'}}</span></el-tag></span>
                 </p>
                 </p>
 
 
                 <div v-if="FilteredDataRow.multiWorktime==0">
                 <div v-if="FilteredDataRow.multiWorktime==0">
-                <p>{{ $t('other.matters') }}:<span v-html="formatContent(FilteredDataRow.content)"></span></p>
+                <p>{{ '工作内容' }}:<span v-html="formatContent(FilteredDataRow.content)"></span></p>
                 </div>
                 </div>
                 <div v-if="FilteredDataRow.multiWorktime==1" >
                 <div v-if="FilteredDataRow.multiWorktime==1" >
                     <div v-for="(timeItem, tIndex) in FilteredDataRow.worktimeList" :key="tIndex"
                     <div v-for="(timeItem, tIndex) in FilteredDataRow.worktimeList" :key="tIndex"
                         style="border: 0.5px #ddd solid;margin:5px 0px;padding:5px; ">
                         style="border: 0.5px #ddd solid;margin:5px 0px;padding:5px; ">
-                        <p style="line-height:20px;margin:5px 0px;">{{$t('time.duration')}}:
+                        <p style="line-height:20px;margin:5px 0px;">{{'时长'}}:
                             <span v-if="FilteredDataRow.reportTimeType == 2" style="margin-right:10px;">{{timeItem.startTime+'-'+timeItem.endTime}}</span>
                             <span v-if="FilteredDataRow.reportTimeType == 2" style="margin-right:10px;">{{timeItem.startTime+'-'+timeItem.endTime}}</span>
                         {{timeItem.time.toFixed(1)}}h  
                         {{timeItem.time.toFixed(1)}}h  
                         <span v-if="timeItem.detail" style="margin-left:10px;"> {{timeItem.detail}} </span>
                         <span v-if="timeItem.detail" style="margin-left:10px;"> {{timeItem.detail}} </span>
                         </p>
                         </p>
-                        <p style="line-height:20px;margin:5px 0px;">{{ $t('other.matters') }}:<span v-html="formatContent(timeItem.content)"></span></p>
+                        <p style="line-height:20px;margin:5px 0px;">{{ '工作内容' }}:<span v-html="formatContent(timeItem.content)"></span></p>
                     </div>
                     </div>
                 </div>
                 </div>
             </el-card>
             </el-card>
           </div>
           </div>
           <div slot="footer" class="dialog-footer">
           <div slot="footer" class="dialog-footer">
-              <el-button  @click="FilteredDataRowVisable = false" >{{ $t('btn.cancel') }}</el-button>
+              <el-button  @click="FilteredDataRowVisable = false" >{{ '取消' }}</el-button>
           </div>
           </div>
       </el-dialog>
       </el-dialog>
   </div>
   </div>
@@ -570,7 +570,7 @@
                   this.undoBathFormLoading = false
                   this.undoBathFormLoading = false
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       this.$message({
                       this.$message({
-                          message: this.$t('Revocationofsuccess'),
+                          message: '撤销成功',
                           type: "success"
                           type: "success"
                       });
                       });
                       this.undoBathFormDialog = false
                       this.undoBathFormDialog = false
@@ -640,7 +640,7 @@
                   this.undoFormLoading = false
                   this.undoFormLoading = false
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       this.$message({
                       this.$message({
-                          message: this.$t('Revocationofsuccess'),
+                          message: '撤销成功',
                           type: "success"
                           type: "success"
                       });
                       });
                       this.undoFormDialog = false
                       this.undoFormDialog = false
@@ -691,7 +691,7 @@
               res => {
               res => {
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       for (var i in res.data.records) {
                       for (var i in res.data.records) {
-                          res.data.records[i].result.indexOf(this.$t('btn.through')) == '-1' ? res.data.records[i].flg = false : res.data.records[i].flg = true
+                          res.data.records[i].result.indexOf('通过') == '-1' ? res.data.records[i].flg = false : res.data.records[i].flg = true
                       }
                       }
                       this.recordLists = res.data.records
                       this.recordLists = res.data.records
                       this.totals = res.data.total
                       this.totals = res.data.total
@@ -1125,7 +1125,7 @@
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       this.approveinDialog = false
                       this.approveinDialog = false
                       this.$message({
                       this.$message({
-                          message: this.$t('message.Reviewsucceeded'),
+                          message: '审核成功',
                           type: "success"
                           type: "success"
                       });
                       });
                       this.getList();
                       this.getList();
@@ -1207,7 +1207,7 @@
                   this.logining = false;
                   this.logining = false;
                   if (res.code == "ok") {
                   if (res.code == "ok") {
                       this.$message({
                       this.$message({
-                          message: this.denyForm.i==0?this.$t('message.rejectedsuccessfully'):this.$t('Revocationofsuccess'),
+                          message: this.denyForm.i==0?'驳回成功':'撤销成功',
                           type: "success"
                           type: "success"
                       });
                       });
                       this.getList();
                       this.getList();