diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java index b5c268e1..c0b62405 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -634,6 +634,50 @@ public class MaterialController { } + // 获取扫描结果并跳转到出库 + @PostMapping("/qywxApplicationOutScanQrCode") + public RestResponse qywxApplicationOutScanQrCode(@RequestBody Map map, HttpServletRequest request) { + UserByPort userByPort = (UserByPort) request.getAttribute("userToken"); + // 获取当前用户所在部门拥有的仓库 + List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString()); + // 获取当前扫描的二维码 + String qrCode = (String) map.get("qrCode"); + // 根据扫描的二维码获取对应的物料编码 + String mcode = materialService.findMaterialCodeByQrCode(qrCode); + // 根据物料编码获取物料 + Material material = materialService.findMaterialByCode(mcode); + Map param = new HashMap<>(); + List placePList = new ArrayList<>(); + param.put("mcode", mcode); + + MaterialP mp = null; + // 获取物料与条形码的对应关系 + List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param); + Boolean flag = false; + for (int j = 0; j < depositoryByAdminorg.size(); j++) { + Depository depository = depositoryByAdminorg.get(j); + param.put("code", material.getCode()); + param.put("depositoryId", depository.getId()); + // 获取当前仓库下是否有当前物料的库存 + List inventory = materialService.findInventory(param); + if (inventory.size() > 0) { + mp = inventory.get(0); + List place = placeService.findPlaceByMidAndDid(mp.getId(), depository.getId()); + placePList.addAll(place); + flag = true; + } + } + if (flag) { + // 设置当前物料在相关仓库下的所有库位 + mp.setPlacePList(placePList); + // 设置物料与条形码的对应关系 + mp.setMaterialAndBarCodeList(materialByBarCodeByCondition); + } + return new RestResponse(mp); + + } + + // 获取扫描结果并跳转到盘点 @PostMapping("/stockTaking_scanQrCode") public RestResponse stockTakingScanQrCode(@RequestBody Map map, HttpServletRequest request) { diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index 8a0159df..5beb9d69 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -103,8 +103,15 @@ public class PageController { @GetMapping("/") public ModelAndView Init(HttpServletRequest request) { ModelAndView mv = new ModelAndView(); - mv.setViewName("index"); UserByPort userToken = (UserByPort) request.getAttribute("userToken"); + String userAgent = request.getHeader("user-agent"); + // 判断当前使用的设备为移动端还是pc端 + boolean b = DeviceUtil.checkAgentIsMobile(userAgent); + if (b) { + mv.setViewName("index_mobile"); + } else { + mv.setViewName("index"); + } mv.addObject("user", userToken); return mv; } @@ -158,8 +165,15 @@ public class PageController { @GetMapping("/index") public ModelAndView index(HttpServletRequest request) { ModelAndView mv = new ModelAndView(); - mv.setViewName("index"); UserByPort userToken = (UserByPort) request.getAttribute("userToken"); + String userAgent = request.getHeader("user-agent"); + // 判断当前使用的设备为移动端还是pc端 + boolean b = DeviceUtil.checkAgentIsMobile(userAgent); + if (b) { + mv.setViewName("index_mobile"); + } else { + mv.setViewName("index"); + } mv.addObject("user", userToken); return mv; } @@ -204,6 +218,7 @@ public class PageController { } } //定义首页 + Map home = new HashMap<>(); Map homeInfo = new HashMap<>(); homeInfo.put("title", "首页"); @@ -293,15 +308,24 @@ public class PageController { } @GetMapping("/welcome") - public ModelAndView welcome() { + public ModelAndView welcome(HttpServletRequest request) { ModelAndView mv = new ModelAndView(); - mv.setViewName("pages/other/welcome"); + String header = request.getHeader("user-agent"); + boolean b = DeviceUtil.checkAgentIsMobile(header); + if (b) { + mv.setViewName("pages/other/welcome_mobile"); + } else { + mv.setViewName("pages/other/welcome"); + + } + Map map = new HashMap(2) { { put("beigin", 0); put("size", 6); } }; + mv.addObject("depositoryCount", depositoryService.findAllCountByNoDelete()); mv.addObject("allPrice", materialService.findAllPriceNoDelete()); mv.addObject("allMaterial", materialService.findMaterialAll().size()); @@ -368,6 +392,10 @@ public class PageController { mv.setViewName("pages/material/material-out"); UserByPort userToken = (UserByPort) request.getAttribute("userToken"); Integer isadmin = userToken.getIsadmin(); + // 获取当天时间戳 + String currentDate = DateUtil.getCurrentDate(); + Long aLong = DateUtil.DateTimeByMonthToTimeStamp(currentDate); + mv.addObject("nowDay", aLong); if (isadmin == null) { isadmin = 1; } diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/Material.java b/src/main/java/com/dreamchaser/depository_manage/entity/Material.java index 93e4310e..9786cff0 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/Material.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/Material.java @@ -7,42 +7,65 @@ import java.util.List; /** * 产品信息记录(库存)(material) + * * @author Dreamchaser * @version 1.0.0 2021-05-20 */ @Data public class Material { - /** 版本号 */ + /** + * 版本号 + */ private static final long serialVersionUID = 4604245526757565755L; - /** 存储id */ + /** + * 存储id + */ private Integer id; - /** 仓库id */ + /** + * 仓库id + */ private Integer depositoryId; - /** 物料名称 */ + /** + * 物料名称 + */ private String mname; - /** 数量 */ + /** + * 数量 + */ private Integer quantity; - /** 总金额 */ + /** + * 总金额 + */ private Double amounts; - /** 物料种类id */ + /** + * 物料种类id + */ private Long materialTypeId; - /** 物料状态 */ + /** + * 物料状态 + */ private Integer state; - /** 存货编码 */ - private String code; + /** + * 存货编码 + */ + private String code; - /** 规格型号 */ + /** + * 规格型号 + */ private String version; - /** 单价 */ + /** + * 单价 + */ private Double price; /** * 类型名称 @@ -54,16 +77,24 @@ public class Material { */ private List materialAndBarCodeList; - /** 物料类型 */ + /** + * 物料类型 + */ private MaterialType materialType; - /** 所属仓库 */ + /** + * 所属仓库 + */ private Depository depository; - /** 计量单位 */ + /** + * 计量单位 + */ private String unit; - /** 材质 */ + /** + * 材质 + */ private String texture; /** @@ -80,6 +111,43 @@ public class Material { /** * 暂存额度 */ - private Integer numberOfTemporary; + private Integer numberOfTemporary; + + /** + * 生产日期 + */ + private Long producedDate; + + + /** + * 保质期 + */ + private Long shelfLife; + + /** + * 产地 + */ + private String productionPlace; + + /** + * 生产日期 + */ + private String brand; + + /** + * 备注 + */ + private String remark; + + /** + * 生产日期 + */ + private String showProducedDate; + + + /** + * 保质期 + */ + private String showShelfLife; } \ No newline at end of file diff --git a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml index 6974d571..f8b139af 100644 --- a/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml @@ -20,6 +20,11 @@ + + + + + @@ -37,6 +42,11 @@ + + + + + @@ -72,17 +82,17 @@ - m.id, m.depository_id, m.mname, m.quantity, m.price, m.type_id,m.state,m.code ,m.version ,m.amounts ,m.unit ,m.texture,m.depositoryCode,m.number_of_temporary + m.id, m.depository_id, m.mname, m.quantity, m.price, m.type_id,m.state,m.code ,m.version ,m.amounts ,m.unit ,m.texture,m.depositoryCode,m.number_of_temporary,m.shelfLife,m.producedDate,m.productionPlace,m.brand,m.remark - id,depository_id,mname,quantity,price,type_id,state,code ,version ,amounts ,unit ,texture,tname,depositoryCode,dname + id,depository_id,mname,quantity,price,type_id,state,code ,version ,amounts ,unit ,texture,tname,depositoryCode,dname,producedDate,shelfLife,productionPlace,brand,remark - id,depository_id,mname,quantity,price,type_id,state,tname,dname,version,amounts ,unit ,texture,code,depositoryCode + id,depository_id,mname,quantity,price,type_id,state,tname,dname,version,amounts ,unit ,texture,code,depositoryCode,producedDate,shelfLife,productionPlace,brand,remark @@ -122,6 +132,21 @@ and m.code = #{code} + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand = #{brand} + + + and remark = #{remark} + and state != 3 and m.depository_id is null @@ -156,6 +181,21 @@ and code = #{code} + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand LIKE CONCAT('%', #{brand}, '%') + + + and remark LIKE CONCAT('%', #{remark}, '%') + and depository_id is null LIMIT #{begin},#{size} @@ -195,6 +235,21 @@ and code = #{code} + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand LIKE CONCAT('%', #{brand}, '%') + + + and remark LIKE CONCAT('%', #{remark}, '%') + and depository_id is not null LIMIT #{begin},#{size} @@ -230,6 +285,21 @@ and code = #{code} + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand LIKE CONCAT('%', #{brand}, '%') + + + and remark LIKE CONCAT('%', #{remark}, '%') + and depository_id is not null @@ -300,6 +370,21 @@ AND tname LIKE CONCAT('%', #{tname}, '%') + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand LIKE CONCAT('%', #{brand}, '%') + + + and remark LIKE CONCAT('%', #{remark}, '%') + group by bmcode @@ -371,7 +456,7 @@ INSERT INTO material ( - id, depository_id, mname, quantity, price, type_id,code,unit,version,texture,amounts,depositoryCode + id, depository_id, mname, quantity, price, type_id,code,unit,version,texture,amounts,depositoryCode,producedDate,shelfLife,brand,productionPlace,remark ) VALUES ( #{id}, @@ -405,11 +490,16 @@ 0, - #{depositoryCode} + #{depositoryCode}, - '' + '', + #{producedDate}, + #{shelfLife}, + #{brand}, + #{productionPlace}, + #{remark} ) @@ -516,7 +606,23 @@ number_of_temporary = #{numberOfTemporary}, - texture = #{texture} + texture = #{texture}, + + + shelfLife = #{shelfLife}, + + + producedDate = #{producedDate}, + + + productionPlace = #{productionPlace}, + + + brand = #{brand}, + + + + remark = #{remark} WHERE id = #{id} diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java index 8e1f1db9..bc00f432 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/MaterialP.java @@ -2,6 +2,7 @@ package com.dreamchaser.depository_manage.pojo; import com.dreamchaser.depository_manage.entity.Material; import com.dreamchaser.depository_manage.entity.MaterialAndBarCode; +import com.dreamchaser.depository_manage.utils.DateUtil; import lombok.Data; import java.math.BigInteger; @@ -119,6 +120,37 @@ public class MaterialP { private List placePList; + /** + * 生产日期 + */ + private String producedDate; + + + /** + * 保质期 + */ + private String shelfLife; + + /** + * 产地 + */ + private String productionPlace; + + /** + * 品牌 + */ + private String brand; + + /** + * 备注 + */ + private String remark; + + + /** + * 保质期,用于计算 + */ + private Long shelfLifeForCalc; public MaterialP(Integer id, Integer depositoryId, String mname, Integer quantity, Double price, String typeName) { @@ -144,6 +176,10 @@ public class MaterialP { this.depositoryCode = material.getDepositoryCode(); // 仓库编码 this.depositoryId = material.getDepositoryId(); // 仓库id this.placeCode = material.getPlaceCode(); // 库位编码 + this.productionPlace = material.getProductionPlace(); // 产地 + this.brand = material.getBrand(); // 品牌 + this.remark = material.getRemark(); // 备注 + this.shelfLifeForCalc = material.getShelfLife(); //保质期,用于计算 } public MaterialP() { diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java index 69e268db..bf554e3e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java @@ -66,6 +66,15 @@ public class MaterialServiceImpl implements MaterialService { map.put("price", price); map.put("amounts", quantity * price); } + // 判断是否有保质期 + if (map.containsKey("shelfLife")) { + Long shelfLife = DateUtil.DateTimeByMonthToTimeStamp(map.get("shelfLife").toString()); + map.put("shelfLife", shelfLife); + } + if (map.containsKey("producedDate")) { + Long producedDate = DateUtil.DateTimeByMonthToTimeStamp(map.get("producedDate").toString()); + map.put("producedDate", producedDate); + } // 获取当前类型 if (map.containsKey("typeId")) { Integer typeId = ObjectFormatUtil.toInteger(map.get("typeId").toString()); @@ -113,6 +122,15 @@ public class MaterialServiceImpl implements MaterialService { } map.put("price", price); } + // 判断是否有保质期 + if (map.containsKey("shelfLife")) { + Long shelfLife = DateUtil.DateTimeByMonthToTimeStamp(map.get("shelfLife").toString()); + map.put("shelfLife", shelfLife); + } + if (map.containsKey("producedDate")) { + Long producedDate = DateUtil.DateTimeByMonthToTimeStamp(map.get("producedDate").toString()); + map.put("producedDate", producedDate); + } return materialMapper.updateMaterial(map); @@ -279,6 +297,15 @@ public class MaterialServiceImpl implements MaterialService { Material material = materialMapper.findMaterialAndTypeById(id); material.setPrice(material.getPrice() / 100); material.setAmounts(material.getAmounts() / 100); + Long producedDate = material.getProducedDate(); + if (producedDate != null) { + material.setShowProducedDate(DateUtil.TimeStampToDateTimeForMonth(producedDate)); + } + Long shelfLife = material.getShelfLife(); + if (shelfLife != null) { + + material.setShowShelfLife(DateUtil.TimeStampToDateTimeForMonth(shelfLife)); + } return material; } @@ -383,6 +410,15 @@ public class MaterialServiceImpl implements MaterialService { m.setDepositoryName(depositoryMapper.findDepositoryNameById(depositoryId)); m.setWarehouseManager(depositoryMapper.findUserNameByDepositoryId(depositoryId)); } + Long producedDate = material.getProducedDate(); + if (producedDate != null) { + m.setProducedDate(DateUtil.TimeStampToDateTimeForMonth(producedDate)); + } + Long shelfLife = material.getShelfLife(); + if (shelfLife != null) { + + m.setShelfLife(DateUtil.TimeStampToDateTimeForMonth(shelfLife)); + } MaterialType materialTypeByOldId = materialTypeMapper.findMaterialTypeByOldId(material.getMaterialTypeId()); m.setTypeName(materialTypeByOldId.getTname()); m.setTypeId(materialTypeByOldId.getOldId()); @@ -655,7 +691,7 @@ public class MaterialServiceImpl implements MaterialService { // 获取当前类别级别 Integer mtLevel = getMtLevel(mt, 1); - if(materialTypeByParent.size() > 0) { + if (materialTypeByParent.size() > 0) { String mname = ""; Object o = map.get("mname"); @@ -689,7 +725,7 @@ public class MaterialServiceImpl implements MaterialService { if (Long.compare(parentMt.getOldId(), id) == 0) { if (mtLevel == 1) { - redisTemplate.opsForList().set("wms_materialTree_result",i,JSONObject.toJSONString(jsonObject)); + redisTemplate.opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject)); // redisTemplate.opsForList().leftPop("wms_materialTree_result"); // redisTemplate.opsForList().leftPush("wms_materialTree_result",JSONObject.toJSONString(jsonObject)); jsonObject.put("spread", true); @@ -700,19 +736,18 @@ public class MaterialServiceImpl implements MaterialService { List childList = (List) jsonObject.get("children"); List objectList1 = rewriteTree(childList, stringObjectMap, mtLevel - 1, mt); jsonObject.put("children", objectList1); - redisTemplate.opsForList().set("wms_materialTree_result",i,JSONObject.toJSONString(jsonObject)); + redisTemplate.opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject)); jsonObject.put("spread", true); stringObjectMap.put("spread", true); result.add(jsonObject); } } else { - redisTemplate.opsForList().set("wms_materialTree_result",i,JSONObject.toJSONString(jsonObject)); + redisTemplate.opsForList().set("wms_materialTree_result", i, JSONObject.toJSONString(jsonObject)); result.add(jsonObject); } } return result; - } - else{ + } else { List objectList = redisTemplate.opsForList().range("wms_materialTree_result", 0, -1); try { Thread.sleep(10); @@ -727,8 +762,8 @@ public class MaterialServiceImpl implements MaterialService { String s = objectList.get(i); JSONObject jsonObject = JSONObject.parseObject(s); Long id = Long.valueOf(jsonObject.getString("id")); - if(Long.compare(id,parent.getOldId()) == 0){ - jsonObject = setTreeChildrenSpreadIsTrue(jsonObject, mt, mtLevel - 1,map); + if (Long.compare(id, parent.getOldId()) == 0) { + jsonObject = setTreeChildrenSpreadIsTrue(jsonObject, mt, mtLevel - 1, map); } result.add(jsonObject); } @@ -736,45 +771,45 @@ public class MaterialServiceImpl implements MaterialService { } } - public JSONObject setTreeChildrenSpreadIsTrue(JSONObject jsonObject,MaterialType mt,Integer level,Map map){ - if(level != 0){ + public JSONObject setTreeChildrenSpreadIsTrue(JSONObject jsonObject, MaterialType mt, Integer level, Map map) { + if (level != 0) { MaterialType parent = mt; for (int i = 0; i < level - 1; i++) { parent = materialTypeMapper.findMaterialTypeByOldId(parent.getParentId()); } - jsonObject.put("spread",true); + jsonObject.put("spread", true); JSONArray children = jsonObject.getJSONArray("children"); for (int i = 0; i < children.size(); i++) { JSONObject object = children.getJSONObject(i); Long id = Long.valueOf(object.getString("id")); - if(Long.compare(id,parent.getOldId()) == 0){ - JSONObject object1 = setTreeChildrenSpreadIsTrue(object, mt, level - 1,map); - children.set(i,object1); - }else{ + if (Long.compare(id, parent.getOldId()) == 0) { + JSONObject object1 = setTreeChildrenSpreadIsTrue(object, mt, level - 1, map); + children.set(i, object1); + } else { List list = new ArrayList<>(); list.add(1); - object.put("children",list); + object.put("children", list); } } - }else{ + } else { Object o2 = map.get("depositoryId"); String mname = ""; Object o = map.get("mname"); if (o != null) { mname = o.toString(); } - if(o2 != null){ + if (o2 != null) { String depositoryId = o2.toString(); Object o3 = map.get("placeId"); String placeId = ""; - if(o3 != null){ + if (o3 != null) { placeId = o3.toString(); } List objectList = AddMaterialByType(mt, mname, depositoryId, placeId); Map stringObjectMap = new HashMap<>(); stringObjectMap = InitTreeMenusTest(mt, objectList); - jsonObject = new JSONObject(stringObjectMap); - }else{ + jsonObject = new JSONObject(stringObjectMap); + } else { Object o1 = map.get("adminorg"); @@ -782,11 +817,11 @@ public class MaterialServiceImpl implements MaterialService { if (o1 != null) { adminorg = o1.toString(); } - List list = AddMaterialByType(mt,mname,adminorg); + List list = AddMaterialByType(mt, mname, adminorg); Map stringObjectMap = new HashMap<>(); stringObjectMap = InitTreeMenusTest(mt, list); - jsonObject = new JSONObject(stringObjectMap); + jsonObject = new JSONObject(stringObjectMap); } @@ -813,28 +848,28 @@ public class MaterialServiceImpl implements MaterialService { } public List rewriteTree(List childrenList, Map stringObjectMap, Integer flag, MaterialType mt) { - if(flag != 1){ + if (flag != 1) { mt = materialTypeMapper.findMaterialTypeByOldId(mt.getParentId()); - return rewriteTree(childrenList,stringObjectMap,flag-1,mt); - }else{ + return rewriteTree(childrenList, stringObjectMap, flag - 1, mt); + } else { List list = new ArrayList<>(); Long somId = mt.getOldId(); for (int i = 0; i < childrenList.size(); i++) { JSONObject jsonObject = (JSONObject) childrenList.get(i); Long id = Long.valueOf(jsonObject.getString("id")); - if(Long.compare(somId,id)==0){ + if (Long.compare(somId, id) == 0) { Long childrenId = Long.valueOf(stringObjectMap.get("id").toString()); - if(Long.compare(childrenId,id) == 0){ + if (Long.compare(childrenId, id) == 0) { list.add(stringObjectMap); - }else{ + } else { // 获取当前下的子列表 JSONArray children = jsonObject.getJSONArray("children"); - List objectList = updateTreeChildren(children, stringObjectMap,childrenId); - jsonObject.put("children",objectList); - jsonObject.put("spread",true); + List objectList = updateTreeChildren(children, stringObjectMap, childrenId); + jsonObject.put("children", objectList); + jsonObject.put("spread", true); list.add(jsonObject); } - }else{ + } else { list.add(jsonObject); } } @@ -842,16 +877,16 @@ public class MaterialServiceImpl implements MaterialService { } } - public List updateTreeChildren(List childrenList,Map map,Long mtId){ + public List updateTreeChildren(List childrenList, Map map, Long mtId) { Long somId = Long.valueOf(map.get("id").toString()); List children = new ArrayList<>(); for (int i = 0; i < childrenList.size(); i++) { JSONObject o = (JSONObject) childrenList.get(i); Long id = Long.valueOf(o.getString("id")); - if(Long.compare(somId,id) == 0){ + if (Long.compare(somId, id) == 0) { children.add(map); - }else{ + } else { children.add(o); } } @@ -859,7 +894,6 @@ public class MaterialServiceImpl implements MaterialService { } - /** * 构造树形选择框 * @@ -1288,8 +1322,7 @@ public class MaterialServiceImpl implements MaterialService { list.add(jsonObject); } return list; - } - else { + } else { List materialTypeNoParent = materialTypeMapper.findMaterialTypeNoParent(); @@ -1342,7 +1375,7 @@ public class MaterialServiceImpl implements MaterialService { @Override public Object call() throws Exception { - List childForMaterialTypeByParent = findChildForMaterialTypeByParent_Test(mt.getOldId(),1,1); + List childForMaterialTypeByParent = findChildForMaterialTypeByParent_Test(mt.getOldId(), 1, 1); Map stringObjectMap = new HashMap<>(); if (childForMaterialTypeByParent != null) { stringObjectMap = InitTreeMenus(mt, childForMaterialTypeByParent); @@ -1366,8 +1399,9 @@ public class MaterialServiceImpl implements MaterialService { return null; } } + // 根据id获取子类(只获取类别) - public List findChildForMaterialTypeByParent_OnlyType(Long Oldid){ + public List findChildForMaterialTypeByParent_OnlyType(Long Oldid) { Map param = new HashMap<>(); List result = new ArrayList<>(); Map children = new HashMap<>(); @@ -1387,21 +1421,19 @@ public class MaterialServiceImpl implements MaterialService { } - - // 根据id获取子类 - public List findChildForMaterialTypeByParent_Test(Long Oldid,int level,int staticlevel) { + public List findChildForMaterialTypeByParent_Test(Long Oldid, int level, int staticlevel) { Map param = new HashMap<>(); List result = new ArrayList<>(); param.put("parentId", Oldid); // 获取当前父类的子类 List materialTypeByCondition = materialTypeMapper.findMaterialTypeByCondition(param); - if(materialTypeByCondition.size() > 0 && (level == staticlevel)){ + if (materialTypeByCondition.size() > 0 && (level == staticlevel)) { for (int i = 0; i < materialTypeByCondition.size(); i++) { MaterialType mt = materialTypeByCondition.get(i); - List childForMaterialTypeByParent_test = findChildForMaterialTypeByParent_Test(mt.getOldId(),level+1,staticlevel); + List childForMaterialTypeByParent_test = findChildForMaterialTypeByParent_Test(mt.getOldId(), level + 1, staticlevel); Map stringObjectMap = null; - if(childForMaterialTypeByParent_test == null){ + if (childForMaterialTypeByParent_test == null) { List list = new ArrayList<>(); list.add(1); stringObjectMap = InitTreeMenus(mt, list); @@ -1411,7 +1443,7 @@ public class MaterialServiceImpl implements MaterialService { result.add(stringObjectMap); } return result; - }else{ + } else { List childForMaterialTypeByParent_onlyType = findChildForMaterialTypeByParent_OnlyType(Oldid); return childForMaterialTypeByParent_onlyType; } diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java b/src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java index 59588c4c..3d9e6b51 100644 --- a/src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java +++ b/src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java @@ -78,6 +78,8 @@ public class DateUtil { } + + // 将日期转为时间戳 public static Long DateTimeByMonthToTimeStamp(String dateTime){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); @@ -91,6 +93,17 @@ public class DateUtil { return ts; } + // 将时间戳转为日期 + public static String TimeStampToDateTimeForMonth(Long timeStamp){ + String res; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + long lt = new Long(timeStamp); + Date date = new Date(lt); + res = simpleDateFormat.format(date); + return res; + + } + // 获取当前日期 public static String getNowTime(){ diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/DeviceUtil.java b/src/main/java/com/dreamchaser/depository_manage/utils/DeviceUtil.java new file mode 100644 index 00000000..72846331 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/utils/DeviceUtil.java @@ -0,0 +1,27 @@ +package com.dreamchaser.depository_manage.utils; + +public class DeviceUtil { + + private final static String[] agent = { "Android", "iPhone", "iPod","iPad", "Windows Phone", "MQQBrowser" }; //定义移动端请求的所有可能类型 + + /** + * 判断User-Agent 是不是来自于手机 + * @param userAgent + * @return + */ + public static boolean checkAgentIsMobile(String userAgent) { + boolean flag = false; + if (!userAgent.contains("Windows NT") || (userAgent.contains("Windows NT") && userAgent.contains("compatible; MSIE "))) { + // 排除 苹果桌面系统 + if (!userAgent.contains("Windows NT") && !userAgent.contains("Macintosh")) { + for (String item : agent) { + if (userAgent.contains(item)) { + flag = true; + break; + } + } + } + } + return flag; + } +} diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 18c56b83..2b02ef35 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -19,7 +19,7 @@ spring: datasource: username: root password: root - url: jdbc:mysql://localhost:3306/depository?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://localhost:3306/depository?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource initialSize: 5 diff --git a/src/main/resources/static/js/lay-module/layuimini/miniMenu.js b/src/main/resources/static/js/lay-module/layuimini/miniMenu.js index 7cd34c2a..3a12b295 100644 --- a/src/main/resources/static/js/lay-module/layuimini/miniMenu.js +++ b/src/main/resources/static/js/lay-module/layuimini/miniMenu.js @@ -115,6 +115,24 @@ layui.define(["element", "laytpl", "jquery"], function (exports) { }); return leftMenusHtml; }, + /** + * 判断是否为手机 + * @returns {boolean} + */ + checkMobile:function () { + var ua = navigator.userAgent.toLocaleLowerCase(); + var pf = navigator.platform.toLocaleLowerCase(); + var isAndroid = (/android/i).test(ua) || ((/iPhone|iPod|iPad/i).test(ua) && (/linux/i).test(pf)) + || (/ucweb.*linux/i.test(ua)); + var isIOS = (/iPhone|iPod|iPad/i).test(ua) && !isAndroid; + var isWinPhone = (/Windows Phone|ZuneWP7/i).test(ua); + var clientWidth = document.documentElement.clientWidth; + if (!isAndroid && !isIOS && !isWinPhone && clientWidth > 1024) { + return false; + } else { + return true; + } + }, /** * 多模块 * @param menuList 菜单数据 @@ -131,35 +149,69 @@ layui.define(["element", "laytpl", "jquery"], function (exports) { headerMenuCheckDefault = 'layui-this'; if (menuChildOpen) childOpenClass = ' layui-nav-itemed'; - var headerMenuHtml = this.each(menuList, function (index, val) { //顶部菜单渲染 - var menu = 'multi_module_' + index; - var id = menu + "HeaderId"; - var topMenuItemHtml = ""; - topMenuItemHtml = me.compileMenu({ - className: headerMenuCheckDefault, - menu: menu, - id: id, - title: val.title, - href: "", - target: "", - children: "" - }); - leftMenuHtml += me.renderLeftMenu(val.child, { - parentMenuId: menu, - childOpenClass: childOpenClass, - leftMenuCheckDefault: leftMenuCheckDefault - }); - headerMobileMenuHtml += me.compileMenu({ - id: id, - menu: menu, - id: id, - icon: val.icon, - title: val.title, - }, true); - headerMenuCheckDefault = ""; - leftMenuCheckDefault = "layui-hide"; - return topMenuItemHtml; - }).join(""); + if(miniMenu.checkMobile()){ + headerMenuHtml = this.each(menuList, function (index, val) { //顶部菜单渲染 + leftMenuCheckDefault = 'layui-hide'; + var menu = 'multi_module_' + index; + let title = val.title; + if(title === '仓库管理'){ + leftMenuCheckDefault = 'layui-this'; + } + var id = menu + "HeaderId"; + var topMenuItemHtml = ""; + topMenuItemHtml = me.compileMenu({ + className: headerMenuCheckDefault, + menu: menu, + id: id, + title: title, + href: "", + target: "", + children: "" + }); + leftMenuHtml += me.renderLeftMenu(val.child, { + parentMenuId: menu, + childOpenClass: childOpenClass, + leftMenuCheckDefault: leftMenuCheckDefault + }); + headerMobileMenuHtml += me.compileMenu({ + id: id, + menu: menu, + icon: val.icon, + title: title, + }, true); + headerMenuCheckDefault = ""; + return topMenuItemHtml; + }).join(""); + }else{ + headerMenuHtml = this.each(menuList, function (index, val) { //顶部菜单渲染 + var menu = 'multi_module_' + index; + var id = menu + "HeaderId"; + var topMenuItemHtml = ""; + topMenuItemHtml = me.compileMenu({ + className: headerMenuCheckDefault, + menu: menu, + id: id, + title: val.title, + href: "", + target: "", + children: "" + }); + leftMenuHtml += me.renderLeftMenu(val.child, { + parentMenuId: menu, + childOpenClass: childOpenClass, + leftMenuCheckDefault: leftMenuCheckDefault + }); + headerMobileMenuHtml += me.compileMenu({ + id: id, + menu: menu, + icon: val.icon, + title: val.title, + }, true); + headerMenuCheckDefault = ""; + leftMenuCheckDefault = "layui-hide"; + return topMenuItemHtml; + }).join(""); + } $('.layui-layout-body').addClass('layuimini-multi-module'); //多模块标识 $('.layuimini-menu-header-pc').html(headerMenuHtml); //电脑 $('.layuimini-menu-left').html(leftMenuHtml); @@ -224,7 +276,6 @@ layui.define(["element", "laytpl", "jquery"], function (exports) { // $(".menu-li").each(function (idx,el) { // $(el).addClass("hidden-sub-menu"); // }); - } else { // 正常 $('.layuimini-tool [data-side-fold]').attr('data-side-fold', 1); $('.layuimini-tool [data-side-fold]').attr('class', 'fa fa-outdent'); diff --git a/src/main/resources/static/js/lay-module/layuimini/miniTab.js b/src/main/resources/static/js/lay-module/layuimini/miniTab.js index 820b3fb1..76871fcb 100644 --- a/src/main/resources/static/js/lay-module/layuimini/miniTab.js +++ b/src/main/resources/static/js/lay-module/layuimini/miniTab.js @@ -194,6 +194,24 @@ layui.define(["element", "layer", "jquery"], function (exports) { return menu; }, + /** + * 判断是否为手机 + * @returns {boolean} + */ + checkMobile:function () { + var ua = navigator.userAgent.toLocaleLowerCase(); + var pf = navigator.platform.toLocaleLowerCase(); + var isAndroid = (/android/i).test(ua) || ((/iPhone|iPod|iPad/i).test(ua) && (/linux/i).test(pf)) + || (/ucweb.*linux/i.test(ua)); + var isIOS = (/iPhone|iPod|iPad/i).test(ua) && !isAndroid; + var isWinPhone = (/Windows Phone|ZuneWP7/i).test(ua); + var clientWidth = document.documentElement.clientWidth; + if (!isAndroid && !isIOS && !isWinPhone && clientWidth > 1024) { + return false; + } else { + return true; + } + }, /** * 监听 * @param options @@ -276,7 +294,6 @@ layui.define(["element", "layer", "jquery"], function (exports) { var loading = layer.load(0, {shade: false, time: 2 * 1000}); var $parent = $(this).parent(); - console.log($parent); var tabId = $parent.attr('lay-id'); if (tabId !== undefined || tabId !== null) { miniTab.delete(tabId); @@ -504,6 +521,7 @@ layui.define(["element", "layer", "jquery"], function (exports) { }); }, + /** * 多模块切换 * @param tabId @@ -511,33 +529,71 @@ layui.define(["element", "layer", "jquery"], function (exports) { listenSwitchMultiModule: function (tabId) { $("[layuimini-href]").each(function () { if ($(this).attr("layuimini-href") === tabId) { - - // 自动展开菜单栏 - var addMenuClass = function ($element, type) { - if (type === 1) { - $element.addClass('layui-this'); - if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-this')) { - var moduleId = $element.parent().attr('id'); - $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); - $("#" + moduleId + "HeaderId").addClass("layui-this"); - $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); - $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + var addMenuClass ; + // 如果是移动端 + if(miniTab.checkMobile()){ + addMenuClass = function ($element, type) { + if (type === 1) { + $element.addClass('layui-this'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-this')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + let text = $("#" + moduleId + "HeaderId").text(); + if(text === '仓库管理'){ + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + } + + } else { + addMenuClass($element.parent().parent(), 2); + } } else { - addMenuClass($element.parent().parent(), 2); + + $element.addClass('layui-nav-itemed'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-nav-itemed')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + let text = $("#" + moduleId + "HeaderId").text(); + if(text === '仓库管理'){ + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + } + } else { + addMenuClass($element.parent().parent(), 2); + } } - } else { - $element.addClass('layui-nav-itemed'); - if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-nav-itemed')) { - var moduleId = $element.parent().attr('id'); - $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); - $("#" + moduleId + "HeaderId").addClass("layui-this"); - $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); - $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + }; + }else{ + addMenuClass = function ($element, type) { + if (type === 1) { + $element.addClass('layui-this'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-this')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + } else { + addMenuClass($element.parent().parent(), 2); + } } else { - addMenuClass($element.parent().parent(), 2); + + $element.addClass('layui-nav-itemed'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-nav-itemed')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + } else { + addMenuClass($element.parent().parent(), 2); + } } - } - }; + }; + } + // 自动展开菜单栏 addMenuClass($(this).parent(), 1); return false; } diff --git a/src/main/resources/static/js/lay-module/layuimini/miniTheme.js b/src/main/resources/static/js/lay-module/layuimini/miniTheme.js index aea19eb6..a4e952cc 100644 --- a/src/main/resources/static/js/lay-module/layuimini/miniTheme.js +++ b/src/main/resources/static/js/lay-module/layuimini/miniTheme.js @@ -429,11 +429,6 @@ layui.define(["jquery", "layer"], function (exports) { '
\n' + '
    \n' + bgColorHtml + '
\n' + '
\n' + - '
\n' + - ' 开发文档\n' + - ' 开源地址\n' + - ' 官方网站\n' + - '
' + ''; layer.open({ type: 1, diff --git a/src/main/resources/templates/index_back.html b/src/main/resources/templates/index_mobile.html similarity index 51% rename from src/main/resources/templates/index_back.html rename to src/main/resources/templates/index_mobile.html index 7e8e19ba..aa24438f 100644 --- a/src/main/resources/templates/index_back.html +++ b/src/main/resources/templates/index_mobile.html @@ -1,10 +1,12 @@ + 仓库管理系统 - + @@ -19,7 +21,14 @@ + + + + + @@ -38,46 +47,42 @@
- - @@ -85,6 +90,7 @@
+
@@ -110,11 +116,11 @@
  • @@ -127,21 +133,24 @@ + + + diff --git a/src/main/resources/templates/pages/application/application-out.html b/src/main/resources/templates/pages/application/application-out.html index 4afbe263..044b2ba5 100644 --- a/src/main/resources/templates/pages/application/application-out.html +++ b/src/main/resources/templates/pages/application/application-out.html @@ -70,9 +70,14 @@
    - +
    + + +
    @@ -182,6 +187,11 @@ function Coverpage() { } + + // 用于扫码出库 + function scanCodeByOut(obj) { + } + // 用于暂存卡片个数 var params = []; // 用于卡片编号 @@ -244,59 +254,6 @@ layer.msg(data.statusInfo.message);//失败的表情 } else { - /*let url = window.location.href.split("#")[0]; - var req = {}; - req.url = url; - $.ajax({ - url: "/QyWxSignature", - type: "get", - datatype: "json", - data: (req), - contentType: "application/json;charset=utf-8", - success: function (d) { - var data = d.data; - console.log(data) - console.log(parent) - parent.wx.agentConfig({ - corpid: data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致 - agentid: data.agentid, // 必填,企业微信的应用id (e.g. 1000247) - timestamp: data.timestamp, // 必填,生成签名的时间戳 - nonceStr: data.noncestr, // 必填,生成签名的随机串 - signature: data.jsapi_ticket_app,// 必填,签名,见附录-JS-SDK使用权限签名算法 - jsApiList: ['thirdPartyOpenPage'], //必填,传入需要使用的接口名称 - success: function (res) { - // 回调 - parent.wx.invoke('thirdPartyOpenPage', { - "oaType": "10001",// String - "templateId": "3WKiKVCzyLv3Y1LaHZxp4DimQEpCdvYP52HsAUtF",// String - "thirdNo": "123456456",// String - "extData": { - 'fieldList': [{ - 'title': '采购类型', - 'type': 'text', - 'value': '市场活动', - }, - { - 'title': '订单链接', - 'type': 'link', - 'value': 'https://work.weixin.qq.com', - }], - } - }, - function (res) { - // 输出接口的回调信息 - console.log(res); - }); - }, - fail: function (res) { - if (res.errMsg.indexOf('function not exist') > -1) { - alert('版本过低请升级') - } - console.log(res) - } - }); - } - });*/ layer.msg("申请提交成功", { icon: 6,//成功的表情 time: 500 //1秒关闭(如果不配置,默认是3秒) @@ -496,7 +453,7 @@ // 输入code var code = obj.value; // 获取对应元素 - var parent = obj.parentNode.parentNode.parentNode; + var parent = obj.parentNode.parentNode.parentNode.parentNode; var objId = parent.id.split("cardItem")[1]; var children = parent.childNodes[5]; var materialItem = children.childNodes[3].childNodes[1].childNodes; @@ -569,7 +526,7 @@ var parentId = parent.id; var codeChildren = parent.childNodes[7]; var materialChildren = parent.childNodes[5]; - var codeItem = codeChildren.childNodes[3].childNodes; + var codeItem = codeChildren.childNodes[3].childNodes[1].childNodes; var codeValue = codeItem[1]; var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; @@ -648,7 +605,7 @@ var parent = obj.parentNode.parentNode.parentNode.parentNode; var materialChildren = parent.childNodes[5]; var codeChildren = parent.childNodes[7]; - var codeItem = codeChildren.childNodes[3].childNodes; + var codeItem = codeChildren.childNodes[3].childNodes[1].childNodes; var codeValue = codeItem[1]; var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; @@ -714,7 +671,8 @@ // 条形码条码 var barCodeItem = barCodeChildren.childNodes[3]; // 物料编码 - var materialCodeItem = parent.childNodes[7].childNodes[3]; + var materialCodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes; + var materialCode = materialCodeItem.childNodes[1]; @@ -737,6 +695,85 @@ }) }; + + // 用于扫码功能 + scanCodeByOut = function (obj) { + parent.wx.scanQRCode({ + desc: 'scanQRCode desc', + needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, + scanType: ["qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有 + success: function (res) { + // 回调 + var result = res.resultStr;//当needResult为1时返回处理结果 + var req = {}; + req.qrCode = result; + $.ajax({ + url: "/material/qywxApplicationOutScanQrCode", + type: "post", + dataType: 'json', + data: JSON.stringify(req), + contentType: "application/json;charset=utf-8", + success: function (d) { + var data = d.data; + // 获取对应元素 + var parent = obj.parentNode.parentNode.parentNode.parentNode; + var MaterialChildren = parent.childNodes[5]; + var materialItem = MaterialChildren.childNodes[3].childNodes[1].childNodes; + + var barCodeChildren = parent.childNodes[9]; + + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + // 条形码条码 + var barCodeItem = barCodeChildren.childNodes[3]; + // 物料编码 + var materialCodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes; + + var materialCode = materialCodeItem.childNodes[1]; + + var idNumber = materialId.name.split("mid")[1]; + // 获取物料与条形码的对应关系 + var materialAndBarCodeList = data["materialAndBarCodeList"]; + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } + if (materialAndBarCodeList.length > 0) { + // 如果有对应的条形码 + var barCodeInput = barCodeItem.childNodes[1].childNodes[1]; + var barCodeImg = barCodeItem.childNodes[1].childNodes[3]; + var id = barCodeInput.id; + $("#" + id).remove(); + $("#barCode" + idNumber).empty(); + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } else { + var barCodeSelect = ` + `; + $("#" + barCodeImg.id).before(barCodeSelect); + } + form.render(); + + $.each(materialAndBarCodeList, function (index, item) { + $("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 + }); + form.render(); + } + $('#place' + idNumber).empty(); + $.each(data.placePList, function (index, item) { + $('#place' + idNumber).append(new Option(item.depositoryName + "-" + item.code, item.id));//往下拉菜单里添加元素 + }); + form.render(); + materialName.value = data.mname; + materialId.value = data.id; + materialCode.value = data.code; + } + }) + } + }) + }; //用于判断当前物料数量是否合适 MaterialQuantityIsTrue = function (obj) { var id = obj.id.split("quantity")[1]; @@ -746,37 +783,46 @@ $("#quantity" + id).val("") }); } else { - var req = {}; - req.code = mcode; - req.quantity = $("#quantity" + id).val(); - $.ajax({ - url: "/material/MaterialQuantityIsTrue", - type: "post", - data: JSON.stringify(req), - dataType: 'json', - contentType: "application/json;charset=utf-8", - success: function (res) { - var flag = res.data; - if (!flag) { // 如果当前数目不合适 - layer.msg("当前物料数量不足", {icon: 0, time: 500}, function () { - $("#quantity" + id).val(""); - // 获取对应元素 - var parent = obj.parentNode.parentNode.parentNode; - var children = parent.childNodes[5]; - var codeChildren = parent.childNodes[7]; - var materialItem = children.childNodes[3].childNodes[1].childNodes; - var materialName = materialItem[1]; - var materialId = materialName.parentNode.parentNode.childNodes[3]; - var codeItem = codeChildren.childNodes[3].childNodes; - var codeValue = codeItem[1]; - materialName.value = ""; - materialId.value = ""; - codeValue.value = ""; - }); + let val = $("#quantity" + id).val(); + if(val !== null && val !== undefined && val !== '') { + var req = {}; + req.code = mcode; + req.quantity = val; + $.ajax({ + url: "/material/MaterialQuantityIsTrue", + type: "post", + data: JSON.stringify(req), + dataType: 'json', + contentType: "application/json;charset=utf-8", + success: function (res) { + var flag = res.data; + if (!flag) { // 如果当前数目不合适 + layer.msg("当前物料数量不足", {icon: 0, time: 500}, function () { + $("#quantity" + id).val(""); + // 获取对应元素 + var parent = obj.parentNode.parentNode.parentNode; + var children = parent.childNodes[5]; + var codeChildren = parent.childNodes[7]; + var materialItem = children.childNodes[3].childNodes[1].childNodes; + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + var codeItem = codeChildren.childNodes[3].childNodes[1].childNodes; + var codeValue = codeItem[1]; + materialName.value = ""; + materialId.value = ""; + codeValue.value = ""; + var idNumber = materialId.name.split("mid")[1]; + $("#barCode" + idNumber).empty(); + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } + }); + } } - } - }); + }); + } } } diff --git a/src/main/resources/templates/pages/application/application-out_min.html b/src/main/resources/templates/pages/application/application-out_min.html index 08052e24..3bfa59b6 100644 --- a/src/main/resources/templates/pages/application/application-out_min.html +++ b/src/main/resources/templates/pages/application/application-out_min.html @@ -28,7 +28,7 @@
    @@ -80,7 +84,7 @@ var parentId = document.getElementById("parentId").value; table.render({ elem: "#currentTableId", - url: '/company/allCompanyByParent?parentId='+parentId, + url: '/company/allCompanyByParent?parentId=' + parentId, parseData: function (res) { //res 即为原始返回的数据 return { "status": res.status, //解析接口状态 @@ -94,25 +98,27 @@ limitName: 'size' //每页数据量的参数名,默认:limit }, where: { - type:"0" + type: "0" }, response: { statusName: 'status' //规定数据状态的字段名称,默认:code - ,statusCode: 200 //规定成功的状态码,默认:0 - ,msgName: 'message' //规定状态信息的字段名称,默认:msg - ,countName: 'count' //规定数据总数的字段名称,默认:count - ,dataName: 'data' //规定数据列表的字段名称,默认:data + , statusCode: 200 //规定成功的状态码,默认:0 + , msgName: 'message' //规定状态信息的字段名称,默认:msg + , countName: 'count' //规定数据总数的字段名称,默认:count + , dataName: 'data' //规定数据列表的字段名称,默认:data }, toolbar: '#toolbarDemo', defaultToolbar: ['filter', 'exports', 'print'], - cols: [ [ - {type: "checkbox", width: 50}, - {field: 'cid', width: 100, title: '公司', sort: true}, - {field: 'cname', width: 120, title: '公司名称', sort: true}, - {field: 'introduce',width: 200,title: '公司介绍',sort: true}, - {field:'state', title:'状态', minWidth: 80, templet: '#switchTpl'}, - {title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"} - ]], + cols: [ + [ + {type: "checkbox", width: 50}, + {field: 'cid', width: 100, title: '公司', sort: true}, + {field: 'cname', width: 120, title: '公司名称', sort: true}, + {field: 'introduce', width: 200, title: '公司介绍', sort: true}, + {field: 'state', title: '状态', minWidth: 80, templet: '#switchTpl'}, + {title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"} + ] + ], limits: [10, 15, 20, 25, 50], limit: 10, page: true, @@ -121,16 +127,16 @@ // 监听搜索操作 form.on('submit(data-search-btn)', function (data) { - var req={}; - data=data.field; - req.type=1; - if (data.cid!==''){ + var req = {}; + data = data.field; + req.type = 1; + if (data.cid !== '') { req.id = data.cid; } - if(data.state != ''){ + if (data.state != '') { req.state = data.state; } - req.parentId = parentId + req.parentId = parentId; //执行搜索重载 table.reload('currentTableId', { url: '/company/companyByCondition', @@ -159,30 +165,29 @@ $(window).on("resize", function () { layer.full(index); }); - } - else if (obj.event === 'delete') { // 监听删除操作 + } else if (obj.event === 'delete') { // 监听删除操作 var checkStatus = table.checkStatus('currentTableId') , data = checkStatus.data; - var req={}; - req.ids=[]; - for (i=0,len=data.length;i= 300){ + if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 - return; - }else{ + + } else { layer.msg("删除成功", { icon: 6,//成功的表情 time: 500 //1秒关闭(如果不配置,默认是3秒) @@ -216,14 +221,13 @@ maxmin: true, shadeClose: true, area: ['100%', '100%'], - content: '/company_detail?id='+data.cid, + content: '/company_detail?id=' + data.cid, }); $(window).on("resize", function () { layer.full(index); }); return false; - } - else if (obj.event === 'delete') { + } else if (obj.event === 'delete') { var req = {}; req.id = data.cid; layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) { @@ -240,7 +244,7 @@ layer.close(this.layerIndex); if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 - return; + } else { obj.del(); layer.msg("删除成功", { @@ -251,8 +255,7 @@ } }) }); - } - else if (obj.event == 'subclass'){ + } else if (obj.event == 'subclass') { var index = layer.open({ title: '子公司', type: 2, @@ -260,34 +263,33 @@ maxmin: true, shadeClose: true, area: ['100%', '100%'], - content: '/findCompanyByParentId?parentId='+data.cid + content: '/findCompanyByParentId?parentId=' + data.cid }); $(window).on("resize", function () { layer.full(index); }); return false; - } - else if (obj.event == 'realDelete') { // 彻底删除 + } else if (obj.event == 'realDelete') { // 彻底删除 var req = {}; req.id = data.cid; layer.confirm('该操作会造成不可逆后果,是否继续?', { - btn: ['继续','取消'] //按钮 - }, function(){ + btn: ['继续', '取消'] //按钮 + }, function () { $.ajax({ url: '/company/realDeleteCompany', - dataType:'json', - type:'POST', + dataType: 'json', + type: 'POST', contentType: "application/json;charset=utf-8", - data:JSON.stringify(req), - beforeSend:function () { - this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] }); + data: JSON.stringify(req), + beforeSend: function () { + this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']}); }, - success:function(data){ + success: function (data) { layer.close(this.layerIndex); - if(data.status >= 300){ + if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 - return; - }else{ + + } else { obj.del(); layer.msg("删除成功", { icon: 6,//成功的表情 @@ -296,27 +298,27 @@ } } }) - },function (){ + }, function () { // 执行重加载 table.reload('currentTableId', { url: '/materialType/materialTypeRecord', page: { curr: 1 }, - where: {"parentId":parentId} + where: {"parentId": parentId} }); }); } }); //监听状态操作 - form.on('switch(changeState)', function(obj){ - var req = new Map - if(obj.elem.checked){ + form.on('switch(changeState)', function (obj) { + var req = new Map; + if (obj.elem.checked) { req["state"] = 1 } - req["id"] = this.value - var hasMaterial = false + req["id"] = this.value; + var hasMaterial = false; $.ajax({ url: "/company/EditCompanyState", type: 'post', @@ -330,19 +332,19 @@ layer.close(this.layerIndex); if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 - return; + } else { layer.msg("修改成功", { icon: 6,//成功的表情 time: 500 //1秒关闭(如果不配置,默认是3秒) - },function(){ + }, function () { // 执行表格重加载 table.reload('currentTableId', { url: '/company/companyByCondition', page: { curr: 1 }, - where: {"parentId":parentId} + where: {"parentId": parentId} }); }) } diff --git a/src/main/resources/templates/pages/company/companyByParentId.html b/src/main/resources/templates/pages/company/companyByParentId.html index f1ced438..c16a8065 100644 --- a/src/main/resources/templates/pages/company/companyByParentId.html +++ b/src/main/resources/templates/pages/company/companyByParentId.html @@ -21,9 +21,12 @@
    - - +
    @@ -48,8 +51,6 @@ - -
    + + - + -
    +
    - - + + diff --git a/src/main/resources/templates/pages/material/material-out_back.html b/src/main/resources/templates/pages/material/material-out_back.html index 7a7446a3..b65eca10 100644 --- a/src/main/resources/templates/pages/material/material-out_back.html +++ b/src/main/resources/templates/pages/material/material-out_back.html @@ -1,491 +1,495 @@ - - layui - - - - - + + layui + + + + +
    -
    -
    - 搜索信息 -
    -
    -
    +
    +
    + 搜索信息 +
    + +
    -
    - -
    - - - -
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    -
    - -
    - - - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    -
    - -
    -
    + -
    - -
    - - -
    -
    +
    + +
    + + +
    +
    - - + + - + -
    +
    - + - + -
    +
    diff --git a/src/main/resources/templates/pages/material/material-view.html b/src/main/resources/templates/pages/material/material-view.html index a4184d30..51bfa076 100644 --- a/src/main/resources/templates/pages/material/material-view.html +++ b/src/main/resources/templates/pages/material/material-view.html @@ -63,6 +63,13 @@ class="layui-input"> +
    + +
    + +
    +
    @@ -89,6 +96,22 @@ class="layui-input">
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    @@ -103,6 +126,13 @@
    +
    + +
    + +
    +
    diff --git a/src/main/resources/templates/pages/materialtype/materialType_view.html b/src/main/resources/templates/pages/materialtype/materialType_view.html index ddf5295a..2cd54d0a 100644 --- a/src/main/resources/templates/pages/materialtype/materialType_view.html +++ b/src/main/resources/templates/pages/materialtype/materialType_view.html @@ -1,570 +1,573 @@ - - layui - - - - - + + layui + + + + +
    -
    -
    - 搜索信息 -
    -
    - -
    -
    - -
    - -
    +
    +
    + 搜索信息 +
    + + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    -
    - -
    - -
    -
    -
    - -
    -
    - -
    -
    + - - + + - + -
    +
    - + -
    +
    diff --git a/src/main/resources/templates/pages/other/welcome_mobile.html b/src/main/resources/templates/pages/other/welcome_mobile.html new file mode 100644 index 00000000..3267348b --- /dev/null +++ b/src/main/resources/templates/pages/other/welcome_mobile.html @@ -0,0 +1,236 @@ + + + + + 首页二 + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    数据统计
    +
    +
    +
    +
    +
    +
    +
    + 实时 +
    仓库数量
    +
    +
    +

    4

    + 当前分类总记录数 +
    +
    +
    +
    +
    +
    +
    +
    + 实时 +
    库存金额统计
    +
    +
    +

    12032

    + 当前分类总记录数 +
    +
    +
    +
    +
    +
    +
    +
    + 实时 +
    物品数
    +
    +
    +

    + 当前分类总记录数 +
    +
    +
    +
    +
    +
    +
    +
    + 实时 +
    仓库流水
    +
    +
    +

    + 当前分类总记录数 +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +
    + +
    +
    系统公告
    +
    +
    +
    修改选项卡样式
    +
    2019-07-11 23:06
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + diff --git a/src/main/resources/templates/pages/post/post-out.html b/src/main/resources/templates/pages/post/post-out.html index fa9983e7..41a260ee 100644 --- a/src/main/resources/templates/pages/post/post-out.html +++ b/src/main/resources/templates/pages/post/post-out.html @@ -22,9 +22,11 @@
    - - +
    @@ -49,8 +51,6 @@ - -
    + -
    +
    - + 详情 + 删除 + - - + + - + diff --git a/src/test/java/com/dreamchaser/depository_manage/Test.java b/src/test/java/com/dreamchaser/depository_manage/Test.java index 3ccfa050..962c9f6d 100644 --- a/src/test/java/com/dreamchaser/depository_manage/Test.java +++ b/src/test/java/com/dreamchaser/depository_manage/Test.java @@ -99,7 +99,7 @@ public class Test { @org.junit.Test public void test1() throws AesException, IOException, ParserConfigurationException, SAXException { - List objectList = InitTree_Test(); +// List objectList = InitTree_Test(); } diff --git a/target/classes/application-test.yml b/target/classes/application-test.yml index 18c56b83..2b02ef35 100644 --- a/target/classes/application-test.yml +++ b/target/classes/application-test.yml @@ -19,7 +19,7 @@ spring: datasource: username: root password: root - url: jdbc:mysql://localhost:3306/depository?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://localhost:3306/depository?serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource initialSize: 5 diff --git a/target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml b/target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml index 6974d571..f8b139af 100644 --- a/target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml +++ b/target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml @@ -20,6 +20,11 @@ + + + + + @@ -37,6 +42,11 @@ + + + + + @@ -72,17 +82,17 @@ - m.id, m.depository_id, m.mname, m.quantity, m.price, m.type_id,m.state,m.code ,m.version ,m.amounts ,m.unit ,m.texture,m.depositoryCode,m.number_of_temporary + m.id, m.depository_id, m.mname, m.quantity, m.price, m.type_id,m.state,m.code ,m.version ,m.amounts ,m.unit ,m.texture,m.depositoryCode,m.number_of_temporary,m.shelfLife,m.producedDate,m.productionPlace,m.brand,m.remark - id,depository_id,mname,quantity,price,type_id,state,code ,version ,amounts ,unit ,texture,tname,depositoryCode,dname + id,depository_id,mname,quantity,price,type_id,state,code ,version ,amounts ,unit ,texture,tname,depositoryCode,dname,producedDate,shelfLife,productionPlace,brand,remark - id,depository_id,mname,quantity,price,type_id,state,tname,dname,version,amounts ,unit ,texture,code,depositoryCode + id,depository_id,mname,quantity,price,type_id,state,tname,dname,version,amounts ,unit ,texture,code,depositoryCode,producedDate,shelfLife,productionPlace,brand,remark @@ -122,6 +132,21 @@ and m.code = #{code} + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand = #{brand} + + + and remark = #{remark} + and state != 3 and m.depository_id is null @@ -156,6 +181,21 @@ and code = #{code} + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand LIKE CONCAT('%', #{brand}, '%') + + + and remark LIKE CONCAT('%', #{remark}, '%') + and depository_id is null LIMIT #{begin},#{size} @@ -195,6 +235,21 @@ and code = #{code} + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand LIKE CONCAT('%', #{brand}, '%') + + + and remark LIKE CONCAT('%', #{remark}, '%') + and depository_id is not null LIMIT #{begin},#{size} @@ -230,6 +285,21 @@ and code = #{code} + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand LIKE CONCAT('%', #{brand}, '%') + + + and remark LIKE CONCAT('%', #{remark}, '%') + and depository_id is not null @@ -300,6 +370,21 @@ AND tname LIKE CONCAT('%', #{tname}, '%') + + and #{shelfLife} >= shelfLife + + + and producedDate >= #{producedDate} + + + and productionPlace = #{productionPlace} + + + and brand LIKE CONCAT('%', #{brand}, '%') + + + and remark LIKE CONCAT('%', #{remark}, '%') + group by bmcode @@ -371,7 +456,7 @@ INSERT INTO material ( - id, depository_id, mname, quantity, price, type_id,code,unit,version,texture,amounts,depositoryCode + id, depository_id, mname, quantity, price, type_id,code,unit,version,texture,amounts,depositoryCode,producedDate,shelfLife,brand,productionPlace,remark ) VALUES ( #{id}, @@ -405,11 +490,16 @@ 0, - #{depositoryCode} + #{depositoryCode}, - '' + '', + #{producedDate}, + #{shelfLife}, + #{brand}, + #{productionPlace}, + #{remark} ) @@ -516,7 +606,23 @@ number_of_temporary = #{numberOfTemporary}, - texture = #{texture} + texture = #{texture}, + + + shelfLife = #{shelfLife}, + + + producedDate = #{producedDate}, + + + productionPlace = #{productionPlace}, + + + brand = #{brand}, + + + + remark = #{remark} WHERE id = #{id} diff --git a/target/classes/static/js/lay-module/layuimini/miniTab.js b/target/classes/static/js/lay-module/layuimini/miniTab.js index 820b3fb1..76871fcb 100644 --- a/target/classes/static/js/lay-module/layuimini/miniTab.js +++ b/target/classes/static/js/lay-module/layuimini/miniTab.js @@ -194,6 +194,24 @@ layui.define(["element", "layer", "jquery"], function (exports) { return menu; }, + /** + * 判断是否为手机 + * @returns {boolean} + */ + checkMobile:function () { + var ua = navigator.userAgent.toLocaleLowerCase(); + var pf = navigator.platform.toLocaleLowerCase(); + var isAndroid = (/android/i).test(ua) || ((/iPhone|iPod|iPad/i).test(ua) && (/linux/i).test(pf)) + || (/ucweb.*linux/i.test(ua)); + var isIOS = (/iPhone|iPod|iPad/i).test(ua) && !isAndroid; + var isWinPhone = (/Windows Phone|ZuneWP7/i).test(ua); + var clientWidth = document.documentElement.clientWidth; + if (!isAndroid && !isIOS && !isWinPhone && clientWidth > 1024) { + return false; + } else { + return true; + } + }, /** * 监听 * @param options @@ -276,7 +294,6 @@ layui.define(["element", "layer", "jquery"], function (exports) { var loading = layer.load(0, {shade: false, time: 2 * 1000}); var $parent = $(this).parent(); - console.log($parent); var tabId = $parent.attr('lay-id'); if (tabId !== undefined || tabId !== null) { miniTab.delete(tabId); @@ -504,6 +521,7 @@ layui.define(["element", "layer", "jquery"], function (exports) { }); }, + /** * 多模块切换 * @param tabId @@ -511,33 +529,71 @@ layui.define(["element", "layer", "jquery"], function (exports) { listenSwitchMultiModule: function (tabId) { $("[layuimini-href]").each(function () { if ($(this).attr("layuimini-href") === tabId) { - - // 自动展开菜单栏 - var addMenuClass = function ($element, type) { - if (type === 1) { - $element.addClass('layui-this'); - if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-this')) { - var moduleId = $element.parent().attr('id'); - $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); - $("#" + moduleId + "HeaderId").addClass("layui-this"); - $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); - $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + var addMenuClass ; + // 如果是移动端 + if(miniTab.checkMobile()){ + addMenuClass = function ($element, type) { + if (type === 1) { + $element.addClass('layui-this'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-this')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + let text = $("#" + moduleId + "HeaderId").text(); + if(text === '仓库管理'){ + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + } + + } else { + addMenuClass($element.parent().parent(), 2); + } } else { - addMenuClass($element.parent().parent(), 2); + + $element.addClass('layui-nav-itemed'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-nav-itemed')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + let text = $("#" + moduleId + "HeaderId").text(); + if(text === '仓库管理'){ + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + } + } else { + addMenuClass($element.parent().parent(), 2); + } } - } else { - $element.addClass('layui-nav-itemed'); - if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-nav-itemed')) { - var moduleId = $element.parent().attr('id'); - $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); - $("#" + moduleId + "HeaderId").addClass("layui-this"); - $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); - $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + }; + }else{ + addMenuClass = function ($element, type) { + if (type === 1) { + $element.addClass('layui-this'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-this')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + } else { + addMenuClass($element.parent().parent(), 2); + } } else { - addMenuClass($element.parent().parent(), 2); + + $element.addClass('layui-nav-itemed'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-nav-itemed')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + } else { + addMenuClass($element.parent().parent(), 2); + } } - } - }; + }; + } + // 自动展开菜单栏 addMenuClass($(this).parent(), 1); return false; } diff --git a/target/classes/static/js/lay-module/layuimini/miniTheme.js b/target/classes/static/js/lay-module/layuimini/miniTheme.js index aea19eb6..a4e952cc 100644 --- a/target/classes/static/js/lay-module/layuimini/miniTheme.js +++ b/target/classes/static/js/lay-module/layuimini/miniTheme.js @@ -429,11 +429,6 @@ layui.define(["jquery", "layer"], function (exports) { '
    \n' + '
      \n' + bgColorHtml + '
    \n' + '
    \n' + - '
    \n' + - ' 开发文档\n' + - ' 开源地址\n' + - ' 官方网站\n' + - '
    ' + ''; layer.open({ type: 1, diff --git a/target/classes/templates/pages/application/application-out.html b/target/classes/templates/pages/application/application-out.html index 4afbe263..044b2ba5 100644 --- a/target/classes/templates/pages/application/application-out.html +++ b/target/classes/templates/pages/application/application-out.html @@ -70,9 +70,14 @@
    - +
    + + +
    @@ -182,6 +187,11 @@ function Coverpage() { } + + // 用于扫码出库 + function scanCodeByOut(obj) { + } + // 用于暂存卡片个数 var params = []; // 用于卡片编号 @@ -244,59 +254,6 @@ layer.msg(data.statusInfo.message);//失败的表情 } else { - /*let url = window.location.href.split("#")[0]; - var req = {}; - req.url = url; - $.ajax({ - url: "/QyWxSignature", - type: "get", - datatype: "json", - data: (req), - contentType: "application/json;charset=utf-8", - success: function (d) { - var data = d.data; - console.log(data) - console.log(parent) - parent.wx.agentConfig({ - corpid: data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致 - agentid: data.agentid, // 必填,企业微信的应用id (e.g. 1000247) - timestamp: data.timestamp, // 必填,生成签名的时间戳 - nonceStr: data.noncestr, // 必填,生成签名的随机串 - signature: data.jsapi_ticket_app,// 必填,签名,见附录-JS-SDK使用权限签名算法 - jsApiList: ['thirdPartyOpenPage'], //必填,传入需要使用的接口名称 - success: function (res) { - // 回调 - parent.wx.invoke('thirdPartyOpenPage', { - "oaType": "10001",// String - "templateId": "3WKiKVCzyLv3Y1LaHZxp4DimQEpCdvYP52HsAUtF",// String - "thirdNo": "123456456",// String - "extData": { - 'fieldList': [{ - 'title': '采购类型', - 'type': 'text', - 'value': '市场活动', - }, - { - 'title': '订单链接', - 'type': 'link', - 'value': 'https://work.weixin.qq.com', - }], - } - }, - function (res) { - // 输出接口的回调信息 - console.log(res); - }); - }, - fail: function (res) { - if (res.errMsg.indexOf('function not exist') > -1) { - alert('版本过低请升级') - } - console.log(res) - } - }); - } - });*/ layer.msg("申请提交成功", { icon: 6,//成功的表情 time: 500 //1秒关闭(如果不配置,默认是3秒) @@ -496,7 +453,7 @@ // 输入code var code = obj.value; // 获取对应元素 - var parent = obj.parentNode.parentNode.parentNode; + var parent = obj.parentNode.parentNode.parentNode.parentNode; var objId = parent.id.split("cardItem")[1]; var children = parent.childNodes[5]; var materialItem = children.childNodes[3].childNodes[1].childNodes; @@ -569,7 +526,7 @@ var parentId = parent.id; var codeChildren = parent.childNodes[7]; var materialChildren = parent.childNodes[5]; - var codeItem = codeChildren.childNodes[3].childNodes; + var codeItem = codeChildren.childNodes[3].childNodes[1].childNodes; var codeValue = codeItem[1]; var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; @@ -648,7 +605,7 @@ var parent = obj.parentNode.parentNode.parentNode.parentNode; var materialChildren = parent.childNodes[5]; var codeChildren = parent.childNodes[7]; - var codeItem = codeChildren.childNodes[3].childNodes; + var codeItem = codeChildren.childNodes[3].childNodes[1].childNodes; var codeValue = codeItem[1]; var materialItem = materialChildren.childNodes[3].childNodes[1].childNodes; var materialName = materialItem[1]; @@ -714,7 +671,8 @@ // 条形码条码 var barCodeItem = barCodeChildren.childNodes[3]; // 物料编码 - var materialCodeItem = parent.childNodes[7].childNodes[3]; + var materialCodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes; + var materialCode = materialCodeItem.childNodes[1]; @@ -737,6 +695,85 @@ }) }; + + // 用于扫码功能 + scanCodeByOut = function (obj) { + parent.wx.scanQRCode({ + desc: 'scanQRCode desc', + needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, + scanType: ["qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有 + success: function (res) { + // 回调 + var result = res.resultStr;//当needResult为1时返回处理结果 + var req = {}; + req.qrCode = result; + $.ajax({ + url: "/material/qywxApplicationOutScanQrCode", + type: "post", + dataType: 'json', + data: JSON.stringify(req), + contentType: "application/json;charset=utf-8", + success: function (d) { + var data = d.data; + // 获取对应元素 + var parent = obj.parentNode.parentNode.parentNode.parentNode; + var MaterialChildren = parent.childNodes[5]; + var materialItem = MaterialChildren.childNodes[3].childNodes[1].childNodes; + + var barCodeChildren = parent.childNodes[9]; + + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + // 条形码条码 + var barCodeItem = barCodeChildren.childNodes[3]; + // 物料编码 + var materialCodeItem = parent.childNodes[7].childNodes[3].childNodes[1].childNodes; + + var materialCode = materialCodeItem.childNodes[1]; + + var idNumber = materialId.name.split("mid")[1]; + // 获取物料与条形码的对应关系 + var materialAndBarCodeList = data["materialAndBarCodeList"]; + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } + if (materialAndBarCodeList.length > 0) { + // 如果有对应的条形码 + var barCodeInput = barCodeItem.childNodes[1].childNodes[1]; + var barCodeImg = barCodeItem.childNodes[1].childNodes[3]; + var id = barCodeInput.id; + $("#" + id).remove(); + $("#barCode" + idNumber).empty(); + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } else { + var barCodeSelect = ` + `; + $("#" + barCodeImg.id).before(barCodeSelect); + } + form.render(); + + $.each(materialAndBarCodeList, function (index, item) { + $("#barCode" + idNumber).append(new Option(item.bmcode, item.id));//往下拉菜单里添加元素 + }); + form.render(); + } + $('#place' + idNumber).empty(); + $.each(data.placePList, function (index, item) { + $('#place' + idNumber).append(new Option(item.depositoryName + "-" + item.code, item.id));//往下拉菜单里添加元素 + }); + form.render(); + materialName.value = data.mname; + materialId.value = data.id; + materialCode.value = data.code; + } + }) + } + }) + }; //用于判断当前物料数量是否合适 MaterialQuantityIsTrue = function (obj) { var id = obj.id.split("quantity")[1]; @@ -746,37 +783,46 @@ $("#quantity" + id).val("") }); } else { - var req = {}; - req.code = mcode; - req.quantity = $("#quantity" + id).val(); - $.ajax({ - url: "/material/MaterialQuantityIsTrue", - type: "post", - data: JSON.stringify(req), - dataType: 'json', - contentType: "application/json;charset=utf-8", - success: function (res) { - var flag = res.data; - if (!flag) { // 如果当前数目不合适 - layer.msg("当前物料数量不足", {icon: 0, time: 500}, function () { - $("#quantity" + id).val(""); - // 获取对应元素 - var parent = obj.parentNode.parentNode.parentNode; - var children = parent.childNodes[5]; - var codeChildren = parent.childNodes[7]; - var materialItem = children.childNodes[3].childNodes[1].childNodes; - var materialName = materialItem[1]; - var materialId = materialName.parentNode.parentNode.childNodes[3]; - var codeItem = codeChildren.childNodes[3].childNodes; - var codeValue = codeItem[1]; - materialName.value = ""; - materialId.value = ""; - codeValue.value = ""; - }); + let val = $("#quantity" + id).val(); + if(val !== null && val !== undefined && val !== '') { + var req = {}; + req.code = mcode; + req.quantity = val; + $.ajax({ + url: "/material/MaterialQuantityIsTrue", + type: "post", + data: JSON.stringify(req), + dataType: 'json', + contentType: "application/json;charset=utf-8", + success: function (res) { + var flag = res.data; + if (!flag) { // 如果当前数目不合适 + layer.msg("当前物料数量不足", {icon: 0, time: 500}, function () { + $("#quantity" + id).val(""); + // 获取对应元素 + var parent = obj.parentNode.parentNode.parentNode; + var children = parent.childNodes[5]; + var codeChildren = parent.childNodes[7]; + var materialItem = children.childNodes[3].childNodes[1].childNodes; + var materialName = materialItem[1]; + var materialId = materialName.parentNode.parentNode.childNodes[3]; + var codeItem = codeChildren.childNodes[3].childNodes[1].childNodes; + var codeValue = codeItem[1]; + materialName.value = ""; + materialId.value = ""; + codeValue.value = ""; + var idNumber = materialId.name.split("mid")[1]; + $("#barCode" + idNumber).empty(); + var barCode = $("#barCode" + idNumber); + if (barCode.length > 0) { + barCode.empty(); + } + }); + } } - } - }); + }); + } } } diff --git a/target/classes/templates/pages/application/application-out_min.html b/target/classes/templates/pages/application/application-out_min.html index 08052e24..3bfa59b6 100644 --- a/target/classes/templates/pages/application/application-out_min.html +++ b/target/classes/templates/pages/application/application-out_min.html @@ -28,7 +28,7 @@
    @@ -80,7 +84,7 @@ var parentId = document.getElementById("parentId").value; table.render({ elem: "#currentTableId", - url: '/company/allCompanyByParent?parentId='+parentId, + url: '/company/allCompanyByParent?parentId=' + parentId, parseData: function (res) { //res 即为原始返回的数据 return { "status": res.status, //解析接口状态 @@ -94,25 +98,27 @@ limitName: 'size' //每页数据量的参数名,默认:limit }, where: { - type:"0" + type: "0" }, response: { statusName: 'status' //规定数据状态的字段名称,默认:code - ,statusCode: 200 //规定成功的状态码,默认:0 - ,msgName: 'message' //规定状态信息的字段名称,默认:msg - ,countName: 'count' //规定数据总数的字段名称,默认:count - ,dataName: 'data' //规定数据列表的字段名称,默认:data + , statusCode: 200 //规定成功的状态码,默认:0 + , msgName: 'message' //规定状态信息的字段名称,默认:msg + , countName: 'count' //规定数据总数的字段名称,默认:count + , dataName: 'data' //规定数据列表的字段名称,默认:data }, toolbar: '#toolbarDemo', defaultToolbar: ['filter', 'exports', 'print'], - cols: [ [ - {type: "checkbox", width: 50}, - {field: 'cid', width: 100, title: '公司', sort: true}, - {field: 'cname', width: 120, title: '公司名称', sort: true}, - {field: 'introduce',width: 200,title: '公司介绍',sort: true}, - {field:'state', title:'状态', minWidth: 80, templet: '#switchTpl'}, - {title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"} - ]], + cols: [ + [ + {type: "checkbox", width: 50}, + {field: 'cid', width: 100, title: '公司', sort: true}, + {field: 'cname', width: 120, title: '公司名称', sort: true}, + {field: 'introduce', width: 200, title: '公司介绍', sort: true}, + {field: 'state', title: '状态', minWidth: 80, templet: '#switchTpl'}, + {title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"} + ] + ], limits: [10, 15, 20, 25, 50], limit: 10, page: true, @@ -121,16 +127,16 @@ // 监听搜索操作 form.on('submit(data-search-btn)', function (data) { - var req={}; - data=data.field; - req.type=1; - if (data.cid!==''){ + var req = {}; + data = data.field; + req.type = 1; + if (data.cid !== '') { req.id = data.cid; } - if(data.state != ''){ + if (data.state != '') { req.state = data.state; } - req.parentId = parentId + req.parentId = parentId; //执行搜索重载 table.reload('currentTableId', { url: '/company/companyByCondition', @@ -159,30 +165,29 @@ $(window).on("resize", function () { layer.full(index); }); - } - else if (obj.event === 'delete') { // 监听删除操作 + } else if (obj.event === 'delete') { // 监听删除操作 var checkStatus = table.checkStatus('currentTableId') , data = checkStatus.data; - var req={}; - req.ids=[]; - for (i=0,len=data.length;i= 300){ + if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 - return; - }else{ + + } else { layer.msg("删除成功", { icon: 6,//成功的表情 time: 500 //1秒关闭(如果不配置,默认是3秒) @@ -216,14 +221,13 @@ maxmin: true, shadeClose: true, area: ['100%', '100%'], - content: '/company_detail?id='+data.cid, + content: '/company_detail?id=' + data.cid, }); $(window).on("resize", function () { layer.full(index); }); return false; - } - else if (obj.event === 'delete') { + } else if (obj.event === 'delete') { var req = {}; req.id = data.cid; layer.confirm('真的删除么', {icon: 2, title: '提示'}, function (index) { @@ -240,7 +244,7 @@ layer.close(this.layerIndex); if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 - return; + } else { obj.del(); layer.msg("删除成功", { @@ -251,8 +255,7 @@ } }) }); - } - else if (obj.event == 'subclass'){ + } else if (obj.event == 'subclass') { var index = layer.open({ title: '子公司', type: 2, @@ -260,34 +263,33 @@ maxmin: true, shadeClose: true, area: ['100%', '100%'], - content: '/findCompanyByParentId?parentId='+data.cid + content: '/findCompanyByParentId?parentId=' + data.cid }); $(window).on("resize", function () { layer.full(index); }); return false; - } - else if (obj.event == 'realDelete') { // 彻底删除 + } else if (obj.event == 'realDelete') { // 彻底删除 var req = {}; req.id = data.cid; layer.confirm('该操作会造成不可逆后果,是否继续?', { - btn: ['继续','取消'] //按钮 - }, function(){ + btn: ['继续', '取消'] //按钮 + }, function () { $.ajax({ url: '/company/realDeleteCompany', - dataType:'json', - type:'POST', + dataType: 'json', + type: 'POST', contentType: "application/json;charset=utf-8", - data:JSON.stringify(req), - beforeSend:function () { - this.layerIndex = layer.load(0, { shade: [0.5, '#393D49'] }); + data: JSON.stringify(req), + beforeSend: function () { + this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']}); }, - success:function(data){ + success: function (data) { layer.close(this.layerIndex); - if(data.status >= 300){ + if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 - return; - }else{ + + } else { obj.del(); layer.msg("删除成功", { icon: 6,//成功的表情 @@ -296,27 +298,27 @@ } } }) - },function (){ + }, function () { // 执行重加载 table.reload('currentTableId', { url: '/materialType/materialTypeRecord', page: { curr: 1 }, - where: {"parentId":parentId} + where: {"parentId": parentId} }); }); } }); //监听状态操作 - form.on('switch(changeState)', function(obj){ - var req = new Map - if(obj.elem.checked){ + form.on('switch(changeState)', function (obj) { + var req = new Map; + if (obj.elem.checked) { req["state"] = 1 } - req["id"] = this.value - var hasMaterial = false + req["id"] = this.value; + var hasMaterial = false; $.ajax({ url: "/company/EditCompanyState", type: 'post', @@ -330,19 +332,19 @@ layer.close(this.layerIndex); if (data.status >= 300) { layer.msg(data.statusInfo.message);//失败的表情 - return; + } else { layer.msg("修改成功", { icon: 6,//成功的表情 time: 500 //1秒关闭(如果不配置,默认是3秒) - },function(){ + }, function () { // 执行表格重加载 table.reload('currentTableId', { url: '/company/companyByCondition', page: { curr: 1 }, - where: {"parentId":parentId} + where: {"parentId": parentId} }); }) } diff --git a/target/classes/templates/pages/company/companyByParentId.html b/target/classes/templates/pages/company/companyByParentId.html index f1ced438..c16a8065 100644 --- a/target/classes/templates/pages/company/companyByParentId.html +++ b/target/classes/templates/pages/company/companyByParentId.html @@ -21,9 +21,12 @@
    - - +
    @@ -48,8 +51,6 @@ - -
    + + - + -
    +
    - - + + diff --git a/target/classes/templates/pages/material/material-out_back.html b/target/classes/templates/pages/material/material-out_back.html index 7a7446a3..b65eca10 100644 --- a/target/classes/templates/pages/material/material-out_back.html +++ b/target/classes/templates/pages/material/material-out_back.html @@ -1,491 +1,495 @@ - - layui - - - - - + + layui + + + + +
    -
    -
    - 搜索信息 -
    -
    -
    +
    +
    + 搜索信息 +
    + +
    -
    - -
    - - - -
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    -
    - -
    - - - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    -
    - -
    -
    + -
    - -
    - - -
    -
    +
    + +
    + + +
    +
    - - + + - + -
    +
    - + - + -
    +
    diff --git a/target/classes/templates/pages/material/material-view.html b/target/classes/templates/pages/material/material-view.html index a4184d30..51bfa076 100644 --- a/target/classes/templates/pages/material/material-view.html +++ b/target/classes/templates/pages/material/material-view.html @@ -63,6 +63,13 @@ class="layui-input"> +
    + +
    + +
    +
    @@ -89,6 +96,22 @@ class="layui-input">
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    @@ -103,6 +126,13 @@
    +
    + +
    + +
    +
    diff --git a/target/classes/templates/pages/materialtype/materialType_view.html b/target/classes/templates/pages/materialtype/materialType_view.html index ddf5295a..2cd54d0a 100644 --- a/target/classes/templates/pages/materialtype/materialType_view.html +++ b/target/classes/templates/pages/materialtype/materialType_view.html @@ -1,570 +1,573 @@ - - layui - - - - - + + layui + + + + +
    -
    -
    - 搜索信息 -
    -
    - -
    -
    - -
    - -
    +
    +
    + 搜索信息 +
    + + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    -
    - -
    - -
    -
    -
    - -
    -
    - -
    -
    + - - + + - + -
    +
    - + -
    +
    diff --git a/target/classes/templates/pages/post/post-out.html b/target/classes/templates/pages/post/post-out.html index fa9983e7..41a260ee 100644 --- a/target/classes/templates/pages/post/post-out.html +++ b/target/classes/templates/pages/post/post-out.html @@ -22,9 +22,11 @@
    - - +
    @@ -49,8 +51,6 @@ - -
    + -
    +
    - + 详情 + 删除 + - - + + - +