From 0e46bb0cfc8b59ad5527f0b70c49f95aeac4bbbd Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期五, 05 一月 2024 13:38:05 +0800
Subject: [PATCH] # 入库拣货功能添加

---
 src/main/java/com/zy/asrs/service/ConfigTypeService.java          |    8 
 src/main/java/com/zy/asrs/service/impl/ConfigTypeServiceImpl.java |   12 
 src/main/java/com/zy/asrs/service/PlaQtyService.java              |    8 
 src/main/java/com/zy/asrs/service/impl/PlaQtyServiceImpl.java     |   12 
 src/main/webapp/views/picking/picking.html                        |    8 
 src/main/java/com/zy/asrs/entity/ConfigType.java                  |   18 
 src/main/webapp/views/order/order.html                            |    2 
 src/main/java/com/zy/asrs/mapper/ConfigTypeMapper.java            |   12 
 src/main/java/com/zy/asrs/mapper/PlaQtyMapper.java                |   12 
 src/main/webapp/static/js/pla/plaDetl.js                          |    4 
 src/main/webapp/static/js/order/out.js                            |   35 +
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java     |   73 +++
 src/main/java/com/zy/asrs/controller/OutController.java           |   65 +++
 src/main/java/com/zy/asrs/controller/ConfigTypeController.java    |   74 +++
 src/main/java/com/zy/asrs/service/MobileService.java              |    4 
 src/main/webapp/static/js/pla/productionInfo.js                   |    6 
 src/main/java/com/zy/asrs/controller/OrderController.java         |    4 
 src/main/webapp/static/js/picking/picking.js                      |   10 
 src/main/webapp/views/configType/configTypeAdd.html               |   50 ++
 src/main/java/com/zy/asrs/controller/PlaController.java           |    1 
 src/main/java/com/zy/asrs/entity/OrderDetl.java                   |   17 
 src/main/webapp/static/js/pla/qualityInfo.js                      |    4 
 src/main/java/com/zy/asrs/controller/MobileController.java        |   33 +
 src/main/java/com/zy/asrs/entity/Pla.java                         |   28 
 src/main/java/com/zy/asrs/entity/PlaQty.java                      |   52 ++
 src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java        |   75 +++
 src/main/resources/mapper/OrderDetlMapper.xml                     |    8 
 src/main/java/com/zy/asrs/service/PlaService.java                 |    8 
 src/main/webapp/views/pla/plaDetl.html                            |   21 +
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java  |   10 
 src/main/webapp/static/js/order/order.js                          |   63 ++-
 src/main/webapp/views/order/out.html                              |    2 
 src/main/webapp/static/js/configType/configType.js                |  387 +++++++++++++++++++
 src/main/webapp/views/configType/configType.html                  |   59 ++
 34 files changed, 1,100 insertions(+), 85 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/ConfigTypeController.java b/src/main/java/com/zy/asrs/controller/ConfigTypeController.java
new file mode 100644
index 0000000..7b1a9eb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/ConfigTypeController.java
@@ -0,0 +1,74 @@
+package com.zy.asrs.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.ConfigType;
+import com.zy.asrs.service.ConfigTypeService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.Map;
+
+@RestController
+public class ConfigTypeController extends BaseController {
+
+    @Autowired
+    private ConfigTypeService configTypeService;
+
+    @RequestMapping(value = "/cinfigType/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") Long id) {
+        return R.ok(configTypeService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/cinfigType/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){
+        excludeTrash(param);
+        EntityWrapper<ConfigType> wrapper = new EntityWrapper<>();
+        convert(param, wrapper);
+        wrapper.orderBy("id", false);
+
+        return R.ok(configTypeService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/configType/add/auth")
+    @ManagerAuth
+    public R list(ConfigType configType){
+        if (Cools.isEmpty(configType)){
+            return R.error();
+        }
+        configType.setCreateTime(new Date());
+        configTypeService.insert(configType);
+        return R.ok();
+
+    }
+
+    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);
+            }
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 46ebd80..6329b95 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -2,7 +2,6 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
@@ -16,8 +15,6 @@
 import com.zy.asrs.entity.result.MobileAdjustResult;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
-import com.zy.common.model.LocDto;
-import com.zy.common.model.TaskDto;
 import com.zy.common.model.WrkDto;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -421,5 +418,35 @@
         return mobileService.manDetlOriginOut(json,getUser());
     }
 
+    @RequestMapping("/plaDetl/packin/v1")
+//    @ManagerAuth(memo="pla鍏ュ簱")
+    public R plaPackIn(@RequestBody JSONObject json){
+        String locNo = json.get("locNo").toString();
+        String batch = json.get("batch").toString();
+        String packageNo = json.get("packageNo").toString();
+        if(Cools.isEmpty(locNo) || Cools.isEmpty(batch) || Cools.isEmpty(packageNo)){
+            return R.error("鏈夊弬鏁颁负绌猴紝鏃犳硶鍏ュ簱");
+        }
+        mobileService.plaPakin(locNo,batch,packageNo);
+        return R.ok();
+    }
 
+    @RequestMapping("/plaDetl/packout/v1")
+//    @ManagerAuth(memo="pla鍑哄簱")
+    public R plaPackOut(@RequestBody JSONObject json){
+        String locNo = json.get("locNo").toString();
+        String batch = json.get("batch").toString();
+        String packageNo = json.get("packageNo").toString();
+        String orderNo = json.get("orderNo").toString();
+        String orderDetlId = json.get("orderDetlId").toString();
+        String wrkNo = json.get("wrkNo").toString();
+        Double anfme = Double.parseDouble(json.get("anfme").toString());
+
+        if(Cools.isEmpty(locNo) || Cools.isEmpty(batch) || Cools.isEmpty(packageNo)){
+            return R.error("鏈夊弬鏁颁负绌猴紝鏃犳硶鍏ュ簱");
+        }
+
+        mobileService.plaPakout(locNo,batch,packageNo,orderNo,orderDetlId,wrkNo,anfme);
+        return R.ok();
+    }
 }
diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index e1ec863..0302aef 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -9,7 +9,6 @@
 import com.core.annotations.ManagerAuth;
 import com.core.common.*;
 import com.core.exception.CoolException;
-import com.sun.org.apache.xpath.internal.operations.Or;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.OrderDomainParam;
 import com.zy.asrs.entity.result.OrderDetlVo;
@@ -228,7 +227,8 @@
         List<DetlDto> list = new ArrayList<>();
         for (OrderDetl orderDetl : param.getOrderDetlList()) {
             DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
-            if (DetlDto.has(list, dto)) {
+            //if (DetlDto.has(list, dto)) {
+            if(false){
                 OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch());
                 item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                 if (!orderDetlService.updateById(item)) {
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 934e4e8..c8b4695 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -11,13 +11,15 @@
 import com.zy.common.model.TaskDto;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 import java.util.stream.Collectors;
 
 /**
@@ -45,6 +47,10 @@
     private ManPakOutService manPakOutService;
     @Autowired
     private ManLocDetlService manLocDetlService;
+    @Autowired
+    private PlaService plaService;
+    @Autowired
+    private PlaQtyService plaQtyService;
 
 
     @PostMapping("/out/pakout/orderDetlIds/auth")
@@ -68,6 +74,15 @@
             }
         }
 
+        List<PlaQty> plaQties = new ArrayList<>();
+
+        for (OrderDetl orderDetl : orderDetls) {
+            plaService.queryStock(orderDetl,plaQties);
+        }
+
+        return R.ok(plaQties);
+
+/*
         Set<String> exist = new HashSet<>();
 
         for (OrderDetl orderDetl : orderDetls) {
@@ -108,12 +123,13 @@
                 locDtos.add(locDto);
             }
         }
-        return R.ok().add(locDtos);
+        return R.ok().add(locDtos); */
     }
 
     @PostMapping("/out/pakout/auth")
     @ManagerAuth(memo = "璁㈠崟鍑哄簱")
     public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException {
+
         int[][] is=new int[locDtos.size()][2];
         for (int i=0;i<locDtos.size();i++){
             LocDto locDto=locDtos.get(locDtos.size()-1-i);
@@ -168,8 +184,29 @@
 
     @PostMapping("/out/pakout2/auth")
     @ManagerAuth(memo = "鐢熸垚鎷h揣鍗�")
-    public synchronized R pakout2(@RequestBody List<LocDto> locDtos) throws InterruptedException {
-        int[][] is = new int[locDtos.size()][2];
+    @Transactional
+    public synchronized R pakout2(@RequestBody List<PlaQty> plaQties) throws InterruptedException {
+
+        for (PlaQty plaQty : plaQties){
+            if(Cools.isEmpty(plaQty.getLocNo())){
+                continue;
+            }
+            plaQtyService.insert(plaQty);
+            addPakOUT(plaQty);
+
+            Pla pla = plaService.selectByBatchAndPackageNo(plaQty.getBatch(), plaQty.getPackageNo());
+            pla.setQtyAnfme(pla.getQtyAnfme() + plaQty.getQtyAnfme());
+            plaService.updateById(pla);
+
+            OrderDetl orderDetl = orderDetlService.selectById(plaQty.getOrderDetlId());
+            orderDetl.setWorkQty(orderDetl.getWorkQty() + plaQty.getQtyAnfme());
+            orderDetlService.updateById(orderDetl);
+            orderService.updateSettle(plaQty.getOrderId(),2L,null);
+        }
+
+        return R.ok();
+
+    /*  int[][] is = new int[locDtos.size()][2];
         List<String> matnrs=new ArrayList<>();
         for (int i = 0; i < locDtos.size(); i++) {
             LocDto locDto = locDtos.get(locDtos.size() - 1 - i);
@@ -261,6 +298,24 @@
                 addPakOUT(locDto,uuid).equals(R.ok());
             }
         }
+        return R.ok(); */
+    }
+
+    private R addPakOUT(PlaQty plaQty){
+        ManPakOut manPakOut=new ManPakOut();
+        manPakOut.setWrkNo(plaQty.getOrderNo()+"-"+System.currentTimeMillis());
+        manPakOut.setWrkSts((long)1);
+        manPakOut.setAnfme(plaQty.getQtyAnfme());
+        manPakOut.setLocNo(plaQty.getLocNo());
+        manPakOut.setBatch(plaQty.getBatch());
+        manPakOut.setBarcode(plaQty.getPackageNo());
+        manPakOut.setUuid(String.valueOf(System.currentTimeMillis()));
+        manPakOut.setCreateTime(new Date());
+        manPakOut.setUpdateTime(new Date());
+        manPakOut.setCount(0.0);
+        manPakOut.setDocNum(plaQty.getOrderNo());
+        manPakOut.setNodeId(plaQty.getOrderDetlId());
+        manPakOutService.insert(manPakOut);
         return R.ok();
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/PlaController.java b/src/main/java/com/zy/asrs/controller/PlaController.java
index db9776e..6cbdfc6 100644
--- a/src/main/java/com/zy/asrs/controller/PlaController.java
+++ b/src/main/java/com/zy/asrs/controller/PlaController.java
@@ -56,7 +56,6 @@
         return R.ok();
     }
 
-
     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());
diff --git a/src/main/java/com/zy/asrs/entity/ConfigType.java b/src/main/java/com/zy/asrs/entity/ConfigType.java
new file mode 100644
index 0000000..dfa0734
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/ConfigType.java
@@ -0,0 +1,18 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("asr_config_type")
+public class ConfigType {
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    private String type;
+    private String value;
+    private Date createTime;
+}
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index 5b7533c..1922dc7 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -327,6 +327,23 @@
     @TableField("uuid")
     private String uuid;
 
+    //鏈�澶х啍鎸�
+    private double fingerMeltingMin;
+    //鏈�灏忕啍鎸�
+    private double fingerMeltingMax;
+    //鏈�澶х啍鐐�
+    private double fusingPointMin;
+    //鏈�灏忕啍鐐�
+    private double fusingPointMax;
+    //鏈�澶ч粍搴�
+    private double yellownessMin;
+    //鏈�澶ч粍搴�
+    private double yellownessMax;
+    //鏈�灏忎笉閫忔槑搴�
+    private double opacityMin;
+    //鏈�澶т笉閫忔槑搴�
+    private double opacityMax;
+
     public String getOwner$(){
         LocOwnerService service = SpringUtils.getBean(LocOwnerService.class);
         LocOwner locOwner = service.selectById(this.owner);
diff --git a/src/main/java/com/zy/asrs/entity/Pla.java b/src/main/java/com/zy/asrs/entity/Pla.java
index 9e3c488..17e4a38 100644
--- a/src/main/java/com/zy/asrs/entity/Pla.java
+++ b/src/main/java/com/zy/asrs/entity/Pla.java
@@ -30,7 +30,7 @@
     private String brand;
 
     //閲嶉噺
-    private double weight;
+    private Double weight;
 
     //杞﹂棿
     private String workshop;
@@ -48,37 +48,37 @@
     private String filmWrap;
 
     //鐔旀寚
-    private double fingerMelting;
+    private Double fingerMelting;
 
     //鐔旂偣
-    private double fusingPoint;
+    private Double fusingPoint;
 
     //鎸ュ彂浠�1
-    private double vadf1;
+    private Double vadf1;
 
     //鎸ュ彂浠�2
-    private double vadf2;
+    private Double vadf2;
 
     //榛勫害
-    private double yellowness;
+    private Double yellowness;
 
     //涓嶉�忔槑搴�
-    private double opacity;
+    private Double opacity;
 
     //姘村垎
-    private double water;
+    private Double water;
 
     //L鍊�
-    private double l;
+    private Double l;
 
     //a鍊�
-    private double a;
+    private Double a;
 
     //b鍊�
-    private double b;
+    private Double b;
 
     //濉厖
-    private double fillIn;
+    private Double fillIn;
 
     //璐ㄩ噺鐘舵��
     private String massState;
@@ -93,7 +93,9 @@
     private String locNo;
 
     //鍓╀綑閲嶉噺
-    private String weightAnfme;
+    private Double weightAnfme = 0.0;
+    //鍓╀綑閲嶉噺
+    private Double qtyAnfme = 0.0;
 
     //鐘舵��
     private String status;
diff --git a/src/main/java/com/zy/asrs/entity/PlaQty.java b/src/main/java/com/zy/asrs/entity/PlaQty.java
new file mode 100644
index 0000000..80c0f73
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/PlaQty.java
@@ -0,0 +1,52 @@
+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.util.Date;
+
+@Data
+@TableName("asr_pla_qty")
+public class PlaQty {
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    //鎵瑰彿
+    private String batch;
+
+    //鍖呰鍙�
+    private String packageNo;
+
+    //鍗曟嵁鏄庣粏id
+    private Long orderDetlId;
+
+    //鍗曟嵁id
+    private Long orderId;
+
+    //鍗曟嵁缂栧彿
+    private String orderNo;
+
+    //璇ユ槑缁嗗浜庤鎵规鐨刾la浣滀笟鏁伴噺
+    private Double qtyAnfme;
+
+    //搴撲綅鍙�
+    private String locNo;
+
+    //鍒涘缓鏃堕棿
+    private Date createTime;
+
+    public PlaQty(String batch, String packageNo, Long orderDetlId, Long orderId, String orderNo, Double qtyAnfme, String locNo, Date createTime) {
+        this.batch = batch;
+        this.packageNo = packageNo;
+        this.orderDetlId = orderDetlId;
+        this.orderNo = orderNo;
+        this.qtyAnfme = qtyAnfme;
+        this.locNo = locNo;
+        this.createTime = createTime;
+        this.orderId = orderId;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/ConfigTypeMapper.java b/src/main/java/com/zy/asrs/mapper/ConfigTypeMapper.java
new file mode 100644
index 0000000..9042efb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/ConfigTypeMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.ConfigType;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface ConfigTypeMapper extends BaseMapper<ConfigType> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/PlaQtyMapper.java b/src/main/java/com/zy/asrs/mapper/PlaQtyMapper.java
new file mode 100644
index 0000000..176e549
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/PlaQtyMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.PlaQty;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface PlaQtyMapper extends BaseMapper<PlaQty> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/ConfigTypeService.java b/src/main/java/com/zy/asrs/service/ConfigTypeService.java
new file mode 100644
index 0000000..f51c0a5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/ConfigTypeService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.ConfigType;
+
+public interface ConfigTypeService extends IService<ConfigType> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index e21dc1c..408bed4 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -53,4 +53,8 @@
     R manDetlOrigInNo(JSONObject json, User user);
 
     R manDetlOriginOut(JSONObject json, User user);
+
+    void plaPakin(String locNo, String batch, String packageNo);
+
+    void plaPakout(String locNo, String batch, String packageNo, String orderNo, String orderDetlId, String wrkNo,Double anfme);
 }
diff --git a/src/main/java/com/zy/asrs/service/PlaQtyService.java b/src/main/java/com/zy/asrs/service/PlaQtyService.java
new file mode 100644
index 0000000..92116fc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/PlaQtyService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.PlaQty;
+
+public interface PlaQtyService extends IService<PlaQty> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/PlaService.java b/src/main/java/com/zy/asrs/service/PlaService.java
index 7056a17..f73490f 100644
--- a/src/main/java/com/zy/asrs/service/PlaService.java
+++ b/src/main/java/com/zy/asrs/service/PlaService.java
@@ -1,8 +1,16 @@
 package com.zy.asrs.service;
 
 import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.entity.Pla;
+import com.zy.asrs.entity.PlaQty;
+
+import java.util.List;
 
 public interface PlaService extends IService<Pla> {
 
+    Pla selectByBatchAndPackageNo(String batch, String packageNo);
+
+    void queryStock(OrderDetl orderDetl, List<PlaQty> plaQties);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/ConfigTypeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ConfigTypeServiceImpl.java
new file mode 100644
index 0000000..b7f0d59
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/ConfigTypeServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.ConfigType;
+import com.zy.asrs.mapper.ConfigTypeMapper;
+import com.zy.asrs.service.ConfigTypeService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ConfigTypeServiceImpl extends ServiceImpl<ConfigTypeMapper, ConfigType> implements ConfigTypeService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 9e92560..9bf7fa4 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1,26 +1,24 @@
 package com.zy.asrs.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.*;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.exception.CoolException;
-import com.sun.org.apache.xpath.internal.operations.Or;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.*;
+import com.zy.asrs.entity.param.CombParam;
+import com.zy.asrs.entity.param.MobileAdjustNewParam;
+import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.OffSaleParam;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
-import com.zy.asrs.utils.MatUtils;
 import com.zy.asrs.utils.SaasUtils;
-import com.zy.common.CodeRes;
-import com.zy.common.constant.MesConstant;
-import com.zy.common.entity.Parameter;
 import com.zy.common.model.DetlDto;
-import com.zy.common.model.MesCombParam;
 import com.zy.common.service.CommonService;
-import com.zy.common.utils.HttpHandler;
 import com.zy.common.utils.Synchro;
 import com.zy.system.entity.User;
 import lombok.extern.slf4j.Slf4j;
@@ -29,8 +27,10 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
 
 /**
  * 绉诲姩绔湇鍔℃牳蹇冪被
@@ -98,6 +98,8 @@
 
     @Autowired
     private LocOwnerService locOwnerService;
+    @Autowired
+    private PlaService plaService;
 
 
 
@@ -1198,4 +1200,51 @@
         }
         return R.ok();
     }
+
+    @Override
+    public void plaPakin(String locNo, String batch, String packageNo) {
+        Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo);
+        if("宸插叆搴�".equals(pla.getStatus())){
+            throw new CoolException("璇ョ墿鏂欏凡鍏ュ簱");
+        }
+        pla.setStatus("宸插叆搴�");
+        pla.setModifyTime(new Date());
+        plaService.updateById(pla);
+    }
+
+    @Override
+    @Transactional
+    public void plaPakout(String locNo, String batch, String packageNo, String orderNo, String orderDetlId, String wrkNo, Double anfme) {
+        Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo);
+        //Order order = orderService.selectByNo(orderNo);
+        OrderDetl orderDetl = orderDetlService.selectById(orderDetlId);
+        ManPakOut manPakOut = manPakOutService.selectById(wrkNo);
+
+        //鏇存柊鎷h揣鍗曚俊鎭�
+        if(manPakOut.getCount() + anfme > manPakOut.getAnfme()){
+            throw new CoolException("鎷h揣閲嶉噺澶т簬鎷h揣鍗曟墍闇�鎷h揣閲嶉噺锛岃閲嶆柊鍒嗛厤鎷h揣閲嶉噺");
+        }
+        manPakOut.setCount(manPakOut.getCount() + anfme);
+        if (manPakOut.getAnfme().equals(manPakOut.getCount())){
+            manPakOut.setStatus(1);
+            manPakOutService.updateById(manPakOut);
+        }
+
+        //鏇存柊鍗曟嵁鏄庣粏
+        orderDetl.setQty(orderDetl.getQty() + anfme);
+        orderDetlService.updateById(orderDetl);
+
+        //鏇存柊鍗曟嵁淇℃伅
+        orderService.checkComplete(orderNo);
+
+        //鏇存柊pla鏄庣粏
+        pla.setWeightAnfme(pla.getWeightAnfme() - anfme);
+        if(pla.getWeightAnfme() <= 0){
+            pla.setStatus("鍏ㄩ儴鍑哄簱");
+        }else {
+            pla.setStatus("閮ㄥ垎鍑哄簱");
+        }
+        plaService.updateById(pla);
+
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index 46ff52b..2eeec3b 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -2,11 +2,11 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
-import com.core.common.Cools;
-import com.zy.asrs.mapper.OrderDetlMapper;
-import com.zy.asrs.entity.OrderDetl;
-import com.zy.asrs.service.OrderDetlService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
+import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.mapper.OrderDetlMapper;
+import com.zy.asrs.service.OrderDetlService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -21,6 +21,8 @@
 
     @Override
     public Page<OrderDetl> getPakoutPage(Page<OrderDetl> page) {
+        List<OrderDetl> pakoutPage = baseMapper.getPakoutPage(page.getCondition());
+        System.out.println(pakoutPage);
         page.setRecords(baseMapper.getPakoutPage(page.getCondition()));
         page.setTotal(baseMapper.getPakoutPageCount(page.getCondition()));
         return page;
diff --git a/src/main/java/com/zy/asrs/service/impl/PlaQtyServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/PlaQtyServiceImpl.java
new file mode 100644
index 0000000..2d7faca
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/PlaQtyServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.PlaQty;
+import com.zy.asrs.mapper.PlaQtyMapper;
+import com.zy.asrs.service.PlaQtyService;
+import org.springframework.stereotype.Service;
+
+@Service("plaQtyService")
+public class PlaQtyServiceImpl extends ServiceImpl<PlaQtyMapper, PlaQty> implements PlaQtyService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java
index 84df296..81a1491 100644
--- a/src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java
@@ -1,12 +1,87 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
+import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.entity.Pla;
+import com.zy.asrs.entity.PlaQty;
 import com.zy.asrs.mapper.PlaMapper;
+import com.zy.asrs.service.PlaQtyService;
 import com.zy.asrs.service.PlaService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
 
 @Service("plaService")
 public class PlaServiceImpl extends ServiceImpl<PlaMapper, Pla> implements PlaService {
+    @Autowired
+    private PlaQtyService plaQtyService;
 
+    public Pla selectByBatchAndPackageNo(String batch, String packageNo) {
+        return this.selectOne(new EntityWrapper<Pla>().eq("batch",batch).eq("package_no",packageNo));
+    }
+
+    @Override
+    @Transactional
+    public void queryStock(OrderDetl orderDetl, List<PlaQty> plaQties) {
+
+        //绛涢�夋潯浠� 鎵瑰彿銆佸寘濂姐�佺啍鐐广�佺啍鎸囥�侀粍搴︺�佷笉閫忔槑搴�
+        Wrapper<Pla> wrapper = new EntityWrapper<Pla>();
+        if(!Cools.isEmpty(orderDetl.getBatch())){
+            wrapper.eq("batch",orderDetl.getBatch());
+        }
+        if(!Cools.isEmpty(orderDetl.getBrand())){
+            wrapper.eq("package_no",orderDetl.getBrand());
+        }
+        wrapper.eq("status","宸插叆搴�");
+        wrapper.ge("finger_melting", orderDetl.getFingerMeltingMin()).le("finger_melting", orderDetl.getFingerMeltingMax());
+        wrapper.ge("fusing_point", orderDetl.getFusingPointMin()).le("fusing_point", orderDetl.getFusingPointMax());
+        wrapper.ge("yellowness", orderDetl.getYellownessMin()).le("yellowness", orderDetl.getYellownessMax());
+        wrapper.ge("opacity", orderDetl.getOpacityMin()).le("opacity", orderDetl.getOpacityMax());
+        wrapper.orderBy("pakin_time");
+
+        List<Pla> plas = this.selectList(wrapper);
+        //鎬诲叡鐨勫嚭搴撶殑鏁伴噺(鎬昏鍑哄簱鏁伴噺-浣滀笟鏁伴噺)
+        if(Cools.isEmpty(orderDetl.getWorkQty())){
+            orderDetl.setWorkQty(0.0);
+        }
+        Double anfme = orderDetl.getAnfme() - orderDetl.getWorkQty();
+
+        for (Pla pla : plas){
+            //搴撳瓨鏁伴噺(鍓╀綑閲嶉噺-搴撳瓨浣滀笟鏁伴噺)
+            Double weightAnfme = pla.getWeightAnfme() - pla.getQtyAnfme();
+            if(weightAnfme <= 0){
+                continue;
+            }
+            //闇�瑕佸噺鍘绘娆″嚭搴撻瑙堝叾浠栬鍗曢渶鍑哄簱鐨勬暟閲�
+            for (PlaQty plaQty : plaQties){
+                if(Cools.eq(plaQty.getBatch(),pla.getBatch()) && Cools.eq(plaQty.getPackageNo(),pla.getPackageNo())){
+                    weightAnfme -= plaQty.getQtyAnfme();
+                }
+            }
+
+            if(weightAnfme > anfme){
+                //濡傛灉璇ユ壒娆″寘鍙峰墿浣欓噸閲忓ぇ浜庤鍗曟槑缁嗘暟閲忥紝鍒欒繑鍥瀙laQties
+                PlaQty plaQty = new PlaQty(pla.getBatch(),pla.getPackageNo(),orderDetl.getId(),orderDetl.getOrderId(),orderDetl.getOrderNo(),anfme,pla.getLocNo(),new Date());
+                anfme = 0.0;
+                plaQties.add(plaQty);
+                break;
+            }else {
+                PlaQty plaQty = new PlaQty(pla.getBatch(),pla.getPackageNo(),orderDetl.getId(),orderDetl.getOrderId(),orderDetl.getOrderNo(),weightAnfme,pla.getLocNo(),new Date());
+                anfme -= weightAnfme;
+                plaQties.add(plaQty);
+            }
+        }
+
+        if(anfme > 0){
+            PlaQty plaQty = new PlaQty(orderDetl.getBatch(),orderDetl.getBrand(),orderDetl.getId(),orderDetl.getOrderId(),orderDetl.getOrderNo(),anfme,null,new Date());
+            plaQties.add(plaQty);
+        }
+
+    }
 }
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index 72a0ebd..07d0788 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -48,6 +48,14 @@
         <result column="owner" property="owner" />
         <result column="payment" property="payment" />
         <result column="uuid" property="uuid" />
+        <result column="finger_melting_min" property="fingerMeltingMin" />
+        <result column="finger_melting_max" property="fingerMeltingMax" />
+        <result column="fusing_point_min" property="fusingPointMin" />
+        <result column="fusing_point_max" property="fusingPointMax" />
+        <result column="yellowness_min" property="yellownessMin" />
+        <result column="yellowness_max" property="yellownessMax" />
+        <result column="opacity_min" property="opacityMin" />
+        <result column="opacity_max" property="opacityMax" />
 
     </resultMap>
 
diff --git a/src/main/webapp/static/js/configType/configType.js b/src/main/webapp/static/js/configType/configType.js
new file mode 100644
index 0000000..f6afb15
--- /dev/null
+++ b/src/main/webapp/static/js/configType/configType.js
@@ -0,0 +1,387 @@
+var pageCurr;
+var roleId;
+var powerTreeData;
+
+layui.use(['table','laydate', 'form'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#configType',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/cinfigType/list/auth',
+        page: true,
+        limit: 16,
+        limits: [16, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        cols: [[
+            {type: 'checkbox', fixed: 'left'}
+            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
+            ,{field: 'type', align: 'center',title: '绫诲瀷'}
+            ,{field: 'value', align: 'center',title: '鍊�'}
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
+        ]],
+        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(role)', 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
+            },
+            done: function (res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+                limit();
+            }
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(configType)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id);
+        switch(obj.event) {
+            case 'addData':
+                layer.open({
+                    type: 2,
+                    title: '鏂板',
+                    maxmin: true,
+                    area: ['800px', top.detailHeight],
+                    shadeClose: false,
+                    content: 'configTypeAdd.html',
+                    success: function(layero, index){
+                    	clearFormVal(layer.getChildFrame('#detail', index));
+                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                    }
+                });
+                break;
+            case 'refreshData':
+                tableIns.reload({
+                    page: {
+                        curr: pageCurr
+                    }
+                });
+                limit();
+                break;
+            case 'deleteData':
+                var data = checkStatus.data;
+                var ids=[];
+                data.map(function (track) {
+                    ids.push(track.id);
+                });
+                if (ids.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾鍒犻櫎'+(ids.length===1?'姝�':ids.length)+'鏉℃暟鎹悧', function(){
+                        $.ajax({
+                            url: baseUrl+"/role/delete/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: {ids: ids},
+                            method: 'POST',
+                            traditional:true,
+                            success: function (res) {
+                                if (res.code === 200){
+                                    layer.closeAll();
+                                    tableReload(false);
+                                } else if (res.code === 403){
+                                    top.location.href = baseUrl+"/";
+                                } else {
+                                    layer.msg(res.msg)
+                                }
+                            }
+                        })
+                    });
+                }
+                break;
+            case 'exportData':
+                layer.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 = {
+                        'role': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/role/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)
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(role)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            // 璇︽儏
+            case 'detail':
+                layer.open({
+                    type: 2,
+                    title: '璇︽儏',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: false,
+                    content: 'role_detail.html',
+                    success: function(layero, index){
+                        setFormVal(layer.getChildFrame('#detail', index), data, true);
+                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+                        layer.getChildFrame('#data-detail-submit,#prompt', index).hide();
+                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                    }
+                });
+                break;
+            // 缂栬緫
+            case 'edit':
+                layer.open({
+                    type: 2,
+                    title: '淇敼',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: false,
+                    content: 'role_detail.html',
+                    success: function(layero, index){
+                        setFormVal(layer.getChildFrame('#detail', index), data, false);
+                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
+                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                    }
+                });
+                break;
+            case 'leader':
+                var param = top.reObject(data).leader;
+                if (param === undefined) {
+                    layer.msg("鏃犳暟鎹�");
+                } else {
+                   layer.open({
+                       type: 2,
+                       title: '璇︽儏',
+                       maxmin: true,
+                       area: [top.detailHeight, top.detailWidth],
+                       shadeClose: false,
+                       content: '../role/role_detail.html',
+                       success: function(layero, index){
+                           $.ajax({
+                               url: baseUrl+"/role/"+ param +"/auth",
+                               headers: {'token': localStorage.getItem('token')},
+                               method: 'GET',
+                               success: function (res) {
+                                   if (res.code === 200){
+                                       setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+                                       top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+                                       layer.getChildFrame('#data-detail-submit,#prompt', index).hide();
+                                       layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                                       layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                                   } else if (res.code === 403){
+                                       parent.location.href = "/";
+                                   }else {
+                                       layer.msg(res.msg)
+                                   }
+                               }
+                           })
+                       }
+                   });
+                }
+                break;
+            case 'power':
+                roleId = data.id;
+                layer.open({
+                    type: 2,
+                    title: data.name + ' 鏉冮檺鍒嗛厤',
+                    maxmin: true,
+                    area: [top.detailWidth/2, '85%'],
+                    shadeClose: false,
+                    content: 'role_power_detail.html',
+                    success: function(layero, index){
+                    }
+                });
+                break;
+        }
+    });
+
+    // 鏁版嵁淇敼鍔ㄤ綔
+    form.on('submit(edit)', function () {
+        var index = layer.load(1, {
+            shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+        });
+        var data = {
+            type: $('#type').val(),
+            value: $('#value').val(),
+        };
+        $.ajax({
+            url: baseUrl+"/configType/add/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: top.reObject(data),
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200){
+                    parent.layer.closeAll();
+                    tableReload(true);
+                    $("#data-detail :input").each(function () {
+                        $(this).val("");
+                    });
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                }else {
+                    layer.msg(res.msg)
+                }
+                layer.close(index);
+            }
+        })
+    });
+
+    // 鎼滅储鏍忔悳绱簨浠�
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 鎼滅储鏍忛噸缃簨浠�
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(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;
+    });
+    (child ? parent.tableIns : tableIns).reload({
+        where: searchData,
+        page: {
+            curr: pageCurr
+        },
+        done: function (res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            if (res.data.length === 0 && count !== 0) {
+                tableIns.reload({
+                    where: searchData,
+                    page: {
+                        curr: pageCurr-1
+                    }
+                });
+                pageCurr -= 1;
+            }
+            limit(child);
+        }
+    });
+}
+
+function setFormVal(el, data, showImg) {
+    for (var val in data) {
+        var find = el.find(":input[id='" + val + "']");
+        find.val(data[val]);
+        if (showImg){
+            var next = find.next();
+            if (next.get(0)){
+                if (next.get(0).localName === "img") {
+                    find.hide();
+                    next.attr("src", data[val]);
+                    next.show();
+                }
+            }
+        }
+    }
+}
+
+function clearFormVal(el) {
+    $(':input', el)
+        .val('')
+        .removeAttr('checked')
+        .removeAttr('selected');
+}
+
+function detailScreen(index) {
+    var detail = layer.getChildFrame('#data-detail', index);
+    var height = detail.height()+60;
+    if (height > ($(window).height()*0.9)) {
+        height = ($(window).height()*0.9);
+    }
+    layer.style(index, {
+        top: (($(window).height()-height)/3)+"px",
+        height: height+'px'
+    });
+    $(".layui-layer-shade").remove();
+}
+
+$('body').keydown(function () {
+    if (event.keyCode === 13) {
+        $("#search").click();
+    }
+});
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index b3f59d9..0d267c2 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -190,22 +190,24 @@
                         cellMinWidth: 100,
                         cols: [[
                             {type: 'numbers'},
-                            {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
-                            {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160},
-
-                            {field: 'batch', title: '鎵瑰彿'},
+                            // {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
+                            // {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160},
+                            //
+                            // {field: 'batch', title: '鎵瑰彿'},
+                            {field: 'batch', title: '鎵规'},
+                            {field: 'brand', title: '鐗屽彿'},
+                            {field: 'fingerMeltingMin', title: '鏈�灏忕啍鎸�'},
+                            {field: 'fingerMeltingMax', title: '鏈�澶х啍鎸�'},
+                            {field: 'fusingPointMin', title: '鏈�灏忕啍鐐�'},
+                            {field: 'fusingPointMax', title: '鏈�澶х啍鐐�'},
+                            {field: 'yellownessMin', title: '鏈�灏忛粍搴�'},
+                            {field: 'yellownessMax', title: '鏈�澶ч粍搴�'},
+                            {field: 'opacityMin', title: '鏈�灏忎笉閫忔槑搴�'},
+                            {field: 'opacityMax', title: '鏈�澶т笉閫忔槑搴�'},
                             {field: 'anfme', title: '鏁伴噺'},
                             {field: 'workQty', title: '浣滀笟鏁伴噺'},
                             {field: 'qty', title: '瀹屾垚鏁伴噺', style: 'font-weight: bold'},
-                            // {field: 'unit', title: '鍗曚綅'},
-                            // {
-                            //     field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) {
-                            //         return util.toDateString(d.createTime);
-                            //     },  width: 180
-                            // },
-                            // {field: 'inQty', title: '宸插叆搴撻噺'},
-                            // {field: 'color', title: '棰滆壊'},
-                            // {field: 'specs', title: '瑙勬牸'},
+
                         ]],
                         request: {
                             pageName: 'curr',
@@ -260,14 +262,18 @@
                     let nList = admin.util.deepClone(xxDataList);
                     console.log(nList);
                     for (let xi = 0; xi < nList.length; xi++) {
+                        if(!nList[xi].anfme){
+                            layer.msg('鏄庣粏鏁伴噺涓嶅悎娉�', {icon: 2});
+                            return false;
+                        }
                         if (nList[xi].anfme <= 0){
                             layer.msg('鏄庣粏鏁伴噺涓嶅悎娉�', {icon: 2});
                             return false;
                         }
-                        if (nList[xi].batch == null || nList[xi].batch == ""){
-                            layer.msg('鎵规涓嶅悎娉�', {icon: 2});
-                            return false;
-                        }
+                        // if (nList[xi].batch == null || nList[xi].batch == ""){
+                        //     layer.msg('鎵规涓嶅悎娉�', {icon: 2});
+                        //     return false;
+                        // }
                         if (nList[xi].anfme < nList[xi].workQty){
                             layer.msg('鏁伴噺涓嶈兘灏忎簬宸蹭綔涓氭暟閲�', {icon: 2});
                             return false;
@@ -312,14 +318,24 @@
                     cellMinWidth: 100,
                     cols: [[
                         {type: 'numbers', title: '#'},
-                        {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
-                        {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
-                        {field: 'specs', title: '瑙勬牸'},
+                        // {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
+                        // {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
+                        // {field: 'specs', title: '瑙勬牸'},
                         {field: 'batch', title: '鎵规', edit: true},
-                        {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
+                        {field: 'brand', title: '鐗屽彿', edit: true},
+                        {field: 'fingerMeltingMin', title: '鏈�灏忕啍鎸�', edit: true},
+                        {field: 'fingerMeltingMax', title: '鏈�澶х啍鎸�', edit: true},
+                        {field: 'fusingPointMin', title: '鏈�灏忕啍鐐�', edit: true},
+                        {field: 'fusingPointMax', title: '鏈�澶х啍鐐�', edit: true},
+                        {field: 'yellownessMin', title: '鏈�灏忛粍搴�', edit: true},
+                        {field: 'yellownessMax', title: '鏈�澶ч粍搴�', edit: true},
+                        {field: 'opacityMin', title: '鏈�灏忎笉閫忔槑搴�', edit: true},
+                        {field: 'opacityMax', title: '鏈�澶т笉閫忔槑搴�', edit: true},
+
+                        {field: 'anfme', title: '閲嶉噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
 
                         // {field: 'payment', title: '璐х墿鐘舵��',align: 'center', templet: '#payment'},
-                        {field: 'qty', title: '浣滀笟鏁伴噺',  minWidth: 100, width: 100},
+                        {field: 'qty', title: '浣滀笟閲嶉噺',  minWidth: 100, width: 100},
                         // {field: 'unit', title: '鍗曚綅', width: 80},
                         {field: 'memo', title: '澶囨敞' , edit: true},
                         {align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'}
@@ -430,6 +446,9 @@
 
                 // 鏄剧ず娣诲姞鏄庣粏琛ㄥ崟寮圭獥
                 function showEditModel2(exp) {
+                    xxDataList.push({});
+                    insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                    return;
                     admin.open({
                         type: 1,
                         offset: '150px',
diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js
index 21099b0..6c3bd2e 100644
--- a/src/main/webapp/static/js/order/out.js
+++ b/src/main/webapp/static/js/order/out.js
@@ -30,15 +30,23 @@
         height: 'full-120',
         where: {order_id: 9999999999},
         cols: [[
-            {type: 'checkbox'}
-            ,{type: 'numbers', title: '#'}
-            ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl', width: 160}
-            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜', width: 160}
-            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', width: 200}
+            {type: 'checkbox'},
+            {type: 'numbers', title: '#'},
+            {field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl'},
+            {field: 'fingerMeltingMin', title: '鏈�灏忕啍鎸�'},
+            {field: 'fingerMeltingMax', title: '鏈�澶х啍鎸�'},
+            {field: 'fusingPointMin', title: '鏈�灏忕啍鐐�'},
+            {field: 'fusingPointMax', title: '鏈�澶х啍鐐�'},
+            {field: 'yellownessMin', title: '鏈�灏忛粍搴�'},
+            {field: 'yellownessMax', title: '鏈�澶ч粍搴�'},
+            {field: 'opacityMin', title: '鏈�灏忎笉閫忔槑搴�'},
+            {field: 'opacityMax', title: '鏈�澶т笉閫忔槑搴�'},
+            // ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜', width: 160}
+            // ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', width: 200}
             ,{field: 'anfme', align: 'center',title: '鎬绘暟閲�', style: 'font-weight: bold'}
             ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'}
-            ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
-            ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜', hide: true}
+            // ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
+            // ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜', hide: true}
             ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 160}
         ]],
         request: {
@@ -144,13 +152,16 @@
                                 cols: [[
                                     // {type: 'checkbox', merge: ['orderNo']},
                                     {field: 'orderNo', title: '鍗曟嵁缂栧彿', merge: true, align: 'center'},
-                                    {field: 'title', title: '鍟嗗搧', merge: true, align: 'center', width: 350},
-                                    {field: 'hostId', title: 'id', align: 'center'},
+                                    {field: 'batch', title: '鎵瑰彿', merge: true, align: 'center'},
+                                    {field: 'packageNo', title: '鍖呭彿', align: 'center'},
+                                    {field: 'orderDetlId', title: 'id', align: 'center',hide:true},
+                                    {field: 'qtyAnfme', title: '鍑哄簱鏁伴噺', align: 'center'},
+                                    {field: 'locNo', title: '搴撲綅鍙�', align: 'center',templet: '#locNoTpl'},
                                     // { title: '鍓╀綑闇�姹傞噺', align: 'center' , width: 120, toolbar: '#checkNeedQty'},
                                     // {field: 'anfme', title: '瀹為檯鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
-                                    { title: '鍑哄簱鏁伴噺', align: 'center',field: 'anfme', width: 90, style: 'font-weight: bold; color: red'},
-                                    {field: 'locNo', title: '璐т綅', align: 'center', width: 100, templet: '#locNoTpl'},
-                                    {field: 'staNos', align: 'center', title: '鍑哄簱绔�', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
+                                    // { title: '鍑哄簱鏁伴噺', align: 'center',field: 'anfme', width: 90, style: 'font-weight: bold; color: red'},
+                                    // {field: 'locNo', title: '璐т綅', align: 'center', width: 100, templet: '#locNoTpl'},
+                                    // {field: 'staNos', align: 'center', title: '鍑哄簱绔�', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
                                     // {type: 'checkbox', merge: ['locNo']},
                                 ]],
                                 done: function (res) {
diff --git a/src/main/webapp/static/js/picking/picking.js b/src/main/webapp/static/js/picking/picking.js
index fbca122..2f1f451 100644
--- a/src/main/webapp/static/js/picking/picking.js
+++ b/src/main/webapp/static/js/picking/picking.js
@@ -131,8 +131,10 @@
                                 ,{field: 'docNum', align: 'center',title: '鎷h揣鍗曞彿'}
                                 ,{field: 'uuid', align: 'center',title: 'uuid'}
                                 ,{field: 'locNo', align: 'center',title: '搴撲綅'}
-                                ,{field: 'matnr', align: 'center',title: '鐗╂枡鍙�'}
-                                ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'}
+                                ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
+                                ,{field: 'barcode', align: 'center',title: '鍖呭彿'}
+                                // ,{field: 'matnr', align: 'center',title: '鐗╂枡鍙�'}
+                                // ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'}
                                 ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
                                 ,{field: 'createTime$', align: 'center',title: '鎿嶄綔鏃堕棿'}
                                 ,{field: 'count', align: 'center',title: '瀹屾垚鏁�'}
@@ -296,9 +298,9 @@
                             var className = templateDom.attr("class");
 
                             if (className === 'template-barcode') {
-                                json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2&param=" + (json.data[i].docNum+";"+json.data[i].matnr+";"+json.data[i].batch+";"+json.data[i].anfme+";"+json.data[i].locNo+";");
+                                json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2&param=" + (json.data[i].docNum+";"+json.data[i].matnr+";"+json.data[i].batch+";"+json.data[i].anfme+";"+json.data[i].locNo+";"+json.data[i].barcode+";"+json.data[i].nodeId+";"+json.data[i].wrkNo+";");
                             } else {
-                                json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2&param=" + (json.data[i].docNum+";"+json.data[i].matnr+";"+json.data[i].batch+";"+json.data[i].anfme+";"+json.data[i].locNo+";");
+                                json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2&param=" + (json.data[i].docNum+";"+json.data[i].matnr+";"+json.data[i].batch+";"+json.data[i].anfme+";"+json.data[i].locNo+";"+json.data[i].barcode+";"+json.data[i].nodeId+";"+json.data[i].wrkNo+";");
                             }
                         }
                         var tpl = templateDom.html();
diff --git a/src/main/webapp/static/js/pla/plaDetl.js b/src/main/webapp/static/js/pla/plaDetl.js
index fc9080d..6569d16 100644
--- a/src/main/webapp/static/js/pla/plaDetl.js
+++ b/src/main/webapp/static/js/pla/plaDetl.js
@@ -25,6 +25,10 @@
         ,{field: 'yellowness', align: 'center',title: '榛勫害',  hide:true}
         ,{field: 'opacity', align: 'center',title: '涓嶉�忔槑搴︼紙0-100%锛�', hide:true}
         ,{field: 'water', align: 'center',title: '姘村垎锛坧pm锛�', hide:true}
+        ,{field: 'l', align: 'center',title: 'l鍊�', edit: true}
+        ,{field: 'a', align: 'center',title: 'a鍊�', edit: true}
+        ,{field: 'b', align: 'center',title: 'b鍊�', edit: true}
+        ,{field: 'fillIn', align: 'center',title: '濉厖(%)', edit: true}
         ,{field: 'massState', align: 'center',title: '璐ㄩ噺鐘舵��', hide:true}
         ,{field: 'problem', align: 'center',title: '璐ㄩ噺闂', hide:true}
         ,{field: 'stash', align: 'center',title: '浠撳簱', edit:true}
diff --git a/src/main/webapp/static/js/pla/productionInfo.js b/src/main/webapp/static/js/pla/productionInfo.js
index 0cd7b86..db2fd0a 100644
--- a/src/main/webapp/static/js/pla/productionInfo.js
+++ b/src/main/webapp/static/js/pla/productionInfo.js
@@ -94,7 +94,7 @@
         let dataOld = [];
         for(var i=0; i<data.length; i++){
             if(data[i].LAY_CHECKED){
-                if(!data[i].batch){
+                if(!data[i].batch || !data[i].packageNo || !data[i].brand || !data[i].weight || !data[i].workshop || !data[i].line || !data[i].packageType || !data[i].zpalletType){
                     layer.msg("鏈夋湭濉啓瀛楁");
                     return;
                 }
@@ -104,6 +104,10 @@
                 dataOld.push(data[i]);
             }
         }
+        if(!dataSave || dataSave.length < 1){
+            layer.msg("鏈嬀閫夋彁浜ら」锛屾棤娉曟彁浜�");
+            return;
+        }
         $.ajax({
             url: baseUrl+"/pla/add/auth",
             headers: {'token': localStorage.getItem('token')},
diff --git a/src/main/webapp/static/js/pla/qualityInfo.js b/src/main/webapp/static/js/pla/qualityInfo.js
index d79d1a2..f8bcf7c 100644
--- a/src/main/webapp/static/js/pla/qualityInfo.js
+++ b/src/main/webapp/static/js/pla/qualityInfo.js
@@ -25,6 +25,10 @@
         ,{field: 'yellowness', align: 'center',title: '榛勫害', edit: true}
         ,{field: 'opacity', align: 'center',title: '涓嶉�忔槑搴︼紙0-100%锛�', edit: true}
         ,{field: 'water', align: 'center',title: '姘村垎锛坧pm锛�', edit: true}
+        ,{field: 'l', align: 'center',title: 'l鍊�', edit: true}
+        ,{field: 'a', align: 'center',title: 'a鍊�', edit: true}
+        ,{field: 'b', align: 'center',title: 'b鍊�', edit: true}
+        ,{field: 'fillIn', align: 'center',title: '濉厖(%)', edit: true}
         ,{field: 'massState', align: 'center',title: '璐ㄩ噺鐘舵��', edit: true}
         ,{field: 'problem', align: 'center',title: '璐ㄩ噺闂', edit: true}
     ];
diff --git a/src/main/webapp/views/configType/configType.html b/src/main/webapp/views/configType/configType.html
new file mode 100644
index 0000000..c4723d9
--- /dev/null
+++ b/src/main/webapp/views/configType/configType.html
@@ -0,0 +1,59 @@
+<!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/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+    <div class="layui-inline" >
+        <div class="layui-input-inline cool-auto-complete">
+            <input class="layui-input" type="text" name="type" placeholder="绫诲瀷" autocomplete="off">
+            <div class="cool-auto-complete-window">
+                <input class="cool-auto-complete-window-input" data-key="roleQueryByleader" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                <select class="cool-auto-complete-window-select" data-key="roleQueryByleaderSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                </select>
+            </div>
+        </div>
+    </div>
+    <!-- 寰呮坊鍔� -->
+    <div id="data-search-btn" class="layui-btn-container layui-form-item">
+        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+    </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<table class="layui-hide" id="configType" lay-filter="configType"></table>
+<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" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-xs layui-btn-warm" lay-event="power">鍒犻櫎</a>
+    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</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/configType/configType.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/configType/configTypeAdd.html b/src/main/webapp/views/configType/configTypeAdd.html
new file mode 100644
index 0000000..d7ee719
--- /dev/null
+++ b/src/main/webapp/views/configType/configTypeAdd.html
@@ -0,0 +1,50 @@
+<!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/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+    <form id="detail" class="layui-form">
+        <div class="layui-inline"  style="width:45%;">
+            <label class="layui-form-label"><span class="not-null">*</span>绫汇��銆�鍨嬶細</label>
+            <div class="layui-input-inline">
+                <input id="type" class="layui-input" type="text" lay-verify="required" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:45%;">
+            <label class="layui-form-label"><span class="not-null">*</span>鍊硷細</label>
+            <div class="layui-input-inline">
+                <input id="value" class="layui-input" type="text" lay-verify="required" >
+            </div>
+        </div>
+
+        <hr class="layui-bg-gray">
+
+        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+            <div id="data-detail-submit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">淇濆瓨</div>
+            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">鍏抽棴</div>
+        </div>
+
+<!--        <div id="prompt">-->
+<!--            娓╅Θ鎻愮ず锛氳浠旂粏濉啓鐩稿叧淇℃伅锛�<span class="extrude"><span class="not-null">*</span> 涓哄繀濉�夐」銆�</span>-->
+<!--        </div>-->
+    </form>
+</div>
+</body>
+<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/configType/configType.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/order/order.html b/src/main/webapp/views/order/order.html
index 7644d67..54446b4 100644
--- a/src/main/webapp/views/order/order.html
+++ b/src/main/webapp/views/order/order.html
@@ -178,7 +178,7 @@
     <form id="matEditForm" lay-filter="matEditForm" class="layui-form model-form">
         <input name="experimentId" type="hidden"/>
         <div class="layui-form-item" style="float: left">
-            <label class="layui-form-label">鐗╂枡 - 澶氶��</label>
+            <label class="layui-form-label">鎵瑰彿 - 澶氶��</label>
             <div class="layui-input-block">
                 <div id="mat" name="mat">
                 </div>
diff --git a/src/main/webapp/views/order/out.html b/src/main/webapp/views/order/out.html
index 4e7abfe..3ee53da 100644
--- a/src/main/webapp/views/order/out.html
+++ b/src/main/webapp/views/order/out.html
@@ -196,7 +196,7 @@
 
 <script type="text/html" id="locNoTpl">
     <span name="locNo"
-          {{# if( d.lack === false){ }}
+          {{# if( d.locNo){ }}
           class="layui-badge layui-badge-green" >{{d.locNo}}</span>
     {{# } else { }}
     class="layui-badge layui-badge-red" >搴撳瓨涓嶈冻</span>
diff --git a/src/main/webapp/views/picking/picking.html b/src/main/webapp/views/picking/picking.html
index 32f447f..c9a5cef 100644
--- a/src/main/webapp/views/picking/picking.html
+++ b/src/main/webapp/views/picking/picking.html
@@ -163,10 +163,10 @@
     <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;">
         <tr style="height: 25px;font-size: 15px;">
             <td align="left" scope="col" colspan="1" style="width: 100px;">
-                鏂欏彿:
+                <!-- 鏂欏彿: -->鎵瑰彿
             </td>
             <td>
-                {{this.matnr}}
+                <!-- {{this.matnr}} -->{{this.batch}}
             </td>
             <td align="left" scope="col" colspan="1" rowspan="4">
                 <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" width="100px">
@@ -174,10 +174,10 @@
         </tr>
         <tr style="height: 25px;font-size: 15px;">
             <td align="left" scope="col" colspan="1" style="width: 100px;">
-                鍟嗗搧鍚�:
+<!--                鍟嗗搧鍚�:-->鍖呭彿
             </td>
             <td>
-                {{this.maktx}}
+<!--                {{this.maktx}}--> {{this.barcode}}
             </td>
         </tr>
         <tr style="height: 25px; font-size: 15px;">
diff --git a/src/main/webapp/views/pla/plaDetl.html b/src/main/webapp/views/pla/plaDetl.html
index 98ae191..1c0db59 100644
--- a/src/main/webapp/views/pla/plaDetl.html
+++ b/src/main/webapp/views/pla/plaDetl.html
@@ -62,7 +62,24 @@
             transition: 0.4s;
             cursor: pointer;
         }
+        .function-btn1 {
+            font-size: 16px;
+            padding: 1px 1px 1px 1px;
+            width: 150px;
+            height: 40px;
+            border-color: #2b425b;
+            border-radius: 4px;
+            border-width: 1px;
+            background: none;
+            border-style: solid;
+            transition: 0.4s;
+            cursor: pointer;
+        }
         .function-btn:hover {
+            background-color: #2b425b;
+            color: #fff;
+        }
+        .function-btn1:hover {
             background-color: #2b425b;
             color: #fff;
         }
@@ -93,6 +110,10 @@
 <!-- 鍔熻兘鍖� -->
 <div class="function-area">
     <button id="rework" style="alignment: right" class="function-btn">閲嶅仛</button>
+    <button id="updateZpallet" style="alignment: right" class="function-btn1">鎹㈠寘瑁�/鎵樼洏/缂犺啘</button>  |
+    <button id="sellout" style="alignment: right" class="function-btn">鍗栧嚭</button>
+    <button id="pickup" style="alignment: right" class="function-btn">鍙栬揣</button>  |
+    <button id="returned" style="alignment: right" class="function-btn">閫�鍥�</button>
 </div>
 
 <!-- 琛� -->

--
Gitblit v1.9.1