仓库:
	显示在库信息,入库完成后显示成功入库的包数
	订单出库页面显示剩余待检包数 (PDA)
	未查询到的提示改为显示物料实际状态
	拣货单已完成,单据未完成 ✔
	单据数量字段显示变更 ✔
	拣货单按实际操作时间降序排序 ✔
	拣货单明细导出 ✔
	拣货单显示创建时间与操作时间 ✔
销售:
	解冻   ✔
	包号搜索前置  ✔
	显示多批号  ✔
|  |  |  | 
|---|
|  |  |  | response.getOutputStream().close(); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo,brand); | 
|---|
|  |  |  | if ((Cools.isEmpty(pla))){ | 
|---|
|  |  |  | return R.error("该包物料未录入,无法查询到相关信息"); | 
|---|
|  |  |  | return R.error("该包物料未录入,无法查询到相关信息").add(pla); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!(Cools.eq(pla.getStatus(), GlobleParameter.PLA_STATUS_0) || Cools.eq(pla.getStatus(), GlobleParameter.PLA_STATUS_00)) && type != 2){ | 
|---|
|  |  |  | return R.error("该包物料不为待入库状态,无法进行入库操作"); | 
|---|
|  |  |  | return R.error("该包物料的状态为" + pla.getStatus() +",无法进行入库操作").add(pla); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(pla); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new CoolException("该包物料未录入,无法查询到相关信息"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_1) && !Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_3)){ | 
|---|
|  |  |  | throw new CoolException("该包物料状态不为入库状态,无法转移"); | 
|---|
|  |  |  | throw new CoolException("该包物料的状态为" + pla.getStatus() +",无法进行入库操作"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String sourceLocNo = pla.getLocNo(); | 
|---|
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.controller; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.excel.EasyExcel; | 
|---|
|  |  |  | import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.Wrapper; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | import com.core.common.DateUtils; | 
|---|
|  |  |  | import com.core.common.R; | 
|---|
|  |  |  | import com.zy.asrs.entity.ManLocDetl; | 
|---|
|  |  |  | import com.zy.asrs.entity.Order; | 
|---|
|  |  |  | import com.zy.asrs.entity.OrderDetl; | 
|---|
|  |  |  | import com.zy.asrs.entity.Pakout; | 
|---|
|  |  |  | import com.zy.asrs.entity.*; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.OrderDomainParam; | 
|---|
|  |  |  | import com.zy.asrs.service.ManLocDetlService; | 
|---|
|  |  |  | import com.zy.asrs.service.OrderDetlService; | 
|---|
|  |  |  | import com.zy.asrs.service.OrderService; | 
|---|
|  |  |  | import com.zy.asrs.service.PakoutService; | 
|---|
|  |  |  | import com.zy.asrs.entity.result.PakoutVo; | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.zy.common.web.BaseController; | 
|---|
|  |  |  | import com.zy.system.entity.User; | 
|---|
|  |  |  | import org.springframework.beans.BeanUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponse; | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.net.URLEncoder; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | 
|---|
|  |  |  | private OrderDetlService orderDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ManLocDetlService manLocDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private PlaService plaService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/pakout/{id}/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | 
|---|
|  |  |  | if (user.getRoleId() != 2 || user.getRoleId() != 24) { | 
|---|
|  |  |  | wrapper.eq("create_by", user.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} | 
|---|
|  |  |  | return R.ok(pakoutService.selectPage(new Page<>(curr, limit), wrapper)); | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/pakout/printExport/auth") | 
|---|
|  |  |  | //   @ManagerAuth(memo = "盘点单导出") | 
|---|
|  |  |  | public void export(HttpServletResponse response, @RequestParam String orderNo) throws IOException { | 
|---|
|  |  |  | //从数据库查询数据 | 
|---|
|  |  |  | EntityWrapper<Pakout> locCheckEntityWrapper = new EntityWrapper<>(); | 
|---|
|  |  |  | locCheckEntityWrapper.eq("doc_num",orderNo); | 
|---|
|  |  |  | List<Pakout> list = pakoutService.selectList(locCheckEntityWrapper); | 
|---|
|  |  |  | List<PakoutVo> pakoutVos=new ArrayList<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (Pakout pakout: list) { | 
|---|
|  |  |  | PakoutVo pakoutVo = new PakoutVo(); | 
|---|
|  |  |  | Pla pla = plaService.selectOne(new EntityWrapper<Pla>() | 
|---|
|  |  |  | .eq("batch", pakout.getBatch()) | 
|---|
|  |  |  | .eq("package_no", pakout.getBarcode()) | 
|---|
|  |  |  | .eq("brand", pakout.getMaktx())); | 
|---|
|  |  |  | BeanUtils.copyProperties(pla,pakoutVo); | 
|---|
|  |  |  | BeanUtils.copyProperties(pakout,pakoutVo); | 
|---|
|  |  |  | pakoutVos.add(pakoutVo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | response.setContentType("application/vnd.ms-excel"); | 
|---|
|  |  |  | response.setCharacterEncoding("utf-8"); | 
|---|
|  |  |  | String fileName = URLEncoder.encode("拣货单", "UTF-8"); | 
|---|
|  |  |  | response.setHeader("Content-disposition", "attachment;filename=" + fileName+ orderNo + ".xlsx"); | 
|---|
|  |  |  | EasyExcel.write(response.getOutputStream(), PakoutVo.class) | 
|---|
|  |  |  | .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) | 
|---|
|  |  |  | .sheet("表1") | 
|---|
|  |  |  | .doWrite(pakoutVos); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.alibaba.excel.EasyExcel; | 
|---|
|  |  |  | import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; | 
|---|
|  |  |  | 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.Cools; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.core.exception.CoolException; | 
|---|
|  |  |  | import com.zy.asrs.entity.*; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.GlobleParameter; | 
|---|
|  |  |  | import com.zy.asrs.entity.result.KeyValueVo; | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.zy.asrs.utils.PlaExcelListener; | 
|---|
|  |  |  | import com.zy.asrs.utils.SaasUtils; | 
|---|
|  |  |  | 
|---|
|  |  |  | wrapper.ne("status", "全部出库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!Cools.isEmpty(param.get("batch")) && param.get("batch").toString().contains(",")){ | 
|---|
|  |  |  | String[] batchs = param.get("batch").toString().split(","); | 
|---|
|  |  |  | wrapper.in("batch",batchs); | 
|---|
|  |  |  | param.remove("batch"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | convert(param, wrapper); | 
|---|
|  |  |  | wrapper.orderBy("batch",true).orderBy("package_no" ,true); | 
|---|
|  |  |  | 
|---|
|  |  |  | for (Pla pla : plas){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(pla.getStockFreeze() == 0){ | 
|---|
|  |  |  | throw new CoolException("库存已被冻结,请重新选择库存"); | 
|---|
|  |  |  | //                throw new CoolException("库存已被冻结,请重新选择库存"); | 
|---|
|  |  |  | System.out.println(pla.getStockFreezeBy() + "," + getUser().getUsername()); | 
|---|
|  |  |  | if(!Cools.eq(pla.getStockFreezeBy(),getUser().getUsername())){ | 
|---|
|  |  |  | throw new CoolException("该库存已被其他用户冻结,请重新选择"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | allOrderWeight += pla.getOrderWeight(); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (Pla pla : plas){ | 
|---|
|  |  |  | if (pla.getStockFreeze() == 0){ | 
|---|
|  |  |  | throw new CoolException("库存已被冻结!"); | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | //                throw new CoolException("库存已被冻结!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | pla.setStockFreeze(0); | 
|---|
|  |  |  | pla.setStockFreezeBy(getUser().getUsername()); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (Pla pla : plas){ | 
|---|
|  |  |  | if (pla.getStockFreeze() == 1){ | 
|---|
|  |  |  | throw new CoolException("库位未冻结,无需解冻"); | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | //                throw new CoolException("库位未冻结,无需解冻"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!Cools.eq(pla.getStockFreezeBy(),getUser().getUsername())){ | 
|---|
|  |  |  | throw new CoolException("无法解冻其他用户冻结的库位"); | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.ok().add(res); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /*************************************** xm-select ***********************************************/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // xm-select 搜索批号 | 
|---|
|  |  |  | @RequestMapping("/pla/batch/all/get/kv") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R getMatDataKV(@RequestParam(required = false) String condition) { | 
|---|
|  |  |  | Wrapper<Pla> wrapper = new EntityWrapper<Pla>().setSqlSelect("batch") | 
|---|
|  |  |  | .andNew().like("batch", condition) | 
|---|
|  |  |  | .groupBy("batch"); | 
|---|
|  |  |  | List<Pla> plas = plaService.selectPage(new Page<Pla>(1, 30), wrapper).getRecords(); | 
|---|
|  |  |  | List<KeyValueVo> valueVos = new ArrayList<>(); | 
|---|
|  |  |  | for (Pla pla : plas) { | 
|---|
|  |  |  | KeyValueVo vo = new KeyValueVo(); | 
|---|
|  |  |  | vo.setName(pla.getBatch()); | 
|---|
|  |  |  | vo.setValue(pla.getBatch()); | 
|---|
|  |  |  | valueVos.add(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok().add(valueVos); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 
|---|
|  |  |  | public class PakOutDTO { | 
|---|
|  |  |  | private String doc_num; | 
|---|
|  |  |  | private Date create_time; | 
|---|
|  |  |  | private Date update_time; | 
|---|
|  |  |  | private Integer status; | 
|---|
|  |  |  | private String custName; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.create_time); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public String getUpdateTime$(){ | 
|---|
|  |  |  | if (Cools.isEmpty(this.update_time)){ | 
|---|
|  |  |  | return ""; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.create_time); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public String getStatus$(){ | 
|---|
|  |  |  | if (null == this.status){ return null; } | 
|---|
|  |  |  | switch (this.status){ | 
|---|
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.entity.result; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.excel.annotation.ExcelProperty; | 
|---|
|  |  |  | import com.zy.asrs.entity.Pla; | 
|---|
|  |  |  | import lombok.Data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Created by vincent on 2021/3/22 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | public class PakoutVo { | 
|---|
|  |  |  | public class PakoutVo extends Pla { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final long serialVersionUID = 1L; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ExcelProperty({"单据", "单据编号"}) | 
|---|
|  |  |  | private String docNum; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ExcelProperty({"单据", "库位"}) | 
|---|
|  |  |  | private String locNo; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String matnr; | 
|---|
|  |  |  | @ExcelProperty({"单据", "批号"}) | 
|---|
|  |  |  | private String batch; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ExcelProperty({"单据", "包号"}) | 
|---|
|  |  |  | private String barcode; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ExcelProperty({"单据", "牌号"}) | 
|---|
|  |  |  | private String maktx; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ExcelProperty({"单据", "重量"}) | 
|---|
|  |  |  | private Double anfme; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String zpallet; | 
|---|
|  |  |  | @ExcelProperty({"单据", "拣货重量"}) | 
|---|
|  |  |  | private String count; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ExcelProperty({"单据", "状态"}) | 
|---|
|  |  |  | private String status$; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ExcelProperty({"单据", "备注"}) | 
|---|
|  |  |  | private String memo; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ExcelProperty({"单据", "发货时间"}) | 
|---|
|  |  |  | private String specs; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | manPakOut.setCount(manPakOut.getCount() + anfme); | 
|---|
|  |  |  | if (manPakOut.getAnfme().equals(manPakOut.getCount())){ | 
|---|
|  |  |  | manPakOut.setStatus(1); | 
|---|
|  |  |  | manPakOut.setUpdateTime(new Date()); | 
|---|
|  |  |  | manPakOutService.updateById(manPakOut); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | manPakOut.setMaktx(plaNew.getBrand()); | 
|---|
|  |  |  | manPakOut.setBatch(plaNew.getBatch()); | 
|---|
|  |  |  | manPakOut.setBarcode(plaNew.getPackageNo() + ""); | 
|---|
|  |  |  | manPakOut.setUpdateTime(new Date()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | manPakOutService.updateById(manPakOut); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | //                throw new CoolException("保存商品信息失败,商品编码:" + excel.getMatnr()); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | total++; | 
|---|
|  |  |  | }else if(Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_0) || Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_1) || Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_00)){ | 
|---|
|  |  |  | }else if(Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_0) || Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_00)){ | 
|---|
|  |  |  | excel.setId(pla.getId()); | 
|---|
|  |  |  | excel.setCreateTime(pla.getCreateTime()); | 
|---|
|  |  |  | excel.setStatus(pla.getStatus()); | 
|---|
|  |  |  | excel.setPakinTime(pla.getPakinTime()); | 
|---|
|  |  |  | excel.setStash(pla.getStash()); | 
|---|
|  |  |  | excel.setStockFreeze(pla.getStockFreeze()); | 
|---|
|  |  |  | if(Cools.isEmpty(excel.getLocNo())){ | 
|---|
|  |  |  | excel.setLocNo(pla.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | pla.setStep(2); | 
|---|
|  |  |  | pla.setModifyTime(new Date()); | 
|---|
|  |  |  | pla.setStatus(GlobleParameter.PLA_STATUS_00); | 
|---|
|  |  |  | pla.setStockFreeze(1); | 
|---|
|  |  |  | pla.setStockFreeze(Cools.isEmpty(excel.getStockFreeze()) ? 1 : excel.getStockFreeze()); | 
|---|
|  |  |  | pla.setWeightAnfme(pla.getWeight()); | 
|---|
|  |  |  | Mat mat = matService.selectByMaktx(pla.getBrand()); | 
|---|
|  |  |  | if(Cools.isEmpty(mat)){ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <select id="selectPakOut" resultType="com.zy.asrs.entity.param.PakOutDTO"> | 
|---|
|  |  |  | select * from ( | 
|---|
|  |  |  | SELECT status, doc_num,MAX(create_time) as create_time, cust_name as custName FROM man_pakout | 
|---|
|  |  |  | SELECT status, doc_num,MAX(create_time) as create_time,MAX(update_time) as update_time, cust_name as custName FROM man_pakout | 
|---|
|  |  |  | where 1=1 | 
|---|
|  |  |  | <include refid="selectPakOutSql"></include> | 
|---|
|  |  |  | GROUP BY doc_num,cust_name,status | 
|---|
|  |  |  | ) t ORDER BY status | 
|---|
|  |  |  | ) t ORDER BY status,update_time DESC | 
|---|
|  |  |  | OFFSET ((#{curr}-1)*#{limit}) ROWS | 
|---|
|  |  |  | FETCH NEXT #{limit} ROWS ONLY; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | ,{align: 'center', title: '明细', toolbar: '#tbLook', minWidth: 160, width: 160} | 
|---|
|  |  |  | ,{field: 'status$', align: 'center',title: '状态'} | 
|---|
|  |  |  | ,{field: 'custName', align: 'center',title: '客户名称', width: 160} | 
|---|
|  |  |  | ,{field: 'createTime$', align: 'center',title: '操作时间'} | 
|---|
|  |  |  | ,{field: 'createTime$', align: 'center',title: '创建时间'} | 
|---|
|  |  |  | ,{field: 'updateTime$', align: 'center',title: '操作时间'} | 
|---|
|  |  |  | ,{align: 'center', title: '操作', toolbar: '#operate'} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ]], | 
|---|
|  |  |  | 
|---|
|  |  |  | case "del": | 
|---|
|  |  |  | doDel(data); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "printExcel": | 
|---|
|  |  |  | printExcel(data); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "look": | 
|---|
|  |  |  | var $a = $(obj.tr).find('a[lay-event="look"]'); | 
|---|
|  |  |  | var offset = $a.offset(); | 
|---|
|  |  |  | 
|---|
|  |  |  | // ,{field: 'matnr', align: 'center',title: '物料号'} | 
|---|
|  |  |  | ,{field: 'maktx', align: 'center',title: '牌号'} | 
|---|
|  |  |  | ,{field: 'anfme', align: 'center',title: '数量'} | 
|---|
|  |  |  | ,{field: 'createTime$', align: 'center',title: '操作时间'} | 
|---|
|  |  |  | ,{field: 'updateTime$', align: 'center',title: '操作时间'} | 
|---|
|  |  |  | ,{field: 'count', align: 'center',title: '完成数'} | 
|---|
|  |  |  | ,{field: 'status$', align: 'center',title: '状态'} | 
|---|
|  |  |  | ,{field: 'memo', align: 'center',title: '备注'} | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (let i = 0; i < res.data.length; i++){ | 
|---|
|  |  |  | sum += res.data[i].anfme; | 
|---|
|  |  |  | console.log("sum:"+res.data.anfme); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | json.anfmeSum = sum; | 
|---|
|  |  |  | json.custName = json.data[0].custName; | 
|---|
|  |  |  | var barcodeUrl = baseUrl + "/ManPakOut/code/auth?type=1¶m=" + res.data[0].docNum; | 
|---|
|  |  |  | console.log("barcodeUrl:"+barcodeUrl); | 
|---|
|  |  |  | json.barcodeUrl = barcodeUrl; | 
|---|
|  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function printExcel(data){ | 
|---|
|  |  |  | layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){ | 
|---|
|  |  |  | layer.closeAll(); | 
|---|
|  |  |  | layer.load(1, {shade: [0.1,'#fff']}); | 
|---|
|  |  |  | location.href = baseUrl+"/pakout/printExport/auth?orderNo="+data.doc_num; | 
|---|
|  |  |  | layer.closeAll('loading'); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | layui.config({ | 
|---|
|  |  |  | base: baseUrl + "/static/layui/lay/modules/" | 
|---|
|  |  |  | }).use(['table','laydate', 'form', 'admin', 'dropdown'], function() { | 
|---|
|  |  |  | }).use(['table','laydate', 'form', 'admin', 'xmSelect', 'dropdown'], function() { | 
|---|
|  |  |  | var dropdown = layui.dropdown; | 
|---|
|  |  |  | var table = layui.table; | 
|---|
|  |  |  | var $ = layui.jquery; | 
|---|
|  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 渲染物料选择 | 
|---|
|  |  |  | var matXmSelect = xmSelect.render({ | 
|---|
|  |  |  | el: '#mat', | 
|---|
|  |  |  | style: { | 
|---|
|  |  |  | width: '270px', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | autoRow: true, | 
|---|
|  |  |  | toolbar: { show: true }, | 
|---|
|  |  |  | filterable: true, | 
|---|
|  |  |  | remoteSearch: true, | 
|---|
|  |  |  | remoteMethod: function(val, cb, show){ | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/pla/batch/all/get/kv", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | condition: val | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | cb(res.data) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | cb([]); | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 2}); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 复选框事件 | 
|---|
|  |  |  | table.on('checkbox(plaDetl)', function(obj){ | 
|---|
|  |  |  | 
|---|
|  |  |  | if(customValue !== undefined){ | 
|---|
|  |  |  | searchData['type'] = customValue | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(searchData.select){ | 
|---|
|  |  |  | searchData.batch = searchData.select; | 
|---|
|  |  |  | searchData.select = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | (child ? parent.tableIns : tableIns).reload({ | 
|---|
|  |  |  | where: searchData, | 
|---|
|  |  |  | page: { | 
|---|
|  |  |  | 
|---|
|  |  |  | layer.msg("选中的明细中含有多种牌号,请重新选择"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(data[i].stockFreeze === 0){ | 
|---|
|  |  |  | layer.msg("选中的明细中含有冻结的库存,请解冻后操作"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // if(data[i].stockFreeze === 0){ | 
|---|
|  |  |  | //     layer.msg("选中的明细中含有冻结的库存,请解冻后操作"); | 
|---|
|  |  |  | //     return; | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | layer.open({ | 
|---|
|  |  |  | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  | <!-- 表格操作列 --> | 
|---|
|  |  |  | <script type="text/html" id="operate"> | 
|---|
|  |  |  | {{# if (d.settle == 0 || d.settle == 1) { }} | 
|---|
|  |  |  | <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a> | 
|---|
|  |  |  | <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">删除</a> | 
|---|
|  |  |  | {{# } }} | 
|---|
|  |  |  | {{# if ((d.settle == 0 || d.settle == 1) && (d.docType == 21 || d.docType == 11 || d.docType == 12)) { }} | 
|---|
|  |  |  | {{# } }} | 
|---|
|  |  |  | {{# if (d.settle == 2) { }} | 
|---|
|  |  |  | <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">完结</a> | 
|---|
|  |  |  | {{# } }} | 
|---|
|  |  |  | <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="printExcel">导出Excel</a> | 
|---|
|  |  |  | <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint2">打印</a> | 
|---|
|  |  |  | <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">删除</a> | 
|---|
|  |  |  | <!--   <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="btnPrint"><img src="../../static/image/nav/fn_3.png" alt="二维码"></a> | 
|---|
|  |  |  | 
|---|
|  |  |  | <div style="height: 50px;text-align: center;font-size: 25px;">{{docNum}}</div> | 
|---|
|  |  |  | <div style="height: 40px;text-align: left;line-height: 40px;font-size: 20px;">出库单号:{{docNum}}</div> | 
|---|
|  |  |  | <div style="height: 40px;text-align: left;line-height: 40px;font-size: 20px;">总数量:{{anfmeSum}}</div> | 
|---|
|  |  |  | <div style="height: 40px;text-align: left;line-height: 40px;font-size: 20px;">客户名称:{{custName}}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | {{#each data}} | 
|---|
|  |  |  | <table width="100%" style="border:0;border-bottom:#0C0C0C solid 2px; margin-bottom:20px;padding:0;overflow: hidden;font-size: xx-small;table-layout: fixed;"> | 
|---|
|  |  |  | 
|---|
|  |  |  | {{this.locNo}} | 
|---|
|  |  |  | </td> | 
|---|
|  |  |  | </tr> | 
|---|
|  |  |  | <tr style="height: 30px; font-size: 15px;"> | 
|---|
|  |  |  | <td align="left" scope="col" colspan="1" style="width: 100px;"> | 
|---|
|  |  |  | 发货时间: | 
|---|
|  |  |  | </td> | 
|---|
|  |  |  | <td align="left" scope="col" colspan="1"> | 
|---|
|  |  |  | {{this.specs}} | 
|---|
|  |  |  | </td> | 
|---|
|  |  |  | </tr> | 
|---|
|  |  |  | </table> | 
|---|
|  |  |  | {{/each}} | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- 搜索栏 --> | 
|---|
|  |  |  | <div id="search-box"> | 
|---|
|  |  |  | <div class="layui-form layui-card-header"> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 270px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> | 
|---|
|  |  |  | <div id="mat" name="mat"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <option value="待出库">待出库</option> | 
|---|
|  |  |  | <option value="部分出库">部分出库</option> | 
|---|
|  |  |  | <option value="全部出库">全部出库</option> | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <select name="stock_freeze"> | 
|---|
|  |  |  | <option value="">是否冻结</option> | 
|---|
|  |  |  | <option value="0">是</option> | 
|---|
|  |  |  | <option value="1">否</option> | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | layui.config({ | 
|---|
|  |  |  | base: baseUrl + "/static/layui/lay/modules/" | 
|---|
|  |  |  | }).use(['table','laydate', 'form', 'admin', 'tableMerge'], function() { | 
|---|
|  |  |  | }).use(['table','laydate', 'form', 'admin', 'tableMerge', 'xmSelect'], function() { | 
|---|
|  |  |  | var table = layui.table; | 
|---|
|  |  |  | var $ = layui.jquery; | 
|---|
|  |  |  | var layer = layui.layer; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 渲染物料选择 | 
|---|
|  |  |  | var matXmSelect = xmSelect.render({ | 
|---|
|  |  |  | el: '#mat', | 
|---|
|  |  |  | style: { | 
|---|
|  |  |  | width: '270px', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | autoRow: true, | 
|---|
|  |  |  | toolbar: { show: true }, | 
|---|
|  |  |  | filterable: true, | 
|---|
|  |  |  | remoteSearch: true, | 
|---|
|  |  |  | remoteMethod: function(val, cb, show){ | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/pla/batch/all/get/kv", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | condition: val | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | cb(res.data) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | cb([]); | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 2}); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 监听头工具栏事件 | 
|---|
|  |  |  | table.on('toolbar(stockOut)', function (obj) { | 
|---|
|  |  |  | var checkStatus = table.checkStatus(obj.config.id); | 
|---|
|  |  |  | 
|---|
|  |  |  | $.each($('#search-box [name]').serializeArray(), function() { | 
|---|
|  |  |  | searchData[this.name] = this.value; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if(searchData.select){ | 
|---|
|  |  |  | searchData.batch = searchData.select; | 
|---|
|  |  |  | searchData.select = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | locDetlTableIns.reload({ | 
|---|
|  |  |  | where: searchData, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- 搜索栏 --> | 
|---|
|  |  |  | <div id="search-box" > | 
|---|
|  |  |  | <div class="layui-form layui-card-header"> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 70px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMin" placeholder="最小包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 70px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMax" placeholder="最大包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 270px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <div id="mat" name="mat"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--        <div class="layui-inline">--> | 
|---|
|  |  |  | <!--            <div class="layui-input-inline">--> | 
|---|
|  |  |  | <!--                <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off">--> | 
|---|
|  |  |  | <!--            </div>--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline cool-auto-complete"> | 
|---|
|  |  |  | <input id="maktx" class="layui-input" type="text" style="display: none"> | 
|---|
|  |  |  | <input id="maktxV" name="brand" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" placeholder="牌号" type="text" onfocus=this.blur()> | 
|---|
|  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="type" placeholder="物资类别" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <select name="status"> | 
|---|
|  |  |  | <option value="">选择状态</option> | 
|---|
|  |  |  | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_type" placeholder="包装类型" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="zpallet_type" placeholder="托盘类型" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMin" placeholder="最小包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMax" placeholder="最大包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- 功能区 --> | 
|---|
|  |  |  | <div class="function-area"> | 
|---|
|  |  |  | <!--    <button id="rework" style="alignment: right" class="function-btn">重做</button>--> | 
|---|
|  |  |  | <!--    <button id="rework" style="alignment: right" class="function-btn">重做</button>--> | 
|---|
|  |  |  | <button id="updateZpallet" style="alignment: right; display: none" class="function-btn1">换包装/托盘/缠膜</button>  | | 
|---|
|  |  |  | <button id="sellout" style="alignment: right; display: none" class="function-btn">出库</button> | 
|---|
|  |  |  | <!--    <button id="pickup" style="alignment: right" class="function-btn">取货</button>  |--> | 
|---|
|  |  |  | <!--    <button id="pickup" style="alignment: right" class="function-btn">取货</button>  |--> | 
|---|
|  |  |  | <button id="returned" style="alignment: right; display: none" class="function-btn">退回</button> | 
|---|
|  |  |  | <button id="updateOwner" style="alignment: right; display: none" class="function-btn">变更主体</button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- 搜索栏 --> | 
|---|
|  |  |  | <div id="search-box" > | 
|---|
|  |  |  | <div class="layui-form layui-card-header"> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 70px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMin" placeholder="最小包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 70px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMax" placeholder="最大包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 270px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <div id="mat" name="mat"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--        <div class="layui-inline">--> | 
|---|
|  |  |  | <!--            <div class="layui-input-inline">--> | 
|---|
|  |  |  | <!--                <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off">--> | 
|---|
|  |  |  | <!--            </div>--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline cool-auto-complete"> | 
|---|
|  |  |  | <input id="maktx" class="layui-input" type="text" style="display: none"> | 
|---|
|  |  |  | <input id="maktxV" name="brand" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" placeholder="牌号" type="text" onfocus=this.blur()> | 
|---|
|  |  |  | 
|---|
|  |  |  | <input class="layui-input" type="text" name="type" value="改性树脂" placeholder="物资类别" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <!--                <input class="layui-input" type="text" name="status" placeholder="状态" autocomplete="off">--> | 
|---|
|  |  |  | <select name="status"> | 
|---|
|  |  |  | <option value="">选择状态</option> | 
|---|
|  |  |  | <option value="暂入库">暂入库</option> | 
|---|
|  |  |  | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_type" placeholder="包装类型" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="zpallet_type" placeholder="托盘类型" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMin" placeholder="最小包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMax" placeholder="最大包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <!--            <div class="layui-input-inline">--> | 
|---|
|  |  |  | <!--                <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">--> | 
|---|
|  |  |  | <!--            </div>--> | 
|---|
|  |  |  | <div class="layui-input-inline" style="width: 290px"> | 
|---|
|  |  |  | <input type="text" class="layui-input" name="create_time" id="ID-laydate-range-datetime" placeholder="起始时间 - 终止时间"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input type="text" class="layui-input"  style="width: 290px" name="create_time" id="ID-laydate-range-datetime" placeholder="起始时间 - 终止时间"> | 
|---|
|  |  |  | </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> | 
|---|
|  |  |  | <button id="reset" data-value="改性树脂" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button> | 
|---|
|  |  |  | <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button> | 
|---|
|  |  |  | <!--        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">查看异常数据</button>--> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <script type="text/html" id="toolbar"> | 
|---|
|  |  |  | <div class="layui-btn-container"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <li><a onclick="importExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-upload"></i>导入 Excel</a></li> | 
|---|
|  |  |  | <li style="display: none"><input id="importExcel" type="file" onchange="upload(this)" ></li> | 
|---|
|  |  |  | <hr> | 
|---|
|  |  |  | <!--                <li class="title">2nd menu</li>--> | 
|---|
|  |  |  | <!--                <li><a onclick="exportExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-export"></i>导出 Excel</a></li>--> | 
|---|
|  |  |  | <!--                <li class="title">2nd menu</li>--> | 
|---|
|  |  |  | <!--                <li><a onclick="exportExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-export"></i>导出 Excel</a></li>--> | 
|---|
|  |  |  | </ul> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right;margin-right: -10px">导出</button>--> | 
|---|
|  |  |  | 
|---|
|  |  |  | Address:No. 188, Taizhou Bay Avenue, Taizhou Bay New Area, Taizhou City, Zhejiang Province | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--                    <div class="layui-row" style="font-size: xx-large; text-align: left; margin-left: 40px;">--> | 
|---|
|  |  |  | <!--                        </n>聚乳酸 Polylactic Acid--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                    <div class="layui-row" style="font-size: xx-large; text-align: left; margin-left: 40px;">--> | 
|---|
|  |  |  | <!--                        </n>聚乳酸 Polylactic Acid--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <div class="layui-row" style="alignment: center; margin-left: 65px;"> | 
|---|
|  |  |  | <table class="contain" width="400" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> | 
|---|
|  |  |  | <tr style="height: 74px" > | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- 模板3 --> | 
|---|
|  |  |  | <script type="text/template" id="templatePreview1" class="template-qrcode"> | 
|---|
|  |  |  | <div class="template-preview"> | 
|---|
|  |  |  | {{#each data}} | 
|---|
|  |  |  | {{#each data}} | 
|---|
|  |  |  | <div class="layui-row" style="height: 230px;width: 750px; color:#000; margin-top: 40px"> | 
|---|
|  |  |  | <div class="layui-col-xs6" style="height: auto; margin-top: 25px; margin-left: -20px"> | 
|---|
|  |  |  | <img src="../../static/image/hneLogo.png" style="display: inline-block; width: 40%;height: 30%; margin-left: 30px; color:#000;"> | 
|---|
|  |  |  | 
|---|
|  |  |  | No.188 Taizhou Bay Avenue, Taizhou Bay New Area, Taizhou City, Zhejiang Province. P.R.China | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--        <div class="layui-row" style="font-size: xx-large; text-align: left; margin-left: 40px;">--> | 
|---|
|  |  |  | <!--            聚乳酸 Polylactic Acid--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <!--        <div class="layui-row" style="font-size: xx-large; text-align: left; margin-left: 40px;">--> | 
|---|
|  |  |  | <!--            聚乳酸 Polylactic Acid--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <div class="layui-row" style="alignment: center; margin-left: 35px; margin-top: -20px; margin-bottom: 3.7px;"> | 
|---|
|  |  |  | <table class="contain" width="500" style="overflow: hidden;table-layout: fixed; color:#000; font-size: 35px;text-align: left"> | 
|---|
|  |  |  | <tr style="height: 100px;" > | 
|---|
|  |  |  | 
|---|
|  |  |  | </tr> | 
|---|
|  |  |  | <tr style="height: 100px; text-align: left" > | 
|---|
|  |  |  | <td align="center" scope="col" colspan="2" style="font-weight: bold;color: black; text-align: left; padding-left: 20px"><strong>牌号: REVODE {{this.brand}}</strong></td> | 
|---|
|  |  |  | <!--                    <td align="center" colspan="1" style="font-weight: bold;color: black;overflow:hidden; white-space:normal; "><strong style="font-weight: bold;color: black;">REVODE {{this.brand}}</strong></td>--> | 
|---|
|  |  |  | <!--                    <td align="center" colspan="1" style="font-weight: bold;color: black;overflow:hidden; white-space:normal; "><strong style="font-weight: bold;color: black;">REVODE {{this.brand}}</strong></td>--> | 
|---|
|  |  |  | </tr> | 
|---|
|  |  |  | <tr style="height: 100px;text-align: left"> | 
|---|
|  |  |  | <td align="center" colspan="2" style="font-weight: bold;color: black; text-align: left; padding-left: 20px"><strong>批号:{{this.batch}}</strong></td> | 
|---|
|  |  |  | 
|---|
|  |  |  | </tr> | 
|---|
|  |  |  | </table> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </br> | 
|---|
|  |  |  | {{/each}} | 
|---|
|  |  |  | </br> | 
|---|
|  |  |  | {{/each}} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- 功能区 --> | 
|---|
|  |  |  | <div class="function-area"> | 
|---|
|  |  |  | <!--    <button id="rework" style="alignment: right" class="function-btn">重做</button>--> | 
|---|
|  |  |  | <!--    <button id="rework" style="alignment: right" class="function-btn">重做</button>--> | 
|---|
|  |  |  | <button id="updateZpallet" style="alignment: right; display: none" class="function-btn1">换包装/托盘/缠膜</button>  | | 
|---|
|  |  |  | <button id="sellout" style="alignment: right; display: none" class="function-btn">出库</button> | 
|---|
|  |  |  | <!--    <button id="pickup" style="alignment: right" class="function-btn">取货</button>  |--> | 
|---|
|  |  |  | <!--    <button id="pickup" style="alignment: right" class="function-btn">取货</button>  |--> | 
|---|
|  |  |  | <button id="returned" style="alignment: right; display: none" class="function-btn">退回</button> | 
|---|
|  |  |  | <button id="updateOwner" style="alignment: right; display: none" class="function-btn">变更主体</button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- 搜索栏 --> | 
|---|
|  |  |  | <div id="search-box" > | 
|---|
|  |  |  | <div class="layui-form layui-card-header"> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 70px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMin" placeholder="最小包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 70px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMax" placeholder="最大包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 270px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <div id="mat" name="mat"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--        <div class="layui-inline">--> | 
|---|
|  |  |  | <!--            <div class="layui-input-inline">--> | 
|---|
|  |  |  | <!--                <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off">--> | 
|---|
|  |  |  | <!--            </div>--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline cool-auto-complete"> | 
|---|
|  |  |  | <input id="maktx" class="layui-input" type="text" style="display: none"> | 
|---|
|  |  |  | <input id="maktxV" name="brand" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" placeholder="牌号" type="text" onfocus=this.blur()> | 
|---|
|  |  |  | 
|---|
|  |  |  | <input class="layui-input" type="text" name="type" value="纯树脂" placeholder="物资类别" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <!--                <input class="layui-input" type="text" name="status" placeholder="状态" autocomplete="off">--> | 
|---|
|  |  |  | <select name="status"> | 
|---|
|  |  |  | <option value="">选择状态</option> | 
|---|
|  |  |  | <option value="暂入库">暂入库</option> | 
|---|
|  |  |  | 
|---|
|  |  |  | </select> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_type" placeholder="包装类型" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-inline" style="width: 80px"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="zpallet_type" placeholder="托盘类型" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMin" placeholder="最小包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input class="layui-input" type="text" name="package_noMax" placeholder="最大包号" autocomplete="off"> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="layui-inline"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <!--            <div class="layui-input-inline">--> | 
|---|
|  |  |  | <!--                <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">--> | 
|---|
|  |  |  | <!--            </div>--> | 
|---|
|  |  |  | <div class="layui-input-inline" style="width: 290px"> | 
|---|
|  |  |  | <input type="text" class="layui-input" name="create_time" id="ID-laydate-range-datetime" placeholder="起始时间 - 终止时间"> | 
|---|
|  |  |  | <div class="layui-input-inline"> | 
|---|
|  |  |  | <input type="text" class="layui-input"  style="width: 290px" name="create_time" id="ID-laydate-range-datetime" placeholder="起始时间 - 终止时间"> | 
|---|
|  |  |  | </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> | 
|---|
|  |  |  | <button id="reset" data-value="纯树脂" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button> | 
|---|
|  |  |  | <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button> | 
|---|
|  |  |  | <!--        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">查看异常数据</button>--> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <script type="text/html" id="toolbar"> | 
|---|
|  |  |  | <div class="layui-btn-container"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <li><a onclick="importExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-upload"></i>导入 Excel</a></li> | 
|---|
|  |  |  | <li style="display: none"><input id="importExcel" type="file" onchange="upload(this)" ></li> | 
|---|
|  |  |  | <hr> | 
|---|
|  |  |  | <!--                <li class="title">2nd menu</li>--> | 
|---|
|  |  |  | <!--                <li><a onclick="exportExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-export"></i>导出 Excel</a></li>--> | 
|---|
|  |  |  | <!--                <li class="title">2nd menu</li>--> | 
|---|
|  |  |  | <!--                <li><a onclick="exportExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-export"></i>导出 Excel</a></li>--> | 
|---|
|  |  |  | </ul> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right;margin-right: -10px">导出</button>--> | 
|---|
|  |  |  | 
|---|
|  |  |  | Address:No. 188, Taizhou Bay Avenue, Taizhou Bay New Area, Taizhou City, Zhejiang Province | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--                    <div class="layui-row" style="font-size: xx-large; text-align: left; margin-left: 40px;">--> | 
|---|
|  |  |  | <!--                        </n>聚乳酸 Polylactic Acid--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <!--                    <div class="layui-row" style="font-size: xx-large; text-align: left; margin-left: 40px;">--> | 
|---|
|  |  |  | <!--                        </n>聚乳酸 Polylactic Acid--> | 
|---|
|  |  |  | <!--                    </div>--> | 
|---|
|  |  |  | <div class="layui-row" style="alignment: center; margin-left: 65px;"> | 
|---|
|  |  |  | <table class="contain" width="400" style="overflow: hidden;font-size: xx-small;table-layout: fixed;"> | 
|---|
|  |  |  | <tr style="height: 74px" > | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- 模板3 --> | 
|---|
|  |  |  | <script type="text/template" id="templatePreview1" class="template-qrcode"> | 
|---|
|  |  |  | <div class="template-preview"> | 
|---|
|  |  |  | {{#each data}} | 
|---|
|  |  |  | {{#each data}} | 
|---|
|  |  |  | <div class="layui-row" style="height: 230px;width: 750px; color:#000; margin-top: 40px"> | 
|---|
|  |  |  | <div class="layui-col-xs6" style="height: auto; margin-top: 25px; margin-left: -20px"> | 
|---|
|  |  |  | <img src="../../static/image/hneLogo.png" style="display: inline-block; width: 40%;height: 30%; margin-left: 30px; color:#000;"> | 
|---|
|  |  |  | 
|---|
|  |  |  | No.188 Taizhou Bay Avenue, Taizhou Bay New Area, Taizhou City, Zhejiang Province. P.R.China | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--        <div class="layui-row" style="font-size: xx-large; text-align: left; margin-left: 40px;">--> | 
|---|
|  |  |  | <!--            聚乳酸 Polylactic Acid--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <!--        <div class="layui-row" style="font-size: xx-large; text-align: left; margin-left: 40px;">--> | 
|---|
|  |  |  | <!--            聚乳酸 Polylactic Acid--> | 
|---|
|  |  |  | <!--        </div>--> | 
|---|
|  |  |  | <div class="layui-row" style="alignment: center; margin-left: 35px; margin-top: -20px; margin-bottom: 3.7px;"> | 
|---|
|  |  |  | <table class="contain" width="500" style="overflow: hidden;table-layout: fixed; color:#000; font-size: 35px;text-align: left"> | 
|---|
|  |  |  | <tr style="height: 100px;" > | 
|---|
|  |  |  | 
|---|
|  |  |  | </tr> | 
|---|
|  |  |  | <tr style="height: 100px; text-align: left" > | 
|---|
|  |  |  | <td align="center" scope="col" colspan="2" style="font-weight: bold;color: black; text-align: left; padding-left: 20px"><strong>牌号: REVODE {{this.brand}}</strong></td> | 
|---|
|  |  |  | <!--                    <td align="center" colspan="1" style="font-weight: bold;color: black;overflow:hidden; white-space:normal; "><strong style="font-weight: bold;color: black;">REVODE {{this.brand}}</strong></td>--> | 
|---|
|  |  |  | <!--                    <td align="center" colspan="1" style="font-weight: bold;color: black;overflow:hidden; white-space:normal; "><strong style="font-weight: bold;color: black;">REVODE {{this.brand}}</strong></td>--> | 
|---|
|  |  |  | </tr> | 
|---|
|  |  |  | <tr style="height: 100px;text-align: left"> | 
|---|
|  |  |  | <td align="center" colspan="2" style="font-weight: bold;color: black; text-align: left; padding-left: 20px"><strong>批号:{{this.batch}}</strong></td> | 
|---|
|  |  |  | 
|---|
|  |  |  | </tr> | 
|---|
|  |  |  | </table> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </br> | 
|---|
|  |  |  | {{/each}} | 
|---|
|  |  |  | </br> | 
|---|
|  |  |  | {{/each}} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|