Ver código fonte

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

Min 1 ano atrás
pai
commit
2bd0c3e4df
15 arquivos alterados com 214 adições e 124 exclusões
  1. 30 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  2. 62 60
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java
  3. 0 29
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  4. 13 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  5. 8 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportController.java
  6. 1 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ReportService.java
  7. 19 4
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanProcedureTotalServiceImpl.java
  8. 36 4
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  9. 2 2
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/application.yml
  10. 29 7
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/workView/fillReport.vue
  11. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue
  12. 5 1
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue
  13. 4 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue
  14. 1 9
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue
  15. 3 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/index/index.vue

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

@@ -516,10 +516,25 @@ public class ReportController {
             }
         }
 
+        //针对依斯贝,任务必选
+        if (company.getId() == 3092) {
+            boolean hasEmptyTask = false;
+            if (taskId == null) {
+                hasEmptyTask = true;
+            } else {
+                hasEmptyTask = Arrays.stream(taskId).anyMatch(t->t==null || t == 0);
+            }
+            if (hasEmptyTask) {
+                HttpRespMsg msg = new HttpRespMsg();
+                msg.setError("请选择任务,任务可由项目经理在项目中创建");
+                return msg;
+            }
+        }
         //检查项目是否可填报; 修改为不校验项目,前端加载的项目已经过滤掉了完成和撤销的
         List<Integer> integers = Arrays.asList(projectId);
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", integers));
 
+
         List<ReportAuditorSetting> auditorSettingList = null;
         if (comTimeType.getReportAuditType() == 3) {
             //员工自由选择审批人
@@ -1570,7 +1585,21 @@ public class ReportController {
                 return msg;
             }
         }
-        System.out.println("summary==========="+summary);
+        //如果开启了计划日期的限制,需要校验
+        if (comTimeType.getNotAllowedExpiredProject() == 1) {
+            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            for (Report report : reportList) {
+                Optional<Project> first = projectList.stream().filter(pl -> pl.getId().equals(report.getProjectId())).findFirst();
+                if (first.isPresent()) {
+                    LocalDate planEndDate = first.get().getPlanEndDate();
+                    if (planEndDate != null && planEndDate.isBefore(report.getCreateDate())) {
+                        HttpRespMsg msg = new HttpRespMsg();
+                        msg.setError("项目["+first.get().getProjectName()+"]于"+dateTimeFormatter.format(planEndDate)+"截止,无法填报");
+                        return msg;
+                    }
+                }
+            }
+        }
         HttpRespMsg httpRespMsg = reportService.editReport(reportList, createDate.length > 0 ? createDate[0] : null, targetUserList, hourCost, user.getCompanyId(), summary);
         //填报自动通过功能:【上海绎维】、【火石演示】、【博通容合】、【威派格】使用
         if (company.getId() == 862 || company.getId() == 10 || company.getId() == 3344 || company.getId() == 936) {

+ 62 - 60
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -2707,75 +2707,77 @@ public class WeiXinCorpController {
                         for (int p=0;p<remoteDeptUserList.size(); p++) {
                             corpUserIds.add(remoteDeptUserList.getJSONObject(p).getString("userid"));
                         }
-                        try {
-                            JSONArray array = convertUserIdToOpenUserId(curCorpAccessToken, corpUserIds);
-                            for (int w=0;w<array.size(); w++) {
-                                JSONObject jsonObject = array.getJSONObject(w);
-                                String userid = jsonObject.getString("userid");
-                                String openUserid = jsonObject.getString("open_userid");
-                                //替换userid
-                                for (int m=0;m<remoteDeptUserList.size(); m++) {
-                                    JSONObject remoteUser = remoteDeptUserList.getJSONObject(m);
-                                    if (remoteUser.getString("userid").equals(userid)) {
-                                        remoteUser.put("openUserid", openUserid);
-                                        break;
+                        if (corpUserIds.size() > 0) {
+                            try {
+                                JSONArray array = convertUserIdToOpenUserId(curCorpAccessToken, corpUserIds);
+                                for (int w=0;w<array.size(); w++) {
+                                    JSONObject jsonObject = array.getJSONObject(w);
+                                    String userid = jsonObject.getString("userid");
+                                    String openUserid = jsonObject.getString("open_userid");
+                                    //替换userid
+                                    for (int m=0;m<remoteDeptUserList.size(); m++) {
+                                        JSONObject remoteUser = remoteDeptUserList.getJSONObject(m);
+                                        if (remoteUser.getString("userid").equals(userid)) {
+                                            remoteUser.put("openUserid", openUserid);
+                                            break;
+                                        }
                                     }
                                 }
+                            } catch (Exception exception) {
+                                exception.printStackTrace();
+                                //msg.setError("同步失败:"+exception.getMessage());
+                                msg.setError(MessageUtils.message("wx.synError",exception.getMessage()));
+                                return msg;
                             }
-                        } catch (Exception exception) {
-                            exception.printStackTrace();
-                            //msg.setError("同步失败:"+exception.getMessage());
-                            msg.setError(MessageUtils.message("wx.synError",exception.getMessage()));
-                            return msg;
-                        }
-                        for (int m=0;m<userList.size(); m++) {
-                            JSONObject userJson = userList.getJSONObject(m);
-                            String curUserid = userJson.getString("userid");
-                            String openUserid = userJson.getString("open_userid");
-                            //跳过已经获取过的
-                            if (allCorpWxUserList.stream().anyMatch(item->item.getCorpwxUserid().equals(openUserid))) {
-                                continue;
-                            }
-                            log.info("userid="+curUserid+", name=" + userJson.getString("name")+", mobile="+userJson.getString("mobile"));
-                            //不存在的人员, 进行插入
-                            User user = new User();
-                            JSONArray userDeptArray = userJson.getJSONArray("department");
-                            //取最末级的,也就是最大的deptId
-                            int maxDeptId = 1;
-                            for (int t=0;t<userDeptArray.size(); t++) {
-                                int curId = userDeptArray.getInteger(t);
-                                if (curId > maxDeptId) maxDeptId = curId;
-                            }
-                            user.setId(SnowFlake.nextId()+"")
-                                    .setRoleId(defaultRole.getId())
-                                    .setRoleName(defaultRole.getRolename())
-                                    .setCompanyId(companyId)
-                                    .setDepartmentId(departmentId)
-                                    .setPhone(userJson.getString("mobile"))
-                                    .setName(userJson.getString("name"))
-                                    .setCorpwxUserid(openUserid)
-                                    .setCorpwxDeptid(maxDeptId)
-                                    .setColor(ColorUtil.randomColor());
-                            //获取姓名
-                            if (remoteDeptUserList != null) {
-                                for (int t=0;t<remoteDeptUserList.size(); t++) {
-                                    JSONObject remoteUserJson = remoteDeptUserList.getJSONObject(t);
-                                    if (remoteUserJson.getString("openUserid").equals(curUserid)) {
-                                        //匹配到了。设置姓名
-                                        System.out.println("远程的用户匹配到了:"+remoteUserJson.getString("name"));
-                                        user.setName(remoteUserJson.getString("name"));
-                                        user.setJobNumber(remoteUserJson.getString("userid"));
-                                        user.setPhone(remoteUserJson.getString("mobile"));
-                                        user.setCorpwxRealUserid(remoteUserJson.getString("userid"));
-                                        break;
+
+                            for (int m=0;m<userList.size(); m++) {
+                                JSONObject userJson = userList.getJSONObject(m);
+                                String curUserid = userJson.getString("userid");
+                                String openUserid = userJson.getString("open_userid");
+                                //跳过已经获取过的
+                                if (allCorpWxUserList.stream().anyMatch(item->item.getCorpwxUserid().equals(openUserid))) {
+                                    continue;
+                                }
+                                log.info("userid="+curUserid+", name=" + userJson.getString("name")+", mobile="+userJson.getString("mobile"));
+                                //不存在的人员, 进行插入
+                                User user = new User();
+                                JSONArray userDeptArray = userJson.getJSONArray("department");
+                                //取最末级的,也就是最大的deptId
+                                int maxDeptId = 1;
+                                for (int t=0;t<userDeptArray.size(); t++) {
+                                    int curId = userDeptArray.getInteger(t);
+                                    if (curId > maxDeptId) maxDeptId = curId;
+                                }
+                                user.setId(SnowFlake.nextId()+"")
+                                        .setRoleId(defaultRole.getId())
+                                        .setRoleName(defaultRole.getRolename())
+                                        .setCompanyId(companyId)
+                                        .setDepartmentId(departmentId)
+                                        .setPhone(userJson.getString("mobile"))
+                                        .setName(userJson.getString("name"))
+                                        .setCorpwxUserid(openUserid)
+                                        .setCorpwxDeptid(maxDeptId)
+                                        .setColor(ColorUtil.randomColor());
+                                //获取姓名
+                                if (remoteDeptUserList != null) {
+                                    for (int t=0;t<remoteDeptUserList.size(); t++) {
+                                        JSONObject remoteUserJson = remoteDeptUserList.getJSONObject(t);
+                                        if (remoteUserJson.getString("openUserid").equals(curUserid)) {
+                                            //匹配到了。设置姓名
+                                            System.out.println("远程的用户匹配到了:"+remoteUserJson.getString("name"));
+                                            user.setName(remoteUserJson.getString("name"));
+                                            user.setJobNumber(remoteUserJson.getString("userid"));
+                                            user.setPhone(remoteUserJson.getString("mobile"));
+                                            user.setCorpwxRealUserid(remoteUserJson.getString("userid"));
+                                            break;
+                                        }
                                     }
                                 }
+                                allCorpWxUserList.add(user);
                             }
-                            allCorpWxUserList.add(user);
                         }
                     }
                 }
-
             }
         }
 

+ 0 - 29
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -267,35 +267,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     httpRespMsg.data = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()).orderByDesc("is_public").orderByAsc("id"));
                 }
             }
-
-            //按计划完成日期进行过滤
-            if (timeTypeMapper.selectById(user.getCompanyId()).getNotAllowedExpiredProject() == 1) {
-                Object data = httpRespMsg.data;
-                List projectList = (List) data;
-                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-                DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-
-                for (int i=0;i<projectList.size(); i++) {
-                    Object item = projectList.get(i);
-                    if (item instanceof Project) {
-                        Project project = (Project) item;
-                        if (project.getPlanEndDate() != null && project.getPlanEndDate().isBefore(LocalDate.now())) {
-                            projectList.remove(i);
-                            i--;
-                        }
-                    } else if (item instanceof HashMap) {
-                        HashMap project = (HashMap) item;
-                        if (project.get("planEndDate") != null) {
-                            String yyyymmdd = simpleDateFormat.format((java.sql.Date)project.get("planEndDate"));
-                            if (LocalDate.parse(yyyymmdd, dateTimeFormatter).isBefore(LocalDate.now())) {
-                                projectList.remove(i);
-                                i--;
-                            }
-                        }
-                    }
-                }
-                httpRespMsg.data = projectList;
-            }
         } catch (NullPointerException e) {
             //httpRespMsg.setError("验证失败");
             httpRespMsg.setError(MessageUtils.message("access.verificationError"));

+ 13 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1173,8 +1173,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     String creatorId = reportList.get(0).getCreatorId();
                     if (timeType.getEnableNewWeeklyfill() == 1) {
                         //按周填报,需要保存周总结
-                        LocalDate minDate = dateList.stream().min(LocalDate::compareTo).get();
-                        LocalDate maxDate = dateList.stream().max(LocalDate::compareTo).get();
+                        //获取本周开始和结束的日期
+                        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                        HttpRespMsg retMsg = getWeeklyFillReportData(dtf.format(dateList.get(0)), request);
+                        HashMap mapItem = (HashMap)retMsg.data;
+                        List<HashMap> dateRange = (List<HashMap>)mapItem.get("dateList");
+                        LocalDate minDate = LocalDate.parse((String)dateRange.get(0).get("date"), dtf);
+                        LocalDate maxDate = LocalDate.parse((String)dateRange.get(dateRange.size()-1).get("date"), dtf);
                         //删除已有的记录
                         reportBatchMapper.delete(new QueryWrapper<ReportBatch>().eq("start_date", minDate).eq("end_date", maxDate).eq("creator_id", creatorId));
                         ReportBatch batch = new ReportBatch();
@@ -1189,6 +1194,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         reportBatchMapper.insert(batch);
                         //更新batchId
                         List<Integer> curDateReportIds = reportList.stream().map(Report::getId).collect(Collectors.toList());
+                        System.out.println("curDateReportIds=="+curDateReportIds.size());
                         reportMapper.update(new Report().setBatchId(batch.getId()), new QueryWrapper<Report>().in("id", curDateReportIds));
                     } else {
                         for (LocalDate curDate : dateList) {
@@ -7222,7 +7228,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 Integer batchId = reportList.get(0).getBatchId();
                 if (batchId != null) {
                     //获取周总结
-                    summary = reportBatchMapper.selectById(batchId).getSummary();
+                    ReportBatch batch = reportBatchMapper.selectById(batchId);
+                    //老数据可能出现batchId错误的情况,已经被删掉了,就不处理了。
+                    if (batch != null) {
+                        summary = batch.getSummary();
+                    }
                 }
                 List<String> collect = reportList.stream().map(Report::getProjectAuditorId).distinct().collect(Collectors.toList());
                 if (collect.size() > 0) {

+ 8 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportController.java

@@ -1588,6 +1588,13 @@ public class ReportController {
 
         return reportService.exportReport(startDate, endDate, planId,stateKey,departmentId, request);
     }
-
+    /**
+     * 删除报告
+     * id 要删除的报告的id
+     */
+    @RequestMapping("/delete")
+    public HttpRespMsg deleteReport(String id) {
+        return reportService.deleteReport(id);
+    }
 }
 

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

@@ -141,4 +141,5 @@ public interface ReportService extends IService<Report> {
 
     HttpRespMsg exportReport(String startDate, String endDate, Integer planId, Integer stateKey, Integer departmentId, HttpServletRequest request);
 
+    HttpRespMsg deleteReport(String id);
 }

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

@@ -1,5 +1,6 @@
 package com.management.platform.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
@@ -108,6 +109,18 @@ public class PlanProcedureTotalServiceImpl extends ServiceImpl<PlanProcedureTota
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         HashMap prodProcedureTeam = prodProcedureTeamMapper.getFillProcedureDetail(id);
+        //道工序是否自己已经填过了,有的话取数据
+        Report oldReport = reportMapper.selectOne(new QueryWrapper<Report>().eq("user_procedure_team_id", id).eq("creator_id", token).eq("create_date", createDate));
+        if (oldReport != null) {
+            prodProcedureTeam.put("oldReport", oldReport);
+            prodProcedureTeam.put("finishNum", oldReport.getFinishNum());
+            prodProcedureTeam.put("steelNumArray", JSONArray.parseArray(oldReport.getSteelNumArray(), String.class));
+            prodProcedureTeam.put("isFinish", oldReport.getStatus() == 2);
+            prodProcedureTeam.put("isTerminated", oldReport.getStatus() == 3);
+            if (createDate.equals(LocalDate.now().format(dtf))) {
+                prodProcedureTeam.put("canBeDeleted", true);
+            }
+        }
         Integer planId = Integer.valueOf(String.valueOf(prodProcedureTeam.get("plan_id")));
         List<PlanSteelStampNumber> planSteelStampNumberList = planSteelStampNumberMapper.selectList(new QueryWrapper<PlanSteelStampNumber>().eq("plan_id", planId));
         List<String> list=new ArrayList<>();
@@ -166,7 +179,9 @@ public class PlanProcedureTotalServiceImpl extends ServiceImpl<PlanProcedureTota
             Stream<String> sorted = list.stream().distinct().sorted();
             List<String> collect = sorted.collect(Collectors.toList());
             //如果钢印号有其他人已经填过了,就不显示
-            List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("id", "steel_num_array","create_date", "creator_id").eq("plan_id", planId));
+            List<Report> reportList = reportMapper.selectList(
+                    new QueryWrapper<Report>().select("id", "steel_num_array","create_date", "creator_id")
+                            .eq("plan_id", planId).eq("prod_procedure_id", (Integer)prodProcedureTeam.get("prod_procedure_id")));
             List<String> filledSteelNumList=new ArrayList<>();
 
             for (Report report : reportList) {
@@ -175,11 +190,11 @@ public class PlanProcedureTotalServiceImpl extends ServiceImpl<PlanProcedureTota
                     continue;
                 }
                 if(!StringUtils.isEmpty(report.getSteelNumArray())){
-                    String[] split = report.getSteelNumArray().split(",");
-                    filledSteelNumList.addAll(Arrays.asList(split));
+                    JSONArray.parseArray(report.getSteelNumArray(),String.class).forEach(item->{
+                        filledSteelNumList.add(item);
+                    });
                 }
             }
-//            List<String> collect1 = collect.stream().filter(item -> !filledSteelNumList.contains(item)).collect(Collectors.toList());
             List<HashMap> steelMapList = new ArrayList<>();
             for (String s : collect) {
                 HashMap map = new HashMap();

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

@@ -170,12 +170,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             httpRespMsg.setError("填报的件数超过了剩余可填报件数:"+(plan.getNum() - allFileProcNum)+", 请联系班组长协调解决");
             return httpRespMsg;
         }
-//        double addNum = report.getFinishNum() - lastFinishNum;
         Integer num = plan.getNum();//总件数
         double addPercent = report.getFinishNum() / num;
-//        curReportTime = (prodProcedureTeam.getWorkTime() * (addProgress)/100);
-        //按比例获取本次进度的工钱
-//        BigDecimal earnMoney = prodProcedureTeam.getJobOfMoney().multiply(new BigDecimal(addProgress)).divide(new BigDecimal(100));
         //新版计算报工的工时和价钱;根据填报件数的占比计算工时和价钱
         double earnMoney = planProcedureTotal.getTotalWages() * addPercent;
         curReportTime = planProcedureTotal.getTotalWorkingHours() * addPercent;
@@ -4561,4 +4557,40 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         msg.setData(resp);
         return msg;
     }
+
+    @Override
+    public HttpRespMsg deleteReport(String id) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        Report report = reportMapper.selectById(id);
+        if (report == null) {
+            httpRespMsg.setError("报工不存在");
+            return httpRespMsg;
+        } else {
+            //计算工作时长
+            ProdProcedureTeam prodProcedureTeam = prodProcedureTeamMapper.selectById(report.getUserProcedureTeamId());
+            //总计划任务的工序中有总工时和总工价
+            PlanProcedureTotal planProcedureTotal = planProcedureTotalMapper.selectOne(new QueryWrapper<PlanProcedureTotal>().eq("plan_id", report.getPlanId()).eq("prod_procedure_id", report.getProdProcedureId()));
+            //核算本次填报的件数是否合法
+            prodProcedureTeam.setStatus(1);//未完工
+            prodProcedureTeam.setUpdateTime(LocalDateTime.now());
+            //更新填写的钢印号
+            prodProcedureTeam.setSteelNumArray("[]");
+            reportMapper.deleteById(id);
+            reportSteelNumMapper.delete(new QueryWrapper<ReportSteelNum>().eq("report_id", id));
+
+            //更新自己执行的工序上的数据
+            prodProcedureTeamMapper.updateById(prodProcedureTeam);
+            //计算该计划工序的总完成工时和完成度
+            Double workingTime = reportMapper.selectOne(new QueryWrapper<Report>().select("sum(working_time) as working_time").eq("plan_id", planProcedureTotal.getPlanId()).eq("prod_procedure_id", planProcedureTotal.getProdProcedureId())).getWorkingTime();
+            if (workingTime == null) {
+                workingTime = 0.0;
+            }
+            planProcedureTotal.setTotalFillTime(workingTime);
+            planProcedureTotal.setTotalProgress((int)(workingTime / planProcedureTotal.getTotalWorkingHours()) * 100);
+            planProcedureTotalMapper.updateById(planProcedureTotal);
+            return new HttpRespMsg();
+        }
+    }
 }

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

@@ -15,9 +15,9 @@ spring:
       location: C:/upload/
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://47.101.180.183:3306/man_workshop?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    url: jdbc:mysql://47.101.180.183:17089/man_workshop_lew?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
     username: root
-    password: HuoshiDB@2022
+    password: P011430@Huoshi*
     hikari:
       maximum-pool-size: 60
       minimum-idle: 10

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

@@ -52,6 +52,7 @@
             :disabled="reportForm.finishNum == 0">
             提交
           </van-button>
+          <p v-if="reportForm.canBeDeleted" @click="deleteReport" style="margin:16px;text-align:center;color:#666;">删除</p>
         </div>
       </van-form>
     </div>
@@ -77,6 +78,7 @@ export default {
   },
   data() {
     return {
+      reportId: null,
       reportDate: null,
       checkerOptionList: [],
       checkerShow: false,
@@ -95,9 +97,32 @@ export default {
   created() { },
   mounted() {
     this.reportDate = this.$route.query.date;
+    this.reportId = this.$route.query.ohterId;
     this.getMyPlanProcedureList();
   },
   methods: {
+    deleteReport() {
+      this.$dialog.confirm({
+          title: '删除报工',
+          message: '确定要删除当天报工吗?'
+      }).then(() => {
+          const toast = this.$toast.loading({
+              forbidClick: true,
+              duration: 0
+          });
+          this.$axios.post("/report/delete", {id: this.reportId})
+          .then(res => {
+              if(res.code == "ok") {
+                  this.$toast.clear();
+                  this.$toast.success('删除成功');
+                  window.history.back();
+              } else {
+                  this.$toast.clear();
+                  this.$toast.fail('删除失败');
+              }
+          }).catch(err=> {this.$toast.clear();});
+      }).catch(() => {});
+    },
     onFinishNumChange() {
       //件数发生改变时,检测如果和计划总件数一样,则算完成
       if (this.reportForm.finishNum == this.reportForm.num) {
@@ -126,10 +151,6 @@ export default {
         }).catch(err => { this.$toast.clear(); });
     },
     onSubmit() {
-      if (this.reportForm.finishNum == 0) {
-        this.$toast.fail('件数不可为0')
-        return;
-      }
       let postData = {
         userProcedureTeamId: this.reportForm.id,
         prodProcedureId: this.reportForm.prod_procedure_id,
@@ -182,6 +203,7 @@ export default {
       if (this.reportDate) {
         params.createDate = this.reportDate;
       }
+
       this.$axios.post("/plan-procedure-total/getFillProcedureDetail", params)
         .then(res => {
           if (res.code == "ok") {
@@ -228,7 +250,7 @@ export default {
 .distribution {
   width: 100%;
   height: 100%;
-  padding: 54px 15px 15px 15px;
+  padding: 54px 0px 15px 0px;
   display: flex;
   flex-direction: column;
   flex-wrap: wrap;
@@ -236,8 +258,8 @@ export default {
   color: #333;
 
   .distribution_header {
-    font-size: 16px;
-
+    font-size: 15px;
+    padding: 0px 15px 0px 15px;
     div {
       margin-top: 6px;
       margin-bottom: 5px;

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue

@@ -317,7 +317,7 @@
         <div class="yanjiu">
             <p style="margin-left:10px;color:#666;">项目超期后不可填报</p>
             <el-switch style="margin-left: 40px" v-model="timeType.notAllowedExpiredProject" active-color="#20a0ff" > </el-switch>
-            <span style="margin-left:10px;color:#999;">开启后超过计划结束日期的项目将不可填报</span>
+            <span style="margin-left:10px;color:#999;">开启后超过项目计划结束日期的日报将不可填报</span>
         </div>
         <!-- <p style="margin-left:10px;color:#666;" v-if="user.timeType.pushReportData == 1">推送工时设置</p>
         <el-row :gutter="20" style="padding-top:10px;width:100%;margin:0 auto;padding-left:10px;padding-right:10px;" v-if="user.timeType.pushReportData == 1">

+ 5 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -134,7 +134,7 @@
                                 </span>
                                 <span style="float:right;">
                                     <el-link type="primary" v-if="user.timeType.enableNewWeeklyfill != 1" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReport(-1,0)">{{$t('textLink.fillInTheWork')}}</el-link>
-                                    <el-link v-if="reportTimeType.type != 0 && user.companyId != yuzhongCompId && user.timeType.enableNewWeeklyfill != 1" type="primary" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReportss()">{{$t('textLink.fillInAWeek')}}</el-link>
+                                    <el-link v-if="reportTimeType.type != 0 && user.companyId != yuzhongCompId && user.timeType.enableNewWeeklyfill != 1 && user.companyId != 3092" type="primary" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReportss()">{{$t('textLink.fillInAWeek')}}</el-link>
                                     <el-link v-if="user.timeType.enableNewWeeklyfill == 1" type="primary" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReportCustom()">按周填报</el-link>
                                     <!-- <el-link type="primary" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReportCustom()">按周填报</el-link> -->
                                     <el-link type="primary" v-if="permissions.reportsFillOut && user.timeType.enableNewWeeklyfill != 1" style="margin-right:10px;" :underline="false" @click="isSubstitude=true; fillInReport(-1,2)">{{$t('textLink.helpToFillIn')}}</el-link>
@@ -642,6 +642,10 @@
                         </el-form-item>
                         <!--项目管理专业版模式下,项目下的近期执行的任务 -->
                         <el-form-item :label="$t('other.task')+' / '+$t('other.milestone')" :prop="'domains.' + index + '.taskId'" v-if="user.company.packageProject==1" >
+                            <template slot="label" v-if="user.companyId == 3092">
+                                <span style="color:#FF0000;">*</span>
+                                <span >任务</span>
+                            </template>
                             <el-select v-model="domain.taskId" :placeholder="$t('defaultText.pleaseChoose')" style="width:75%;margin-right:7%" filterable="true" 
                             :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
                                 <el-option v-for="item in domain.taskList" :key="item.taskId" :label="item.taskName" :value="item.taskId"></el-option>

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

@@ -73,6 +73,7 @@
 
                     <!--任务分组 -->
                     <van-field  readonly  name="groupId" v-if="user.company.packageProject == 1 && item.taskGroups != null && item.taskGroups.length > 0" clickable 
+                        :rules="[{ required: user.companyId==3092?true:false, message: '请选择任务分组' }]"
                         :value="item.groupName" label="任务分组" placeholder="请选择任务分组" 
                     @click="clickPickTaskGroup(index, item)" />
                     <van-popup v-model="item.showPickerTaskGroup" position="bottom">
@@ -199,7 +200,9 @@
                         <van-stepper v-model="pItem.progress" integer min="0" max="100" />%
                     </template>
                     </van-field>
-                    <van-field v-if="user.company.packageProject == 1"  readonly name="taskId" :value="item.taskName" label="任务/里程碑" placeholder="请选择任务/里程碑" @click="clickPickerTask(index,item)"
+                    <van-field v-if="user.company.packageProject == 1"  readonly name="taskId" :value="item.taskName" 
+                    :rules="[{ required: user.companyId==3092?true:false, message: '请选择任务/里程碑' }]"
+                    label="任务/里程碑" placeholder="请选择任务/里程碑" @click="clickPickerTask(index,item)"
                     ></van-field>
                     <van-field name="taskFinish" label="是否已完成" v-if="item.taskId != null">
                         <template #input>

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

@@ -1794,7 +1794,6 @@
                         return
                     }
                 }
-
                 let formData = new URLSearchParams()
                 // 周总结
                 if(enableNewWeeklyfill == 1) {
@@ -2073,18 +2072,11 @@
                     }
 
                 }
-                
                 const toast = this.$toast.loading({
                     forbidClick: true,
                     duration: 0
                 });
-                // let formData = new FormData();
-                
-                
-                // if(!this.flgLg) {
-                //     return
-                // }
-                // this.flgLg = false
+
                 this.$axios.post("/report/editReport", formData)
                 .then(res => {
                     // this.flgLg = true

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

@@ -188,7 +188,9 @@
                         if(this.user.timeType.enableNewWeeklyfill != 1) { // 针对新版按周填报去掉填写日报
                             this.routers.push({name: '填写日报',url: '/edit',icon: 'edit'})
                         }
-                        this.routers.push({name: '按周填报',url: '/weekEdit',icon: 'records'})
+                        if (this.user.companyId != 3092) {
+                            this.routers.push({name: '按周填报',url: '/weekEdit',icon: 'records'})
+                        }
                     }
                     if(list[i].name == '待办任务') {
                         this.routers.push({