Merge remote-tracking branch 'origin/integrationWms' into integrationWms
 
	
	
	
	
	
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  | import com.core.common.DateUtils; | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.zy.asrs.entity.LocDetl; | 
 |  |  | import com.zy.asrs.entity.LocOwner; | 
 |  |  | import com.zy.asrs.entity.Mat; | 
 |  |  | import com.zy.asrs.entity.param.AbnormalLocDetlParam; | 
 |  |  | import com.zy.asrs.entity.result.LocDetlAll; | 
 |  |  | import com.zy.asrs.entity.result.LocDetlDTO; | 
 |  |  | import com.zy.asrs.mapper.LocDetlMapper; | 
 |  |  | import com.zy.asrs.service.LocDetlService; | 
 |  |  | import com.zy.asrs.service.LocOwnerService; | 
 |  |  | import com.zy.asrs.service.MatService; | 
 |  |  | import com.zy.common.web.BaseController; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | 
 |  |  |     private LocDetlMapper locDetlMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private MatService matService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private LocOwnerService locOwnerService; | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locDetl/update") | 
 |  |  |     public R update1() { | 
 |  |  | 
 |  |  |         return R.ok(exportSupport(result, fields)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locDetl/selectOwner/list/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R selectOwnerlist(@RequestParam(defaultValue = "1")Integer curr, | 
 |  |  |                              @RequestParam(defaultValue = "10")Integer limit, | 
 |  |  |                              @RequestParam(required = false)String orderByField, | 
 |  |  |                              @RequestParam(required = false)String orderByType, | 
 |  |  |                              @RequestParam Map<String, Object> param){ | 
 |  |  |         Integer owner = null; | 
 |  |  |         if (param.get("owner$") != null && param.get("owner$") != ""){ | 
 |  |  |             LocOwner locOwner = locOwnerService.selectOne(new EntityWrapper<LocOwner>().like("owner", (String) param.get("owner$"))); | 
 |  |  |             if(locOwner == null){ | 
 |  |  |                 return R.error("参数有误!"); | 
 |  |  |             } | 
 |  |  |             param.remove("owner$"); | 
 |  |  |             owner = locOwner.getId(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         LocDetlDTO locDetlDTO = new LocDetlDTO(); | 
 |  |  |         locDetlDTO.setPageSize(limit); | 
 |  |  |         locDetlDTO.setPageNumber(curr); | 
 |  |  |         String locNo = String.valueOf(param.get("locNo")); | 
 |  |  |         String matnr = String.valueOf(param.get("matnr")); | 
 |  |  |         if (!Cools.isEmpty(locNo) && !locNo.equals("null")) { | 
 |  |  |             locDetlDTO.setLocNo(locNo); | 
 |  |  |         } | 
 |  |  |         if (!Cools.isEmpty(matnr) && !matnr.equals("null")) { | 
 |  |  |             locDetlDTO.setMatnr(matnr); | 
 |  |  |         } | 
 |  |  |         if (!Cools.isEmpty(owner) && !owner.equals("null")) { | 
 |  |  |             locDetlDTO.setOwner(owner); | 
 |  |  |         } | 
 |  |  |         List<LocDetlAll> list = locDetlService.selectAllOwner(locDetlDTO); | 
 |  |  |         int count = locDetlService.selectAllCount(locDetlDTO); | 
 |  |  |         Page<LocDetlAll> page = new Page<>(); | 
 |  |  |         page.setRecords(list); | 
 |  |  |         page.setTotal(count); | 
 |  |  |         if (list.size()==0){ | 
 |  |  |             locDetlDTO.setPageNumber(1); | 
 |  |  |             list = locDetlService.selectAllOwner(locDetlDTO); | 
 |  |  |             count = locDetlService.selectAllCount(locDetlDTO); | 
 |  |  |             page = new Page<>(); | 
 |  |  |             page.setRecords(list); | 
 |  |  |             page.setTotal(count); | 
 |  |  |         } | 
 |  |  |         return R.ok(page); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locDetlQuery/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R query(String condition) { | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.controller; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
 |  |  | import com.baomidou.mybatisplus.mapper.Wrapper; | 
 |  |  | import com.baomidou.mybatisplus.plugins.Page; | 
 |  |  | import com.core.annotations.ManagerAuth; | 
 |  |  | import com.core.common.BaseRes; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.common.DateUtils; | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.zy.asrs.entity.LocOwner; | 
 |  |  | import com.zy.asrs.service.LocOwnerService; | 
 |  |  | import com.zy.common.web.BaseController; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.HashMap; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Map; | 
 |  |  |  | 
 |  |  | @RestController | 
 |  |  | public class LocOwnerController extends BaseController { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private LocOwnerService locOwnerService; | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locOwner/{id}/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R get(@PathVariable("id") String id) { | 
 |  |  |         return R.ok(locOwnerService.selectById(String.valueOf(id))); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locOwner/list/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R list(@RequestParam(defaultValue = "1")Integer curr, | 
 |  |  |                   @RequestParam(defaultValue = "10")Integer limit, | 
 |  |  |                   @RequestParam(required = false)String orderByField, | 
 |  |  |                   @RequestParam(required = false)String orderByType, | 
 |  |  |                   @RequestParam Map<String, Object> param){ | 
 |  |  |         EntityWrapper<LocOwner> wrapper = new EntityWrapper<>(); | 
 |  |  |         excludeTrash(param); | 
 |  |  |         convert(param, wrapper); | 
 |  |  |         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} | 
 |  |  |         return R.ok(locOwnerService.selectPage(new Page<>(curr, limit), wrapper)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/turn/over/take/site") | 
 |  |  |     @ManagerAuth() | 
 |  |  |     public R availableTakeSite(){ | 
 |  |  |         List<Map<String, Object>> result = new ArrayList<>(); | 
 |  |  |         List<LocOwner> locOwners = locOwnerService.selectList(new EntityWrapper<>()); | 
 |  |  |         for (LocOwner owner : locOwners) { | 
 |  |  |             Map<String, Object> map = new HashMap<>(); | 
 |  |  |             map.put("siteId", owner.getId()); | 
 |  |  |             map.put("desc", owner.getOwner()); | 
 |  |  |             result.add(map); | 
 |  |  |         } | 
 |  |  |         return R.ok().add(result); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ | 
 |  |  |         for (Map.Entry<String, Object> entry : map.entrySet()){ | 
 |  |  |             String val = String.valueOf(entry.getValue()); | 
 |  |  |             if (val.contains(RANGE_TIME_LINK)){ | 
 |  |  |                 String[] dates = val.split(RANGE_TIME_LINK); | 
 |  |  |                 wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); | 
 |  |  |                 wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); | 
 |  |  |             } else { | 
 |  |  |                 wrapper.like(entry.getKey(), val); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locOwner/add/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R add(LocOwner locOwner) { | 
 |  |  |         locOwnerService.insert(locOwner); | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locOwner/update/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R update(LocOwner locOwner){ | 
 |  |  |         if (Cools.isEmpty(locOwner) || null==locOwner.getId()){ | 
 |  |  |             return R.error(); | 
 |  |  |         } | 
 |  |  |         locOwnerService.updateById(locOwner); | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locOwner/delete/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R delete(@RequestParam(value="ids[]") Integer[] ids){ | 
 |  |  |         for (Integer id : ids){ | 
 |  |  |             locOwnerService.deleteById(id); | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locOwner/export/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R export(@RequestBody JSONObject param){ | 
 |  |  |         EntityWrapper<LocOwner> wrapper = new EntityWrapper<>(); | 
 |  |  |         List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); | 
 |  |  |         Map<String, Object> map = excludeTrash(param.getJSONObject("locOwner")); | 
 |  |  |         convert(map, wrapper); | 
 |  |  |         List<LocOwner> list = locOwnerService.selectList(wrapper); | 
 |  |  |         return R.ok(exportSupport(list, fields)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locOwnerQuery/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R query(String condition) { | 
 |  |  |         EntityWrapper<LocOwner> wrapper = new EntityWrapper<>(); | 
 |  |  |         wrapper.like("id", condition); | 
 |  |  |         Page<LocOwner> page = locOwnerService.selectPage(new Page<>(0, 10), wrapper); | 
 |  |  |         List<Map<String, Object>> result = new ArrayList<>(); | 
 |  |  |         for (LocOwner locOwner : page.getRecords()){ | 
 |  |  |             Map<String, Object> map = new HashMap<>(); | 
 |  |  |             map.put("id", locOwner.getId()); | 
 |  |  |             map.put("value", locOwner.getId()); | 
 |  |  |             result.add(map); | 
 |  |  |         } | 
 |  |  |         return R.ok(result); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locOwner/check/column/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R query(@RequestBody JSONObject param) { | 
 |  |  |         Wrapper<LocOwner> wrapper = new EntityWrapper<LocOwner>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); | 
 |  |  |         if (null != locOwnerService.selectOne(wrapper)){ | 
 |  |  |             return R.parse(BaseRes.REPEAT).add(getComment(LocOwner.class, String.valueOf(param.get("key")))); | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |         return R.ok().add(result); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/turn/over/out/start") | 
 |  |  |     @ManagerAuth(memo = "客户转换") | 
 |  |  |     public R turnOverOutStart(@RequestBody EmptyPlateOutParam param) { | 
 |  |  |         workService.turnOverOut(param, getUserId()); | 
 |  |  |         return R.ok("客户转换成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/available/take/check/site") | 
 |  |  |     @ManagerAuth() | 
 |  |  |     public R availableTakeCheckSite(){ | 
 
 |  |  | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.common.SpringUtils; | 
 |  |  | import com.zy.asrs.service.LocMastService; | 
 |  |  | import com.zy.asrs.service.LocOwnerService; | 
 |  |  | import com.zy.common.utils.Synchro; | 
 |  |  | import com.zy.system.entity.User; | 
 |  |  | import com.zy.system.service.UserService; | 
 |  |  | 
 |  |  |     @ApiModelProperty(value= "备注") | 
 |  |  |     private String memo; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 拥有者 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "拥有者 1: 杰克   ") | 
 |  |  |     private Integer owner; | 
 |  |  |  | 
 |  |  |     public String getLocNo$(){ | 
 |  |  |         LocMastService service = SpringUtils.getBean(LocMastService.class); | 
 |  |  |         LocMast locMast = service.selectById(this.locNo); | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getOwner$(){ | 
 |  |  |         LocOwnerService service = SpringUtils.getBean(LocOwnerService.class); | 
 |  |  |         LocOwner locOwner = service.selectById(this.owner); | 
 |  |  |         if (!Cools.isEmpty(locOwner)){ | 
 |  |  |             return String.valueOf(locOwner.getOwner()); | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |     public String getBeBatch$(){ | 
 |  |  |         if (null == this.beBatch){ return null; } | 
 |  |  |         switch (this.beBatch){ | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.entity; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableId; | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableName; | 
 |  |  | import com.baomidou.mybatisplus.enums.IdType; | 
 |  |  | import io.swagger.annotations.ApiModelProperty; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.io.Serializable; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | @TableName("bas_loc_owner") | 
 |  |  | public class LocOwner implements Serializable { | 
 |  |  |  | 
 |  |  |     private static final long serialVersionUID = 1L; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @TableId(value = "id", type = IdType.AUTO) | 
 |  |  |     private Integer id; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     private String owner; | 
 |  |  |  | 
 |  |  |     public LocOwner() {} | 
 |  |  |  | 
 |  |  |     public LocOwner(String owner) { | 
 |  |  |         this.owner = owner; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import com.baomidou.mybatisplus.enums.IdType; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.common.SpringUtils; | 
 |  |  | import com.zy.asrs.service.LocOwnerService; | 
 |  |  | import com.zy.asrs.service.NodeService; | 
 |  |  | import com.zy.system.entity.Host; | 
 |  |  | import com.zy.system.entity.User; | 
 |  |  | 
 |  |  |     @ApiModelProperty(value= "备注") | 
 |  |  |     private String memo; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 拥有者 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "拥有者 1: 杰克   ") | 
 |  |  |     private Integer owner; | 
 |  |  |  | 
 |  |  |     public ManLocDetl() {} | 
 |  |  |  | 
 |  |  |     public ManLocDetl(Long hostId, String locNo,Long nodeId,String zpallet,Double anfme,String matnr,String maktx,String name,String specs,String model,String batch,String unit,String barcode,Long docId,String docNum,String custName,Integer itemNum,Integer count,Double weight,Integer status,Long createBy,Date createTime,Long updateBy,Date modiTime,String memo) { | 
 |  |  | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getOwner$(){ | 
 |  |  |         LocOwnerService service = SpringUtils.getBean(LocOwnerService.class); | 
 |  |  |         LocOwner locOwner = service.selectById(this.owner); | 
 |  |  |         if (!Cools.isEmpty(locOwner)){ | 
 |  |  |             return String.valueOf(locOwner.getOwner()); | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public Long getNodeId() { | 
 |  |  |         return nodeId; | 
 |  |  |     } | 
 
 |  |  | 
 |  |  |     // 商品id | 
 |  |  |     private Integer matId; | 
 |  |  |  | 
 |  |  |     // 客户 | 
 |  |  |     private String owner; | 
 |  |  |  | 
 |  |  |     // 客户id | 
 |  |  |     private Integer ownerId; | 
 |  |  |  | 
 |  |  |     //货物形态 | 
 |  |  |     private Integer payment; | 
 |  |  |  | 
 |  |  |     // 库位号集合 | 
 |  |  |     private List<String> locNos; | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Data | 
 |  |  |     public static class LocDetl { | 
 |  |  |  | 
 |  |  |         // 库位号 | 
 |  |  |         private String loc_no; | 
 |  |  |  | 
 |  |  |         // 商品id | 
 |  |  |         private Integer matId; | 
 |  |  | 
 |  |  |         // 翻包 | 
 |  |  |         private String memo; | 
 |  |  |  | 
 |  |  |         // 翻包 | 
 |  |  |         private String manu; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public Integer getOutSite() { | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.entity.result; | 
 |  |  |  | 
 |  |  | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.common.SpringUtils; | 
 |  |  | import com.zy.asrs.entity.LocOwner; | 
 |  |  | import com.zy.asrs.service.LocOwnerService; | 
 |  |  | import com.zy.common.utils.Synchro; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.util.Date; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | @ExcelIgnoreUnannotated | 
 |  |  | public class LocDetlAll { | 
 |  |  |     private String loc_no; | 
 |  |  |     private String zpallet; | 
 |  |  |     private String matnr; | 
 |  |  |     private String maktx; | 
 |  |  |     private String specs; | 
 |  |  |     private Double anfme; | 
 |  |  |     private String batch; | 
 |  |  |     private Double weight; | 
 |  |  |  | 
 |  |  |     private String order_no; | 
 |  |  |     private Integer owner; | 
 |  |  |     private Integer payment; | 
 |  |  |     private Date modi_time; | 
 |  |  |     private Date appe_time; | 
 |  |  |     private String meno; | 
 |  |  |     private String manu; | 
 |  |  |  | 
 |  |  |     public String getOwner$(){ | 
 |  |  |         LocOwnerService service = SpringUtils.getBean(LocOwnerService.class); | 
 |  |  |         LocOwner locOwner = service.selectById(this.owner); | 
 |  |  |         if (!Cools.isEmpty(locOwner)){ | 
 |  |  |             return String.valueOf(locOwner.getOwner()); | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getPayment$(){ | 
 |  |  |         if (null == this.payment){ return null; } | 
 |  |  |         switch (this.payment){ | 
 |  |  |             case 1: | 
 |  |  |                 return "仓储"; | 
 |  |  |             case 0: | 
 |  |  |                 return "代采"; | 
 |  |  |             default: | 
 |  |  |                 return String.valueOf(this.payment); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void sync(Object source) { | 
 |  |  |         Synchro.Copy(source, this); | 
 |  |  |     } | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.entity.result; | 
 |  |  |  | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | public class LocDetlDTO { | 
 |  |  |  | 
 |  |  |     private int pageNumber; | 
 |  |  |     private int pageSize; | 
 |  |  |     private Integer row; | 
 |  |  |     private String locNo; | 
 |  |  |     private String matnr; | 
 |  |  |     private Integer owner; | 
 |  |  |     private Integer payment; | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.mapper.BaseMapper; | 
 |  |  | import com.zy.asrs.entity.LocDetl; | 
 |  |  | import com.zy.asrs.entity.result.LocDetlAll; | 
 |  |  | import com.zy.asrs.entity.result.LocDetlDTO; | 
 |  |  | import com.zy.asrs.entity.result.StockVo; | 
 |  |  | import org.apache.ibatis.annotations.Mapper; | 
 |  |  | import org.apache.ibatis.annotations.Param; | 
 |  |  | 
 |  |  | @Repository | 
 |  |  | public interface LocDetlMapper extends BaseMapper<LocDetl> { | 
 |  |  |  | 
 |  |  |     List<LocDetlAll> selectAllOwner(LocDetlDTO locDetlDTO); | 
 |  |  |  | 
 |  |  |     int selectAllCount(LocDetlDTO locDetlDTO); | 
 |  |  |  | 
 |  |  |     List<LocDetl> listByPage(Map<String, Object> map); | 
 |  |  |  | 
 |  |  |     Integer listByPageCount(Map<String, Object> map); | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.mapper; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.mapper.BaseMapper; | 
 |  |  | import com.zy.asrs.entity.LocOwner; | 
 |  |  | import org.apache.ibatis.annotations.Mapper; | 
 |  |  | import org.springframework.stereotype.Repository; | 
 |  |  |  | 
 |  |  | @Mapper | 
 |  |  | @Repository | 
 |  |  | public interface LocOwnerMapper extends BaseMapper<LocOwner> { | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import com.baomidou.mybatisplus.plugins.Page; | 
 |  |  | import com.baomidou.mybatisplus.service.IService; | 
 |  |  | import com.zy.asrs.entity.LocDetl; | 
 |  |  | import com.zy.asrs.entity.result.LocDetlAll; | 
 |  |  | import com.zy.asrs.entity.result.LocDetlDTO; | 
 |  |  | import com.zy.asrs.entity.result.StockVo; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | 
 |  |  |  | 
 |  |  |     Page<LocDetl> getPage(Page<LocDetl> page); | 
 |  |  |  | 
 |  |  |     List<LocDetlAll> selectAllOwner(LocDetlDTO locDetlDTO); | 
 |  |  |  | 
 |  |  |     int selectAllCount(LocDetlDTO locDetlDTO); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     LocDetl selectItem(String locNo, String matnr, String batch); | 
 |  |  |  | 
 |  |  |     Page<LocDetl> getStockOut(Page<LocDetl> page); | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.service; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.service.IService; | 
 |  |  | import com.zy.asrs.entity.LocOwner; | 
 |  |  |  | 
 |  |  | public interface LocOwnerService extends IService<LocOwner> { | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     void startupFullTakeStore(StockOutParam param, Long userId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 客户转换 | 
 |  |  |      */ | 
 |  |  |     void turnOverOut(EmptyPlateOutParam param, Long userId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 出库作业 | 
 |  |  |      * @param staNo 目标站点 | 
 |  |  |      * @param locDetls 待出库物料 | 
 
 |  |  | 
 |  |  | import com.baomidou.mybatisplus.plugins.Page; | 
 |  |  | import com.baomidou.mybatisplus.service.impl.ServiceImpl; | 
 |  |  | import com.zy.asrs.entity.LocDetl; | 
 |  |  | import com.zy.asrs.entity.result.LocDetlAll; | 
 |  |  | import com.zy.asrs.entity.result.LocDetlDTO; | 
 |  |  | import com.zy.asrs.entity.result.StockVo; | 
 |  |  | import com.zy.asrs.mapper.LocDetlMapper; | 
 |  |  | import com.zy.asrs.service.LocDetlService; | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public int selectAllCount(LocDetlDTO locDetlDTO) { | 
 |  |  |         return this.baseMapper.selectAllCount(locDetlDTO); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<LocDetlAll> selectAllOwner(LocDetlDTO locDetlDTO) { | 
 |  |  |         return this.baseMapper.selectAllOwner(locDetlDTO); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Page<LocDetl> getStockOut(Page<LocDetl> page) { | 
 |  |  |         page.setRecords(baseMapper.getStockOutPage(page.getCondition())); | 
 |  |  |         page.setTotal(baseMapper.getStockOutPageCount(page.getCondition())); | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.service.impl; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.service.impl.ServiceImpl; | 
 |  |  | import com.zy.asrs.entity.LocOwner; | 
 |  |  | import com.zy.asrs.mapper.LocOwnerMapper; | 
 |  |  | import com.zy.asrs.service.LocOwnerService; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  |  | 
 |  |  | @Service("locOwnerService") | 
 |  |  | public class LocOwnerServiceImpl extends ServiceImpl<LocOwnerMapper, LocOwner> implements LocOwnerService { | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private WaitPakinService waitPakinService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private LocOwnerService locOwnerService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private ManLocDetlService manLocDetlService; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public String startupFullPutStore(FullStoreParam param, Long userId) { | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public void turnOverOut(EmptyPlateOutParam param, Long userId) { | 
 |  |  |         try { | 
 |  |  |             if (Cools.isEmpty(param.getOwnerId())) { | 
 |  |  |                 throw new CoolException("客户名称不能为空"); | 
 |  |  |             }else if (param.getLocDetls().size()<=0){ | 
 |  |  |                 throw new CoolException("请提取明细"); | 
 |  |  |             } | 
 |  |  |             ArrayList<String> locNos = new ArrayList<>(); | 
 |  |  |             String[][] locNos2 =new String[param.getLocDetls().size()][4]; | 
 |  |  |             int i=0; | 
 |  |  |             for (EmptyPlateOutParam.LocDetl locDetl : param.getLocDetls()){ | 
 |  |  |                 if (!locNos.contains(locDetl.getLoc_no())){ | 
 |  |  |                     locNos.add(locDetl.getLoc_no()); | 
 |  |  |                     locNos2[i][0]=locDetl.getLoc_no(); | 
 |  |  |                     locNos2[i][1]=locDetl.getManu(); | 
 |  |  |                     locNos2[i][2] = locDetl.getMatnr(); | 
 |  |  |                     locNos2[i][3] = locDetl.getBatch(); | 
 |  |  |                     i++; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             LocOwner locOwner = locOwnerService.selectById(param.getOwnerId()); | 
 |  |  |             param.setOwner(locOwner.getOwner()); | 
 |  |  |             String lgort = ""; | 
 |  |  |             String owner=""; | 
 |  |  |             List<DetlDto> detlDtos = new ArrayList<>(); | 
 |  |  |             for (String[] locNo1 : locNos2) { | 
 |  |  |                 String locNo = locNo1[0]; | 
 |  |  |                 if (locNo1[1].equals("平库")){ | 
 |  |  |                     List<ManLocDetl> manLocDetls = new ArrayList<>(); | 
 |  |  |                     if (locNo1[3] == null){ | 
 |  |  |                         manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2])); | 
 |  |  |                     }else { | 
 |  |  |                         manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]).eq("batch",locNo1[3])); | 
 |  |  |                     } | 
 |  |  |                     for (ManLocDetl manLocDetl:manLocDetls){ | 
 |  |  |                         if (Cools.isEmpty(owner)) { | 
 |  |  |                             owner = manLocDetl.getOwner$(); | 
 |  |  |                         } | 
 |  |  |                         detlDtos.add(new DetlDto(manLocDetl.getMatnr(), manLocDetl.getBatch(), manLocDetl.getAnfme())); | 
 |  |  |                         manLocDetl.setOwner(param.getOwnerId()); | 
 |  |  |                         try{ | 
 |  |  |                             manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",manLocDetl.getMatnr())); | 
 |  |  |                         }catch (Exception e){ | 
 |  |  |                             throw new Exception("更新库存明细拥有者字段信息出错了"); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 }else if (locNo1[1].equals("立库")){ | 
 |  |  |                     List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]).eq("batch",locNo1[3])); | 
 |  |  |                     for (LocDetl locDetl:locDetls){ | 
 |  |  |                         if (Cools.isEmpty(lgort)) { | 
 |  |  |                             lgort = locDetl.getOrigin(); | 
 |  |  |                         } | 
 |  |  |                         if (Cools.isEmpty(owner)) { | 
 |  |  |                             owner = locDetl.getOwner$(); | 
 |  |  |                         } | 
 |  |  |                         detlDtos.add(new DetlDto(locDetl.getMatnr(), locDetl.getBatch(), locDetl.getAnfme())); | 
 |  |  |                         locDetl.setOwner(param.getOwnerId()); | 
 |  |  |                         try{ | 
 |  |  |                             locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr",locDetl.getMatnr())); | 
 |  |  |                         }catch (Exception e){ | 
 |  |  |                             throw new Exception("更新库存明细拥有者字段信息出错了"); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 }else { | 
 |  |  |                     throw new Exception("更新库位拥有者字段信息出错了"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             throw new CoolException("移交作业出错了:"+e); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 合并同类项 | 
 
 |  |  | 
 |  |  |         </choose> | 
 |  |  |     </sql> | 
 |  |  |  | 
 |  |  |     <sql id="selectAllSql"> | 
 |  |  |         <if test="locNo!=null and locNo!='' "> | 
 |  |  |             and t.loc_no like '%' + #{locNo} + '%' | 
 |  |  |         </if> | 
 |  |  |         <if test="matnr != null and matnr !='' "> | 
 |  |  |             and t.matnr like '%' + #{matnr} + '%' | 
 |  |  |         </if> | 
 |  |  |         <if test="owner != null"> | 
 |  |  |             and t.owner =  #{owner} | 
 |  |  |         </if> | 
 |  |  |         <if test="payment != null"> | 
 |  |  |             and t.payment = #{payment} | 
 |  |  |         </if> | 
 |  |  |  | 
 |  |  |     </sql> | 
 |  |  |  | 
 |  |  |     <select id="selectAllCount" resultType="java.lang.Integer" parameterType="com.zy.asrs.entity.result.LocDetlDTO"> | 
 |  |  |         SELECT count(*) FROM ( | 
 |  |  |         SELECT ROW_NUMBER() over(order by matnr) as row,* FROM ( | 
 |  |  |         SELECT * FROM asr_loc_detl_all | 
 |  |  |         ) t | 
 |  |  |         WHERE 1=1 | 
 |  |  |         <include refid="selectAllSql"></include> | 
 |  |  |         ) a | 
 |  |  |  | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="selectAllOwner" resultType="com.zy.asrs.entity.result.LocDetlAll" parameterType="com.zy.asrs.entity.result.LocDetlDTO"> | 
 |  |  |         SELECT * FROM ( | 
 |  |  |         SELECT ROW_NUMBER() over(order by matnr) as row,* FROM ( | 
 |  |  |         SELECT * FROM asr_loc_detl_all | 
 |  |  |         ) t | 
 |  |  |         WHERE 1=1 | 
 |  |  |         <include refid="selectAllSql"></include> | 
 |  |  |         ) a | 
 |  |  |         WHERE a.row BETWEEN ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="selectItem" resultMap="BaseResultMap"> | 
 |  |  |         select top 1 * | 
 |  |  |         from asr_loc_detl | 
 
| New file | 
 |  |  | 
 |  |  | <?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.zy.asrs.mapper.LocOwnerMapper"> | 
 |  |  | </mapper> | 
 
| New file | 
 |  |  | 
 |  |  | var pageCurr; | 
 |  |  | layui.config({ | 
 |  |  |     base: baseUrl + "/static/layui/lay/modules/" | 
 |  |  | }).use(['table','laydate', 'form', 'admin'], function(){ | 
 |  |  |     var table = layui.table; | 
 |  |  |     var $ = layui.jquery; | 
 |  |  |     var layer = layui.layer; | 
 |  |  |     var layDate = layui.laydate; | 
 |  |  |     var form = layui.form; | 
 |  |  |     var admin = layui.admin; | 
 |  |  |  | 
 |  |  |     // 数据渲染 | 
 |  |  |     tableIns = table.render({ | 
 |  |  |         elem: '#locOwner', | 
 |  |  |         headers: {token: localStorage.getItem('token')}, | 
 |  |  |         url: baseUrl+'/locOwner/list/auth', | 
 |  |  |         page: true, | 
 |  |  |         limit: 15, | 
 |  |  |         limits: [15, 30, 50, 100, 200, 500], | 
 |  |  |         toolbar: '#toolbar', | 
 |  |  |         cellMinWidth: 50, | 
 |  |  |         height: 'full-120', | 
 |  |  |         cols: [[ | 
 |  |  |             // {type: 'checkbox'} | 
 |  |  |             {field: 'owner', align: 'center',title: '客户名称'} | 
 |  |  |             ,{field: 'id', align: 'center',title: '客户编码'} | 
 |  |  |             ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120} | 
 |  |  |         ]], | 
 |  |  |         request: { | 
 |  |  |             pageName: 'curr', | 
 |  |  |             pageSize: 'limit' | 
 |  |  |         }, | 
 |  |  |         parseData: function (res) { | 
 |  |  |             return { | 
 |  |  |                 'code': res.code, | 
 |  |  |                 'msg': res.msg, | 
 |  |  |                 'count': res.data.total, | 
 |  |  |                 'data': res.data.records | 
 |  |  |             } | 
 |  |  |         }, | 
 |  |  |         response: { | 
 |  |  |             statusCode: 200 | 
 |  |  |         }, | 
 |  |  |         done: function(res, curr, count) { | 
 |  |  |             if (res.code === 403) { | 
 |  |  |                 top.location.href = baseUrl+"/"; | 
 |  |  |             } | 
 |  |  |             pageCurr=curr; | 
 |  |  |             limit(); | 
 |  |  |         } | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 监听排序事件 | 
 |  |  |     table.on('sort(locOwner)', function (obj) { | 
 |  |  |         var searchData = {}; | 
 |  |  |         $.each($('#search-box [name]').serializeArray(), function() { | 
 |  |  |             searchData[this.name] = this.value; | 
 |  |  |         }); | 
 |  |  |         searchData['orderByField'] = obj.field; | 
 |  |  |         searchData['orderByType'] = obj.type; | 
 |  |  |         tableIns.reload({ | 
 |  |  |             where: searchData, | 
 |  |  |             page: {curr: 1} | 
 |  |  |         }); | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 监听头工具栏事件 | 
 |  |  |     table.on('toolbar(locOwner)', function (obj) { | 
 |  |  |         var checkStatus = table.checkStatus(obj.config.id).data; | 
 |  |  |         switch(obj.event) { | 
 |  |  |             case 'addData': | 
 |  |  |                 showEditModel(); | 
 |  |  |                 break; | 
 |  |  |             case 'deleteData': | 
 |  |  |                if (checkStatus.length === 0) { | 
 |  |  |                    layer.msg('请选择要删除的数据', {icon: 2}); | 
 |  |  |                    return; | 
 |  |  |                } | 
 |  |  |                del(checkStatus.map(function (d) { | 
 |  |  |                    return d.id; | 
 |  |  |                })); | 
 |  |  |                break; | 
 |  |  |             case 'exportData': | 
 |  |  |                 admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){ | 
 |  |  |                     var titles=[]; | 
 |  |  |                     var fields=[]; | 
 |  |  |                     obj.config.cols[0].map(function (col) { | 
 |  |  |                         if (col.type === 'normal' && col.hide === false && col.toolbar == null) { | 
 |  |  |                             titles.push(col.title); | 
 |  |  |                             fields.push(col.field); | 
 |  |  |                         } | 
 |  |  |                     }); | 
 |  |  |                     var exportData = {}; | 
 |  |  |                     $.each($('#search-box [name]').serializeArray(), function() { | 
 |  |  |                         exportData[this.name] = this.value; | 
 |  |  |                     }); | 
 |  |  |                     var param = { | 
 |  |  |                         'locOwner': exportData, | 
 |  |  |                         'fields': fields | 
 |  |  |                     }; | 
 |  |  |                     $.ajax({ | 
 |  |  |                         url: baseUrl+"/locOwner/export/auth", | 
 |  |  |                         headers: {'token': localStorage.getItem('token')}, | 
 |  |  |                         data: JSON.stringify(param), | 
 |  |  |                         dataType:'json', | 
 |  |  |                         contentType:'application/json;charset=UTF-8', | 
 |  |  |                         method: 'POST', | 
 |  |  |                         success: function (res) { | 
 |  |  |                             layer.closeAll(); | 
 |  |  |                             if (res.code === 200) { | 
 |  |  |                                 table.exportFile(titles,res.data,'xls'); | 
 |  |  |                             } else if (res.code === 403) { | 
 |  |  |                                 top.location.href = baseUrl+"/"; | 
 |  |  |                             } else { | 
 |  |  |                                 layer.msg(res.msg, {icon: 2}) | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     }); | 
 |  |  |                 }); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 监听行工具事件 | 
 |  |  |     table.on('tool(locOwner)', function(obj){ | 
 |  |  |         var data = obj.data; | 
 |  |  |         switch (obj.event) { | 
 |  |  |             case 'edit': | 
 |  |  |                 showEditModel(data); | 
 |  |  |                 break; | 
 |  |  |             case "del": | 
 |  |  |                 del([data.id]); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     /* 弹窗 - 新增、修改 */ | 
 |  |  |     function showEditModel(mData) { | 
 |  |  |         admin.open({ | 
 |  |  |             type: 1, | 
 |  |  |             area: '600px', | 
 |  |  |             title: (mData ? '修改' : '添加') + '订单状态', | 
 |  |  |             content: $('#editDialog').html(), | 
 |  |  |             success: function (layero, dIndex) { | 
 |  |  |                 layDateRender(mData); | 
 |  |  |                 form.val('detail', mData); | 
 |  |  |                 form.on('submit(editSubmit)', function (data) { | 
 |  |  |                     var loadIndex = layer.load(2); | 
 |  |  |                     $.ajax({ | 
 |  |  |                         url: baseUrl+"/locOwner/"+(mData?'update':'add')+"/auth", | 
 |  |  |                         headers: {'token': localStorage.getItem('token')}, | 
 |  |  |                         data: data.field, | 
 |  |  |                         method: 'POST', | 
 |  |  |                         success: function (res) { | 
 |  |  |                             layer.close(loadIndex); | 
 |  |  |                             if (res.code === 200){ | 
 |  |  |                                 layer.close(dIndex); | 
 |  |  |                                 layer.msg(res.msg, {icon: 1}); | 
 |  |  |                                 tableReload(); | 
 |  |  |                             } else if (res.code === 403){ | 
 |  |  |                                 top.location.href = baseUrl+"/"; | 
 |  |  |                             }else { | 
 |  |  |                                 layer.msg(res.msg, {icon: 2}); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     }) | 
 |  |  |                     return false; | 
 |  |  |                 }); | 
 |  |  |                 $(layero).children('.layui-layer-content').css('overflow', 'visible'); | 
 |  |  |                 layui.form.render('select'); | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /* 删除 */ | 
 |  |  |     function del(ids) { | 
 |  |  |         layer.confirm('确定要删除选中数据吗?', { | 
 |  |  |             skin: 'layui-layer-admin', | 
 |  |  |             shade: .1 | 
 |  |  |         }, function (i) { | 
 |  |  |             layer.close(i); | 
 |  |  |             var loadIndex = layer.load(2); | 
 |  |  |             $.ajax({ | 
 |  |  |                 url: baseUrl+"/locOwner/delete/auth", | 
 |  |  |                 headers: {'token': localStorage.getItem('token')}, | 
 |  |  |                 data: {ids: ids}, | 
 |  |  |                 method: 'POST', | 
 |  |  |                 success: function (res) { | 
 |  |  |                     layer.close(loadIndex); | 
 |  |  |                     if (res.code === 200){ | 
 |  |  |                         layer.msg(res.msg, {icon: 1}); | 
 |  |  |                         tableReload(); | 
 |  |  |                     } else if (res.code === 403){ | 
 |  |  |                         top.location.href = baseUrl+"/"; | 
 |  |  |                     } else { | 
 |  |  |                         layer.msg(res.msg, {icon: 2}); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             }) | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 搜索 | 
 |  |  |     form.on('submit(search)', function (data) { | 
 |  |  |         pageCurr = 1; | 
 |  |  |         tableReload(false); | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 重置 | 
 |  |  |     form.on('submit(reset)', function (data) { | 
 |  |  |         pageCurr = 1; | 
 |  |  |         clearFormVal($('#search-box')); | 
 |  |  |         tableReload(false); | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 时间选择器 | 
 |  |  |     function layDateRender(data) { | 
 |  |  |         setTimeout(function () { | 
 |  |  |  | 
 |  |  |         }, 300); | 
 |  |  |     } | 
 |  |  |     layDateRender(); | 
 |  |  |  | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | // 关闭动作 | 
 |  |  | $(document).on('click','#data-detail-close', function () { | 
 |  |  |     parent.layer.closeAll(); | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | function tableReload(child) { | 
 |  |  |     var searchData = {}; | 
 |  |  |     $.each($('#search-box [name]').serializeArray(), function() { | 
 |  |  |         searchData[this.name] = this.value; | 
 |  |  |     }); | 
 |  |  |     tableIns.reload({ | 
 |  |  |         where: searchData, | 
 |  |  |         page: {curr: pageCurr} | 
 |  |  |      }); | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | var locDetlLayerIdx; | 
 |  |  | var locDetlData = []; | 
 |  |  | function getCol() { | 
 |  |  |     var cols = [ | 
 |  |  |         {field: 'anfme', align: 'center',title: '库存数量'} | 
 |  |  |         ,{field: 'locNo$', align: 'center',title: '库位号'} | 
 |  |  |     ]; | 
 |  |  |     arrRemove(detlCols,  'field', 'anfme'); | 
 |  |  |     cols.push.apply(cols, detlCols); | 
 |  |  |     cols.push({fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 80}) | 
 |  |  |     return cols; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | layui.config({ | 
 |  |  |     base: baseUrl + "/static/layui/lay/modules/" | 
 |  |  | }).use(['table','laydate', 'form', 'admin', 'tableMerge'], function() { | 
 |  |  |     var table = layui.table; | 
 |  |  |     var $ = layui.jquery; | 
 |  |  |     var layer = layui.layer; | 
 |  |  |     var form = layui.form; | 
 |  |  |     var admin = layui.admin; | 
 |  |  |     var tableMerge = layui.tableMerge; | 
 |  |  |  | 
 |  |  |     tableIns = table.render({ | 
 |  |  |         elem: '#chooseData', | 
 |  |  |         headers: {token: localStorage.getItem('token')}, | 
 |  |  |         data: [], | 
 |  |  |         even: true, | 
 |  |  |         toolbar: '#toolbar', | 
 |  |  |         cellMinWidth: 50, | 
 |  |  |         limit: 500, | 
 |  |  |         cols: [[ | 
 |  |  |             ,{field: 'matnr', align: 'center',title: '商品编号', sort:true} | 
 |  |  |             ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} | 
 |  |  |             ,{field: 'loc_no', align: 'center',title: '库位号', sort:true} | 
 |  |  |             ,{field: 'orderNo', align: 'center',title: '单据编号', hide: true} | 
 |  |  |             ,{field: 'batch', align: 'center',title: '批号', sort:true} | 
 |  |  |             ,{field: 'anfme', align: 'center',title: '数量',hide: true} | 
 |  |  |             ,{field: 'zpallet', align: 'center',title: '托盘条码',hide: false} | 
 |  |  |             ,{field: 'specs', align: 'center',title: '规格',hide: true} | 
 |  |  |             ,{field: 'weight', align: 'center',title: '重量', hide: false} | 
 |  |  |             ,{field: 'owner$', align: 'center',title: '货主', hide: false} | 
 |  |  |             ,{field: 'payment$', align: 'center',title: '货物形态', hide: false} | 
 |  |  |         ]], | 
 |  |  |         done: function(res, curr, count) { | 
 |  |  |             tableMerge.render(this); | 
 |  |  |             limit(); | 
 |  |  |             getOutBound(); | 
 |  |  |         } | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 监听头工具栏事件 | 
 |  |  |     table.on('toolbar(chooseData)', function (obj) { | 
 |  |  |         switch (obj.event) { | 
 |  |  |             case 'outbound': | 
 |  |  |                 if (locDetlData.length === 0){ | 
 |  |  |                     layer.msg('请先提取商品库存', {icon: 2}); | 
 |  |  |                 } else { | 
 |  |  |                     var staNo = $("#staNoSelect").val(); | 
 |  |  |                     if (staNo === "" || staNo === null){ | 
 |  |  |                         layer.msg("请选择目标货主", {icon: 2}); | 
 |  |  |                         return; | 
 |  |  |                     } | 
 |  |  |                     let param = { | 
 |  |  |                         ownerId: staNo, | 
 |  |  |                         locDetls: locDetlData | 
 |  |  |                     } | 
 |  |  |                     $.ajax({ | 
 |  |  |                         url: baseUrl+"/turn/over/out/start", | 
 |  |  |                         headers: {'token': localStorage.getItem('token')}, | 
 |  |  |                         data: JSON.stringify(param), | 
 |  |  |                         contentType:'application/json;charset=UTF-8', | 
 |  |  |                         method: 'POST', | 
 |  |  |                         success: function (res) { | 
 |  |  |                             if (res.code === 200){ | 
 |  |  |                                 locDetlData = []; | 
 |  |  |                                 tableIns.reload({data: locDetlData,done:function (res) {limit();getOutBound();}}); | 
 |  |  |                                 layer.msg(res.msg, {icon: 1}); | 
 |  |  |                             } else if (res.code === 403){ | 
 |  |  |                                 top.location.href = baseUrl+"/"; | 
 |  |  |                             } else { | 
 |  |  |                                 layer.msg(res.msg, {icon: 2}) | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     }); | 
 |  |  |                 } | 
 |  |  |                 break; | 
 |  |  |             case 'outboundPayment': | 
 |  |  |                 if (locDetlData.length === 0){ | 
 |  |  |                     layer.msg('请先提取商品库存', {icon: 2}); | 
 |  |  |                 } else { | 
 |  |  |                     // var staNo = $("#staNoSelect").val(); | 
 |  |  |                     // if (staNo === "" || staNo === null){ | 
 |  |  |                     //     layer.msg("请选择目标货主", {icon: 2}); | 
 |  |  |                     //     return; | 
 |  |  |                     // } | 
 |  |  |                     let param = { | 
 |  |  |                         locDetls: locDetlData | 
 |  |  |                     } | 
 |  |  |                     $.ajax({ | 
 |  |  |                         url: baseUrl+"/turn/over/out/payment/start", | 
 |  |  |                         headers: {'token': localStorage.getItem('token')}, | 
 |  |  |                         data: JSON.stringify(param), | 
 |  |  |                         contentType:'application/json;charset=UTF-8', | 
 |  |  |                         method: 'POST', | 
 |  |  |                         success: function (res) { | 
 |  |  |                             if (res.code === 200){ | 
 |  |  |                                 locDetlData = []; | 
 |  |  |                                 tableIns.reload({data: locDetlData,done:function (res) {limit();getOutBound();}}); | 
 |  |  |                                 layer.msg(res.msg, {icon: 1}); | 
 |  |  |                             } else if (res.code === 403){ | 
 |  |  |                                 top.location.href = baseUrl+"/"; | 
 |  |  |                             } else { | 
 |  |  |                                 layer.msg(res.msg, {icon: 2}) | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     }); | 
 |  |  |                 } | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 监听行工具事件 | 
 |  |  |     table.on('tool(chooseData)', function(obj){ | 
 |  |  |         switch (obj.event) { | 
 |  |  |             case 'remove': | 
 |  |  |                 let index = obj.tr.attr("data-index"); | 
 |  |  |                 locDetlData.splice(index, 1); | 
 |  |  |                 tableIns.reload({data: locDetlData}); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 获取拥有者表数据 | 
 |  |  |     function getOutBound(){ | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl+"/turn/over/take/site", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             async: false, | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200){ | 
 |  |  |                     var tpl = $("#takeSiteSelectTemplate").html(); | 
 |  |  |                     var template = Handlebars.compile(tpl); | 
 |  |  |                     var html = template(res); | 
 |  |  |                     $('#staNoSelect').append(html); | 
 |  |  |                     form.render('select'); | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 }else { | 
 |  |  |                     layer.msg(res.msg) | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }) | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     $(document).on('click','#mat-query', function () { | 
 |  |  |         let loadIndex = layer.msg('请求中...', {icon: 16, shade: 0.01, time: false}); | 
 |  |  |         locDetlLayerIdx = layer.open({ | 
 |  |  |             type: 2, | 
 |  |  |             title: false, | 
 |  |  |             closeBtn: false, | 
 |  |  |             maxmin: false, | 
 |  |  |             area: ['90%', '85%'], | 
 |  |  |             shadeClose: true, | 
 |  |  |             content: 'turnOverOwner.html', | 
 |  |  |             success: function(layero, index){ | 
 |  |  |                 layer.close(loadIndex); | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     }) | 
 |  |  |  | 
 |  |  | }) | 
 |  |  |  | 
 |  |  | // 添加表格数据 | 
 |  |  | function addTableData(data) { | 
 |  |  |     for (var i=0;i<data.length;i++){ | 
 |  |  |         let pass = false; | 
 |  |  |         for (var j=0;j<locDetlData.length;j++){ | 
 |  |  |             if (data[i].matnr === locDetlData[j].matnr && data[i].batch === locDetlData[j].batch && data[i].locNo$ === locDetlData[j].locNo$) { | 
 |  |  |                 pass = true; | 
 |  |  |                 break; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (pass) { | 
 |  |  |             data.splice(i--, 1); | 
 |  |  |         } else { | 
 |  |  |             data[i]["count"] = data[i]["anfme"]; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     locDetlData.push.apply(locDetlData, data); | 
 |  |  |     tableIns.reload({data: locDetlData}); | 
 |  |  |     layer.close(locDetlLayerIdx); | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | <!DOCTYPE html> | 
 |  |  | <html lang="en"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="utf-8"> | 
 |  |  |     <title></title> | 
 |  |  |     <meta name="renderer" content="webkit"> | 
 |  |  |     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
 |  |  |     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> | 
 |  |  |     <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/cool.css" media="all"> | 
 |  |  | </head> | 
 |  |  | <body> | 
 |  |  |  | 
 |  |  | <div class="layui-fluid"> | 
 |  |  |     <div class="layui-card"> | 
 |  |  |         <div class="layui-card-body"> | 
 |  |  |             <div class="layui-form toolbar" id="search-box"> | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <div class="layui-inline"> | 
 |  |  |                         <label class="layui-form-label">客户编号:</label> | 
 |  |  |                         <div class="layui-input-inline"> | 
 |  |  |                             <input class="layui-input" type="text" name="id" placeholder="客户编号" autocomplete="off"> | 
 |  |  |                         </div> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="layui-inline">  | 
 |  |  |                         <button class="layui-btn icon-btn" lay-filter="search" lay-submit> | 
 |  |  |                             <i class="layui-icon"></i>搜索 | 
 |  |  |                         </button> | 
 |  |  |                         <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> | 
 |  |  |                             <i class="layui-icon"></i>重置 | 
 |  |  |                         </button> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <table class="layui-hide" id="locOwner" lay-filter="locOwner"></table> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  | </div> | 
 |  |  |  | 
 |  |  | <script type="text/html" id="toolbar"> | 
 |  |  |     <div class="layui-btn-container"> | 
 |  |  |         <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button> | 
 |  |  | <!--        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>--> | 
 |  |  |         <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button> | 
 |  |  |     </div> | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <script type="text/html" id="operate"> | 
 |  |  |     <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a> | 
 |  |  |     {{# if (d.id != 1) { }} | 
 |  |  |     <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a> | 
 |  |  |     {{# } }} | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> | 
 |  |  | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/locOwner/locOwner.js" charset="utf-8"></script> | 
 |  |  | </body> | 
 |  |  | <!-- 表单弹窗 --> | 
 |  |  | <script type="text/html" id="editDialog"> | 
 |  |  |     <form id="detail" lay-filter="detail" class="layui-form admin-form model-form"> | 
 |  |  |         <input name="id" type="hidden"> | 
 |  |  |         <div class="layui-row"> | 
 |  |  |             <div class="layui-col-md12"> | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label layui-form-required">客户名称: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="owner" placeholder="客户名称" lay-vertype="tips" lay-verify="required"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |  | 
 |  |  |              </div> | 
 |  |  |         </div> | 
 |  |  |         <hr class="layui-bg-gray"> | 
 |  |  |         <div class="layui-form-item text-right"> | 
 |  |  |             <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button> | 
 |  |  |             <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> | 
 |  |  |         </div> | 
 |  |  |     </form> | 
 |  |  | </script> | 
 |  |  | </html> | 
 |  |  |  | 
 
| New file | 
 |  |  | 
 |  |  | <!DOCTYPE html> | 
 |  |  | <html lang="en"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="utf-8"> | 
 |  |  |     <title></title> | 
 |  |  |     <meta name="renderer" content="webkit"> | 
 |  |  |     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
 |  |  |     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> | 
 |  |  |     <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/cool.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/common.css" media="all"> | 
 |  |  |     <style> | 
 |  |  |         html { | 
 |  |  |             height: 100%; | 
 |  |  |             padding: 10px; | 
 |  |  |             background-color: #f1f1f1; | 
 |  |  |             box-sizing: border-box; | 
 |  |  |         } | 
 |  |  |         body { | 
 |  |  |             background-color: #fff; | 
 |  |  |             border-radius: 5px; | 
 |  |  |             box-shadow: 0 0 3px rgba(0,0,0,.3); | 
 |  |  |             padding-bottom: 20px; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         #staNoSpan { | 
 |  |  |             text-align: center; | 
 |  |  |             display: inline-block; | 
 |  |  |             width: 100px; | 
 |  |  |             font-size: 13px; | 
 |  |  |         } | 
 |  |  |         .layui-btn-container .layui-form-select { | 
 |  |  |             display: inline-block; | 
 |  |  |             width: 150px; | 
 |  |  |             height: 30px; | 
 |  |  |         } | 
 |  |  |         .layui-btn-container .layui-form-select.layui-form-selected { | 
 |  |  |             display: inline-block; | 
 |  |  |             width: 150px; | 
 |  |  |         } | 
 |  |  |         .layui-btn-container .layui-select-title input { | 
 |  |  |             font-size: 13px; | 
 |  |  |         } | 
 |  |  |         .layui-btn-container .layui-anim.layui-anim-upbit dd { | 
 |  |  |             font-size: 13px; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         #btn-outbound { | 
 |  |  |             margin-left: 60px; | 
 |  |  |             /*display: none;*/ | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         /*----------------------------------*/ | 
 |  |  |         .function-area { | 
 |  |  |             padding: 20px 50px; | 
 |  |  |         } | 
 |  |  |         .function-btn { | 
 |  |  |             font-size: 16px; | 
 |  |  |             padding: 1px 2px; | 
 |  |  |             width: 100px; | 
 |  |  |             height: 50px; | 
 |  |  |             border-color: #2b425b; | 
 |  |  |             border-radius: 4px; | 
 |  |  |             border-width: 2px; | 
 |  |  |             background: none; | 
 |  |  |             border-style: solid; | 
 |  |  |             transition: 0.4s; | 
 |  |  |             cursor: pointer; | 
 |  |  |             letter-spacing: 1.5px; | 
 |  |  |         } | 
 |  |  |         .function-btn:hover { | 
 |  |  |             background-color: #2b425b; | 
 |  |  |             color: #fff; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         #mat-query { | 
 |  |  |             /*display: none;*/ | 
 |  |  |         } | 
 |  |  |     </style> | 
 |  |  | </head> | 
 |  |  | <body> | 
 |  |  |  | 
 |  |  | <!-- 功能区 --> | 
 |  |  | <div class="function-area"> | 
 |  |  |     <button id="mat-query" class="function-btn">提取库存</button> | 
 |  |  | </div> | 
 |  |  |  | 
 |  |  | <hr> | 
 |  |  |  | 
 |  |  | <!-- 表格 --> | 
 |  |  | <div style="padding-bottom: 5px; margin-bottom: 45px"> | 
 |  |  |  | 
 |  |  |     <!-- 头部 --> | 
 |  |  |     <script type="text/html" id="toolbar"> | 
 |  |  |         <div class="layui-form"> | 
 |  |  |             <div class="layui-btn-container"> | 
 |  |  |                 <!-- 1.选择客户 --> | 
 |  |  |                 <span id="staNoSpan">货主:</span> | 
 |  |  |                 <select id="staNoSelect" lay-verify="required"> | 
 |  |  |                     <option value="">请选择目标货主</option> | 
 |  |  |                 </select> | 
 |  |  |                 <!-- 2.启动出库 --> | 
 |  |  |                 <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="outbound">开始转换</button> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |     </script> | 
 |  |  |  | 
 |  |  |     <!-- 行 --> | 
 |  |  |     <script type="text/html" id="operate"> | 
 |  |  |         <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="remove">移除</a> | 
 |  |  |     </script> | 
 |  |  |  | 
 |  |  |     <table class="layui-table" id="chooseData" lay-filter="chooseData"></table> | 
 |  |  | </div> | 
 |  |  |  | 
 |  |  | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> | 
 |  |  | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/pakStore/turnOver.js" charset="utf-8"></script> | 
 |  |  |  | 
 |  |  | <script type="text/template" id="takeSiteSelectTemplate"> | 
 |  |  |     {{#each data}} | 
 |  |  |     <option value="{{siteId}}">{{desc}}</option> | 
 |  |  |     {{/each}} | 
 |  |  | </script> | 
 |  |  | </body> | 
 |  |  | </html> | 
 |  |  |  | 
 
| New file | 
 |  |  | 
 |  |  | <!DOCTYPE html> | 
 |  |  | <html lang="en"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="utf-8"> | 
 |  |  |     <title></title> | 
 |  |  |     <meta name="renderer" content="webkit"> | 
 |  |  |     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
 |  |  |     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> | 
 |  |  |     <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/cool.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/common.css" media="all"> | 
 |  |  |     <style> | 
 |  |  |         body { | 
 |  |  |         } | 
 |  |  |         .layui-table-box { | 
 |  |  |             border-right: 1px solid #9F9F9F; | 
 |  |  |             border-left: 1px solid #9F9F9F; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         #search-box { | 
 |  |  |             padding: 30px 0 20px 0; | 
 |  |  |         } | 
 |  |  |         #search-box .layui-inline:first-child { | 
 |  |  |             margin-left: 30px; | 
 |  |  |         } | 
 |  |  |         #search-box .layui-inline { | 
 |  |  |             margin-right: 5px; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         #data-search-btn { | 
 |  |  |             margin-left: 10px; | 
 |  |  |             display: inline-block; | 
 |  |  |         } | 
 |  |  |         #data-search-btn.layui-btn-container .layui-btn { | 
 |  |  |             margin-right: 20px; | 
 |  |  |         } | 
 |  |  |     </style> | 
 |  |  | </head> | 
 |  |  | <body> | 
 |  |  | <div style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;"> | 
 |  |  |     <span style="font-size: large; font-weight: bold">提取库存商品</span> | 
 |  |  | </div> | 
 |  |  | <!-- 搜索栏 --> | 
 |  |  | <fieldset class="layui-elem-field site-demo-button" style="margin: 20px;"> | 
 |  |  |     <legend>搜索栏</legend> | 
 |  |  |     <!-- 搜索栏 --> | 
 |  |  |     <div id="search-box" class="layui-form layui-card-header"> | 
 |  |  |         <div class="layui-inline"> | 
 |  |  |             <div class="layui-input-inline"> | 
 |  |  |                 <input class="layui-input" type="text" name="loc_no" placeholder="库位号" autocomplete="off"> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <div class="layui-inline"> | 
 |  |  |             <div class="layui-input-inline"> | 
 |  |  |                 <input class="layui-input" type="text" name="matnr" placeholder="商品编号"  autocomplete="off"> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <div class="layui-inline"> | 
 |  |  |             <div class="layui-input-inline"> | 
 |  |  |                 <input class="layui-input" type="text" name="owner$" placeholder="货主" autocomplete="off"> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <!-- 待添加 --> | 
 |  |  |         <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block"> | 
 |  |  |             <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  | </fieldset> | 
 |  |  |  | 
 |  |  | <script type="text/html" id="toolbar"> | 
 |  |  |     <div class="layui-btn-container"> | 
 |  |  |         <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="">提取</button> | 
 |  |  |     </div> | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <div class="layui-form"> | 
 |  |  |     <table class="layui-hide" id="stockOut" lay-filter="stockOut"></table> | 
 |  |  | </div> | 
 |  |  |  | 
 |  |  | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> | 
 |  |  | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> | 
 |  |  |  | 
 |  |  | </body> | 
 |  |  | <script> | 
 |  |  |  | 
 |  |  |     function getCol() { | 
 |  |  |         var cols = [ | 
 |  |  |             {type: 'checkbox',width: 50} | 
 |  |  |             ,{field: 'locNo$', align: 'center',title: '库位号'} | 
 |  |  |         ]; | 
 |  |  |         cols.push.apply(cols, detlCols); | 
 |  |  |         cols.push({field: 'modiUser$', align: 'center',title: '修改人员', hide: true} | 
 |  |  |             ,{field: 'modiTime$', align: 'center',title: '修改时间'} | 
 |  |  |             ) | 
 |  |  |         return cols; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     layui.config({ | 
 |  |  |         base: baseUrl + "/static/layui/lay/modules/" | 
 |  |  |     }).use(['table','laydate', 'form', 'admin', 'admin', 'tableMerge'], function() { | 
 |  |  |         var table = layui.table; | 
 |  |  |         var $ = layui.jquery; | 
 |  |  |         var layer = layui.layer; | 
 |  |  |         var layDate = layui.laydate; | 
 |  |  |         var form = layui.form; | 
 |  |  |         var admin = layui.admin; | 
 |  |  |         var tableMerge = layui.tableMerge; | 
 |  |  |  | 
 |  |  |         // 数据渲染 | 
 |  |  |         locDetlTableIns = table.render({ | 
 |  |  |             elem: '#stockOut', | 
 |  |  |             headers: {token: localStorage.getItem('token')}, | 
 |  |  |             url: baseUrl+'/locDetl/selectOwner/list/auth', | 
 |  |  |             page: true, | 
 |  |  |             limits: [16, 30, 50, 100, 200, 500], | 
 |  |  |             limit: 16, | 
 |  |  |             even: true, | 
 |  |  |             toolbar: '#toolbar', | 
 |  |  |             cellMinWidth: 50, | 
 |  |  |             cols: [[ | 
 |  |  |                 {type: 'checkbox',width: 50} | 
 |  |  |                 ,{field: 'matnr', align: 'center',title: '商品编号', sort:true} | 
 |  |  |                 ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} | 
 |  |  |                 ,{field: 'loc_no', align: 'center',title: '库位号', sort:true} | 
 |  |  |                 ,{field: 'orderNo', align: 'center',title: '单据编号', hide: true} | 
 |  |  |                 ,{field: 'batch', align: 'center',title: '批号', sort:true} | 
 |  |  |                 ,{field: 'anfme', align: 'center',title: '数量',hide: true} | 
 |  |  |                 ,{field: 'zpallet', align: 'center',title: '托盘条码',hide: false} | 
 |  |  |                 ,{field: 'specs', align: 'center',title: '规格',hide: true} | 
 |  |  |                 ,{field: 'weight', align: 'center',title: '重量', hide: false} | 
 |  |  |                 ,{field: 'owner$', align: 'center',title: '货主', hide: false} | 
 |  |  |                 ,{field: 'payment$', align: 'center',title: '货物形态', hide: false} | 
 |  |  |             ] | 
 |  |  |  | 
 |  |  |             ], | 
 |  |  |             request: { | 
 |  |  |                 pageName: 'curr', | 
 |  |  |                 pageSize: 'limit' | 
 |  |  |             }, | 
 |  |  |             parseData: function (res) { | 
 |  |  |                 return { | 
 |  |  |                     'code': res.code, | 
 |  |  |                     'msg': res.msg, | 
 |  |  |                     'count': res.data.total, | 
 |  |  |                     'data': res.data.records | 
 |  |  |                 } | 
 |  |  |             }, | 
 |  |  |             response: { | 
 |  |  |                 statusCode: 200 | 
 |  |  |             }, | 
 |  |  |             done: function(res, curr, count) { | 
 |  |  |                 tableMerge.render(this); | 
 |  |  |                 if (res.code === 403) { | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 监听头工具栏事件 | 
 |  |  |         table.on('toolbar(stockOut)', function (obj) { | 
 |  |  |             var checkStatus = table.checkStatus(obj.config.id); | 
 |  |  |             var data = checkStatus.data; | 
 |  |  |             switch(obj.event) { | 
 |  |  |                 case 'confirm': | 
 |  |  |                     if (data.length === 0){ | 
 |  |  |                         layer.msg("请选择数据"); | 
 |  |  |                         return; | 
 |  |  |                     } | 
 |  |  |                     parent.addTableData(data); | 
 |  |  |                     break; | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 搜索栏搜索事件 | 
 |  |  |         form.on('submit(search)', function (data) { | 
 |  |  |             tableReload(); | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         layDate.render({ | 
 |  |  |             elem: '.layui-laydate-range' | 
 |  |  |             ,type: 'datetime' | 
 |  |  |             ,range: true | 
 |  |  |         }); | 
 |  |  |     }) | 
 |  |  |  | 
 |  |  |     function tableReload() { | 
 |  |  |         var searchData = {}; | 
 |  |  |         $.each($('#search-box [name]').serializeArray(), function() { | 
 |  |  |             searchData[this.name] = this.value; | 
 |  |  |         }); | 
 |  |  |         locDetlTableIns.reload({ | 
 |  |  |             where: searchData, | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  | </script> | 
 |  |  | </html> | 
 |  |  |  | 
 
| New file | 
 |  |  | 
 |  |  | <!DOCTYPE html> | 
 |  |  | <html lang="en"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="utf-8"> | 
 |  |  |     <title></title> | 
 |  |  |     <meta name="renderer" content="webkit"> | 
 |  |  |     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
 |  |  |     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> | 
 |  |  |     <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/cool.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/css/common.css" media="all"> | 
 |  |  |     <style> | 
 |  |  |         body { | 
 |  |  |         } | 
 |  |  |         .layui-table-box { | 
 |  |  |             border-right: 1px solid #9F9F9F; | 
 |  |  |             border-left: 1px solid #9F9F9F; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         #search-box { | 
 |  |  |             padding: 30px 0 20px 0; | 
 |  |  |         } | 
 |  |  |         #search-box .layui-inline:first-child { | 
 |  |  |             margin-left: 30px; | 
 |  |  |         } | 
 |  |  |         #search-box .layui-inline { | 
 |  |  |             margin-right: 5px; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         #data-search-btn { | 
 |  |  |             margin-left: 10px; | 
 |  |  |             display: inline-block; | 
 |  |  |         } | 
 |  |  |         #data-search-btn.layui-btn-container .layui-btn { | 
 |  |  |             margin-right: 20px; | 
 |  |  |         } | 
 |  |  |     </style> | 
 |  |  | </head> | 
 |  |  | <body> | 
 |  |  | <div style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;"> | 
 |  |  |     <span style="font-size: large; font-weight: bold">提取库存商品</span> | 
 |  |  | </div> | 
 |  |  | <!-- 搜索栏 --> | 
 |  |  | <fieldset class="layui-elem-field site-demo-button" style="margin: 20px;"> | 
 |  |  |     <legend>搜索栏</legend> | 
 |  |  |     <!-- 搜索栏 --> | 
 |  |  |     <div id="search-box" class="layui-form layui-card-header"> | 
 |  |  |         <div class="layui-inline"> | 
 |  |  |             <div class="layui-input-inline"> | 
 |  |  |                 <input class="layui-input" type="text" name="loc_no" placeholder="库位号" autocomplete="off"> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <div class="layui-inline"> | 
 |  |  |             <div class="layui-input-inline"> | 
 |  |  |                 <input class="layui-input" type="text" name="matnr" placeholder="商品编号"  autocomplete="off"> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |  | 
 |  |  |         <div class="layui-inline"> | 
 |  |  |             <div class="layui-input-inline"> | 
 |  |  |                 <input class="layui-input" type="text" name="owner$" placeholder="货主" autocomplete="off"> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <div class="layui-inline"> | 
 |  |  |             <div class="layui-input-inline"> | 
 |  |  |                 <input class="layui-input" type="text" name="payment$" placeholder="货物形态" autocomplete="off"> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <!-- 待添加 --> | 
 |  |  |         <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block"> | 
 |  |  |             <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  | </fieldset> | 
 |  |  |  | 
 |  |  | <script type="text/html" id="toolbar"> | 
 |  |  |     <div class="layui-btn-container"> | 
 |  |  |         <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="">提取</button> | 
 |  |  |     </div> | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <div class="layui-form"> | 
 |  |  |     <table class="layui-hide" id="stockOut" lay-filter="stockOut"></table> | 
 |  |  | </div> | 
 |  |  |  | 
 |  |  | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> | 
 |  |  | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> | 
 |  |  |  | 
 |  |  | </body> | 
 |  |  | <script> | 
 |  |  |  | 
 |  |  |     function getCol() { | 
 |  |  |         var cols = [ | 
 |  |  |             {type: 'checkbox',width: 50} | 
 |  |  |             ,{field: 'loc_no', align: 'center',title: '库位号'} | 
 |  |  |         ]; | 
 |  |  |         cols.push.apply(cols, detlCols); | 
 |  |  |         cols.push({field: 'modiUser$', align: 'center',title: '修改人员', hide: true} | 
 |  |  |             ,{field: 'modiTime$', align: 'center',title: '修改时间'} | 
 |  |  |             ) | 
 |  |  |         return cols; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     layui.config({ | 
 |  |  |         base: baseUrl + "/static/layui/lay/modules/" | 
 |  |  |     }).use(['table','laydate', 'form', 'admin', 'admin', 'tableMerge'], function() { | 
 |  |  |         var table = layui.table; | 
 |  |  |         var $ = layui.jquery; | 
 |  |  |         var layer = layui.layer; | 
 |  |  |         var layDate = layui.laydate; | 
 |  |  |         var form = layui.form; | 
 |  |  |         var admin = layui.admin; | 
 |  |  |         var tableMerge = layui.tableMerge; | 
 |  |  |  | 
 |  |  |         // 数据渲染 | 
 |  |  |         locDetlTableIns = table.render({ | 
 |  |  |             elem: '#stockOut', | 
 |  |  |             headers: {token: localStorage.getItem('token')}, | 
 |  |  |             url: baseUrl+'/locDetl/selectPayment/list/auth', | 
 |  |  |             page: true, | 
 |  |  |             limits: [16, 30, 50, 100, 200, 500], | 
 |  |  |             limit: 16, | 
 |  |  |             even: true, | 
 |  |  |             toolbar: '#toolbar', | 
 |  |  |             cellMinWidth: 50, | 
 |  |  |             cols: [getCol()], | 
 |  |  |             request: { | 
 |  |  |                 pageName: 'curr', | 
 |  |  |                 pageSize: 'limit' | 
 |  |  |             }, | 
 |  |  |             parseData: function (res) { | 
 |  |  |                 return { | 
 |  |  |                     'code': res.code, | 
 |  |  |                     'msg': res.msg, | 
 |  |  |                     'count': res.data.total, | 
 |  |  |                     'data': res.data.records | 
 |  |  |                 } | 
 |  |  |             }, | 
 |  |  |             response: { | 
 |  |  |                 statusCode: 200 | 
 |  |  |             }, | 
 |  |  |             done: function(res, curr, count) { | 
 |  |  |                 tableMerge.render(this); | 
 |  |  |                 if (res.code === 403) { | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 监听头工具栏事件 | 
 |  |  |         table.on('toolbar(stockOut)', function (obj) { | 
 |  |  |             var checkStatus = table.checkStatus(obj.config.id); | 
 |  |  |             var data = checkStatus.data; | 
 |  |  |             switch(obj.event) { | 
 |  |  |                 case 'confirm': | 
 |  |  |                     if (data.length === 0){ | 
 |  |  |                         layer.msg("请选择数据"); | 
 |  |  |                         return; | 
 |  |  |                     } | 
 |  |  |                     parent.addTableData(data); | 
 |  |  |                     break; | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 搜索栏搜索事件 | 
 |  |  |         form.on('submit(search)', function (data) { | 
 |  |  |             tableReload(); | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         layDate.render({ | 
 |  |  |             elem: '.layui-laydate-range' | 
 |  |  |             ,type: 'datetime' | 
 |  |  |             ,range: true | 
 |  |  |         }); | 
 |  |  |     }) | 
 |  |  |  | 
 |  |  |     function tableReload() { | 
 |  |  |         var searchData = {}; | 
 |  |  |         $.each($('#search-box [name]').serializeArray(), function() { | 
 |  |  |             searchData[this.name] = this.value; | 
 |  |  |         }); | 
 |  |  |         locDetlTableIns.reload({ | 
 |  |  |             where: searchData, | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  | </script> | 
 |  |  | </html> | 
 |  |  |  |