Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseMainTypeController.java
Min 2 gadi atpakaļ
vecāks
revīzija
90a6bd1778
20 mainītis faili ar 190 papildinājumiem un 69 dzēšanām
  1. 13 1
      fhKeeper/formulahousekeeper/inva_4_tivo/index.html
  2. 13 13
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseMainTypeController.java
  3. 24 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectDocumentTemplateController.java
  4. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java
  5. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Company.java
  6. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  7. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java
  8. 68 13
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  9. 6 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  10. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  11. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CompanyMapper.xml
  12. 3 6
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  13. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  14. 9 2
      fhKeeper/formulahousekeeper/timesheet/src/views/Register.vue
  15. 18 6
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  16. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue
  17. 1 0
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  18. 11 5
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue
  19. 6 7
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/index/index.vue
  20. 3 0
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/login/index.vue

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

@@ -74,7 +74,7 @@
                     <!-- <a href="javascript:;" id="zhuce"><img src="https://open.work.weixin.qq.com/service/img?id=wwf11426cf618e1703&t=register&c=blue&s=large" srcset="https://open.work.weixin.qq.com/service/img?id=wwf11426cf618e1703&t=register&c=blue&s=large@2x 2x" referrerpolicy="unsafe-url" alt="企业微信"></a> -->
                     <ul class="navigationUl fonsColorBai auss">
                         <!-- <li class="til"><a href="#">咨询客服</a></li> -->
-                        <li class="til"><a href="http://worktime.ttkuaiban.com/#/register">立即注册</a></li>
+                        <li class="til"><a id="tilA" href="http://worktime.ttkuaiban.com/#/register">立即注册</a></li>
                         <li class="til"><a href="http://worktime.ttkuaiban.com/#/login">后台登录</a></li>
                     </ul>
                 </div>
@@ -768,6 +768,18 @@
                 }
             });
         })
+
+        function check(){
+            let str = window.location.href
+            if(str.indexOf('360') > 1) {
+                $('#tilA').attr('href', 'http://worktime.ttkuaiban.com/#/register?form=360')
+            } else {
+                $('#tilA').attr('href', 'http://worktime.ttkuaiban.com/#/register')
+            }
+
+        }
+        check()
+        
     </script>
 
     <!-- <script src="js/js/scripts.js"></script>  -->

+ 13 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseMainTypeController.java

@@ -73,6 +73,11 @@ public class ExpenseMainTypeController {
         }
         if (setting.getId() == null) {
             setting.setCompanyId(companyId);
+            int num = expenseMainTypeService.count(new QueryWrapper<ExpenseMainType>().eq("company_id", setting.getCompanyId()));
+            if(num>=10){
+                msg.setError("已有类型上限为10");
+                return msg;
+            }
             int count = expenseMainTypeService.count(new QueryWrapper<ExpenseMainType>().eq("name", setting.getName()).eq("company_id", setting.getCompanyId()));
             if (count > 0) {
                 //msg.setError("该名称已存在");
@@ -82,11 +87,6 @@ public class ExpenseMainTypeController {
                 msg.data = expenseMainTypeService.list(new QueryWrapper<ExpenseMainType>().eq("company_id", setting.getCompanyId()));
             }
         } else {
-            int num = expenseMainTypeService.count(new QueryWrapper<ExpenseMainType>().eq("company_id", setting.getCompanyId()));
-            if(num>=10){
-                msg.setError("已有类型上限为10");
-                return msg;
-            }
             int count = expenseMainTypeService.count(new QueryWrapper<ExpenseMainType>().eq("name", setting.getName())
                     .eq("company_id", setting.getCompanyId()));
             if (count > 0) {
@@ -132,27 +132,27 @@ public class ExpenseMainTypeController {
             expenseMainTypes.add(expenseMainType1);
             expenseMainTypes.add(expenseMainType2);
             expenseMainTypeService.saveBatch(expenseMainTypes);
-            List<ExpenseType> expenseTypeList = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type",1111111 ));
+            List<ExpenseType> expenseTypeList = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type", 1111111));
             expenseTypeList.forEach(et->{
                 et.setMainType(expenseMainType.getId());
             });
-            List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type",1111111 ));
+            List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type", 1111111));
             expenseSheetList.forEach(es->{
                 es.setType(expenseMainType.getId());
             });
-            List<ExpenseType> expenseTypeList1 = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type",2222222 ));
+            List<ExpenseType> expenseTypeList1 = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type", 2222222));
             expenseTypeList1.forEach(et->{
                 et.setMainType(expenseMainType1.getId());
             });
-            List<ExpenseSheet> expenseSheetList1 = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type",2222222 ));
+            List<ExpenseSheet> expenseSheetList1 = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type", 2222222));
             expenseSheetList1.forEach(es->{
                 es.setType(expenseMainType1.getId());
             });
-            List<ExpenseType> expenseTypeList2 = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type",3333333 ));
+            List<ExpenseType> expenseTypeList2 = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id", company.getId()).eq("main_type", 3333333));
             expenseTypeList2.forEach(et->{
                 et.setMainType(expenseMainType2.getId());
             });
-            List<ExpenseSheet> expenseSheetList2 = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type",4444444 ));
+            List<ExpenseSheet> expenseSheetList2 = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", company.getId()).eq("type", 3333333));
             expenseSheetList2.forEach(es->{
                 es.setType(expenseMainType2.getId());
             });
@@ -167,13 +167,13 @@ public class ExpenseMainTypeController {
             }
             if(expenseTypeList1.size()>0){
                 expenseTypeService.updateBatchById(expenseTypeList1);
-            }
-            if(expenseSheetList2.size()>0){
+            }if(expenseSheetList2.size()>0){
                 expenseSheetService.updateBatchById(expenseSheetList2);
             }
             if(expenseTypeList2.size()>0){
                 expenseTypeService.updateBatchById(expenseTypeList2);
             }
+
         }
         return new HttpRespMsg();
     }

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

@@ -119,5 +119,29 @@ public class ProjectDocumentTemplateController {
         return proDocumentTemDetailList;
     }
 
+    @RequestMapping("/delete")
+    public HttpRespMsg delete(Integer id){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        if(!projectDocumentTemplateService.removeById(id)){
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        if(!proDocumentTemDetailService.remove(new QueryWrapper<ProDocumentTemDetail>().eq("template_id",id))){
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+
+    @RequestMapping("/update")
+    public HttpRespMsg update(ProjectDocumentTemplate projectDocumentTemplate){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        if(!projectDocumentTemplateService.updateById(projectDocumentTemplate)){
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+
 }
 

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

@@ -1323,7 +1323,7 @@ public class WeiXinCorpController {
                         company.setPackageProject(1);
                         company.setPackageExpense(1);
                         //设置来源
-                        company.setFrom("企业微信");
+                        company.setRegFrom("企业微信");
                         companyMapper.insert(company);
                         //生成项目的成本基线默认条目
                         String[] array = Constant.DEFAULT_BASE_COST_ITEMS;
@@ -3508,7 +3508,7 @@ public class WeiXinCorpController {
                             .setExpirationDate(LocalDateTime.now().plusDays(15));
                     company.setPackageWorktime(1);
                     //设置来源
-                    company.setFrom("企业微信");
+                    company.setRegFrom("企业微信");
                     companyMapper.insert(company);
                     wxCorpInfo.setCompanyId(company.getId());
                     wxCorpInfoMapper.updateById(wxCorpInfo);

+ 3 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Company.java

@@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2023-04-09
+ * @since 2023-04-10
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -136,8 +136,8 @@ public class Company extends Model<Company> {
     /**
      * 注册来源
      */
-    @TableField("from")
-    private String from;
+    @TableField("reg_from")
+    private String regFrom;
 
 
     @Override

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

@@ -51,7 +51,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getAllMembCost(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projectId") Integer projectId,
                                              @Param("companyId") Integer companyId);
 
-    List<Project> getAllProjectCost(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,List<Integer> inchagerIds);
+    List<Map<String,Object>> getAllProjectCost(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,List<Integer> inchagerIds);
 
     List<Project> getProjectInAndOut(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,List<Integer> inchagerIds);
 

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -181,7 +181,7 @@ public class DingDingServiceImpl implements DingDingService {
                 company.setPackageCustomer(1);
                 company.setPackageOa(1);
                 //设置来源
-                company.setFrom("钉钉");
+                company.setRegFrom("钉钉");
                 companyMapper.insert(company);
                 dingding.setCompanyId(company.getId());
                 companyDingdingMapper.updateById(dingding);
@@ -380,7 +380,7 @@ public class DingDingServiceImpl implements DingDingService {
             company.setPackageCustomer(1);
             company.setPackageOa(1);
             //设置来源
-            company.setFrom("钉钉");
+            company.setRegFrom("钉钉");
             companyMapper.insert(company);
 
             //生成工作时长

+ 68 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -199,6 +199,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     WxCorpInfoService wxCorpInfoService;
     @Resource
     private LeaveSheetService leaveSheetService;
+    @Resource
+    private ExpenseMainTypeMapper expenseMainTypeMapper;
+    @Resource
+    private ExpenseSheetMapper expenseSheetMapper;
+    @Resource
+    private ExpenseTypeMapper expenseTypeMapper;
 
     @Resource
     private HttpServletResponse response;
@@ -2132,6 +2138,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     public HttpRespMsg getAllProjectCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
+        DecimalFormat df = new DecimalFormat("#.00");
         List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
         List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目成本报表");
         List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目成本报表");
@@ -2158,11 +2165,39 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         int total = projectMapper.selectCount(queryWrapper);
         int pageStart = (pageIndex -1) * pageSize;
         System.out.println("companyId="+companyId+", pageStart="+pageStart+", pageSize="+pageSize);
-        List projectTask = projectMapper.getAllProjectCost(companyId, pageStart, pageSize, projectId,inchagerIds);
+        List<Map<String, Object>> projectTask = projectMapper.getAllProjectCost(companyId, pageStart, pageSize, projectId, inchagerIds);
+        List<Integer> projectIdCollect = projectTask.stream().map(pt -> Integer.valueOf(String.valueOf(pt.get("id")))).distinct().collect(Collectors.toList());
+        projectIdCollect.add(-1);
+        List<ExpenseMainType> expenseMainTypes = expenseMainTypeMapper.selectList(new QueryWrapper<ExpenseMainType>().eq("company_id", companyId));
+        List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", companyId).eq("status", 0));
+        List<ExpenseItem> expenseItemList = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().in("project_id", projectIdCollect));
+        for (Map<String, Object> map : projectTask) {
+            BigDecimal bigDecimal=new BigDecimal(0);
+            List<Map<String,Object>> itemList=new ArrayList<>();
+            for (ExpenseMainType expenseMainType : expenseMainTypes) {
+                Map<String,Object> item=new HashMap<>();
+                item.put("type",expenseMainType.getId());
+                List<ExpenseSheet> sheetList = expenseSheetList.stream().filter(es -> es.getType().equals(expenseMainType.getId())).collect(Collectors.toList());
+                List<Integer> collect = sheetList.stream().map(ExpenseSheet::getId).distinct().collect(Collectors.toList());
+                collect.add(-1);
+                double sum = expenseItemList.stream().filter(el -> collect.contains(el.getExpenseId())&&el.getProjectId()!=null&&el.getProjectId().equals(map.get("id"))).mapToDouble(el -> el.getAmount()==null?0:el.getAmount()).sum();
+                item.put("amount",sum);
+                itemList.add(item);
+                map.put(expenseMainType.getName(),sum);
+                bigDecimal=bigDecimal.add(new BigDecimal(sum));
+            }
+            map.put("costDetail",itemList);
+            double totalFee = bigDecimal.doubleValue();
+            //totalFee保留小数点后两位
+            totalFee = Double.parseDouble(df.format(totalFee));
+            map.put("allCost",totalFee);
+        }
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Map<String, Object> map = new HashMap<>();
         map.put("records", projectTask);
         map.put("total", total);
+        String[] split = expenseMainTypes.stream().map(ExpenseMainType::getName).collect(Collectors.joining(",")).split(",");
+        map.put("expenseMainTypeList",split);
         httpRespMsg.data = map;
         return httpRespMsg;
     }
@@ -2192,21 +2227,41 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             }
         }
         QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
-        List<Project> projectList = projectMapper.getAllProjectCost(companyId, null, null, null,inchagerIds);
+        List<Map<String, Object>> projectList = projectMapper.getAllProjectCost(companyId, null, null, null, inchagerIds);
+        List<Integer> projectIdCollect = projectList.stream().map(pt -> Integer.valueOf(String.valueOf(pt.get("id")))).distinct().collect(Collectors.toList());
+        projectIdCollect.add(-1);
+        List<ExpenseMainType> expenseMainTypes = expenseMainTypeMapper.selectList(new QueryWrapper<ExpenseMainType>().eq("company_id", companyId));
+        List<ExpenseSheet> expenseSheetList = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>().eq("company_id", companyId).eq("status", 0));
+        List<ExpenseItem> expenseItemList = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().in("project_id", projectIdCollect));
         List<List<String>> exportList = new ArrayList<>();
-        //String[] titles = {"项目编号", "项目名称", "人工成本", "一般费用", "差旅费用","外包费用", "总费用"};
-        String[] titles = {MessageUtils.message("entry.projectId"), MessageUtils.message("entry.projectName"), MessageUtils.message("entry.laborCost"), MessageUtils.message("excel.genExp"), MessageUtils.message("excel.traExp"),MessageUtils.message("excel.OutExp"), MessageUtils.message("excel.totalExp")};
-        exportList.add(Lists.list(titles));
+        List<String> titles=new ArrayList<>();
+        titles.add("项目编号");
+        titles.add("项目名称");
+        titles.add("人工成本");
+        for (ExpenseMainType expenseMainType : expenseMainTypes) {
+            titles.add(expenseMainType.getName());
+        }
+        titles.add("总费用");
+        exportList.add(titles);
         DecimalFormat df = new DecimalFormat("#.00");
-        for (Project project : projectList) {
+        for (Map<String,Object> item : projectList) {
             List<String> data = new ArrayList<>();
-            data.add(project.getProjectCode());
-            data.add(project.getProjectName());
-            data.add(project.getFeeMan().toString());
-            data.add(project.getFeeNormal().toString());
-            data.add(project.getFeeTravel().toString());
-            data.add(project.getFeeOutsourcing().toString());
-            double totalFee = project.getFeeMan() + project.getFeeNormal()+ project.getFeeTravel()+ project.getFeeOutsourcing();
+            data.add(String.valueOf(item.get("projectCode")));
+            data.add(String.valueOf(item.get("projectName")));
+            data.add(String.valueOf(item.get("feeMan")));
+            BigDecimal bigDecimal=new BigDecimal(0);
+            for (ExpenseMainType expenseMainType : expenseMainTypes) {
+                Map<String,Object> it=new HashMap<>();
+                it.put("type",expenseMainType.getId());
+                List<ExpenseSheet> sheetList = expenseSheetList.stream().filter(es -> es.getType().equals(expenseMainType.getId())).collect(Collectors.toList());
+                List<Integer> collect = sheetList.stream().map(ExpenseSheet::getId).distinct().collect(Collectors.toList());
+                collect.add(-1);
+                double sum = expenseItemList.stream().filter(el -> collect.contains(el.getExpenseId())&&el.getProjectId()!=null&&el.getProjectId().equals(item.get("id"))).mapToDouble(el -> el.getAmount()==null?0:el.getAmount()).sum();
+                it.put("amount",sum);
+                data.add(String.valueOf(sum));
+                bigDecimal=bigDecimal.add(new BigDecimal(sum));
+            }
+            double totalFee = bigDecimal.doubleValue();
             //totalFee保留小数点后两位
             totalFee = Double.parseDouble(df.format(totalFee));
             data.add(totalFee+"");

+ 6 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -4449,7 +4449,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 if (timeType.getShowFillauditTime() == 1) {
                     row.createCell(index).setCellValue(sdf.format((Date)map.get("time")));
                     index++;
-                    row.createCell(index).setCellValue((String)map.get("projectAuditorName"));
+                    if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                        String projectAuditorName ="$userName="+String.valueOf(map.get("projectAuditorCorpwxUserId"))+"$";
+                        row.createCell(index).setCellValue(projectAuditorName);
+                    }else {
+                        row.createCell(index).setCellValue((String)map.get("projectAuditorName"));
+                    }
                     index++;
                     if (map.get("projectAuditTime") == null) {
                         row.createCell(index).setCellValue("");

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

@@ -1052,7 +1052,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             if (from == null) {
                 from = "官网";
             }
-            company.setFrom(from);
+            company.setRegFrom(from);
             companyMapper.insert(company);
 
             //生成工作时长

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

@@ -22,12 +22,12 @@
         <result column="package_provider" property="packageProvider" />
         <result column="is_international" property="isInternational" />
         <result column="create_date" property="createDate" />
-        <result column="from" property="from" />
+        <result column="reg_from" property="regFrom" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_name, staff_count_max, expiration_date, set_meal, package_worktime, package_project, package_contract, package_oa, package_etimecard, package_expense, package_customer, package_engineering, package_simple, package_finance, package_provider, is_international, create_date, from
+        id, company_name, staff_count_max, expiration_date, set_meal, package_worktime, package_project, package_contract, package_oa, package_etimecard, package_expense, package_customer, package_engineering, package_simple, package_finance, package_provider, is_international, create_date, reg_from
     </sql>
 
 </mapper>

+ 3 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -587,12 +587,9 @@
         ORDER BY b.id ASC
     </select>
     <!--分页获取项目成本 -->
-    <select id="getAllProjectCost" resultMap="BaseResultMap">
-        SELECT id, project_code, project_name,
-        (SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id) AS fee_man,
-        (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND  expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 0 and expense_sheet.status = 0) AS fee_normal,
-        (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND  expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 1 and expense_sheet.status = 0) AS fee_travel,
-        (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND  expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 2 and expense_sheet.status = 0) AS fee_outsourcing
+    <select id="getAllProjectCost"  resultType="java.util.Map">
+        SELECT id, project_code as projectCode, project_name as projectName,
+        (SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id) AS feeMan
         FROM project WHERE project.`company_id` = #{companyId}
         and (project.status &lt;&gt; 3 or project.status is null)
         <if test="projectId != null">

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

@@ -63,7 +63,7 @@
         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
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId,a.custom_data as customData
-        ,u.name as projectAuditorName, 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
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN user AS c ON a.creator_id=c.id
@@ -166,7 +166,7 @@
         degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId,
         a.custom_data as customData
         ,c.plate1 as plate1,c.plate2 as plate2,c.plate3 as plate3,c.plate4 as plate4,c.plate5 as plate5
-        ,u.name as projectAuditorName, a.project_auditor_id as projectAuditorId, department.department_name as
+        ,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
         FROM report AS a
@@ -220,7 +220,7 @@
         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
         , reject_reason as rejectReason, reject_username as rejectUsername, reject_userid as rejectUserid, degree_id as degree_id,report_extra_degree.name as degreeName,task_group.name as groupName,a.group_id as groupId, a.custom_data as customData
-        ,u.name as projectAuditorName, 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
         FROM report AS a
         JOIN project AS b ON a.project_id=b.id
         LEFT JOIN user AS c ON a.creator_id=c.id

+ 9 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/Register.vue

@@ -68,8 +68,11 @@
                     vcode: [{ required: true, message: '请输入验证码', trigger: 'blur' },],
                     password: [{ required: true, message: '请设置密码,长度不低于6位', trigger: 'blur' },],
                     repwd: [{ required: true, message: '请重复输入密码', trigger: 'blur' },]
-                }
+                },
             };
+        },
+        mounted() {
+            
         },
         methods: {
             //开始倒计时
@@ -135,9 +138,13 @@
                                 });
                             return;
                         }
+                        let formObj = this.ruleForm
+                        if(window.location.href.indexOf('360') > 1) {
+                            formObj.from = '360'
+                        }
                         var _this = this;
                         this.logining = true;
-                        this.http.post(this.port.manage.register, this.ruleForm , res => {
+                        this.http.post(this.port.manage.register, formObj, res => {
                             this.logining = false;
                             if (res.code == "ok") {
                                 this.$message({

+ 18 - 6
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -263,7 +263,7 @@
                         {{scope.row.feeMan==null?0:scope.row.feeMan.toFixed(2)}}
                     </template>
                 </el-table-column>
-                <el-table-column prop="feeNormal" :label="$t('generalcost')"  width="100" align="right">
+                <!-- <el-table-column prop="feeNormal" :label="$t('generalcost')"  width="100" align="right">
                   <template slot-scope="scope">
                         {{scope.row.feeNormal==null?0:scope.row.feeNormal.toFixed(2)}}
                     </template>
@@ -277,10 +277,12 @@
                   <template slot-scope="scope">
                         {{scope.row.feeOutsourcing==null?0:scope.row.feeOutsourcing.toFixed(2)}}
                     </template>
-                </el-table-column>
+                </el-table-column> -->
+                <el-table-column :prop="item" :label="item"  width="100" align="right" v-for="item,index in baobiaoList" :key="index"></el-table-column>
+                
                 <el-table-column  :label="$t('totalcostos')"  width="100" align="right">
                   <template slot-scope="scope">
-                        {{(scope.row.feeMan+scope.row.feeNormal+scope.row.feeTravel+scope.row.feeOutsourcing).toFixed(2)}}
+                         {{scope.row.allCost}}
                     </template>
                 </el-table-column>
                 <el-table-column  :label="$t('costdetail')"  width="100" align="right">
@@ -981,7 +983,7 @@
                 </el-table-column>
                 <el-table-column prop="amount" :label="$t('amountof')+'('+ $t('tax') +')'"   align="right">
                   <template slot-scope="scope">
-                        {{scope.row.amount.toFixed(2)}}
+                        {{scope.row.amount}}
                     </template>
                 </el-table-column>
                 <el-table-column prop="amount" :label="$t('taxs')"   align="right">
@@ -994,6 +996,13 @@
                         {{(scope.row.amount-scope.row.taxValue).toFixed(2)}}
                     </template>
                 </el-table-column>
+                <el-table-column prop="remark" label="备注"   align="right">
+                  <template slot-scope="scope">
+                    <el-tooltip popper-class="tipclass" :content=scope.row.remark placement="top-start">
+                      <div class="cloStyleFour">{{scope.row.remark==null?"":scope.row.remark.length > 6?scope.row.remark.substring(0,5) + "...": scope.row.remark}}</div>
+                    </el-tooltip>
+                    </template>
+                </el-table-column>
                 <!-- <el-table-column prop="pic" label="凭证"  >
                   <template slot-scope="scope">
                         <span v-if="scope.row.pic">
@@ -1210,6 +1219,8 @@ export default {
 
       taskRestartArr: [], // 任务重启表数据
       fTEDataList: [], // FTE数据
+
+      baobiaoList: []
     };
   },
   computed: {},
@@ -2155,8 +2166,8 @@ export default {
                 type: "error"
             });
         });
-    },
-    getAllProjectCost() {
+    }, 
+    getAllProjectCost() { 
       this.listLoading = true;
       this.http.post('/project/getAllProjectCost', {
                     pageIndex: this.page,
@@ -2167,6 +2178,7 @@ export default {
             if (res.code == "ok") {
                 this.list2 = res.data.records;
                 this.total = res.data.total;
+                this.baobiaoList = res.data.expenseMainTypeList
                 this.$forceUpdate()
                 this.listLoading = false; 
             } else {

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -764,7 +764,7 @@ export default {
         this.editTypeData = row
       }else{
         this.editTypeData = {
-          mainType: 0,
+          mainType: '',
           typeName: '',
           companyId: this.user.companyId
         }

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -3646,6 +3646,7 @@ a {
                 if (subProject == null) {
                     this.temaddForm = {projectId: this.currentProject.id, level:1}
                 } else {
+                    subProject.status=subProject.status==true?1:0
                     this.temaddForm = JSON.parse(JSON.stringify(subProject));
                 }
                 this.addSubProject = true;

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

@@ -211,7 +211,7 @@
 
                     <!-- 时间段选择模式 -->
                     <van-field readonly v-if="reportTimeType.type == 2" clickable name="datetimePicker" :value="item.startTime" label="开始时间" placeholder="点击选择时间" 
-                        @click="item.canEdit?showStartTime = true:''" :disabled="!item.canEdit"
+                        @click="item.canEdit?showStartTime = true:'',dailyIndex = index" :disabled="!item.canEdit"
                         :rules="[{ required: true, message: '请选择开始时间' }]"
                           />
                     <van-popup v-model="showStartTime" position="bottom">
@@ -226,7 +226,7 @@
                         <!-- :filter="filter" 原本这个属性在里面 -->
                     </van-popup>
                     <van-field v-if="reportTimeType.type == 2" readonly clickable name="datetimePicker" :value="item.endTime" label="结束时间" placeholder="点击选择时间" 
-                        @click="item.canEdit?showEndTime = true:''" :disabled="!item.canEdit" 
+                        @click="item.canEdit?showEndTime = true:'', dailyIndex = index" :disabled="!item.canEdit" 
                         :rules="[{ required: true, message: '请选择结束时间' }]" />
                     <van-popup v-model="showEndTime" position="bottom" >
                         <van-datetime-picker
@@ -410,6 +410,8 @@ import timetoolVue from '../timetool/timetool.vue';
     export default {
         data() {
             return {
+                dailyIndex: 0,
+
                 integrationProjectList: [],
                 cardRefLoading: false,
                 today: '',
@@ -997,14 +999,18 @@ import timetoolVue from '../timetool/timetool.vue';
                 }
             },
 
-            confirmTime(item, field) {
+            confirmTime(item, field, index) {
                 if (field == 0) {
-                    item.startTime = this.startTime;
+                    console.log(this.dailyIndex)
+                    // item.startTime = this.startTime;
+                    this.form.domains[this.dailyIndex].startTime = this.startTime;
                     this.showStartTime = false;
                 } else {
-                    item.endTime = this.endTime;
+                    this.form.domains[this.dailyIndex].endTime = this.endTime;
+                    // item.endTime = this.endTime;
                     this.showEndTime = false;
                 }
+                console.log(this.form.domains)
                 this.setTotalReportHours()
             },
 

+ 6 - 7
fhKeeper/formulahousekeeper/timesheet_h5/src/views/index/index.vue

@@ -50,7 +50,7 @@
                 this.user = JSON.parse(localStorage.userInfo)
                 // 是否为钉钉同步
                 this.isSyncData = this.user.timeType.syncDingding || this.user.timeType.syncFanwei;
-            }
+            } 
         },
         mounted() {
             //有错误信息,优先跳转到登录页面去
@@ -84,22 +84,21 @@
                 }
             } else {
                 //其他情况,刷新用户信息
-                if (localStorage.userInfo != null) {
+                if (localStorage.userInfo != null && localStorage.userInfo != 'undefined') {
                     that.user = JSON.parse(localStorage.userInfo);
                     that.getAccountInfo(that.user.id);
+                } else{
+                    //无用户信息,跳到登录页面去
+                    this.$router.push("/login");
                 }
             }
             if (this.user) {
                 let userss = this.user;
-                if(userss.companyId == '3454') {
-                    alert(`isMobFirstLogin = ${userss.isMobFirstLogin} $ userss.createTime = ${userss.createTime[0]} $ userss.roleName = ${userss.roleName}`)
-                }
                 if(userss.isMobFirstLogin == 1 && userss.createTime[0] > '2022' && userss.roleName == '超级管理员') {
                     // 第一次登陆显示
                     this.previewPicture()
                 }
-            }
-            
+            } 
         },
         components: {
             Footer

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

@@ -220,6 +220,7 @@
             }
         },
         created() {
+            if (localStorage.userInfo == 'undefined') localStorage.removeItem('userInfo');
             if (localStorage.userInfo != null) {
                 this.$router.push("/index").catch(err => { console.log(err, '错误4')});
             }
@@ -273,6 +274,7 @@
                         
                     } else {
                         //检查环境,如果是钉钉有$CORPID$
+                        
                         var key = '?corpid=';
                         var jumpkey = '&jumpto=';
                         var url = location.href;
@@ -284,6 +286,7 @@
                             }else{
                                 corpId = url.substring(url.indexOf(key)+key.length,url.indexOf('#'));
                             }
+                            alert('钉钉登录==='+corpId);
                             this.isDingding = true
                             dd.ready(function() {
                                 dd.runtime.permission.requestAuthCode({