Ver Fonte

生产车间工时前后端-产品管理模块

seyason há 1 ano atrás
pai
commit
0bc6d81c74
26 ficheiros alterados com 500 adições e 343 exclusões
  1. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml
  2. 40 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdCategoryController.java
  3. 39 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProductController.java
  4. 42 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdCategory.java
  5. 38 15
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Product.java
  6. 1 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/vo/UserVO.java
  7. 16 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ProdCategoryMapper.java
  8. 16 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdCategoryService.java
  9. 6 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProductService.java
  10. 3 90
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PermissionServiceImpl.java
  11. 20 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdCategoryServiceImpl.java
  12. 62 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java
  13. 29 49
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  14. 17 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProdCategoryMapper.xml
  15. 9 6
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProductMapper.xml
  16. 1 1
      fhKeeper/formulahousekeeper/timesheet-workshop/config/index.js
  17. 1 0
      fhKeeper/formulahousekeeper/timesheet-workshop/src/i18n/en.json
  18. 3 1
      fhKeeper/formulahousekeeper/timesheet-workshop/src/i18n/zh.json
  19. 46 78
      fhKeeper/formulahousekeeper/timesheet-workshop/src/main.js
  20. 21 55
      fhKeeper/formulahousekeeper/timesheet-workshop/src/routes.js
  21. 78 30
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/Home.vue
  22. 8 13
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/Login.vue
  23. 1 1
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/expense/expense.vue
  24. 0 1
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/workReport/daily.vue
  25. 1 1
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/workReport/timer.vue
  26. 1 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/project/index.vue

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -15,7 +15,7 @@ spring:
       location: C:/upload/
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://47.101.180.183:3306/man_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    url: jdbc:mysql://47.101.180.183:3306/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
     username: root
     password: HuoshiDB@2022
 #    url: jdbc:mysql://127.0.0.1:3306/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false

+ 40 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdCategoryController.java

@@ -0,0 +1,40 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ProdCategoryService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-07-22
+ */
+@RestController
+@RequestMapping("/prod-category")
+public class ProdCategoryController {
+
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    UserMapper userMapper;
+    @Resource
+    ProdCategoryService prodCategoryService;
+
+    @RequestMapping("get")
+    private HttpRespMsg get(Integer id){
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = prodCategoryService.getById(id);
+        return msg;
+    }
+}
+

+ 39 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProductController.java

@@ -1,10 +1,18 @@
 package com.management.platform.controller;
 
 
+import com.management.platform.entity.Product;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ProductService;
+import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * <p>
  *  前端控制器
@@ -17,5 +25,36 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/product")
 public class ProductController {
 
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    UserMapper userMapper;
+    @Resource
+    ProductService productService;
+
+    @RequestMapping("/getProductPage")
+    public HttpRespMsg getProductPage(Integer cateId, @RequestParam Integer pageIndex, @RequestParam Integer pageSize, String name, String code) {
+        return productService.getProductPage(cateId, pageIndex, pageSize, name, code, request);
+    }
+
+    @RequestMapping("/saveProductInfo")
+    public HttpRespMsg saveProductInfo(Product product) {
+        return productService.saveProductInfo(product, request);
+    }
+
+    @RequestMapping("/get")
+    public HttpRespMsg get(Integer id) {
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = productService.getById(id);
+        return msg;
+    }
+
+    @RequestMapping("/delete")
+    public HttpRespMsg delete(Integer id) {
+        HttpRespMsg msg = new HttpRespMsg();
+        //TODO : 需检测是否被使用
+        productService.removeById(id);
+        return msg;
+    }
 }
 

+ 42 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdCategory.java

@@ -0,0 +1,42 @@
+package com.management.platform.entity;
+
+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 2023-07-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ProdCategory extends Model<ProdCategory> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("name")
+    private String name;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 38 - 15
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Product.java

@@ -3,7 +3,6 @@ package com.management.platform.entity;
 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 lombok.Data;
@@ -16,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2023-07-02
+ * @since 2023-07-21
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -40,6 +39,12 @@ public class Product extends Model<Product> {
     @TableField("category_id")
     private Integer categoryId;
 
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
     /**
      * 产品分类名称
      */
@@ -47,28 +52,46 @@ public class Product extends Model<Product> {
     private String categoryName;
 
     /**
-     * 备注
+     * 项目代码
      */
-    @TableField("remark")
-    private String remark;
+    @TableField("code")
+    private String code;
 
-    @TableField("indate")
-    private LocalDateTime indate;
+    /**
+     * 编组数
+     */
+    @TableField("group_number")
+    private Integer groupNumber;
 
-    @TableField("update")
-    private LocalDateTime update;
+    /**
+     * 订单数量
+     */
+    @TableField("order_number")
+    private Integer orderNumber;
 
     /**
-     * 所属公司id
+     * 单位
      */
-    @TableField("company_id")
-    private Integer companyId;
+    @TableField("unit")
+    private String unit;
+
+    /**
+     * 每列数量
+     */
+    @TableField("column_number")
+    private Integer columnNumber;
+
+    /**
+     * 每辆数量
+     */
+    @TableField("vehicle_number")
+    private Integer vehicleNumber;
 
     /**
-     * 是否有大工序
+     * 描述
      */
-    @TableField("has_big_procedure")
-    private Integer hasBigProcedure;
+    @TableField("description")
+    private String description;
 
 
     @Override

+ 1 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/vo/UserVO.java

@@ -26,4 +26,5 @@ public class UserVO extends User {
 
     private boolean hasAuditDept;
 
+    private List<SysModule> prodSubMenuList;
 }

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

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ProdCategory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-07-22
+ */
+public interface ProdCategoryMapper extends BaseMapper<ProdCategory> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ProdCategory;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-07-22
+ */
+public interface ProdCategoryService extends IService<ProdCategory> {
+
+}

+ 6 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProductService.java

@@ -2,6 +2,9 @@ package com.management.platform.service;
 
 import com.management.platform.entity.Product;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ProductService extends IService<Product> {
 
+    HttpRespMsg getProductPage(Integer cateId, Integer pageIndex, Integer pageSize, String name, String code, HttpServletRequest request);
+
+    HttpRespMsg saveProductInfo(Product product, HttpServletRequest request);
 }

+ 3 - 90
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PermissionServiceImpl.java

@@ -62,8 +62,6 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
     @Resource
     private SysRoleModuleService sysRoleModuleService;
     @Resource
-    private CompanyMapper companyMapper;
-    @Resource
     private CompanyReportMapper companyReportMapper;
     @Resource
     private HttpServletRequest request;
@@ -172,46 +170,9 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         //角色赋有的module
         List<Integer> modelIds = sysRoleModuleMapper.selectList(new QueryWrapper<SysRoleModule>().eq("role_id", role)).stream().map(sr -> sr.getModuleId()).collect(Collectors.toList());
         //全部模块,
-        Company company = companyMapper.selectById(companyId);
         TimeType timeType = timeTypeMapper.selectById(companyId);
-        //按照公司开通的模块进行匹配
-        QueryWrapper<SysModule> queryWrapper = new QueryWrapper<SysModule>().and(wrapper->{
-            wrapper.eq("package_time", 1);
-            if (company.getPackageProject() == 1) {
-                wrapper.or().eq("package_project", 1);
-            }
-            if (company.getPackageOa() == 1) {
-                wrapper.or().eq("package_oa", 1);
-            }
-            if (company.getPackageExpense() == 1) {
-                wrapper.or().eq("package_expense", 1);
-            }
-            if (company.getPackageCustomer() == 1) {
-                wrapper.or().eq("package_customer", 1);
-            }
-            if (company.getPackageEngineering() == 1) {
-                wrapper.or().eq("package_engineering", 1);
-            }
-            if (company.getPackageContract() == 1) {
-                wrapper.or().eq("package_contract", 1);
-            }
-            if (company.getPackageEtimecard()== 1) {
-                wrapper.or().eq("package_etimecard", 1);
-            }
-            if (company.getPackageFinance() == 1) {
-                wrapper.or().eq("package_finance", 1);
-            }
-            if (company.getPackageProvider() == 1) {
-                wrapper.or().eq("package_provider", 1);
-            }
-            if (timeType.getReportWorkflow() == 1) {
-                wrapper.or().eq("report_workflow", 1);
-            }
-            if (timeType.getNeedDeptAudit() == 1) {
-                wrapper.or().eq("need_dept_audit", 1);
-            }
-            return wrapper;
-        });
+
+        QueryWrapper<SysModule> queryWrapper = new QueryWrapper<SysModule>();
         List<SysRoleModule> sysRoleModuleList = sysRoleModuleMapper.selectList(new QueryWrapper<SysRoleModule>().eq("role_id", user.getRoleId()));
         List<Integer> moduleIds = sysRoleModuleList.stream().map(sm -> sm.getModuleId()).collect(Collectors.toList());
         if(!user.getRoleName().equals("超级管理员")){
@@ -221,44 +182,7 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         List<SysModule> moduleList = sysModuleMapper.selectList(queryWrapper);
         //组装层级关系,默认只有两级
         List<SysModule> menuList = new ArrayList<>();
-        QueryWrapper<SysFunction> functionQueryWrapper = new QueryWrapper<SysFunction>().and(wrapper->{
-            wrapper.eq("package_time", 1);
-            if (company.getPackageProject() == 1) {
-                wrapper.or().eq("package_project", 1);
-            }
-            if (company.getPackageOa() == 1) {
-                wrapper.or().eq("package_oa", 1);
-            }
-            if (company.getPackageExpense() == 1) {
-                wrapper.or().eq("package_expense", 1);
-            }
-            if (company.getPackageCustomer() == 1) {
-                wrapper.or().eq("package_customer", 1);
-            }
-            if (company.getPackageEngineering() == 1) {
-                wrapper.or().eq("package_engineering", 1);
-            }
-            if (company.getPackageContract() == 1) {
-                wrapper.or().eq("package_contract", 1);
-            }
-            if (company.getPackageEtimecard()== 1) {
-                wrapper.or().eq("package_etimecard", 1);
-            }
-            if (company.getPackageFinance() == 1) {
-                wrapper.or().eq("package_finance", 1);
-            }
-//            if (company.getPackageProvider() == 1) {
-//                wrapper.or().eq("package_provider", 1);
-//            }
-            if (timeType.getSyncCorpwxTime() == 1) {
-                wrapper.or().eq("sync_corpwx_time", 1);
-            }
-            //开通财务审核功能的
-            if (timeType.getFinanceAudit() == 1) {
-                wrapper.or().eq("finance_audit", 1);
-            }
-            return wrapper;
-        });
+        QueryWrapper<SysFunction> functionQueryWrapper = new QueryWrapper<SysFunction>();
         List<SysRoleFunction> sysRoleFunctionList = sysRoleFunctionMapper.selectList(new QueryWrapper<SysRoleFunction>().eq("role_id", user.getRoleId()));
         List<Integer> functionIds = sysRoleFunctionList.stream().map(sf -> sf.getFunctionId()).collect(Collectors.toList());
         if(!user.getRoleName().equals("超级管理员")){
@@ -285,11 +209,6 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
             }
         }
         for (SysModule module : moduleList) {
-            if(timeType.getProjectCustom()==0){
-                if(module.getName().equals("项目表单设置")){
-                    continue;
-                }
-            }
             if (module.getParentId() == null) {
                 menuList.add(module);
             }
@@ -301,12 +220,6 @@ public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permiss
         }
         for (SysModule mainMenu : menuList) {
             List<SysModule> list = moduleList.stream().filter(mod -> mainMenu.getId().equals(mod.getParentId())).collect(Collectors.toList());
-            if(timeType.getProjectCustom()==0){
-                Optional<SysModule> first = list.stream().filter(l -> l.getName().equals("项目表单设置")).findFirst();
-                if(first.isPresent()){
-                    list.remove(first.get());
-                }
-            }
             mainMenu.setChildren(list);
         }
 

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

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ProdCategory;
+import com.management.platform.mapper.ProdCategoryMapper;
+import com.management.platform.service.ProdCategoryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-07-22
+ */
+@Service
+public class ProdCategoryServiceImpl extends ServiceImpl<ProdCategoryMapper, ProdCategory> implements ProdCategoryService {
+
+}

+ 62 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -1,10 +1,23 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.management.platform.entity.Product;
+import com.management.platform.entity.Project;
+import com.management.platform.entity.User;
 import com.management.platform.mapper.ProductMapper;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.ProductService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * <p>
@@ -16,5 +29,54 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
+    @Resource
+    ProductMapper productMapper;
+    @Resource
+    UserMapper userMapper;
+
+
+    @Override
+    public HttpRespMsg getProductPage(Integer cateId, Integer pageIndex, Integer pageSize, String name, String code, HttpServletRequest request) {
+        QueryWrapper<Product> queryWrapper = new QueryWrapper<>();
+        if (cateId != null) {
+            queryWrapper.eq("category_id",cateId);
+        }
+        if (!StringUtils.isEmpty(name)) {
+            queryWrapper.like("name",name);
+        }
+        if (!StringUtils.isEmpty(code)) {
+            queryWrapper.like("code",code);
+        }
+        User user = userMapper.selectById(request.getHeader("Token"));
+        queryWrapper.eq("company_id",user.getCompanyId());
+        IPage<Product> iPage;
+        if(pageIndex!=null && pageSize!=null){
+            iPage= productMapper.selectPage(new Page<>(pageIndex, pageSize),
+                    queryWrapper);
+        } else {
+            iPage= productMapper.selectPage(new Page<>(-1,-1),
+                    queryWrapper);
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("records", iPage.getRecords());
+        map.put("total", iPage.getTotal());
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.setData(map);
+        return msg;
+    }
 
+    @Override
+    public HttpRespMsg saveProductInfo(Product product, HttpServletRequest request) {
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        product.setCompanyId(user.getCompanyId());
+        if (product.getId() == null) {
+            productMapper.insert(product);
+        } else {
+            productMapper.updateById(product);
+        }
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.setData(product);
+        return msg;
+    }
 }

+ 29 - 49
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -118,6 +118,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Resource
     private SysRoleService sysRoleService;
     @Resource
+    private ProdCategoryMapper prodCategoryMapper;
+    @Resource
     private SysRoleFunctionMapper sysRoleFunctionMapper;
     @Resource
     private SysModuleMapper sysModuleMapper;
@@ -540,69 +542,36 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         //返回菜单
         List<SysRoleModule> rModules = sysRoleModuleMapper.selectList(new QueryWrapper<SysRoleModule>().eq("role_id", roleId));
         List<Integer> ids = rModules.stream().map(SysRoleModule::getModuleId).collect(Collectors.toList());
-/*        //项目报告审核模块,如果参与日报的审核,需要自动加上, 或者担任任务分组负责人
-        if (user.isLeader() || user.isHasAuditDept() || (company.getPackageProject() == 1 && taskGroupMapper.selectCount(new QueryWrapper<TaskGroup>().eq("incharger_id", user.getId())) > 0)) {
-            SysModule projectAuditModule = sysModuleMapper.selectOne(new QueryWrapper<SysModule>().eq("name", "项目报告审核"));
-            if (!ids.contains(projectAuditModule.getId())) {
-                ids.add(projectAuditModule.getId());
-            }
-        }*/
+
 
         List<SysModule> moduleList = sysModuleMapper.selectList(queryWrapper);
 
-        //过滤一下,这个角色选中的模块
         moduleList = moduleList.stream().filter(m->ids.contains(m.getId())).collect(Collectors.toList());
-        if (company.getPackageEngineering() == 1) {
-            //生成虚拟的两个审核放进去
-            SysModule proModule = new SysModule();
-            proModule.setName("专业审核");
-            proModule.setPath("/reviewProfession");
-            proModule.setId(0);
-            moduleList.add(1,proModule);
-            SysModule deptModule = new SysModule();
-            deptModule.setName("部门审核");
-            deptModule.setPath("/reviewDepartment");
-            deptModule.setId(0);
-            moduleList.add(2,deptModule);
-        }
-        //开启了自定义日报列表的情况下,需要菜单上有
-        if (timeType.getCustomDegreeActive() == 1 && moduleList.stream().anyMatch(mod->mod.getName().equals("系统基础设置"))) {
-            SysModule centerManageModule = new SysModule();
-            //centerManageModule.setName(timeType.getCustomDegreeName()+"管理");
-            centerManageModule.setName(timeType.getCustomDegreeName()+MessageUtils.message("project.manage"));
-            centerManageModule.setPath("/centerManage");
-            centerManageModule.setId(0);
-            //加到组织架构前面
-            int findIndex = 0;
-            for (int i=0;i<moduleList.size(); i++) {
-                if (moduleList.get(i).getName().equals("组织架构") || moduleList.get(i).getName().equals("基础数据管理")) {
-                    findIndex = i;
-                    break;
-                }
-            }
-            moduleList.add(findIndex,centerManageModule);
-        }
         //组装层级关系,默认只有两级
         List<SysModule> menuList = new ArrayList<>();
         for (SysModule module : moduleList) {
             if (module.getParentId() == null) {
                 menuList.add(module);
             }
-            if(timeType.getProjectCustom()==0){
-                if(module.getName().equals("项目表单设置")){
-                    continue;
-                }
-            }
         }
+        Integer prodMenuId = null;
         for (SysModule mainMenu : menuList) {
             List<SysModule> list = moduleList.stream().filter(mod -> mainMenu.getId().equals(mod.getParentId())).collect(Collectors.toList());
-            if(timeType.getProjectCustom()==0){
-                Optional<SysModule> first = list.stream().filter(l -> l.getName().equals("项目表单设置")).findFirst();
-                if(first.isPresent()){
-                    list.remove(first.get());
-                }
-            }
             mainMenu.setChildren(list);
+            if (mainMenu.getName().equals("产品管理")) {
+                prodMenuId = mainMenu.getId();
+//                //自动添加产品分类作为二级菜单
+//                List<SysModule> categoryMenuList = new ArrayList<>();
+//                for (ProdCategory category : categoryList) {
+//                    SysModule module = new SysModule();
+//                    module.setName(category.getName());
+//                    module.setPath("/product/" + category.getId());
+//                    module.setOrderitem(0);
+//                    module.setParentId(mainMenu.getId());
+//                    categoryMenuList.add(module);
+//                }
+//                mainMenu.setChildren(categoryMenuList);
+            }
         }
 
         user.setModuleList(menuList);
@@ -630,6 +599,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         } else {
             user.setFunctionList(new ArrayList<>());
         }
+        List<ProdCategory> categoryList = prodCategoryMapper.selectList(new QueryWrapper<ProdCategory>().eq("company_id", company.getId()));
+        List<SysModule> prodSubMenuList = new ArrayList<>();
+        for (ProdCategory category : categoryList) {
+            SysModule module = new SysModule();
+            module.setName(category.getName());
+            module.setPath("/product/" + category.getId());
+            module.setOrderitem(0);
+            module.setParentId(prodMenuId);
+            prodSubMenuList.add(module);
+        }
+        user.setProdSubMenuList(prodSubMenuList);
     }
 
     private boolean judgeIsLeader(String userId) {

+ 17 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProdCategoryMapper.xml

@@ -0,0 +1,17 @@
+<?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.ProdCategoryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ProdCategory">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="company_id" property="companyId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, name, company_id
+    </sql>
+
+</mapper>

+ 9 - 6
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ProductMapper.xml

@@ -7,17 +7,20 @@
         <id column="id" property="id" />
         <result column="name" property="name" />
         <result column="category_id" property="categoryId" />
-        <result column="category_name" property="categoryName" />
-        <result column="remark" property="remark" />
-        <result column="indate" property="indate" />
-        <result column="update" property="update" />
         <result column="company_id" property="companyId" />
-        <result column="has_big_procedure" property="hasBigProcedure" />
+        <result column="category_name" property="categoryName" />
+        <result column="code" property="code" />
+        <result column="group_number" property="groupNumber" />
+        <result column="order_number" property="orderNumber" />
+        <result column="unit" property="unit" />
+        <result column="column_number" property="columnNumber" />
+        <result column="vehicle_number" property="vehicleNumber" />
+        <result column="description" property="description" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, name, category_id, category_name, remark, indate, update, company_id, has_big_procedure
+        id, name, category_id, company_id, category_name, code, group_number, order_number, unit, column_number, vehicle_number, description
     </sql>
 
 </mapper>

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet-workshop/config/index.js

@@ -30,7 +30,7 @@ module.exports = {
   },
   dev: {
     env: require('./dev.env'),
-    port: 10086,
+    port: 10096,
     autoOpenBrowser: true,
     assetsSubDirectory: 'static',
     assetsPublicPath: '/',

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet-workshop/src/i18n/en.json

@@ -3,6 +3,7 @@
   "navigation": {
     "reports": "Hours report",
     "projectManagement": "project management",
+    "planManagement": "plan management",
     "contractManagement": "contract management",
     "professionalAudit": "Professional audit",
     "departmentAudit": "Department audit",

+ 3 - 1
fhKeeper/formulahousekeeper/timesheet-workshop/src/i18n/zh.json

@@ -3,6 +3,8 @@
   "navigation": {
     "reports": "工时报告",
     "projectManagement": "项目管理",
+    "productManagement": "产品管理",
+    "planManagement": "排产计划",
     "contractManagement": "合同管理",
     "professionalAudit": "专业审核",
     "departmentAudit": "部门审核",
@@ -12,7 +14,7 @@
     "customizeNumericalStatistics": "自定义数值统计",
     "financialAccountingCost": "财务核算成本",
     "upcomingTasks": "待办任务",
-    "projectReportingService": "项目报表服务",
+    "projectReportingService": "数据统计",
     "askForLeaveManagement": "请假管理",
     "evectionManagement": "出差管理",
     "customerManagement": "客户管理",

+ 46 - 78
fhKeeper/formulahousekeeper/timesheet-workshop/src/main.js

@@ -95,7 +95,7 @@ router.beforeEach((to, from, next) => {
         return;
     }
 
-    if (to.path != '/daily') {
+    if (to.path != '/report') {
         sessionStorage.removeItem("from")
     } 
 
@@ -110,89 +110,57 @@ router.beforeEach((to, from, next) => {
         if (!addRouFlag) {
             if(user != null) {
                 addRouFlag = true;
-                //如果是简易版,直接赋值
-                if (user.company.packageSimple == 1) {
-                    getRoutes = simpleRouters;
-                    global.antRouter = getRoutes;
-                    router.addRoutes(getRoutes);
-                    router.options.routes = getRoutes;
-                    router.push({ path: to.path })
-                } else {
-                    var getRoutes = null;
-                    var filterRouter = allRouters;
-                    if (user.company.packageExpense == 0) {
-                        filterRouter = filterRouter.filter(r=>{return r.name != '费用报销'});
-                    }
-                    if (user.company.packageCustomer == 0) {
-                        //没有客户管理功能的,需要去掉
-                        filterRouter = filterRouter.filter(r=>{return r.name != '客户管理'});
-                    }
-                    if (user.company.packageEngineering == 0) {
-                        //非工程类的,去掉专业管理
-                        filterRouter = filterRouter.filter(r=>{return r.name != '工程专业管理' && r.name != '专业审核' && r.name != '部门审核'});
-                    }
-                    if (user.company.packageOa == 0) {
-                        filterRouter = filterRouter.filter(r=>{return r.name != '出差管理' && r.name != '请假管理'});
-                    }
-                    if (user.company.packageProject == 0) {
-                        filterRouter = filterRouter.filter(r=>{return r.name != '待办任务' && r.name != '项目报表服务'});
-                    }
-                    if (user.timeType.needDeptAudit == 0) {
-                        //没有开启导入日报审核,则不需要
-                        filterRouter = filterRouter.filter(r=>{return r.name != '导入日报审核'});
-                    }
-                    if (user.timeType.customDataActive == 0) {
-                        //没有开启自定义数值统计
-                        filterRouter = filterRouter.filter(r=>{return r.name != '自定义数值统计'});
-                    } else {
-                        var customMenu = filterRouter.filter(r=>{return r.name == '自定义数值统计'});
-                        if (customMenu.length > 0) {    
-                            console.log(customMenu,'111');
-                            customMenu[0].children[0].name = user.timeType.customDataName + '统计';
-                        }
-                        
-                    }
-                    
-                    // 更据当前登录的权限来显示模块
-                    console.log("user",user)
-                    console.log(filterRouter)
-                    var arr = []
-                    for(var i in user.moduleList) {
-                        for(var s in filterRouter) {
-                            if(user.moduleList[i].children.length > 0) {
-                                if(user.moduleList[i].name == filterRouter[s].name) {
-                                    console.log(user.moduleList[i].name)
-                                    var arrList = user.moduleList[i].children
-                                    var ddList = filterRouter[s].children
-                                    var list = []
-                                    for(var j in arrList) {
-                                        for(var d in ddList) {
-                                            if(arrList[j].name == ddList[d].name) {
-                                                list.push(ddList[d])
-                                            }
+                var getRoutes = null;
+                var filterRouter = allRouters;
+                // 更据当前登录的权限来显示模块
+                console.log("user",user)
+                console.log(filterRouter)
+                var arr = []
+                for(var i in user.moduleList) {
+                    for(var s in filterRouter) {
+                        if(user.moduleList[i].children.length > 0) {
+                            if(user.moduleList[i].name == filterRouter[s].name) {
+                                console.log('路由模块==',user.moduleList[i].name)
+                                var arrList = user.moduleList[i].children
+                                var ddList = filterRouter[s].children
+                                var list = []
+                                for(var j in arrList) {
+                                    for(var d in ddList) {
+                                        if(arrList[j].name == ddList[d].name) {
+                                            list.push(ddList[d])
                                         }
                                     }
-                                    filterRouter[s].children = list
-                                    arr.push(filterRouter[s])
                                 }
-                            } else {
-                                if(user.moduleList[i].name == filterRouter[s].name) {
-                                    arr.push(filterRouter[s])
+                                //硬编码产品管理
+                                if (user.moduleList[i].name == '产品管理') {
+                                    list = arrList;
+                                    
+                                    // { path: '/product/:id', component: prodList, name: '产品管理',iconCls: 'iconfont firerock-iconxiangmu' },
+                                    for (var i=0;i<list.length; i++) {
+                                        list[i].component = `prodList`;
+                                        list[i].iconCls = 'iconfont firerock-iconxiangmu';
+                                    }
+                                    console.log('产品管理子菜单==', list);
                                 }
+                                filterRouter[s].children = list
+                                arr.push(filterRouter[s])
                             }
-                            
-                        } 
-                    }
-                    console.log(arr, '年看看你')
-                    getRoutes = arr;
-
-                    
-                    global.antRouter = fixedRouter.concat(getRoutes);
-                    router.addRoutes(fixedRouter.concat(getRoutes));
-                    console.log(router);
-                    router.options.routes = fixedRouter.concat(getRoutes);
-                    router.push({ path: to.path })
+                        } else {
+                            if(user.moduleList[i].name == filterRouter[s].name) {
+                                arr.push(filterRouter[s])
+                            }
+                        }
+                        
+                    } 
                 }
+                console.log(arr, '处理后的路由')
+                getRoutes = arr;
+
+                global.antRouter = fixedRouter.concat(getRoutes);
+                router.addRoutes(fixedRouter.concat(getRoutes));
+                console.log(router);
+                router.options.routes = fixedRouter.concat(getRoutes);
+                router.push({ path: to.path })
             }
         }
         next()

+ 21 - 55
fhKeeper/formulahousekeeper/timesheet-workshop/src/routes.js

@@ -9,8 +9,8 @@ import Home from './views/Home.vue'
 
 // 工作报告
 import daily from './views/workReport/daily.vue'
-// 项目管理
-import list from './views/project/list.vue'
+// 产品管理
+import prodList from './views/product/list.vue'
 import cost from './views/project/cost.vue'
 import proDetail from './views/project/detail.vue'
 import depDetail from './views/project/detailDep.vue'
@@ -58,37 +58,19 @@ export const fixedRouter = [
         name: '',
         hidden: true
     },
-    //tab页签切换
-    {
-        path: '/',
-        component: Home,
-        name: '项目管理',
-        iconCls: 'fa fa-sticky-note',
-        hidden:true,
-        leaf: true,
-        children: [
-            { path: 'projectInside/:id', component: projectInside, name: '任务看板' },
-            { path: 'info/:id', component: projectInside, name: '项目概览' },
-        ],
-        // 其他信息
-        meta: { text: 'navigation.projectManagement' } 
-    },
-    
 ];
-export const allRouters = [//组织架构
+export const allRouters = [
     //工时报告
     {
         path: '/',
         component: Home,
-        name: '工时报告',
+        name: '查看报工',
         text: 'navigation.reports',
         iconCls: 'iconfont firerock-icontianbao1',
         leaf: true,
         children: [
-            { path: '/daily', component: daily, name: '工时报告' },
+            { path: '/report', component: daily, name: '查看报工' },
         ],
-        // 其他信息
-        meta: { text: 'navigation.reports' } 
     },
    
     //成本统计
@@ -103,52 +85,42 @@ export const allRouters = [//组织架构
             { path: '/cost/:id/:name', component: proDetail, name: '成本详情', hidden: true },
             { path: '/costDep/:id/:name', component: depDetail, name: '成本详情', hidden: true },
         ],
-        // 其他信息
-        meta: { text: 'navigation.laborCostStatistics' } 
     },
     
-   
-    // 任务管理
     {
         path: '/',
         component: Home,
-        name: '待办任务',
-        iconCls: 'iconfont firerock-icondaibanshixiang',
-        leaf: true,
+        name: '产品管理',
+        iconCls: 'iconfont firerock-iconxiangmu',
+        leaf: false,
         children: [
-            { path: '/task', component: tasks, name: '待办任务' },
+            { path: '/product/:cateId', component: prodList, name: '产品管理',iconCls: 'iconfont firerock-iconxiangmu' },
         ],
-        // 其他信息
-        meta: { text: 'navigation.upcomingTasks' } 
     },
-    //项目管理
     {
-        path: '/',
+        path: '/plan',
         component: Home,
-        name: '项目管理',
+        name: '排产计划',
         iconCls: 'iconfont firerock-iconxiangmu',
-        leaf: true,
+        leaf: false,
         children: [
-            { path: '/list', component: list, name: '项目管理' },
+            { path: '/plan/today', component: prodList, name: '今日计划' },
+            { path: '/plan/tomorrow', component: prodList, name: '明日计划'},
+            { path: '/plan/orderInsert', component: prodList, name: '插单计划' },
         ],
-        // 其他信息
-        meta: { text: 'navigation.projectManagement' } 
     },
     
     {
         path: '/',
         component: Home,
-        name: '项目报表服务',
+        name: '数据统计',
         iconCls: 'iconfont firerock-iconbaobiao',
         leaf: true,
         children: [
-            { path: '/corpreport', component: corpReport, name: '项目报表服务' }
+            { path: '/statistic', component: corpReport, name: '数据统计' }
         ],
-        // 其他信息
-        meta: { text: 'navigation.projectReportingService' } 
     },
     
-    
     {
         path: '/',
         component: Home,
@@ -158,23 +130,17 @@ export const allRouters = [//组织架构
         children: [
             { path: '/team', component: team, name: '组织架构' },
         ],
-        // 其他信息
-        meta: { text: 'navigation.organizationalStructure' } 
     },
     
     {
         path: '/',
         component: Home,
-        name: '基础数据管理',
-        iconCls: 'iconfont firerock-iconsetting',
-        leaf: false,//只有一个节点
+        name: '角色权限',
+        iconCls: 'iconfont firerock-iconquanxian1',
+        leaf: true,//只有一个节点
         children: [
-            { path: '/timetype', component: timetype, name: '系统基础设置', iconCls: 'iconfont firerock-iconxitong-', meta: { text: 'navigation.basicSystemSettings' }},
-            { path: '/role', component: quanx, name: '角色权限管理', iconCls: 'iconfont firerock-iconquanxian1', meta: { text: 'navigation.roleRightsManagement' } },
-            { path: '/projectForm', component: projectForm, name: '项目表单设置', iconCls: 'iconfont firerock-iconquanxian1', meta: { text: 'navigation.projectFormSettings' } },
+            { path: '/role', component: quanx, name: '角色权限'},
         ],
-        // 其他信息
-        meta: { text: 'navigation.basicDataManagement' }
     },
     {
         path: '/404',

+ 78 - 30
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/Home.vue

@@ -125,47 +125,95 @@
         </el-col>
 
         <el-col :span="24" class="main">
-
             <aside :class="collapsed?'menu-collapsed':'menu-expanded'">
                 <el-scrollbar style="height:100%">
                 <!--导航菜单-->
                 <el-menu :default-active="$route.path" class="el-menu-vertical-demo" unique-opened router v-if="!collapsed" default-openeds="zhan">
                     <template v-for="(item, index) in $router.options.routes" v-if="!item.hidden">
-                        <!-- <el-submenu :index="index+''" v-if="!item.leaf"> -->
-                        <el-submenu :index="'zhan'" v-if="!item.leaf">
-                            <template slot="title"> 
-                                <i :class="item.iconCls"></i>
-                                <!-- <span class="itemName">{{item.name}}</span> -->
-                                <span class="itemName bosx" v-if="$t(item.meta.text).length < 16">{{$t(item.meta.text)}}</span>
-                                <el-tooltip class="itemName bosx"  v-if="$t(item.meta.text).length > 16" effect="dark" :content="$t(item.meta.text)" placement="top">
-                                    <span>{{$t(item.meta.text)}}</span>
-                                </el-tooltip>
-                            </template>
-                            <el-menu-item v-for="child in item.children" :index="child.path" :key="child.path" v-if="!child.hidden" :data-v-step="child.path"><i :class="child.iconCls"></i>
-                                <!-- {{child.name}} -->
-                                <span class="bosx" v-if="$t(child.meta.text).length < 16">{{$t(child.meta.text)}}</span>
-                                <el-tooltip class="bosx"  v-if="$t(child.meta.text).length > 16" effect="dark" :content="$t(child.meta.text)" placement="top">
-                                    <span>{{$t(child.meta.text)}}</span>
+                        <div v-if="item.name =='产品管理'">
+                            <el-submenu :index="'zhan'" >
+                                <template slot="title"> 
+                                    <i :class="item.iconCls"></i>
+                                    <span class="itemName bosx" v-if="item.name.length < 16">{{item.name}}</span>
+                                    <el-tooltip class="itemName bosx"  v-if="item.name.length > 16" effect="dark" :content="item.name" placement="top">
+                                        <span>{{item.name}}</span>
+                                    </el-tooltip>
+                                </template>
+                                <!-- 根据后台配置的产品分类来渲染产品管理的子菜单 -->
+                                <el-menu-item v-for="child in user.prodSubMenuList" :index="child.path" :key="child.path" v-if="!child.hidden" :data-v-step="child.path"><i :class="child.iconCls"></i>
+                                    <span class="bosx" v-if="child.name.length < 16">{{child.name}}</span>
+                                    <el-tooltip class="bosx"  v-if="child.name.length > 16" effect="dark" :content="child.name" placement="top">
+                                        <span>{{child.name}}</span>
+                                    </el-tooltip>
+                                </el-menu-item>
+                            </el-submenu>
+                        </div>
+                        <div v-else>
+                            <el-submenu :index="'zhan'" v-if="!item.leaf">
+                                <template slot="title"> 
+                                    <i :class="item.iconCls"></i>
+                                    <span class="itemName bosx" v-if="item.name.length < 16">{{item.name}}</span>
+                                    <el-tooltip class="itemName bosx"  v-if="item.name.length > 16" effect="dark" :content="item.name" placement="top">
+                                        <span>{{item.name}}</span>
+                                    </el-tooltip>
+                                </template>
+                                <el-menu-item v-for="child in item.children" :index="child.path" :key="child.path" v-if="!child.hidden" :data-v-step="child.path"><i :class="child.iconCls"></i>
+                                    <!-- {{child.name}} -->
+                                    <span class="bosx" v-if="child.name.length < 16">{{child.name}}</span>
+                                    <el-tooltip class="bosx"  v-if="child.name.length > 16" effect="dark" :content="child.name" placement="top">
+                                        <span>{{child.name}}</span>
+                                    </el-tooltip>
+                                </el-menu-item>
+                            </el-submenu>
+                            <el-menu-item v-if="item.leaf && item.children.length > 0" :index="item.children[0].path" :data-v-step="item.children[0].path">
+                                <i :class="item.iconCls"></i> 
+                                <!-- {{item.children[0].name}} -->
+                                <span class="bosx" v-if="item.name.length < 16">{{item.name}}</span>
+                                <el-tooltip class="itemName bosx"  v-if="item.name.length > 16" effect="dark" :content="item.name" placement="top">
+                                    <span>{{item.name}}</span>
                                 </el-tooltip>
                             </el-menu-item>
-                        </el-submenu>
-                        <el-menu-item v-if="item.leaf && item.children.length > 0" :index="item.children[0].path" :data-v-step="item.children[0].path">
-                            <i :class="item.iconCls"></i> 
-                            <!-- {{item.children[0].name}} -->
-                            <span class="bosx" v-if="$t(item.meta.text).length < 16">{{$t(item.meta.text)}}</span>
-                            <el-tooltip class="itemName bosx"  v-if="$t(item.meta.text).length > 16" effect="dark" :content="$t(item.meta.text)" placement="top">
-                                <span>{{$t(item.meta.text)}}</span>
-                            </el-tooltip>
-                            <!-- {{$t('navigation.reports')}} -->
-                            <!-- this.$t('navigation.reports')  // js-->
-                        </el-menu-item>
+                        </div>
+                        
                     </template>
                 </el-menu>
 
                 <!--导航菜单-折叠后-->
                 <ul class="el-menu el-menu-vertical-demo collapsed" v-if="collapsed" ref="menuCollapsed">
                     <li v-for="(item,index) in $router.options.routes" v-if="!item.hidden" class="el-submenu item" :style="{overflow:!item.leaf?'':'hidden'}">
-                        <template v-if="!item.leaf">
+                        <div v-if="item.name == '产品管理'">
+                            <template>
+                                <div class="el-submenu__title" style="padding-left: 20px;" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)">
+                                    <i :class="item.iconCls"></i>
+                                </div>
+                                <ul class="el-menu submenu" :class="'submenu-hook-'+index" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)">
+                                    <li v-for="child in user.prodSubMenuList" :key="child.path" class="el-menu-item" style="padding-left: 40px;" :class="$route.path==child.path?'is-active':''" @click="$router.push(child.path)">
+                                        {{child.name}}
+                                    </li>
+                                </ul>
+                            </template>
+                        </div>
+                        <div v-else>
+                            <template v-if="!item.leaf">
+                                <div class="el-submenu__title" style="padding-left: 20px;" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)">
+                                    <i :class="item.iconCls"></i>
+                                </div>
+                                <ul class="el-menu submenu" :class="'submenu-hook-'+index" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)">
+                                    <li v-for="child in item.children" v-if="!child.hidden" :key="child.path" class="el-menu-item" style="padding-left: 40px;" :class="$route.path==child.path?'is-active':''" @click="$router.push(child.path)">
+                                        {{child.name}}
+                                    </li>
+                                </ul>
+                            </template>
+                            <template v-else>
+                                <li class="el-submenu">
+                                    <div class="el-submenu__title el-menu-item" :class="$route.path==item.children[0].path?'is-active':''" @click="$router.push(item.children[0].path)"
+                                        style="padding-left: 20px;height: 56px;line-height: 56px;padding: 0 20px;">
+                                        <i :class="item.iconCls"></i>
+                                    </div>
+                                </li>
+                            </template>
+                        </div>
+                        <!-- <template v-if="!item.leaf">
                             <div class="el-submenu__title" style="padding-left: 20px;" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)">
                                 <i :class="item.iconCls"></i>
                             </div>
@@ -182,7 +230,7 @@
                                     <i :class="item.iconCls"></i>
                                 </div>
                             </li>
-                        </template>
+                        </template> -->
                     </li>
                 </ul>
                 </el-scrollbar>
@@ -286,7 +334,7 @@
                             highlight: true 
                         }
                     },{
-                        target: '[data-v-step="/daily"]',
+                        target: '[data-v-step="/report"]',
                         content: `第三步,填写每日工时报告`,
                         params: {
                             placement: 'right',

+ 8 - 13
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/Login.vue

@@ -124,7 +124,7 @@
                 this.isCorpWX = true;
             } 
             let href = window.location.href;
-            this.wxHrefFlg = href.indexOf('//worktime.ttkuaiban.com') != '-1'
+            this.wxHrefFlg = href.indexOf('//devworkshop.ttkuaiban.com') != '-1'
             if (this.isCorpWX) {
                 //企业微信环境下,尝试自动登录
                 //判断企业微信,是否存在授权
@@ -193,7 +193,7 @@
                         var jumpkey = '&jumpto=';
                         var url = location.href;
                         console.log('jumpto',location);
-                        // var url = "https://worktime.ttkuaiban.com/?corpid=$CORPID$&jumpto=/info/21#/index"
+                        // var url = "https://devworkshop.ttkuaiban.com/?corpid=$CORPID$&jumpto=/info/21#/index"
                         var that = this;
                         if (url.indexOf(key) > 0) {
                             var corpId = ''
@@ -261,7 +261,7 @@
                 //     })
                 // })
                 var appId = "wwf11426cf618e1703";//企业微信第三方的SUIT ID
-                var url = "https://worktime.ttkuaiban.com/api/corpWXScanningAuth";//授权回调页面
+                var url = "https://devworkshop.ttkuaiban.com/api/corpWXScanningAuth";//授权回调页面
                 var weixinUrl=`https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?appid=${appId}&redirect_uri=${url}&state=0&usertype=member`;
                 window.location.href = weixinUrl;
             },
@@ -343,7 +343,7 @@
             },
             tryAutoLogin() {
                 var appId = "ww4e237fd6abb635af";//企业微信第三方的SUIT ID
-                var url = "https://worktime.ttkuaiban.com/api/corpWXAuth";//授权回调页面
+                var url = "https://devworkshop.ttkuaiban.com/api/corpWXAuth";//授权回调页面
                 var weixinUrl="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appId+"&redirect_uri="+encodeURI(url)+"&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
                 window.location.href = weixinUrl;
             },
@@ -439,15 +439,10 @@
                                 var user = res.data;
                                 sessionStorage.setItem('user', JSON.stringify(res.data));
                                 this.permissionsList(res.data)
-                                if (user.company.packageSimple == 1) {
-                                    //简易模式,直接进入工时统计表
-                                    this.$router.push({ path: '/simple' });
-                                    sessionStorage.setItem('autoRoute','/simple')
-                                } else {
-                                    if(user.moduleList.length > 0) {
-                                        this.$router.push({ path: user.moduleList[0].path })
-                                        sessionStorage.setItem('autoRoute',user.moduleList[0].path)
-                                    }
+                                if(user.moduleList.length > 0) {
+                                    console.log('===================LOGIN SUCCESS=========='+user.moduleList[0].path);
+                                    this.$router.push({ path: user.moduleList[0].path })
+                                    sessionStorage.setItem('autoRoute',user.moduleList[0].path)
                                 }
                             } else {
                                 this.logining = false;

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

@@ -877,7 +877,7 @@ export default {
       shuz: [this.$t('generalexpenses'), this.$t('travelexpensess'), this.$t('outsourcingcostshouldbereported')],
       ins: 0,
       apl: '',
-      diz: 'http://worktime.ttkuaiban.com',
+      diz: 'http://devworkshop.ttkuaiban.com',
       importDialog: false,
       importingData: false,
       currentClick: '',

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

@@ -1529,7 +1529,6 @@
                         <template slot-scope="scope">
                             <div>
                                 <el-link type="primary" @click="addUpload(scope.row)">{{scope.row.fileName}}</el-link>
-                                <!-- <el-link type="primary" :href="'http://localhost:10086/upload/'+ scope.row.serverName">{{scope.row.fileName}}</el-link> -->
                             </div>
                         </template>
                     </el-table-column>

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/workReport/timer.vue

@@ -151,7 +151,7 @@
                     this.reportForm = row;
                     this.reportDialog = true;
                 } else {
-                    this.$router.push('/daily');
+                    this.$router.push('/report');
                 }
                 
             },

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

@@ -110,7 +110,7 @@
                     </div>
 
                     <div class="popupBtn">
-                        <van-button style="width:100%;background: #1989fa;color: #ffffff;position: -webkit-sticky;position: sticky;bottom: 0;" round @click="refreshParticipate()" showPickerUser=false>确定</van-button>
+                        <van-button style="width:100%;background: #1989fa;color: #ffffff;position: -webkit-sticky;position: sticky;bottom: 0;" round @click="refreshParticipate();showPickerUser=false;" >确定</van-button>
                     </div>
                 </div>
             </van-popup>