Explorar o código

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

Lljy-ai %!s(int64=4) %!d(string=hai) anos
pai
achega
f48b7ddfb1
Modificáronse 31 ficheiros con 645 adicións e 41 borrados
  1. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectUserSalaryController.java
  2. 7 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java
  3. 4 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java
  4. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserSalaryController.java
  5. 2 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseItem.java
  6. 19 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseSheet.java
  7. 73 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectUserSalary.java
  8. 86 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserSalary.java
  9. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectUserSalaryMapper.java
  10. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/UserSalaryMapper.java
  11. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectUserSalaryService.java
  12. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserSalaryService.java
  13. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java
  14. 17 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java
  15. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectUserSalaryServiceImpl.java
  16. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserSalaryServiceImpl.java
  17. 25 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  18. 3 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ExpenseSheetMapper.xml
  19. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectUserSalaryMapper.xml
  20. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml
  21. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserSalaryMapper.xml
  22. 26 3
      fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/demo_index.html
  23. 7 3
      fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.css
  24. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.js
  25. 7 0
      fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.json
  26. BIN=BIN
      fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.ttf
  27. BIN=BIN
      fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.woff
  28. BIN=BIN
      fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.woff2
  29. 124 16
      fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue
  30. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue
  31. 52 1
      fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectUserSalaryController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+@RestController
+@RequestMapping("/project-user-salary")
+public class ProjectUserSalaryController {
+
+}
+

+ 7 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java

@@ -114,10 +114,13 @@ public class StagesController {
             stagesQueryWrapper.eq("group_id", item.getGroupId()).gt("sequence", stages.getSequence());
             stagesService.removeById(item.getId());
             List<Stages> afterList = stagesService.list(stagesQueryWrapper);
-            afterList.forEach(a->{
-                a.setSequence(a.getSequence() -1);
-            });
-            stagesService.updateBatchById(afterList);
+            if (afterList.size() > 0) {
+                afterList.forEach(a->{
+                    a.setSequence(a.getSequence() -1);
+                });
+                stagesService.updateBatchById(afterList);
+            }
+
 
             return msg;
         }

+ 4 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -143,6 +143,9 @@ public class UserController {
         return userService.switchPermission(id, request);
     }
 
-
+    @RequestMapping("/getUserSalaryList")
+    public HttpRespMsg getUserSalaryList(String id) {
+        return userService.getUserSalaryList(id);
+    }
 }
 

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserSalaryController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+@RestController
+@RequestMapping("/user-salary")
+public class UserSalaryController {
+
+}
+

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

@@ -2,7 +2,6 @@ package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
-import java.time.LocalDate;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
@@ -16,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2021-05-17
+ * @since 2021-05-18
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -44,7 +43,7 @@ public class ExpenseItem extends Model<ExpenseItem> {
      * 费用日期
      */
     @TableField("happen_date")
-    private LocalDate happenDate;
+    private String happenDate;
 
     /**
      * 0-增值税专用发票,1-增值税普通发票

+ 19 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseSheet.java

@@ -2,12 +2,16 @@ package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * <p>
@@ -15,7 +19,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2021-05-17
+ * @since 2021-05-18
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -51,6 +55,14 @@ public class ExpenseSheet extends Model<ExpenseSheet> {
     @TableField("owner_name")
     private String ownerName;
 
+    /**
+     * 填报日期
+     */
+    @TableField("create_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate createDate;
+
     /**
      * 发票张数
      */
@@ -75,6 +87,12 @@ public class ExpenseSheet extends Model<ExpenseSheet> {
     @TableField("remark")
     private String remark;
 
+    /**
+     * 总费用
+     */
+    @TableField("total_amount")
+    private Double totalAmount;
+
 
     @Override
     protected Serializable pkVal() {

+ 73 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectUserSalary.java

@@ -0,0 +1,73 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ProjectUserSalary extends Model<ProjectUserSalary> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 用户id
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 用户姓名
+     */
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 月薪
+     */
+    @TableField("month_cost")
+    private BigDecimal monthCost;
+
+    /**
+     * 时薪
+     */
+    @TableField("cost")
+    private BigDecimal cost;
+
+    /**
+     * 薪资类型
+     */
+    @TableField("salary_type")
+    private Integer salaryType;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 86 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserSalary.java

@@ -0,0 +1,86 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class UserSalary extends Model<UserSalary> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用户id
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 用户姓名
+     */
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 月薪
+     */
+    @TableField("month_cost")
+    private BigDecimal monthCost;
+
+    /**
+     * 时薪
+     */
+    @TableField("cost")
+    private BigDecimal cost;
+
+    /**
+     * 薪资类型
+     */
+    @TableField("salary_type")
+    private Integer salaryType;
+
+    /**
+     * 更新时间
+     */
+    @TableField("indate")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime indate;
+
+    public static UserSalary copyFromUser(User user) {
+        UserSalary userSalary = new UserSalary();
+        userSalary.setUserId(user.getId());
+        userSalary.setSalaryType(user.getSalaryType());
+        userSalary.setMonthCost(user.getMonthCost());
+        userSalary.setCost(user.getCost());
+        userSalary.setUserName(user.getName());
+        return  userSalary;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

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

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ProjectUserSalary;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+public interface ProjectUserSalaryMapper extends BaseMapper<ProjectUserSalary> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.UserSalary;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+public interface UserSalaryMapper extends BaseMapper<UserSalary> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectUserSalaryService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ProjectUserSalary;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+public interface ProjectUserSalaryService extends IService<ProjectUserSalary> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserSalaryService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.UserSalary;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+public interface UserSalaryService extends IService<UserSalary> {
+
+}

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -39,4 +39,6 @@ public interface UserService extends IService<User> {
     HttpRespMsg switchPermission(String id, HttpServletRequest request);
 
     HttpRespMsg resetPwd(String userId);
+
+    HttpRespMsg getUserSalaryList(String id);
 }

+ 17 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.annotation.Resource;
@@ -64,6 +65,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         sheet.setCompanyId(user.getCompanyId());
         expenseSheetMapper.insert(sheet);
         List<ExpenseItem> itemList = new ArrayList<ExpenseItem>();
+
         for (int i=0;i<array.size(); i++) {
             JSONObject obj = array.getJSONObject(i);
             ExpenseItem expenseItem = JSONObject.toJavaObject(obj, ExpenseItem.class);
@@ -87,17 +89,25 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         QueryWrapper<ExpenseSheet> queryWrapper = new QueryWrapper<ExpenseSheet>();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         queryWrapper.orderByDesc("id");
-        if (sheet.getCode() != null) {
+        if (!StringUtils.isEmpty(sheet.getCode())) {
             queryWrapper.eq("code", sheet.getCode());
         }
-        if (sheet.getOwnerId() != null) {
+        if (!StringUtils.isEmpty(sheet.getOwnerId())) {
             queryWrapper.eq("owner_id", sheet.getOwnerId());
         }
+        if (sheet.getType() != null) {
+            queryWrapper.eq("type", sheet.getType());
+        }
+        if (sheet.getCreateDate() != null) {
+            queryWrapper.eq("create_date", sheet.getCreateDate());
+        }
         IPage<ExpenseSheet> listIPager = expenseSheetMapper.selectPage(new Page<>(pageIndex, pageSize),
                 queryWrapper);
+        List<ExpenseSheet> records = listIPager.getRecords();
+        System.out.println("record size===="+records.size());
         Long total = listIPager.getTotal();
         Map<String, Object> map = new HashMap<>();
-        map.put("records", listIPager.getRecords());
+        map.put("records", records);
         map.put("total", total);
         httpRespMsg.data = map;
         return httpRespMsg;
@@ -115,7 +125,10 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         if (list.size() > 0) {
             String code = list.get(0).getCode();
             code = code.substring(format.length(), code.length());
-            start = Integer.parseInt(code) + 1;
+            System.out.println("code====="+code);
+            if (code.length() > 0) {
+                start = Integer.parseInt(code) + 1;
+            }
         }
         HttpRespMsg msg = new HttpRespMsg();
         msg.data = format+start;

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectUserSalaryServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ProjectUserSalary;
+import com.management.platform.mapper.ProjectUserSalaryMapper;
+import com.management.platform.service.ProjectUserSalaryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+@Service
+public class ProjectUserSalaryServiceImpl extends ServiceImpl<ProjectUserSalaryMapper, ProjectUserSalary> implements ProjectUserSalaryService {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserSalaryServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.UserSalary;
+import com.management.platform.mapper.UserSalaryMapper;
+import com.management.platform.service.UserSalaryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-19
+ */
+@Service
+public class UserSalaryServiceImpl extends ServiceImpl<UserSalaryMapper, UserSalary> implements UserSalaryService {
+
+}

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

@@ -50,6 +50,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private TimeTypeMapper timeTypeMapper;
     @Resource
     private ProjectMapper projectMapper;
+    @Resource
+    private UserSalaryMapper userSalaryMapper;
     //登录网页端
     @Override
     public HttpRespMsg loginAdmin(String username, String password) {
@@ -236,6 +238,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     httpRespMsg.setError("只有负责人可以删除管理员账号");
                 } else {
                     userMapper.deleteById(userId);
+                    userSalaryMapper.delete(new QueryWrapper<UserSalary>().eq("user_id", userId));
                 }
             }
         } catch (NullPointerException e) {
@@ -350,13 +353,22 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                                             convertDepartmentIdToCascade(departmentId));
                             if (userMapper.insert(user) == 0) {
                                 httpRespMsg.setError("操作失败");
+                            } else {
+                                //插入人员历史成本表
+                                UserSalary userSalary = UserSalary.copyFromUser(user);
+                                userSalaryMapper.insert(userSalary);
                             }
                         }
                     }
                 }
             } else {
                 //修改
-                userMapper.updateById(userMapper.selectById(targetId)
+                User oldUser = userMapper.selectById(targetId);
+                boolean salaryChange = false;
+                if (oldUser.getMonthCost().compareTo(monthCostValue) != 0 || oldUser.getCost().compareTo(costValue) != 0) {
+                    salaryChange = true;
+                }
+                userMapper.updateById(oldUser
                         .setName(name)
                         .setPhone(phone)
                         .setRole(role)
@@ -367,6 +379,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         .setDepartmentCascade(departmentId == null ?
                                 convertDepartmentIdToCascade(0) :
                                 convertDepartmentIdToCascade(departmentId)));
+                if (salaryChange) {
+                    UserSalary userSalary = UserSalary.copyFromUser(oldUser);
+                    userSalaryMapper.insert(userSalary);
+                }
             }
         } catch (NullPointerException e) {
             httpRespMsg.setError("数据有误 验证失败");
@@ -560,4 +576,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
         return new HttpRespMsg();
     }
+
+    @Override
+    public HttpRespMsg getUserSalaryList(String id) {
+        List<UserSalary> userSalaries = userSalaryMapper.selectList(new QueryWrapper<UserSalary>().eq("user_id", id).orderByDesc("id"));
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = userSalaries;
+        return msg;
+    }
 }

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

@@ -9,15 +9,17 @@
         <result column="company_id" property="companyId" />
         <result column="owner_id" property="ownerId" />
         <result column="owner_name" property="ownerName" />
+        <result column="create_date" property="createDate" />
         <result column="ticket_num" property="ticketNum" />
         <result column="type" property="type" />
         <result column="status" property="status" />
         <result column="remark" property="remark" />
+        <result column="total_amount" property="totalAmount" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, code, company_id, owner_id, owner_name, ticket_num, type, status, remark
+        id, code, company_id, owner_id, owner_name, create_date, ticket_num, type, status, remark, total_amount
     </sql>
 
 </mapper>

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectUserSalaryMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ProjectUserSalaryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ProjectUserSalary">
+        <id column="id" property="id" />
+        <result column="project_id" property="projectId" />
+        <result column="user_id" property="userId" />
+        <result column="user_name" property="userName" />
+        <result column="month_cost" property="monthCost" />
+        <result column="cost" property="cost" />
+        <result column="salary_type" property="salaryType" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, project_id, user_id, user_name, month_cost, cost, salary_type
+    </sql>
+
+</mapper>

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

@@ -109,6 +109,6 @@
         <if test="taskType != null" >
             and task.task_type = #{taskType}
         </if>
-        GROUP BY task.id ORDER BY SUM(report.`working_time`) DESC LIMIT 10
+        GROUP BY task.id
     </select>
 </mapper>

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserSalaryMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.UserSalaryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.UserSalary">
+        <id column="id" property="id" />
+        <result column="user_id" property="userId" />
+        <result column="user_name" property="userName" />
+        <result column="month_cost" property="monthCost" />
+        <result column="cost" property="cost" />
+        <result column="salary_type" property="salaryType" />
+        <result column="indate" property="indate" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, user_id, user_name, month_cost, cost, salary_type, indate
+    </sql>
+
+</mapper>

+ 26 - 3
fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/demo_index.html

@@ -54,6 +54,12 @@
       <div class="content unicode" style="display: block;">
           <ul class="icon_lists dib-box">
           
+            <li class="dib">
+              <span class="icon iconfont">&#xe605;</span>
+                <div class="name">记录</div>
+                <div class="code-name">&amp;#xe605;</div>
+              </li>
+          
             <li class="dib">
               <span class="icon iconfont">&#xe613;</span>
                 <div class="name">导入</div>
@@ -252,9 +258,9 @@
 <pre><code class="language-css"
 >@font-face {
   font-family: 'iconfont';
-  src: url('iconfont.woff2?t=1621300718527') format('woff2'),
-       url('iconfont.woff?t=1621300718527') format('woff'),
-       url('iconfont.ttf?t=1621300718527') format('truetype');
+  src: url('iconfont.woff2?t=1621389362090') format('woff2'),
+       url('iconfont.woff?t=1621389362090') format('woff'),
+       url('iconfont.ttf?t=1621389362090') format('truetype');
 }
 </code></pre>
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -280,6 +286,15 @@
       <div class="content font-class">
         <ul class="icon_lists dib-box">
           
+          <li class="dib">
+            <span class="icon iconfont firerock-iconrecord"></span>
+            <div class="name">
+              记录
+            </div>
+            <div class="code-name">.firerock-iconrecord
+            </div>
+          </li>
+          
           <li class="dib">
             <span class="icon iconfont firerock-icondaoru"></span>
             <div class="name">
@@ -577,6 +592,14 @@
       <div class="content symbol">
           <ul class="icon_lists dib-box">
           
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#firerock-iconrecord"></use>
+                </svg>
+                <div class="name">记录</div>
+                <div class="code-name">#firerock-iconrecord</div>
+            </li>
+          
             <li class="dib">
                 <svg class="icon svg-icon" aria-hidden="true">
                   <use xlink:href="#firerock-icondaoru"></use>

+ 7 - 3
fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.css

@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 2390497 */
-  src: url('iconfont.woff2?t=1621300718527') format('woff2'),
-       url('iconfont.woff?t=1621300718527') format('woff'),
-       url('iconfont.ttf?t=1621300718527') format('truetype');
+  src: url('iconfont.woff2?t=1621389362090') format('woff2'),
+       url('iconfont.woff?t=1621389362090') format('woff'),
+       url('iconfont.ttf?t=1621389362090') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +13,10 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.firerock-iconrecord:before {
+  content: "\e605";
+}
+
 .firerock-icondaoru:before {
   content: "\e613";
 }

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.js


+ 7 - 0
fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.json

@@ -5,6 +5,13 @@
   "css_prefix_text": "firerock-icon",
   "description": "",
   "glyphs": [
+    {
+      "icon_id": "12000587",
+      "name": "记录",
+      "font_class": "record",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
     {
       "icon_id": "20147073",
       "name": "导入",

BIN=BIN
fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.ttf


BIN=BIN
fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.woff


BIN=BIN
fhKeeper/formulahousekeeper/timesheet/src/assets/myfont/iconfont.woff2


+ 124 - 16
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -206,17 +206,71 @@
     </div>
 
     <!-- 下面部分 -->
-    <div class="staff" style="margin-left: 200px" v-if="displayTable">
-      <div class="search">
-        <el-input v-model="input" placeholder="单据编号" style="display: inline-block;width: 200px"></el-input>
-        <span>单据类别:
-          <el-select v-model="value" placeholder="请选择">
-            <el-option label="一般费用填表" value="0"></el-option>
-            <el-option label="差旅费用填表" value="1"></el-option>
-            <el-option label="外包费用填表" value="2"></el-option>
-          </el-select>
-          <el-button type="primary" icon="el-icon-search">搜索</el-button>
-        </span>
+    <div class="staff" style="margin-left: 250px" v-if="displayTable">
+      <div style="padding:10px;">
+        <div>
+        <el-form label-width="80px" inline>
+          <!-- 填报日期 -->
+          <el-form-item label="单据编号" >
+            <el-input v-model="code" placeholder="单据编号" clearable="true"></el-input>
+          </el-form-item>
+          <!-- 填报日期 -->
+          <el-form-item label="填报日期" >
+            <el-date-picker type="date" clearable="true" placeholder="选择日期" value-format="yyyy-MM-dd" v-model="date" style="width: 200px;"></el-date-picker>
+          </el-form-item>
+          <!-- 费用类型 -->
+          <el-form-item label="费用类型">
+            <el-select v-model="type" placeholder="请选择费用类型" clearable="true" style="width: 150px">
+              <el-option label="一般费用" value="0"></el-option>
+              <el-option label="差旅费用" value="1"></el-option>
+              <el-option label="外包费用" value="2"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-button @click="getList">查找</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-divider ></el-divider>
+      <!--列表-->
+        <el-table :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+            <el-table-column prop="code" label="票据编号" ></el-table-column>
+            <el-table-column prop="totalAmount" label="金额" ></el-table-column>
+            <el-table-column prop="ownerName" label="填报人" ></el-table-column>
+            <el-table-column prop="createDate" label="填报日期" ></el-table-column>
+            <el-table-column prop="ticketNum" label="发票张数" ></el-table-column>
+            <el-table-column prop="type" label="票据类型" >
+              <template slot-scope="scope">
+                {{feeType[scope.row.type]}}
+              </template>
+            </el-table-column>
+            <el-table-column prop="remark" label="备注" width="250">
+              <template slot-scope="scope">
+                <span style="font-size:12px;">{{scope.row.remark}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" width="160">
+                <template slot-scope="scope">
+                    <el-button  icon="el-icon-view"  circle size="mini"  @click.stop.native="downloadByA(scope.row)"></el-button>
+                    <el-button icon="el-icon-edit" circle size="mini" style="margin-left:10px;" @click.stop.native="showEditName(scope.row)"></el-button>
+                    <el-button icon="el-icon-delete"  circle size="mini" style="margin-left:10px;" @click.stop.native="deleteItem(scope.row)"></el-button>
+                    
+                </template>
+            </el-table-column>
+        </el-table>
+
+        <!--工具条-->
+        <el-col :span="24" class="toolbar">
+            <el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :page-sizes="[20 , 50 , 80 , 100]"
+                :page-size="20"
+                layout="total, sizes, prev, pager, next"
+                :total="total"
+                style="float:right;"
+            ></el-pagination>
+        </el-col>
       </div>
 
       <div class="tables">
@@ -268,6 +322,15 @@ export default {
   props: {},
   data() {
     return {
+      feeType:["一般费用","差旅费用","外包费用"],
+      listLoading:false,
+      tableHeight:0,
+      list:[],
+      total:0,
+      code:null,
+      date:null,
+      type:null,
+      ownerId: null,
       users: [], // 人员信息
       displayTable: false,
       getLists: [],
@@ -289,7 +352,15 @@ export default {
   },
   computed: {},
   watch: {},
-  created() {},
+  created() {
+    let height = window.innerHeight;
+    this.tableHeight = height - 195;
+    const that = this;
+    window.onresize = function temp() {
+        that.tableHeight = window.innerHeight - 195;
+    };
+  },
+
   mounted() {
     this.getUsers() // 获取人员信息
     this.getList() // 获取单据列表
@@ -370,13 +441,15 @@ export default {
     getList() {
       this.http.post('/expense-sheet/list', {pageIndex: this.page,
                     pageSize: this.size,
-                    code: null,
-                    ownerId:null,
+                    code: this.code,
+                    createDate: this.date,
+                    ownerId:this.ownerId,
+                    type:this.type,
                     },
         res => {
             if (res.code == "ok") {
-                this.getLists = res.data
-                console.log(this.getLists, '获取过来的单据列表');
+                this.list = res.data.records;
+                this.total = res.data.total; 
             } else {
                 this.$message({
                 message: res.msg,
@@ -467,6 +540,41 @@ export default {
             });
         });
     },
+
+    //分页
+    handleCurrentChange(val) {
+        this.page = val;
+        this.getList();
+    },
+
+    handleSizeChange(val) {
+        this.size = val;
+        this.getList();
+    },
+    deleteItem(item) {
+      this.$confirm("确认要删除吗?", "提示", {
+                    //type: 'warning'
+                }).then(() => {
+                    this.http.post('/expense-sheet/delete', {id:item.id},
+                    res => {
+                        if (res.code == "ok") {
+                            this.getList();
+                        } else {
+                            this.$message({
+                            message: res.msg,
+                            type: "error"
+                            });
+                        }
+                    },
+                    error => {
+                        this.$message({
+                            message: error,
+                            type: "error"
+                        });
+                    });
+                });
+    },
+
     // 点击删除
     chanc(k) {
       this.invoiceList.splice(k, 1)

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

@@ -156,7 +156,7 @@
             </div>
         </el-dialog>
 
-        <el-dialog title="校成本基线" v-if="addBaseFormVisible" :visible.sync="addBaseFormVisible" :close-on-click-modal="false" customClass="customWidth" width="600px">
+        <el-dialog title="校成本基线" v-if="addBaseFormVisible" :visible.sync="addBaseFormVisible" :close-on-click-modal="false" customClass="customWidth" width="600px">
             <el-form ref="basicInfoForm" :model="addForm" :rules="rules" label-width="120px">
                 <el-form-item label="人工成本" >
                     <el-input v-model="addForm.baseMan"  placeholder="请输入" clearable></el-input>

+ 52 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -72,7 +72,9 @@
                     <template slot-scope="scope">{{scope.row.monthCost==null?0:scope.row.monthCost}} 元</template>
                 </el-table-column>
                 <el-table-column prop="cost" label="时薪" sortable>
-                    <template slot-scope="scope">{{scope.row.cost==null?0:scope.row.cost}} 元</template>
+                    <template slot-scope="scope">{{scope.row.cost==null?0:scope.row.cost}} 元
+                        <el-link @click.native="showSalaryList(scope.row)"><i class="iconfont firerock-iconrecord"></i></el-link>
+                    </template>
                 </el-table-column>
                 <el-table-column label="操作" width="280">
                     <template slot-scope="scope">
@@ -188,6 +190,30 @@
                 <el-button type="primary" @click="submitInsert1">提交</el-button>
             </span>
         </el-dialog>
+
+        <el-dialog title="人员历史成本" :visible.sync="userSalaryListDialog" width="550px" >
+            <el-table :data="userSalaryList" highlight-current-row v-loading="listLoading" height="300px" style="width: 100%;">
+                <el-table-column prop="userName" label="姓名" ></el-table-column>
+                <el-table-column prop="indate" label="更新时间" width="150px">
+                </el-table-column>
+                <el-table-column prop="salaryType" label="薪酬方式" >
+                    <template slot-scope="scope" >
+                        {{scope.row.salaryType==0?"固定月薪":"计时工资"}}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="monthCost" label="月薪" >
+                    <template slot-scope="scope" >
+                        {{scope.row.monthCost}}元
+                    </template>
+                </el-table-column>
+                <el-table-column prop="cost" label="时薪" >
+                    <template slot-scope="scope" >
+                        {{scope.row.cost}}元
+                    </template>
+                </el-table-column>
+                
+            </el-table>
+        </el-dialog>
     </section>
 </template>
 
@@ -195,6 +221,8 @@
     export default {
         data() {
             return {
+                userSalaryList:[],
+                userSalaryListDialog: false,
                 value:{},
                 user: JSON.parse(sessionStorage.getItem("user")),
                 users:[],
@@ -261,6 +289,29 @@
             };
         },
         methods: {
+            showSalaryList(item) {
+                this.userSalaryListDialog = true;
+                this.userSalaryList = [];
+                this.http.post('/user/getUserSalaryList', {
+                    id: item.id
+                },
+                res => {
+                    if (res.code == "ok") {
+                        this.userSalaryList = res.data;
+                    } else {
+                        this.$message({
+                        message: res.msg,
+                        type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
             getUsers() {
                 this.http.post(this.port.manage.list, {
                     departmentId: -1,