소스 검색

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

Min 1 년 전
부모
커밋
047a4b4439
20개의 변경된 파일457개의 추가작업 그리고 34개의 파일을 삭제
  1. 1 0
      fhKeeper/formulahousekeeper/inva_4_tivo/about.html
  2. 86 0
      fhKeeper/formulahousekeeper/inva_4_tivo/css/dynamic.css
  3. 86 0
      fhKeeper/formulahousekeeper/inva_4_tivo/css/dynamic.less
  4. 1 0
      fhKeeper/formulahousekeeper/inva_4_tivo/css/element-uiCss.css
  5. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/css/fonts/element-icons.ttf
  6. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/css/fonts/element-icons.woff
  7. 1 0
      fhKeeper/formulahousekeeper/inva_4_tivo/customer.html
  8. 170 0
      fhKeeper/formulahousekeeper/inva_4_tivo/dynamic.html
  9. 1 0
      fhKeeper/formulahousekeeper/inva_4_tivo/followup.html
  10. 1 0
      fhKeeper/formulahousekeeper/inva_4_tivo/index.html
  11. 1 0
      fhKeeper/formulahousekeeper/inva_4_tivo/js/element-ui.js
  12. 6 0
      fhKeeper/formulahousekeeper/inva_4_tivo/js/vue.min.js
  13. 1 0
      fhKeeper/formulahousekeeper/inva_4_tivo/mobile.html
  14. 1 0
      fhKeeper/formulahousekeeper/inva_4_tivo/project.html
  15. 1 0
      fhKeeper/formulahousekeeper/inva_4_tivo/workshop.html
  16. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java
  17. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  18. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  19. 83 32
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  20. 4 2
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/list.vue

+ 1 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/about.html

@@ -52,6 +52,7 @@
                             <li class="til"><a href="./mobile.html">手机版</a></li>
                             <li class="til"><a href="./index.html#pricing">产品定价</a></li>
                             <li class="til ons"><a href="./about.html">关于我们</a></li>
+                            <li class="til"><a href="./dynamic.html">企业动态</a></li>
                         </ul>
                     </div>
                 </div>

+ 86 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/css/dynamic.css

@@ -0,0 +1,86 @@
+.enterpriseDynamics {
+  display: flex;
+  justify-content: center;
+  margin-top: 10em;
+}
+.enterpriseDynamics .content {
+  width: 1140px;
+}
+.enterpriseDynamics .bifJournal {
+  width: 100%;
+}
+.enterpriseDynamics .bifJournal .headline {
+  margin: 10px 0 20px 0;
+  font-size: 40px;
+}
+.enterpriseDynamics .bifJournal .eachItem {
+  margin-left: 60px;
+  border-bottom: 1px solid #D7D7D7;
+  padding: 30px 20px;
+  display: flex;
+  justify-content: space-between;
+}
+.enterpriseDynamics .bifJournal .eachItem .eachItemImg {
+  width: 300px;
+  height: 200px;
+}
+.enterpriseDynamics .bifJournal .eachItem .eachItemImg img {
+  width: 100%;
+  height: 100%;
+}
+.enterpriseDynamics .bifJournal .eachItem .eachItemRight {
+  margin-left: 40px;
+  flex: 1;
+}
+.enterpriseDynamics .bifJournal .eachItem .eachItemRight .eachItemRightTilt {
+  font-size: 26px;
+}
+.enterpriseDynamics .bifJournal .eachItem .eachItemRight .eachItemRightText {
+  font-size: 18px;
+  margin-top: 10px;
+  margin-bottom: 10px;
+  line-height: 22px;
+  height: 135px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.enterpriseDynamics .bifJournal .eachItem .eachItemRight .eachItemRightBum {
+  display: flex;
+  justify-content: space-between;
+  font-size: 16px;
+}
+.enterpriseDynamics .bifJournal .eachItem .eachItemRight .eachItemRightBum .ons {
+  color: #31B7F2;
+  cursor: pointer;
+}
+.enterpriseDynamics .bifJournal .paging {
+  display: flex;
+  justify-content: flex-end;
+  margin: 20px 0 30px 0;
+}
+.enterpriseDynamics .details {
+  margin: 20px 0px 40px 0;
+  min-height: 300px;
+}
+.enterpriseDynamics .details .detailsTil {
+  font-size: 26px;
+  text-align: center;
+  margin-bottom: 15px;
+  position: relative;
+}
+.enterpriseDynamics .details .detailsData {
+  display: flex;
+  justify-content: flex-end;
+  font-size: 18px;
+  margin-bottom: 15px;
+}
+.enterpriseDynamics .details .detailstext {
+  font-size: 18px;
+}
+.enterpriseDynamics .details .detailsBack {
+  position: absolute;
+  left: 0;
+  top: 0;
+  color: #31B7F2;
+  cursor: pointer;
+}

+ 86 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/css/dynamic.less

@@ -0,0 +1,86 @@
+.enterpriseDynamics {
+    display: flex;
+    justify-content: center;
+    margin-top: 10em;
+    .content {
+        width: 1140px;
+    }
+    .bifJournal {
+        width: 100%;
+        .headline {
+            margin: 10px 0 20px 0;
+            font-size: 40px;
+        }
+        .eachItem {
+            margin-left: 60px;
+            border-bottom: 1px solid #D7D7D7;
+            padding: 30px 20px;
+            display: flex;
+            justify-content: space-between;
+            .eachItemImg {
+                width: 300px;
+                height: 200px;
+                img {
+                    width: 100%;
+                    height: 100%;
+                }
+            }
+            .eachItemRight {
+                margin-left: 40px;
+                flex: 1;
+                .eachItemRightTilt {
+                    font-size: 26px;
+                }
+                .eachItemRightText {
+                    font-size: 18px;
+                    margin-top: 10px;
+                    margin-bottom: 10px;
+                    line-height: 22px;
+                    height: 135px;
+                    overflow: hidden;
+                    text-overflow: ellipsis;
+                }
+                .eachItemRightBum {
+                    display: flex;
+                    justify-content: space-between;
+                    font-size: 16px;
+                    .ons {
+                        color: #31B7F2;
+                        cursor: pointer;
+                    }
+                }
+            }
+        }
+        .paging {
+            display: flex;
+            justify-content: flex-end;
+            margin: 20px 0 30px 0;
+        }
+    }
+    .details {
+        margin: 20px 0px 40px 0;
+        min-height: 300px;
+        .detailsTil {
+            font-size: 26px;
+            text-align: center;
+            margin-bottom: 15px;
+            position: relative;
+        }
+        .detailsData {
+            display: flex;
+            justify-content: flex-end;
+            font-size: 18px;
+            margin-bottom: 15px;
+        }
+        .detailstext {
+            font-size: 18px;
+        }
+        .detailsBack {
+            position: absolute;
+            left: 0;
+            top: 0;
+            color: #31B7F2;
+            cursor: pointer;
+        }
+    }
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/css/element-uiCss.css


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/css/fonts/element-icons.ttf


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/css/fonts/element-icons.woff


+ 1 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/customer.html

@@ -28,6 +28,7 @@
                             <li class="til"><a href="./mobile.html">手机版</a></li>
                             <li class="til"><a href="#pricing">产品定价</a></li>
                             <li class="til"><a href="./about.html">关于我们</a></li>
+                            <li class="til"><a href="./dynamic.html">企业动态</a></li>
                         </ul>
                     </div>
                 </div>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 170 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/dynamic.html


+ 1 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/followup.html

@@ -28,6 +28,7 @@
                             <li class="til"><a href="./mobile.html">手机版</a></li>
                             <li class="til"><a href="#pricing">产品定价</a></li>
                             <li class="til"><a href="./about.html">关于我们</a></li>
+                            <li class="til"><a href="./dynamic.html">企业动态</a></li>
                         </ul>
                     </div>
                 </div>

+ 1 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/index.html

@@ -65,6 +65,7 @@
                             <li class="til"><a href="./mobile.html">手机版</a></li>
                             <li class="til"><a href="#pricing">产品定价</a></li>
                             <li class="til"><a href="./about.html">关于我们</a></li>
+                            <li class="til"><a href="./dynamic.html">企业动态</a></li>
                         </ul>
                     </div>
                 </div>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/js/element-ui.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 6 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/js/vue.min.js


+ 1 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/mobile.html

@@ -64,6 +64,7 @@
                             <li class="til ons"><a href="./mobile.html">手机版</a></li>
                             <li class="til"><a href="./index.html#pricing">产品定价</a></li>
                             <li class="til"><a href="./about.html">关于我们</a></li>
+                            <li class="til"><a href="./dynamic.html">企业动态</a></li>
                         </ul>
                     </div>
                 </div>

+ 1 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/project.html

@@ -28,6 +28,7 @@
                             <li class="til"><a href="./mobile.html">手机版</a></li>
                             <li class="til"><a href="#pricing">产品定价</a></li>
                             <li class="til"><a href="./about.html">关于我们</a></li>
+                            <li class="til"><a href="./dynamic.html">企业动态</a></li>
                         </ul>
                     </div>
                 </div>

+ 1 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/workshop.html

@@ -70,6 +70,7 @@
                           <li class="til"><a href="./mobile.html">手机版</a></li>
                           <li class="til"><a href="#pricing">产品定价</a></li>
                           <li class="til"><a href="./about.html">关于我们</a></li>
+                          <li class="til"><a href="./dynamic.html">企业动态</a></li>
                       </ul>
                   </div>
               </div>

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java

@@ -409,6 +409,11 @@ public class Report extends Model<Report> {
     @TableField(exist = false)
     private List<SapProjectService> serviceList;
 
+    @TableField(exist = false)
+    private String projectName;
+    @TableField(exist = false)
+    private String taskName;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

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

@@ -165,4 +165,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getTimeCostByToken(Integer companyId, String startDate, String endDate);
 
     List<UserCateTimeVo> getMembProjectCateTime(Integer companyId, String startDate, String endDate);
+
+    @Update("update project set incharger_id = null, finish_date = null, plan_start_date = null, plan_end_date=null, level=null,contract_amount=null,man_day=null,where id = #{id} and is_public = 1")
+    void cleanPublicProjectData(Integer id);
 }

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

@@ -693,6 +693,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
         TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
+        Company company = companyMapper.selectById(companyId);
         boolean isNew = true;
         //检查负责人要在参与人中
         if (!StringUtils.isEmpty(inchargerId)) {
@@ -1252,6 +1253,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
                 }
             }
+            //针对启用了简单非项目模式的情况,确保项目经理,级别,合同金额,开始日期,截止日期,预估工时都是null
+            if (company.getNonProjectSimple() == 1 && isPublic == 1) {
+                projectMapper.cleanPublicProjectData(id);
+            }
         }
         return httpRespMsg;
     }

+ 83 - 32
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -5476,33 +5476,37 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             if (company.getIsInternational() == 1) {
                                 operateDate = operateDate.plusSeconds(offsetSeconds);
                             }
+							
+								
                             String time = dtf.format(operateDate);
                             String msg= "";
-                            if(needCorpWxTranslate){
-                                Optional<User> first = userList.stream().filter(ul -> ul.getId().equals(audit.getOperatorId())).findFirst();
-                                if(first.isPresent()){
-                                    String corpwxUserId = first.get().getCorpwxUserid();
-                                    if (auditMsg.contains(corpwxUserId)) {
-                                        if(auditMsg.contains("提交了")){
-                                            int i = auditMsg.indexOf("提");
-                                            String substring = auditMsg.substring(0, i);
-                                            msg = time+" " + auditMsg.replace(substring,"\\$userName="+corpwxUserId+"\\$");
-                                        }else if(auditMsg.contains("审核通过了")){
-                                            int i = auditMsg.indexOf("审");
-                                            String substring = auditMsg.substring(0, i);
-                                            msg = time+" " + auditMsg.replace(substring,"\\$userName="+corpwxUserId+"\\$");
-                                        }else if(auditMsg.contains("驳回了")) {
-                                            int i = auditMsg.indexOf("驳");
-                                            String substring = auditMsg.substring(0, i);
-                                            msg = time+" " + auditMsg.replace(substring,"\\$userName="+corpwxUserId+"\\$");
-                                        }
-                                    } else {
-                                        msg = time+" " + auditMsg;
-                                    }
-                                }
-                            }else {
-                                msg = time+" " + auditMsg;
-                            }
+							if (auditMsg != null) {
+								if(needCorpWxTranslate){
+									Optional<User> first = userList.stream().filter(ul -> ul.getId().equals(audit.getOperatorId())).findFirst();
+									if(first.isPresent()){
+										String corpwxUserId = first.get().getCorpwxUserid();
+										if (!StringUtils.isEmpty(corpwxUserId) && auditMsg.contains(corpwxUserId)) {
+											if(auditMsg.contains("提交了")){
+												int i = auditMsg.indexOf("提");
+												String substring = auditMsg.substring(0, i);
+												msg = time+" " + auditMsg.replace(substring,"\\$userName="+corpwxUserId+"\\$");
+											}else if(auditMsg.contains("审核通过了")){
+												int i = auditMsg.indexOf("审");
+												String substring = auditMsg.substring(0, i);
+												msg = time+" " + auditMsg.replace(substring,"\\$userName="+corpwxUserId+"\\$");
+											}else if(auditMsg.contains("驳回了")) {
+												int i = auditMsg.indexOf("驳");
+												String substring = auditMsg.substring(0, i);
+												msg = time+" " + auditMsg.replace(substring,"\\$userName="+corpwxUserId+"\\$");
+											}
+										} else {
+											msg = time+" " + auditMsg;
+										}
+									}
+								}else {
+									msg = time+" " + auditMsg;
+								}
+							} 
                             if (!isFirst) {
                                 sb.append("->");
                             } else {
@@ -7126,6 +7130,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         HttpRespMsg msg = new HttpRespMsg();
         String userId = request.getHeader("TOKEN");
         User user = userMapper.selectById(userId);
+        Company company = companyMapper.selectById(user.getCompanyId());
         //根据targetDate获取本周的日期
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         LocalDate date = LocalDate.parse(targetDate, dtf);
@@ -7141,10 +7146,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().eq("creator_id", userId).between("create_date", startDate, endDate).orderByAsc("create_date"));
 
         List<Integer> collect = reportList.stream().map(Report::getProjectId).collect(Collectors.toList());
+        List<User> auditorList = new ArrayList<>();
         //加载这段时间内已填报过的项目
         List<Project> projectList = new ArrayList<>();
         if (collect.size() > 0) {
             projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect));
+            auditorList = userMapper.selectList(new QueryWrapper<User>().in("id", reportList.stream().map(Report::getProjectAuditorId)));
         } else {
             //没有项目,默认加载最近填报过的项目
             List<Report> oldReport = reportMapper.selectList(new QueryWrapper<Report>().select("distinct project_id").eq("creator_id", userId).orderByDesc("id").last("limit 5"));
@@ -7152,13 +7159,57 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", oldReport.stream().map(Report::getProjectId).collect(Collectors.toList())));
             }
         }
-//
-//        List<TaskGroup> allGroupList = taskGroupMapper.selectList(new QueryWrapper<TaskGroup>().in("project_id", projectList.stream().map(Project::getId).collect(Collectors.toList())));
-//        //获取当前日报项目下的所有任务分组
-//        for (Report report : reportList) {
-//            Integer targetPid = report.getProjectId();
-//            report.setTaskGroups(allGroupList.stream().filter(tg->tg.getProjectId().equals(targetPid)).collect(Collectors.toList()));
-//        }
+        List<SapProjectService> sapProjectServices = new ArrayList<>();
+        if (company.getId() == 3092) {
+            sapProjectServices = sapProjectServiceMapper.selectList(new QueryWrapper<SapProjectService>().eq("company_id",company.getId()));
+        }
+        //专业版要取任务分组
+        List<TaskGroup> allGroupList = new ArrayList<>();
+        List<Task> taskList = new ArrayList<>();
+        if (projectList.size() > 0) {
+            if (company.getPackageProject() == 1) {
+                allGroupList = taskGroupMapper.selectList(new QueryWrapper<TaskGroup>().in("project_id", projectList.stream().map(Project::getId).collect(Collectors.toList())));
+                taskList = taskMapper.selectList(new QueryWrapper<Task>().select("id, name").in("project_id", projectList.stream().map(Project::getId).collect(Collectors.toList())));
+            }
+            //获取当前日报项目下的所有任务分组
+            for (Report report : reportList) {
+                Integer targetPid = report.getProjectId();
+                if (company.getPackageProject() == 1) {
+                    report.setTaskGroups(allGroupList.stream().filter(tg->tg.getProjectId().equals(targetPid)).collect(Collectors.toList()));
+                    if (report.getGroupId() != null) {
+                        //设置已经填报的任务分组名称
+                        Optional<TaskGroup> optional = allGroupList.stream().filter(tg->tg.getId().equals(report.getGroupId())).findFirst();
+                        if (optional.isPresent()) {
+                            report.setGroupName(optional.get().getName());
+                        }
+                    }
+                    //任务名称设置
+                    if (report.getTaskId() != null) {
+                        Optional<Task> optional = taskList.stream().filter(t->t.getId().equals(report.getTaskId())).findFirst();
+                        if (optional.isPresent()) {
+                            report.setTaskName(optional.get().getName());
+                        }
+                    }
+                }
+                //设置项目名称
+                Optional<Project> optional = projectList.stream().filter(p->p.getId().equals(report.getProjectId())).findFirst();
+                if (optional.isPresent()) {
+                    report.setProjectName(optional.get().getProjectName());
+                }
+                //设置ProjectAuditorName
+                Optional<User> optionalUser = auditorList.stream().filter(u->u.getId().equals(report.getProjectAuditorId())).findFirst();
+                if (optionalUser.isPresent()) {
+                    report.setProjectAuditorName(optionalUser.get().getName());
+                }
+                if (company.getId() == 3092) {
+                    //依斯倍有SapServiceName
+                    Optional<SapProjectService> optionalSap = sapProjectServices.stream().filter(s->s.getId().equals(report.getSapServiceId())).findFirst();
+                    if (optionalSap.isPresent()) {
+                        report.setSapServiceName(optionalSap.get().getServiceName());
+                    }
+                }
+            }
+        }
 
         List cardTimeList = new ArrayList();
         if (timeType.getShowDdCardtime() == 1) {

+ 4 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/list.vue

@@ -498,7 +498,8 @@
                 approveinDialog: false,
                 isbatch: false,
                 defaultExpandAllFlg: false,
-                showTable: true
+                showTable: true,
+                projectList: []
             };
         },
         filters: {
@@ -899,7 +900,8 @@
                 this.http.post( this.port.project.list, {},
                 res => {
                     if (res.code == "ok") {
-                        this.projectList = res.data;
+                        console.log(res, '数据')
+                        this.$set(this, 'projectList', res.data);
                     } else {
                         this.$message({
                             message: res.msg,