瀏覽代碼

解决查看单据项目一样的问题,任务进展样式调整

Lljy-ai 4 年之前
父節點
當前提交
384dee72be
共有 13 個文件被更改,包括 125 次插入32 次删除
  1. 7 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseSheetController.java
  2. 8 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java
  3. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseSheet.java
  4. 7 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java
  5. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ExpenseSheetService.java
  6. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java
  7. 39 12
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java
  8. 9 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  9. 26 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  10. 4 4
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml
  11. 7 0
      fhKeeper/formulahousekeeper/timesheet/config/index.js
  12. 10 8
      fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue
  13. 1 1
      fhKeeper/formulahousekeeper/timesheet_h5/vue.config.js

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseSheetController.java

@@ -55,5 +55,12 @@ public class ExpenseSheetController {
         return expenseSheetService.queryList(sheet, pageIndex, pageSize);
         return expenseSheetService.queryList(sheet, pageIndex, pageSize);
 
 
     }
     }
+
+    @RequestMapping("/getDetail")
+    public HttpRespMsg getDetail(Integer id) {
+
+        return expenseSheetService.getDetail(id);
+
+    }
 }
 }
 
 

+ 8 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -147,5 +147,13 @@ public class UserController {
     public HttpRespMsg getUserSalaryList(String id) {
     public HttpRespMsg getUserSalaryList(String id) {
         return userService.getUserSalaryList(id);
         return userService.getUserSalaryList(id);
     }
     }
+
+
+    @RequestMapping("/setActive")
+    public HttpRespMsg setActive(String id, int isActive) {
+        return userService.setActive(id, isActive);
+    }
+
+
 }
 }
 
 

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

@@ -6,6 +6,7 @@ import java.time.LocalDate;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
 import java.io.Serializable;
+import java.util.List;
 
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.Data;
@@ -94,6 +95,8 @@ public class ExpenseSheet extends Model<ExpenseSheet> {
     private Double totalAmount;
     private Double totalAmount;
 
 
 
 
+    @TableField(exist = false)
+    private List<ExpenseItem> invoiceList;
     @Override
     @Override
     protected Serializable pkVal() {
     protected Serializable pkVal() {
         return this.id;
         return this.id;

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java

@@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  * </p>
  *
  *
  * @author Seyason
  * @author Seyason
- * @since 2021-04-21
+ * @since 2021-05-19
  */
  */
 @Data
 @Data
 @EqualsAndHashCode(callSuper = false)
 @EqualsAndHashCode(callSuper = false)
@@ -115,9 +115,15 @@ public class User extends Model<User> {
     @TableField("color")
     @TableField("color")
     private String color;
     private String color;
 
 
+    /**
+     * 是否激活
+     */
+    @TableField("is_active")
+    private Integer isActive;
 
 
     @TableField(exist = false)
     @TableField(exist = false)
     private String departmentName;
     private String departmentName;
+
     @Override
     @Override
     protected Serializable pkVal() {
     protected Serializable pkVal() {
         return this.id;
         return this.id;

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

@@ -22,4 +22,6 @@ public interface ExpenseSheetService extends IService<ExpenseSheet> {
     HttpRespMsg queryList(ExpenseSheet sheet,  Integer pageIndex,  Integer pageSize);
     HttpRespMsg queryList(ExpenseSheet sheet,  Integer pageIndex,  Integer pageSize);
 
 
     HttpRespMsg getNextCode(String userId);
     HttpRespMsg getNextCode(String userId);
+
+    HttpRespMsg getDetail(Integer id);
 }
 }

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

@@ -41,4 +41,6 @@ public interface UserService extends IService<User> {
     HttpRespMsg resetPwd(String userId);
     HttpRespMsg resetPwd(String userId);
 
 
     HttpRespMsg getUserSalaryList(String id);
     HttpRespMsg getUserSalaryList(String id);
+
+    HttpRespMsg setActive(String id, int isActive);
 }
 }

+ 39 - 12
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -22,6 +22,7 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.ArrayList;
@@ -46,31 +47,47 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
     private ExpenseSheetMapper expenseSheetMapper;
     private ExpenseSheetMapper expenseSheetMapper;
     @Resource
     @Resource
     private ExpenseItemService expenseItemService;
     private ExpenseItemService expenseItemService;
-
+    @Resource
+    private ExpenseItemMapper expenseItemMapper;
 
 
 
 
     @Override
     @Override
     public HttpRespMsg add(ExpenseSheet sheet, String items, String userId) {
     public HttpRespMsg add(ExpenseSheet sheet, String items, String userId) {
         HttpRespMsg msg = new HttpRespMsg();
         HttpRespMsg msg = new HttpRespMsg();
-        //检查code不能重复
-        Integer num = expenseSheetMapper.selectCount(new QueryWrapper<ExpenseSheet>().eq("code", sheet.getCode()));
-        if (num > 0) {
-            msg.setError("票据编号已存在");
-            return msg;
+        boolean isNew = false;
+        if (sheet.getId() == null) {
+            isNew = true;
+            //检查code不能重复
+            Integer num = expenseSheetMapper.selectCount(new QueryWrapper<ExpenseSheet>().eq("code", sheet.getCode()));
+            if (num > 0) {
+                msg.setError("票据编号已存在");
+                return msg;
+            }
         }
         }
         JSONArray array = JSONArray.parseArray(items);
         JSONArray array = JSONArray.parseArray(items);
         sheet.setOwnerId(userId);
         sheet.setOwnerId(userId);
         User user = userMapper.selectById(userId);
         User user = userMapper.selectById(userId);
         sheet.setOwnerName(user.getName());
         sheet.setOwnerName(user.getName());
         sheet.setCompanyId(user.getCompanyId());
         sheet.setCompanyId(user.getCompanyId());
-        expenseSheetMapper.insert(sheet);
+        if (isNew) {
+            expenseSheetMapper.insert(sheet);
+        } else {
+            expenseSheetMapper.updateById(sheet);
+        }
+
         List<ExpenseItem> itemList = new ArrayList<ExpenseItem>();
         List<ExpenseItem> itemList = new ArrayList<ExpenseItem>();
+        if (array != null) {
+            for (int i=0;i<array.size(); i++) {
+                JSONObject obj = array.getJSONObject(i);
+                ExpenseItem expenseItem = JSONObject.toJavaObject(obj, ExpenseItem.class);
+                expenseItem.setExpenseId(sheet.getId());
+                itemList.add(expenseItem);
+            }
+        }
 
 
-        for (int i=0;i<array.size(); i++) {
-            JSONObject obj = array.getJSONObject(i);
-            ExpenseItem expenseItem = JSONObject.toJavaObject(obj, ExpenseItem.class);
-            expenseItem.setExpenseId(sheet.getId());
-            itemList.add(expenseItem);
+        //对于修改的情况,要删除之前的
+        if (!isNew) {
+            expenseItemService.remove(new QueryWrapper<ExpenseItem>().eq("expense_id", sheet.getId()));
         }
         }
         expenseItemService.saveBatch(itemList);
         expenseItemService.saveBatch(itemList);
 
 
@@ -134,4 +151,14 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         msg.data = format+start;
         msg.data = format+start;
         return msg;
         return msg;
     }
     }
+
+    @Override
+    public HttpRespMsg getDetail(Integer id) {
+        ExpenseSheet expenseSheet = expenseSheetMapper.selectById(id);
+        List<ExpenseItem> list = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().eq("expense_id", id));
+        expenseSheet.setInvoiceList(list);
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = expenseSheet;
+        return msg;
+    }
 }
 }

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

@@ -207,12 +207,16 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             snapshot.setBaseRisk2(project.getBaseRisk2());
                             snapshot.setBaseRisk2(project.getBaseRisk2());
                             snapshot.setCreatorId(user.getId());
                             snapshot.setCreatorId(user.getId());
                             snapshot.setCreatorName(user.getName());
                             snapshot.setCreatorName(user.getName());
-                            int total = project.getBaseFee()+project.getBaseMan()+project.getBaseOutsourcing()+project.getBaseRisk1()+project.getBaseRisk2();
 
 
-                            snapshot.setProfitA(100.0*(project.getContractAmount() - total)/project.getContractAmount());
-                            snapshot.setProfitB(100.0*(project.getContractAmount() - total-project.getBaseRisk1())/project.getContractAmount());
-                            snapshot.setProfitC(100.0*(project.getContractAmount() - total-project.getBaseRisk1() - project.getBaseRisk2())/project.getContractAmount());
-                            earningSnapshotMapper.insert(snapshot);
+                            if (project.getContractAmount() == null || project.getContractAmount() == 0 ) {
+                                //无需处理
+                            } else {
+                                int total = project.getBaseFee()+project.getBaseMan()+project.getBaseOutsourcing()+project.getBaseRisk1()+project.getBaseRisk2();
+                                snapshot.setProfitA(100.0*(project.getContractAmount() - total)/project.getContractAmount());
+                                snapshot.setProfitB(100.0*(project.getContractAmount() - total-project.getBaseRisk1())/project.getContractAmount());
+                                snapshot.setProfitC(100.0*(project.getContractAmount() - total-project.getBaseRisk1() - project.getBaseRisk2())/project.getContractAmount());
+                                earningSnapshotMapper.insert(snapshot);
+                            }
                         }
                         }
                         id = project.getId();
                         id = project.getId();
                     }
                     }

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

@@ -40,6 +40,8 @@ import java.util.Map;
  */
  */
 @Service
 @Service
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+    @Resource
+    private HttpServletRequest request;
     @Resource
     @Resource
     private UserMapper userMapper;
     private UserMapper userMapper;
     @Resource
     @Resource
@@ -64,6 +66,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         } else if (userList.size() > 1) {
         } else if (userList.size() > 1) {
             //检索到两个及以上账号时
             //检索到两个及以上账号时
             httpRespMsg.setError("账号重名");
             httpRespMsg.setError("账号重名");
+        } else if (userList.get(0).getIsActive() == 0) {
+            httpRespMsg.setError("该账户已停用,无法登陆。请联系管理员");
         } else if (MD5Util.getPassword(password).equals(userList.get(0).getPassword())) {
         } else if (MD5Util.getPassword(password).equals(userList.get(0).getPassword())) {
             //查看该公司非会员公司,只能允许试用三天,超时不可登录
             //查看该公司非会员公司,只能允许试用三天,超时不可登录
             Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", userList.get(0).getCompanyId()));
             Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", userList.get(0).getCompanyId()));
@@ -330,8 +334,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     if (userMapper.selectList(new QueryWrapper<User>().eq("phone", phone)).size() > 0) {
                     if (userMapper.selectList(new QueryWrapper<User>().eq("phone", phone)).size() > 0) {
                         httpRespMsg.setError("电话号码重复");
                         httpRespMsg.setError("电话号码重复");
                     } else {
                     } else {
+                        //只计算活跃的用户
                         if (userMapper.selectCount(new QueryWrapper<User>()
                         if (userMapper.selectCount(new QueryWrapper<User>()
-                                .eq("company_id", creator.getCompanyId())) >=
+                                .eq("company_id", creator.getCompanyId()).eq("is_active", 1)) >=
                                 (companyMapper.selectById(creator.getCompanyId()).getStaffCountMax())) {
                                 (companyMapper.selectById(creator.getCompanyId()).getStaffCountMax())) {
                             httpRespMsg.setError("公司人员已达上限");
                             httpRespMsg.setError("公司人员已达上限");
                         } else {
                         } else {
@@ -584,4 +589,24 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         msg.data = userSalaries;
         msg.data = userSalaries;
         return msg;
         return msg;
     }
     }
+
+    @Override
+    public HttpRespMsg setActive(String id, int isActive) {
+        HttpRespMsg msg = new HttpRespMsg();
+        //判断人数
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        if (isActive == 1 && userMapper.selectCount(new QueryWrapper<User>()
+                .eq("company_id", user.getCompanyId()).eq("is_active", 1)) >=
+                (companyMapper.selectById(user.getCompanyId()).getStaffCountMax())) {
+            msg.setError("公司人员已达上限,无法启用");
+        } else {
+            User setUser = new User();
+            setUser.setId(id);
+            setUser.setIsActive(isActive);
+            userMapper.updateById(setUser);
+        }
+
+        return msg;
+    }
 }
 }

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml

@@ -19,18 +19,18 @@
         <result column="salary_type" property="salaryType" />
         <result column="salary_type" property="salaryType" />
         <result column="manage_dept_id" property="manageDeptId" />
         <result column="manage_dept_id" property="manageDeptId" />
         <result column="color" property="color" />
         <result column="color" property="color" />
+        <result column="is_active" property="isActive" />
     </resultMap>
     </resultMap>
 
 
     <!-- 通用查询结果列 -->
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
-        id, name, phone, password, portrait_url, create_time, role, company_id, department_id, department_cascade, cost, month_cost, salary_type, manage_dept_id, color
+        id, name, phone, password, portrait_url, create_time, role, company_id, department_id, department_cascade, cost, month_cost, salary_type, manage_dept_id, color, is_active
     </sql>
     </sql>
-
     <!--单独分页获取人员-->
     <!--单独分页获取人员-->
     <select id="getUserByDepartment" resultType="java.util.Map">
     <select id="getUserByDepartment" resultType="java.util.Map">
         SELECT a.id, a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         SELECT a.id, a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
-        a.month_cost as monthCost, a.salary_type as salaryType
+        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive
         FROM user AS a
         FROM user AS a
         LEFT JOIN department AS b ON a.department_id = b.department_id
         LEFT JOIN department AS b ON a.department_id = b.department_id
         WHERE a.company_id = #{companyId}
         WHERE a.company_id = #{companyId}
@@ -53,7 +53,7 @@
     <select id="getUserByDepartmentList" resultType="java.util.Map">
     <select id="getUserByDepartmentList" resultType="java.util.Map">
         SELECT a.id, a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         SELECT a.id, a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
-        a.month_cost as monthCost, a.salary_type as salaryType
+        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive
         FROM user AS a
         FROM user AS a
         LEFT JOIN department AS b ON a.department_id = b.department_id
         LEFT JOIN department AS b ON a.department_id = b.department_id
         WHERE a.company_id = #{companyId} AND a.department_id IN
         WHERE a.company_id = #{companyId} AND a.department_id IN

+ 7 - 0
fhKeeper/formulahousekeeper/timesheet/config/index.js

@@ -1,8 +1,15 @@
 var path = require('path')
 var path = require('path')
 
 
 
 
+<<<<<<< HEAD
 //  var ip = '192.168.2.21'
 //  var ip = '192.168.2.21'
  var ip = '47.100.37.243'
  var ip = '47.100.37.243'
+=======
+ //var ip = '192.168.2.21'
+
+ var ip = '47.100.37.243'
+
+>>>>>>> 61a8c174a9cdbcafd0f49f7ec68b9c9de601d8c1
 //  47.100.37.243
 //  47.100.37.243
 // var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
 // var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
 // for (var i in ifaces) {
 // for (var i in ifaces) {

+ 10 - 8
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -80,10 +80,11 @@
                     <template slot-scope="scope">
                     <template slot-scope="scope">
                         <!-- <el-button size="small" v-if="scope.row.role == 0 && user.role == 1" @click="switchRole(scope.$index)">切换为管理员</el-button>
                         <!-- <el-button size="small" v-if="scope.row.role == 0 && user.role == 1" @click="switchRole(scope.$index)">切换为管理员</el-button>
                         <el-button size="small" v-if="scope.row.role == 2 && user.role == 1" @click="switchRole(scope.$index)">切换为员工</el-button> -->
                         <el-button size="small" v-if="scope.row.role == 2 && user.role == 1" @click="switchRole(scope.$index)">切换为员工</el-button> -->
-                        <el-button size="small" type="default" v-if="scope.row.role != 1" @click="resetPwd(scope.row)">重置密码</el-button>
-                        <el-button size="small" type="primary" v-if="scope.row.role != 1" @click="openInsertDialog(scope.$index)">编辑</el-button>
-                        <el-button size="small" type="primary" v-if="scope.row.role == 1" @click="openInsertDialog1(scope.$index)">编辑</el-button>
-                        <el-button size="small" type="danger" v-if="scope.row.role == 0" @click="deleteUser(scope.$index)">删除</el-button>
+                        <el-button size="mini" type="default" v-if="scope.row.role != 1" @click="resetPwd(scope.row)">重置</el-button>
+                        <el-button size="mini" type="primary" v-if="scope.row.role != 1" @click="openInsertDialog(scope.$index)">编辑</el-button>
+                        <el-button size="mini" type="primary" v-if="scope.row.role == 1" @click="openInsertDialog1(scope.$index)">编辑</el-button>
+                        <el-button size="mini" type="default" v-if="scope.row.role != 1&& scope.row.isActive==1" @click="setActive(scope.row, 0)">停用</el-button>
+                        <el-button size="mini" type="success" v-if="scope.row.role != 1 && scope.row.isActive==0" @click="setActive(scope.row, 1)">启用</el-button>
                     </template>
                     </template>
                 </el-table-column>
                 </el-table-column>
             </el-table>
             </el-table>
@@ -607,20 +608,21 @@
             },
             },
 
 
             // 删除用户
             // 删除用户
-            deleteUser(index) {
-                this.$confirm( "确定要删除用户" + this.list[index].name + "吗?", "删除用户", {
+            setActive(item, isActive) {
+                var txt = isActive==1?"启用":"停用";
+                this.$confirm( "确定要"+txt +" " + item.name + " 吗?", "账号"+txt, {
                     confirmButtonText: "确定",
                     confirmButtonText: "确定",
                     cancelButtonText: "取消",
                     cancelButtonText: "取消",
                     type: "warning"
                     type: "warning"
                 })
                 })
                 .then(() => {
                 .then(() => {
                     this.listLoading = true;
                     this.listLoading = true;
-                    this.http.post( this.port.manage.delete, { userId: this.list[index].id },
+                    this.http.post('/user/setActive', { id: item.id, isActive: isActive},
                     res => {
                     res => {
                         this.listLoading = false;
                         this.listLoading = false;
                         if (res.code == "ok") {
                         if (res.code == "ok") {
                             this.$message({
                             this.$message({
-                                message: "删除成功",
+                                message: txt+"成功",
                                 type: "success"
                                 type: "success"
                             });
                             });
                             //重新读取列表
                             //重新读取列表

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/vue.config.js

@@ -3,7 +3,7 @@ const pxtorem = require("postcss-pxtorem");
 const path = require('path');
 const path = require('path');
 const themePath = path.resolve(__dirname,'src/assets/style/theme.less');
 const themePath = path.resolve(__dirname,'src/assets/style/theme.less');
 
 
-var ip = '192.168.2.2'
+var ip = '127.0.0.1'
 // var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
 // var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
 // for (var i in ifaces) {
 // for (var i in ifaces) {
 //     for (var j in ifaces[i]) {
 //     for (var j in ifaces[i]) {