From 2006477f294b65db6b4836ce988b4767739a43a1 Mon Sep 17 00:00:00 2001
From: 18516761980 <4761516tqsxp>
Date: 星期二, 04 一月 2022 08:31:17 +0800
Subject: [PATCH] #单据类型区分入库单和出库单

---
 src/main/webapp/static/js/receive/receive.js                                |  547 ++++++++
 src/main/java/zy/cloud/wms/manager/service/ReceiveService.java              |   23 
 src/main/webapp/views/receiveDetl/receiveDetl_detail.html                   |  202 +++
 src/main/webapp/views/receive/receive.html                                  |  261 +++
 src/main/resources/mapper/ReceiveMapper.xml                                 |  105 +
 src/main/webapp/views/order/order.html                                      |    1 
 src/main/java/zy/cloud/wms/manager/controller/DocTypeController.java        |    7 
 src/main/webapp/views/docType/docType_detail.html                           |   10 
 src/main/webapp/views/receiveDetl/receiveDetl.html                          |   91 +
 version/db/wms_saas20220104.bak                                             |    0 
 src/main/java/zy/cloud/wms/manager/controller/ReceiveDetlController.java    |  133 ++
 src/main/java/zy/cloud/wms/manager/mapper/ReceiveMapper.java                |   22 
 src/main/java/zy/cloud/wms/manager/service/impl/ReceiveDetlServiceImpl.java |   18 
 src/main/java/zy/cloud/wms/manager/service/ReceiveDetlService.java          |   12 
 src/main/java/zy/cloud/wms/manager/service/impl/ReceiveServiceImpl.java     |   55 
 src/main/java/zy/cloud/wms/manager/mapper/ReceiveDetlMapper.java            |   17 
 src/main/webapp/views/receive/matQueryBox.html                              |  200 +++
 src/main/java/zy/cloud/wms/manager/controller/ReceiveController.java        |  183 ++
 src/main/java/zy/cloud/wms/manager/entity/ReceiveDetl.java                  |  470 +++++++
 src/main/webapp/static/js/receiveDetl/receiveDetl.js                        |  530 ++++++++
 src/main/java/zy/cloud/wms/manager/entity/Receive.java                      |  772 +++++++++++
 src/main/webapp/static/js/docType/docType.js                                |    4 
 src/main/webapp/views/receive/matQuery.html                                 |  214 +++
 src/main/resources/mapper/ReceiveDetlMapper.xml                             |   43 
 src/main/webapp/static/js/order/order.js                                    |    5 
 25 files changed, 3,925 insertions(+), 0 deletions(-)

diff --git a/src/main/java/zy/cloud/wms/manager/controller/DocTypeController.java b/src/main/java/zy/cloud/wms/manager/controller/DocTypeController.java
index f84a846..61846d3 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/DocTypeController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/DocTypeController.java
@@ -66,6 +66,13 @@
     @RequestMapping(value = "/docType/add/auth")
     @ManagerAuth
     public R add(DocType docType) {
+        if(Cools.isEmpty(docType) || null==docType.getDocId()) {
+            return R.error();
+        }
+        DocType one = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_id", docType.getDocId()));
+        if(!Cools.isEmpty(one)){
+            return R.error("鍗曟嵁缂栫爜宸插瓨鍦�");
+        }
         docType.setHostId(getHostId());
         docType.setCreateBy(getUserId());
         docType.setCreateTime(new Date());
diff --git a/src/main/java/zy/cloud/wms/manager/controller/ReceiveController.java b/src/main/java/zy/cloud/wms/manager/controller/ReceiveController.java
new file mode 100644
index 0000000..ced059a
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/controller/ReceiveController.java
@@ -0,0 +1,183 @@
+package zy.cloud.wms.manager.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.core.exception.CoolException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+import zy.cloud.wms.common.config.AdminInterceptor;
+import zy.cloud.wms.common.utils.BarcodeUtils;
+import zy.cloud.wms.common.utils.QrCode;
+import zy.cloud.wms.common.web.BaseController;
+import zy.cloud.wms.manager.entity.Receive;
+import zy.cloud.wms.manager.service.ReceiveService;
+
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+public class ReceiveController extends BaseController {
+
+    @Autowired
+    private ReceiveService receiveService;
+
+    @RequestMapping(value = "/receive/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(receiveService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/receive/list/auth")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<Receive> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        hostEq(wrapper);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        else {
+            wrapper.orderBy("update_time", false);
+        }
+        return R.ok(receiveService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private void convert(Map<String, Object> map, EntityWrapper wrapper){
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (val.contains(RANGE_TIME_LINK)){
+                String[] dates = val.split(RANGE_TIME_LINK);
+                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else {
+                wrapper.like(entry.getKey(), val);
+            }
+        }
+    }
+
+    @RequestMapping(value = "/receive/add/auth")
+    @ManagerAuth
+    public R add(Receive receive) {
+        receiveService.insert(receive);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/receive/update/auth")
+	@ManagerAuth
+    public R update(Receive receive){
+        if (Cools.isEmpty(receive) || null==receive.getId()){
+            return R.error();
+        }
+        receiveService.updateById(receive);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/receive/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam String param){
+        List<Receive> list = JSONArray.parseArray(param, Receive.class);
+        if (Cools.isEmpty(list)){
+            return R.error();
+        }
+        for (Receive entity : list){
+            receiveService.delete(new EntityWrapper<>(entity));
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/receives/delete/auth")
+    @ManagerAuth
+    @Transactional
+    public R deleteBatch(@RequestParam(value = "ids[]") Long[] ids){
+        if (Cools.isEmpty((Object) ids)){
+            return R.error();
+        }
+        for (Long id : ids){
+            if (!receiveService.deleteById(id)) {
+                throw new CoolException("鏈嶅姟鍣ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+            }
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/receive/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<Receive> wrapper = new EntityWrapper<>();
+        hostEq(wrapper);
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("order"));
+        convert(map, wrapper);
+        List<Receive> list = receiveService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/receiveQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<Receive> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        hostEq(wrapper);
+        Page<Receive> page = receiveService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (Receive receive : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", receive.getId());
+            map.put("value", receive.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/receive/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<Receive> wrapper = new EntityWrapper<Receive>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != receiveService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(Receive.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/receive/code/auth")
+//    @ManagerAuth(memo = "鏉″舰鐮佽幏鍙�(type:1(鏉″舰鐮�);2(浜岀淮鐮�)")
+    public R barcode(@RequestParam(defaultValue = "1") Integer type
+                    ,@RequestParam String param
+                    ,HttpServletResponse response) throws Exception {
+        AdminInterceptor.cors(response);
+        if (Cools.isEmpty(param)){
+            return R.parse(BaseRes.EMPTY);
+        }
+        BufferedImage img;
+        if (type == 1) {
+            img = BarcodeUtils.encode(param);
+        } else {
+            img = QrCode.createImg(param);
+        }
+        if (!ImageIO.write(img, "jpg", response.getOutputStream())) {
+            throw new IOException("Could not write an image of format jpg");
+        }
+        response.getOutputStream().flush();
+        response.getOutputStream().close();
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/zy/cloud/wms/manager/controller/ReceiveDetlController.java b/src/main/java/zy/cloud/wms/manager/controller/ReceiveDetlController.java
new file mode 100644
index 0000000..c69d7d2
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/controller/ReceiveDetlController.java
@@ -0,0 +1,133 @@
+package zy.cloud.wms.manager.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import zy.cloud.wms.common.web.BaseController;
+import zy.cloud.wms.manager.entity.ReceiveDetl;
+import zy.cloud.wms.manager.service.ReceiveDetlService;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+public class ReceiveDetlController extends BaseController {
+
+    @Autowired
+    private ReceiveDetlService receiveDetlService;
+
+    @RequestMapping(value = "/receiveDetl/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(receiveDetlService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/receiveDetl/list/auth")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<ReceiveDetl> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        hostEq(wrapper);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(receiveDetlService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private void convert(Map<String, Object> map, EntityWrapper 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.eq(entry.getKey(), val);
+            }
+        }
+    }
+
+    @RequestMapping(value = "/receiveDetl/add/auth")
+    @ManagerAuth
+    public R add(ReceiveDetl receiveDetl) {
+        receiveDetlService.insert(receiveDetl);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/receiveDetl/update/auth")
+	@ManagerAuth
+    public R update(ReceiveDetl receiveDetl){
+        if (Cools.isEmpty(receiveDetl) || null==receiveDetl.getId()){
+            return R.error();
+        }
+        receiveDetlService.updateById(receiveDetl);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/receiveDetl/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam String param){
+        List<ReceiveDetl> list = JSONArray.parseArray(param, ReceiveDetl.class);
+        if (Cools.isEmpty(list)){
+            return R.error();
+        }
+        for (ReceiveDetl entity : list){
+            receiveDetlService.delete(new EntityWrapper<>(entity));
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/receiveDetl/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        EntityWrapper<ReceiveDetl> wrapper = new EntityWrapper<>();
+        hostEq(wrapper);
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        Map<String, Object> map = excludeTrash(param.getJSONObject("orderDetl"));
+        convert(map, wrapper);
+        List<ReceiveDetl> list = receiveDetlService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/receiveDetlQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<ReceiveDetl> wrapper = new EntityWrapper<>();
+        wrapper.like("id", condition);
+        hostEq(wrapper);
+        Page<ReceiveDetl> page = receiveDetlService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (ReceiveDetl receiveDetl : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", receiveDetl.getId());
+            map.put("value", receiveDetl.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/receiveDetl/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<ReceiveDetl> wrapper = new EntityWrapper<ReceiveDetl>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != receiveDetlService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(ReceiveDetl.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/zy/cloud/wms/manager/entity/Receive.java b/src/main/java/zy/cloud/wms/manager/entity/Receive.java
new file mode 100644
index 0000000..65e4f83
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/entity/Receive.java
@@ -0,0 +1,772 @@
+package zy.cloud.wms.manager.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import io.swagger.annotations.ApiModelProperty;
+import zy.cloud.wms.manager.service.CstmrService;
+import zy.cloud.wms.manager.service.DocTypeService;
+import zy.cloud.wms.manager.service.ItemService;
+import zy.cloud.wms.manager.service.OrderSettleService;
+import zy.cloud.wms.system.entity.Host;
+import zy.cloud.wms.system.entity.User;
+import zy.cloud.wms.system.service.HostService;
+import zy.cloud.wms.system.service.UserService;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@TableName("man_receive")
+public class Receive implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鎵�灞為」鐩�
+     */
+    @ApiModelProperty(value= "鎵�灞為」鐩�")
+    @TableField("host_id")
+    private Long hostId;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    private String uuid;
+
+    /**
+     * 璁㈠崟缂栧彿
+     */
+    @ApiModelProperty(value= "璁㈠崟缂栧彿")
+    @TableField("order_no")
+    private String orderNo;
+
+    /**
+     * 鍗曟嵁鏃ユ湡
+     */
+    @ApiModelProperty(value= "鍗曟嵁鏃ユ湡")
+    @TableField("order_time")
+    private String orderTime;
+
+    /**
+     * 鍗曟嵁绫诲瀷
+     */
+    @ApiModelProperty(value= "鍗曟嵁绫诲瀷")
+    @TableField("doc_type")
+    private Long docType;
+
+    /**
+     * 椤圭洰缂栧彿
+     */
+    @ApiModelProperty(value= "椤圭洰缂栧彿")
+    @TableField("item_id")
+    private Long itemId;
+
+    /**
+     * 椤圭洰鍚嶇О
+     */
+    @ApiModelProperty(value= "椤圭洰鍚嶇О")
+    @TableField("item_name")
+    private String itemName;
+
+    /**
+     * 璋冩嫧椤圭洰缂栧彿
+     */
+    @ApiModelProperty(value= "璋冩嫧椤圭洰缂栧彿")
+    @TableField("allot_item_id")
+    private Long allotItemId;
+
+    /**
+     * 鍒濆绁ㄦ嵁鍙�
+     */
+    @ApiModelProperty(value= "鍒濆绁ㄦ嵁鍙�")
+    @TableField("def_number")
+    private String defNumber;
+
+    /**
+     * 绁ㄦ嵁鍙�
+     */
+    @ApiModelProperty(value= "绁ㄦ嵁鍙�")
+    private String number;
+
+    /**
+     * 瀹㈡埛缂栧彿
+     */
+    @ApiModelProperty(value= "瀹㈡埛缂栧彿")
+    private Long cstmr;
+
+    /**
+     * 瀹㈡埛
+     */
+    @ApiModelProperty(value= "瀹㈡埛")
+    @TableField("cstmr_name")
+    private String cstmrName;
+
+    /**
+     * 鑱旂郴鏂瑰紡
+     */
+    @ApiModelProperty(value= "鑱旂郴鏂瑰紡")
+    private String tel;
+
+    /**
+     * 鎿嶄綔浜哄憳
+     */
+    @ApiModelProperty(value= "鎿嶄綔浜哄憳")
+    @TableField("oper_memb")
+    private String operMemb;
+
+    /**
+     * 鍚堣閲戦
+     */
+    @ApiModelProperty(value= "鍚堣閲戦")
+    @TableField("total_fee")
+    private Double totalFee;
+
+    /**
+     * 浼樻儬鐜�
+     */
+    @ApiModelProperty(value= "浼樻儬鐜�")
+    private Double discount;
+
+    /**
+     * 浼樻儬閲戦
+     */
+    @ApiModelProperty(value= "浼樻儬閲戦")
+    @TableField("discount_fee")
+    private Double discountFee;
+
+    /**
+     * 閿�鍞垨閲囪喘璐圭敤鍚堣
+     */
+    @ApiModelProperty(value= "閿�鍞垨閲囪喘璐圭敤鍚堣")
+    @TableField("other_fee")
+    private Double otherFee;
+
+    /**
+     * 瀹炰粯閲戦
+     */
+    @ApiModelProperty(value= "瀹炰粯閲戦")
+    @TableField("act_fee")
+    private Double actFee;
+
+    /**
+     * 浠樻绫诲瀷 1: 鐜伴噾  2: 璁拌处
+     */
+    @ApiModelProperty(value= "浠樻绫诲瀷 1: 鐜伴噾  2: 璁拌处  ")
+    @TableField("pay_type")
+    private Integer payType;
+
+    /**
+     * 涓氬姟鍛�
+     */
+    @ApiModelProperty(value= "涓氬姟鍛�")
+    private String salesman;
+
+    /**
+     * 缁撶畻澶╂暟
+     */
+    @ApiModelProperty(value= "缁撶畻澶╂暟")
+    @TableField("account_day")
+    private Integer accountDay;
+
+    /**
+     * 閭垂鏀粯绫诲瀷 1: 鍦ㄧ嚎鏀粯  2: 璐у埌浠樻
+     */
+    @ApiModelProperty(value= "閭垂鏀粯绫诲瀷 1: 鍦ㄧ嚎鏀粯  2: 璐у埌浠樻  ")
+    @TableField("post_fee_type")
+    private Integer postFeeType;
+
+    /**
+     * 閭垂
+     */
+    @ApiModelProperty(value= "閭垂")
+    @TableField("post_fee")
+    private Double postFee;
+
+    /**
+     * 浠樻鏃堕棿
+     */
+    @ApiModelProperty(value= "浠樻鏃堕棿")
+    @TableField("pay_time")
+    private Date payTime;
+
+    /**
+     * 鍙戣揣鏃堕棿
+     */
+    @ApiModelProperty(value= "鍙戣揣鏃堕棿")
+    @TableField("send_time")
+    private Date sendTime;
+
+    /**
+     * 鐗╂祦鍚嶇О
+     */
+    @ApiModelProperty(value= "鐗╂祦鍚嶇О")
+    @TableField("ship_name")
+    private String shipName;
+
+    /**
+     * 鐗╂祦鍗曞彿
+     */
+    @ApiModelProperty(value= "鐗╂祦鍗曞彿")
+    @TableField("ship_code")
+    private String shipCode;
+
+    /**
+     * 璁㈠崟鐘舵��
+     */
+    @ApiModelProperty(value= "璁㈠崟鐘舵��")
+    private Long settle;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 绂佺敤
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @TableField("create_by")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("update_by")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    public Receive() {}
+
+    public Receive(Long hostId, String uuid, String orderNo, String orderTime, Long docType, Long itemId, String itemName, Long allotItemId, String defNumber, String number, Long cstmr, String cstmrName, String tel, String operMemb, Double totalFee, Double discount, Double discountFee, Double otherFee, Double actFee, Integer payType, String salesman, Integer accountDay, Integer postFeeType, Double postFee, Date payTime, Date sendTime, String shipName, String shipCode, Long settle, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
+        this.hostId = hostId;
+        this.uuid = uuid;
+        this.orderNo = orderNo;
+        this.orderTime = orderTime;
+        this.docType = docType;
+        this.itemId = itemId;
+        this.itemName = itemName;
+        this.allotItemId = allotItemId;
+        this.defNumber = defNumber;
+        this.number = number;
+        this.cstmr = cstmr;
+        this.cstmrName = cstmrName;
+        this.tel = tel;
+        this.operMemb = operMemb;
+        this.totalFee = totalFee;
+        this.discount = discount;
+        this.discountFee = discountFee;
+        this.otherFee = otherFee;
+        this.actFee = actFee;
+        this.payType = payType;
+        this.salesman = salesman;
+        this.accountDay = accountDay;
+        this.postFeeType = postFeeType;
+        this.postFee = postFee;
+        this.payTime = payTime;
+        this.sendTime = sendTime;
+        this.shipName = shipName;
+        this.shipCode = shipCode;
+        this.settle = settle;
+        this.status = status;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+    }
+
+//    Order order = new Order(
+//            null,    // 缂栧彿[闈炵┖]
+//            null,    // 璁㈠崟缂栧彿
+//            null,    // 鍗曟嵁鏃ユ湡
+//            null,    // 鍗曟嵁绫诲瀷
+//            null,    // 椤圭洰缂栧彿
+//            null,    // 璋冩嫧椤圭洰缂栧彿
+//            null,    // 鍒濆绁ㄦ嵁鍙�
+//            null,    // 绁ㄦ嵁鍙�
+//            null,    // 瀹㈡埛缂栧彿
+//            null,    // 瀹㈡埛
+//            null,    // 鑱旂郴鏂瑰紡
+//            null,    // 鎿嶄綔浜哄憳
+//            null,    // 鍚堣閲戦
+//            null,    // 浼樻儬鐜�
+//            null,    // 浼樻儬閲戦
+//            null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+//            null,    // 瀹炰粯閲戦
+//            null,    // 浠樻绫诲瀷
+//            null,    // 涓氬姟鍛�
+//            null,    // 缁撶畻澶╂暟
+//            null,    // 閭垂鏀粯绫诲瀷
+//            null,    // 閭垂
+//            null,    // 浠樻鏃堕棿
+//            null,    // 鍙戣揣鏃堕棿
+//            null,    // 鐗╂祦鍚嶇О
+//            null,    // 鐗╂祦鍗曞彿
+//            null,    // 璁㈠崟鐘舵��
+//            null,    // 鐘舵��
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null    // 澶囨敞
+//    );
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getHostId() {
+        return hostId;
+    }
+
+    public void setHostId(Long hostId) {
+        this.hostId = hostId;
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.selectById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getOrderTime() {
+        return orderTime;
+    }
+
+    public void setOrderTime(String orderTime) {
+        this.orderTime = orderTime;
+    }
+
+    public Long getDocType() {
+        return docType;
+    }
+
+    public String getDocType$(){
+        DocTypeService service = SpringUtils.getBean(DocTypeService.class);
+        DocType docType = service.selectById(this.docType);
+        if (!Cools.isEmpty(docType)){
+            return String.valueOf(docType.getDocName());
+        }
+        return null;
+    }
+
+    public void setDocType(Long docType) {
+        this.docType = docType;
+    }
+
+    public Long getItemId() {
+        return itemId;
+    }
+
+    public String getItemId$(){
+        ItemService service = SpringUtils.getBean(ItemService.class);
+        Item item = service.selectById(this.itemId);
+        if (!Cools.isEmpty(item)){
+            return String.valueOf(item.getId());
+        }
+        return null;
+    }
+
+    public void setItemId(Long itemId) {
+        this.itemId = itemId;
+    }
+
+    public String getItemName() {
+        return itemName;
+    }
+
+    public void setItemName(String itemName) {
+        this.itemName = itemName;
+    }
+
+    public Long getAllotItemId() {
+        return allotItemId;
+    }
+
+    public String getAllotItemId$(){
+        ItemService service = SpringUtils.getBean(ItemService.class);
+        Item item = service.selectById(this.allotItemId);
+        if (!Cools.isEmpty(item)){
+            return String.valueOf(item.getId());
+        }
+        return null;
+    }
+
+    public void setAllotItemId(Long allotItemId) {
+        this.allotItemId = allotItemId;
+    }
+
+    public String getDefNumber() {
+        return defNumber;
+    }
+
+    public void setDefNumber(String defNumber) {
+        this.defNumber = defNumber;
+    }
+
+    public String getNumber() {
+        return number;
+    }
+
+    public void setNumber(String number) {
+        this.number = number;
+    }
+
+    public Long getCstmr() {
+        return cstmr;
+    }
+
+    public String getCstmr$(){
+        CstmrService service = SpringUtils.getBean(CstmrService.class);
+        Cstmr cstmr = service.selectById(this.cstmr);
+        if (!Cools.isEmpty(cstmr)){
+            return String.valueOf(cstmr.getId());
+        }
+        return null;
+    }
+
+    public void setCstmr(Long cstmr) {
+        this.cstmr = cstmr;
+    }
+
+    public String getCstmrName() {
+        return cstmrName;
+    }
+
+    public void setCstmrName(String cstmrName) {
+        this.cstmrName = cstmrName;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getOperMemb() {
+        return operMemb;
+    }
+
+    public void setOperMemb(String operMemb) {
+        this.operMemb = operMemb;
+    }
+
+    public Double getTotalFee() {
+        return totalFee;
+    }
+
+    public void setTotalFee(Double totalFee) {
+        this.totalFee = totalFee;
+    }
+
+    public Double getDiscount() {
+        return discount;
+    }
+
+    public void setDiscount(Double discount) {
+        this.discount = discount;
+    }
+
+    public Double getDiscountFee() {
+        return discountFee;
+    }
+
+    public void setDiscountFee(Double discountFee) {
+        this.discountFee = discountFee;
+    }
+
+    public Double getOtherFee() {
+        return otherFee;
+    }
+
+    public void setOtherFee(Double otherFee) {
+        this.otherFee = otherFee;
+    }
+
+    public Double getActFee() {
+        return actFee;
+    }
+
+    public void setActFee(Double actFee) {
+        this.actFee = actFee;
+    }
+
+    public Integer getPayType() {
+        return payType;
+    }
+
+    public String getPayType$(){
+        if (null == this.payType){ return null; }
+        switch (this.payType){
+            case 1:
+                return "鐜伴噾";
+            case 2:
+                return "璁拌处";
+            default:
+                return String.valueOf(this.payType);
+        }
+    }
+
+    public void setPayType(Integer payType) {
+        this.payType = payType;
+    }
+
+    public String getSalesman() {
+        return salesman;
+    }
+
+    public void setSalesman(String salesman) {
+        this.salesman = salesman;
+    }
+
+    public Integer getAccountDay() {
+        return accountDay;
+    }
+
+    public void setAccountDay(Integer accountDay) {
+        this.accountDay = accountDay;
+    }
+
+    public Integer getPostFeeType() {
+        return postFeeType;
+    }
+
+    public String getPostFeeType$(){
+        if (null == this.postFeeType){ return null; }
+        switch (this.postFeeType){
+            case 1:
+                return "鍦ㄧ嚎鏀粯";
+            case 2:
+                return "璐у埌浠樻";
+            default:
+                return String.valueOf(this.postFeeType);
+        }
+    }
+
+    public void setPostFeeType(Integer postFeeType) {
+        this.postFeeType = postFeeType;
+    }
+
+    public Double getPostFee() {
+        return postFee;
+    }
+
+    public void setPostFee(Double postFee) {
+        this.postFee = postFee;
+    }
+
+    public Date getPayTime() {
+        return payTime;
+    }
+
+    public String getPayTime$(){
+        if (Cools.isEmpty(this.payTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.payTime);
+    }
+
+    public void setPayTime(Date payTime) {
+        this.payTime = payTime;
+    }
+
+    public Date getSendTime() {
+        return sendTime;
+    }
+
+    public String getSendTime$(){
+        if (Cools.isEmpty(this.sendTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime);
+    }
+
+    public void setSendTime(Date sendTime) {
+        this.sendTime = sendTime;
+    }
+
+    public String getShipName() {
+        return shipName;
+    }
+
+    public void setShipName(String shipName) {
+        this.shipName = shipName;
+    }
+
+    public String getShipCode() {
+        return shipCode;
+    }
+
+    public void setShipCode(String shipCode) {
+        this.shipCode = shipCode;
+    }
+
+    public Long getSettle() {
+        return settle;
+    }
+
+    public String getSettle$(){
+        OrderSettleService service = SpringUtils.getBean(OrderSettleService.class);
+        OrderSettle orderSettle = service.selectById(this.settle);
+        if (!Cools.isEmpty(orderSettle)){
+            return String.valueOf(orderSettle.getSettleName());
+        }
+        return null;
+    }
+
+    public void setSettle(Long settle) {
+        this.settle = settle;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "绂佺敤";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Long getCreateBy() {
+        return createBy;
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public void setCreateBy(Long createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getUpdateBy() {
+        return updateBy;
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public void setUpdateBy(Long updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+
+}
diff --git a/src/main/java/zy/cloud/wms/manager/entity/ReceiveDetl.java b/src/main/java/zy/cloud/wms/manager/entity/ReceiveDetl.java
new file mode 100644
index 0000000..b713057
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/entity/ReceiveDetl.java
@@ -0,0 +1,470 @@
+package zy.cloud.wms.manager.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import io.swagger.annotations.ApiModelProperty;
+import zy.cloud.wms.manager.service.OrderService;
+import zy.cloud.wms.system.entity.Host;
+import zy.cloud.wms.system.entity.User;
+import zy.cloud.wms.system.service.HostService;
+import zy.cloud.wms.system.service.UserService;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@TableName("man_receive_detl")
+public class ReceiveDetl implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鎵�灞為」鐩�
+     */
+    @ApiModelProperty(value= "鎵�灞為」鐩�")
+    @TableField("host_id")
+    private Long hostId;
+
+    /**
+     * 璁㈠崟鍐呯爜
+     */
+    @ApiModelProperty(value= "璁㈠崟鍐呯爜")
+    @TableField("order_id")
+    private Long orderId;
+
+    /**
+     * 鏁伴噺
+     */
+    @ApiModelProperty(value= "鏁伴噺")
+    private Double anfme;
+
+    /**
+     * 鍟嗗搧缂栫爜
+     */
+    @ApiModelProperty(value= "鍟嗗搧缂栫爜")
+    private String matnr;
+
+    /**
+     * 鍟嗗搧鍚嶇О
+     */
+    @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+    private String maktx;
+
+    /**
+     * 鍚嶇О
+     */
+    @ApiModelProperty(value= "鍚嶇О")
+    private String name;
+
+    /**
+     * 瑙勬牸
+     */
+    @ApiModelProperty(value= "瑙勬牸")
+    private String specs;
+
+    /**
+     * 鍨嬪彿
+     */
+    @ApiModelProperty(value= "鍨嬪彿")
+    private String model;
+
+    /**
+     * 鎵瑰彿
+     */
+    @ApiModelProperty(value= "鎵瑰彿")
+    private String batch;
+
+    /**
+     * 鍗曚綅
+     */
+    @ApiModelProperty(value= "鍗曚綅")
+    private String unit;
+
+    /**
+     * 鍟嗗搧鏉$爜
+     */
+    @ApiModelProperty(value= "鍟嗗搧鏉$爜")
+    private String barcode;
+
+    /**
+     * 渚涘簲鍟�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟�")
+    private String supplier;
+
+    /**
+     * 鍗曚环
+     */
+    @ApiModelProperty(value= "鍗曚环")
+    @TableField("unit_price")
+    private Double unitPrice;
+
+    /**
+     * 鍝侀」鏁�
+     */
+    @ApiModelProperty(value= "鍝侀」鏁�")
+    @TableField("item_num")
+    private Integer itemNum;
+
+    /**
+     * 鏁伴噺
+     */
+    @ApiModelProperty(value= "鏁伴噺")
+    private Integer count;
+
+    /**
+     * 閲嶉噺
+     */
+    @ApiModelProperty(value= "閲嶉噺")
+    private Double weight;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 绂佺敤
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @TableField("create_by")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("update_by")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    public ReceiveDetl() {}
+
+    public ReceiveDetl(Long hostId, Long orderId, Double anfme, String matnr, String maktx, String name, String specs, String model, String batch, String unit, String barcode, String supplier, Double unitPrice, Integer itemNum, Integer count, Double weight, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
+        this.hostId = hostId;
+        this.orderId = orderId;
+        this.anfme = anfme;
+        this.matnr = matnr;
+        this.maktx = maktx;
+        this.name = name;
+        this.specs = specs;
+        this.model = model;
+        this.batch = batch;
+        this.unit = unit;
+        this.barcode = barcode;
+        this.supplier = supplier;
+        this.unitPrice = unitPrice;
+        this.itemNum = itemNum;
+        this.count = count;
+        this.weight = weight;
+        this.status = status;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+    }
+
+//    OrderDetl orderDetl = new OrderDetl(
+//            null,    // 璁㈠崟鍐呯爜
+//            null,    // 鏁伴噺
+//            null,    // 鍟嗗搧缂栫爜
+//            null,    // 鍟嗗搧鍚嶇О
+//            null,    // 鍚嶇О
+//            null,    // 瑙勬牸
+//            null,    // 鍨嬪彿
+//            null,    // 鎵瑰彿
+//            null,    // 鍗曚綅
+//            null,    // 鍟嗗搧鏉$爜
+//            null,    // 渚涘簲鍟�
+//            null,    // 鍗曚环
+//            null,    // 鍝侀」鏁�
+//            null,    // 鏁伴噺
+//            null,    // 閲嶉噺
+//            null,    // 鐘舵��
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null    // 澶囨敞
+//    );
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getHostId() {
+        return hostId;
+    }
+
+    public void setHostId(Long hostId) {
+        this.hostId = hostId;
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.selectById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public String getOrderId$(){
+        OrderService service = SpringUtils.getBean(OrderService.class);
+        Order order = service.selectById(this.orderId);
+        if (!Cools.isEmpty(order)){
+            return String.valueOf(order.getId());
+        }
+        return null;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+
+    public Double getAnfme() {
+        return anfme;
+    }
+
+    public void setAnfme(Double anfme) {
+        this.anfme = anfme;
+    }
+
+    public String getMatnr() {
+        return matnr;
+    }
+
+    public void setMatnr(String matnr) {
+        this.matnr = matnr;
+    }
+
+    public String getMaktx() {
+        return maktx;
+    }
+
+    public void setMaktx(String maktx) {
+        this.maktx = maktx;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSpecs() {
+        return specs;
+    }
+
+    public void setSpecs(String specs) {
+        this.specs = specs;
+    }
+
+    public String getModel() {
+        return model;
+    }
+
+    public void setModel(String model) {
+        this.model = model;
+    }
+
+    public String getBatch() {
+        return batch;
+    }
+
+    public void setBatch(String batch) {
+        this.batch = batch;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public String getBarcode() {
+        return barcode;
+    }
+
+    public void setBarcode(String barcode) {
+        this.barcode = barcode;
+    }
+
+    public String getSupplier() {
+        return supplier;
+    }
+
+    public void setSupplier(String supplier) {
+        this.supplier = supplier;
+    }
+
+    public Double getUnitPrice() {
+        return unitPrice;
+    }
+
+    public void setUnitPrice(Double unitPrice) {
+        this.unitPrice = unitPrice;
+    }
+
+    public Integer getItemNum() {
+        return itemNum;
+    }
+
+    public void setItemNum(Integer itemNum) {
+        this.itemNum = itemNum;
+    }
+
+    public Integer getCount() {
+        return count;
+    }
+
+    public void setCount(Integer count) {
+        this.count = count;
+    }
+
+    public Double getWeight() {
+        return weight;
+    }
+
+    public void setWeight(Double weight) {
+        this.weight = weight;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "绂佺敤";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Long getCreateBy() {
+        return createBy;
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public void setCreateBy(Long createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getUpdateBy() {
+        return updateBy;
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public void setUpdateBy(Long updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+
+}
diff --git a/src/main/java/zy/cloud/wms/manager/mapper/ReceiveDetlMapper.java b/src/main/java/zy/cloud/wms/manager/mapper/ReceiveDetlMapper.java
new file mode 100644
index 0000000..d42799d
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/mapper/ReceiveDetlMapper.java
@@ -0,0 +1,17 @@
+package zy.cloud.wms.manager.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import zy.cloud.wms.manager.entity.ReceiveDetl;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface ReceiveDetlMapper extends BaseMapper<ReceiveDetl> {
+
+    List<ReceiveDetl> selectByOrderNo(@Param("orderNo") String orderNo, @Param("hostId") Long hostId);
+
+}
diff --git a/src/main/java/zy/cloud/wms/manager/mapper/ReceiveMapper.java b/src/main/java/zy/cloud/wms/manager/mapper/ReceiveMapper.java
new file mode 100644
index 0000000..43aff65
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/mapper/ReceiveMapper.java
@@ -0,0 +1,22 @@
+package zy.cloud.wms.manager.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import zy.cloud.wms.manager.entity.Receive;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+@Repository
+public interface ReceiveMapper extends BaseMapper<Receive> {
+
+    Boolean updateSettle(@Param("orderNo")String orderNo, @Param("settle")Long settle, @Param("hostId")Long hostId);
+
+    List<Receive> getPage(Map<String, Object> map);
+
+    Integer getPageCount(Map<String, Object> map);
+
+}
diff --git a/src/main/java/zy/cloud/wms/manager/service/ReceiveDetlService.java b/src/main/java/zy/cloud/wms/manager/service/ReceiveDetlService.java
new file mode 100644
index 0000000..287d9e8
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/service/ReceiveDetlService.java
@@ -0,0 +1,12 @@
+package zy.cloud.wms.manager.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import zy.cloud.wms.manager.entity.ReceiveDetl;
+
+import java.util.List;
+
+public interface ReceiveDetlService extends IService<ReceiveDetl> {
+
+    List<ReceiveDetl> selectByOrderNo(String orderNo, Long hostId);
+
+}
diff --git a/src/main/java/zy/cloud/wms/manager/service/ReceiveService.java b/src/main/java/zy/cloud/wms/manager/service/ReceiveService.java
new file mode 100644
index 0000000..0d50a03
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/service/ReceiveService.java
@@ -0,0 +1,23 @@
+package zy.cloud.wms.manager.service;
+
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.service.IService;
+import zy.cloud.wms.manager.entity.Receive;
+
+import java.util.List;
+
+public interface ReceiveService extends IService<Receive> {
+
+    Receive selectByOrderNo(String oderNo, Long hostId);
+
+    Receive selectByUuid(String uuid);
+
+    Boolean insertReturnId(Receive order);
+
+    List<Receive> selectOrderBySettle(Long settle);
+
+    Boolean updateSettle(String orderNo, Long settle, Long hostId);
+
+    Page<Receive> getPage(Page<Receive> page);
+
+}
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/ReceiveDetlServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/ReceiveDetlServiceImpl.java
new file mode 100644
index 0000000..cf51909
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/ReceiveDetlServiceImpl.java
@@ -0,0 +1,18 @@
+package zy.cloud.wms.manager.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import zy.cloud.wms.manager.entity.ReceiveDetl;
+import zy.cloud.wms.manager.mapper.ReceiveDetlMapper;
+import zy.cloud.wms.manager.service.ReceiveDetlService;
+
+import java.util.List;
+
+@Service("receiveDetlService")
+public class ReceiveDetlServiceImpl extends ServiceImpl<ReceiveDetlMapper, ReceiveDetl> implements ReceiveDetlService {
+
+    @Override
+    public List<ReceiveDetl> selectByOrderNo(String orderNo, Long hostId) {
+        return this.baseMapper.selectByOrderNo(orderNo, hostId);
+    }
+}
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/ReceiveServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/ReceiveServiceImpl.java
new file mode 100644
index 0000000..3865b97
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/ReceiveServiceImpl.java
@@ -0,0 +1,55 @@
+package zy.cloud.wms.manager.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import zy.cloud.wms.manager.entity.Receive;
+import zy.cloud.wms.manager.mapper.ReceiveMapper;
+import zy.cloud.wms.manager.service.ReceiveService;
+
+import java.util.List;
+
+@Service("receiveService")
+public class ReceiveServiceImpl extends ServiceImpl<ReceiveMapper, Receive> implements ReceiveService {
+
+    @Override
+    public Receive selectByOrderNo(String orderNo, Long hostId) {
+        EntityWrapper<Receive> wrapper = new EntityWrapper<>();
+        if (hostId != null) {
+            wrapper.eq("host_id", hostId);
+        }
+        wrapper.eq("order_no", orderNo);
+        return this.selectOne(wrapper);
+    }
+
+    @Override
+    public Receive selectByUuid(String uuid) {
+        Receive order = new Receive();
+        order.setUuid(uuid);
+        return this.selectOne(new EntityWrapper<>(order));
+    }
+
+    @Override
+    public Boolean insertReturnId(Receive order) {
+        return this.baseMapper.insert(order) > 0;
+    }
+
+    @Override
+    public List<Receive> selectOrderBySettle(Long settle) {
+        return this.selectList(new EntityWrapper<Receive>().eq("settle", settle));
+    }
+
+    @Override
+    public Boolean updateSettle(String orderNo, Long settle, Long hostId) {
+        return this.baseMapper.updateSettle(orderNo, settle, hostId);
+    }
+
+    @Override
+    public Page<Receive> getPage(Page<Receive> page) {
+        page.setRecords(baseMapper.getPage(page.getCondition()));
+        page.setTotal(baseMapper.getPageCount(page.getCondition()));
+        return page;
+    }
+
+}
diff --git a/src/main/resources/mapper/ReceiveDetlMapper.xml b/src/main/resources/mapper/ReceiveDetlMapper.xml
new file mode 100644
index 0000000..ab0592e
--- /dev/null
+++ b/src/main/resources/mapper/ReceiveDetlMapper.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="zy.cloud.wms.manager.mapper.ReceiveDetlMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="zy.cloud.wms.manager.entity.ReceiveDetl">
+        <id column="id" property="id" />
+        <result column="host_id" property="hostId" />
+        <result column="order_id" property="orderId" />
+        <result column="anfme" property="anfme" />
+        <result column="matnr" property="matnr" />
+        <result column="maktx" property="maktx" />
+        <result column="name" property="name" />
+        <result column="specs" property="specs" />
+        <result column="model" property="model" />
+        <result column="batch" property="batch" />
+        <result column="unit" property="unit" />
+        <result column="barcode" property="barcode" />
+        <result column="supplier" property="supplier" />
+        <result column="unit_price" property="unitPrice" />
+        <result column="item_num" property="itemNum" />
+        <result column="count" property="count" />
+        <result column="weight" property="weight" />
+        <result column="status" property="status" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="memo" property="memo" />
+
+    </resultMap>
+
+    <select id="selectByOrderNo" resultMap="BaseResultMap">
+        select
+        mod.*
+        from man_order_detl mod
+        left join man_order mo on mo.id = mod.order_id
+        where 1=1
+        and mo.order_no = #{orderNo}
+        and mo.host_id = #{hostId}
+    </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/ReceiveMapper.xml b/src/main/resources/mapper/ReceiveMapper.xml
new file mode 100644
index 0000000..e8d2a7e
--- /dev/null
+++ b/src/main/resources/mapper/ReceiveMapper.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="zy.cloud.wms.manager.mapper.ReceiveMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="zy.cloud.wms.manager.entity.Receive">
+        <id column="id" property="id" />
+        <result column="host_id" property="hostId" />
+        <result column="uuid" property="uuid" />
+        <result column="order_no" property="orderNo" />
+        <result column="order_time" property="orderTime" />
+        <result column="doc_type" property="docType" />
+        <result column="item_id" property="itemId" />
+        <result column="item_name" property="itemName" />
+        <result column="allot_item_id" property="allotItemId" />
+        <result column="def_number" property="defNumber" />
+        <result column="number" property="number" />
+        <result column="cstmr" property="cstmr" />
+        <result column="cstmr_name" property="cstmrName" />
+        <result column="tel" property="tel" />
+        <result column="oper_memb" property="operMemb" />
+        <result column="total_fee" property="totalFee" />
+        <result column="discount" property="discount" />
+        <result column="discount_fee" property="discountFee" />
+        <result column="other_fee" property="otherFee" />
+        <result column="act_fee" property="actFee" />
+        <result column="pay_type" property="payType" />
+        <result column="salesman" property="salesman" />
+        <result column="account_day" property="accountDay" />
+        <result column="post_fee_type" property="postFeeType" />
+        <result column="post_fee" property="postFee" />
+        <result column="pay_time" property="payTime" />
+        <result column="send_time" property="sendTime" />
+        <result column="ship_name" property="shipName" />
+        <result column="ship_code" property="shipCode" />
+        <result column="settle" property="settle" />
+        <result column="status" property="status" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="memo" property="memo" />
+
+    </resultMap>
+
+    <update id="updateSettle">
+        update man_order set settle = #{settle} where 1=1 and order_no = #{orderNo} and host_id = #{hostId}
+    </update>
+
+    <select id="getPage" resultMap="BaseResultMap">
+        select * from
+        (
+            select *,
+            ROW_NUMBER() over (order by create_time desc) as row
+            from (
+                select distinct mo.*
+                from man_order mo
+                left join man_order_detl mod on mo.id = mod.order_id
+                where 1=1
+                <include refid="condition"></include>
+            ) r
+        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
+    </select>
+
+    <select id="getPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">
+        select count(1) from
+        (
+            select *,
+            ROW_NUMBER() over (order by create_time desc) as row
+            from (
+                select distinct mo.*
+                from man_order mo
+                left join man_order_detl mod on mo.id = mod.order_id
+                where 1=1
+                <include refid="condition"></include>
+            ) r
+        ) t
+    </select>
+
+    <sql id="condition">
+        <if test="host_id!=null and host_id!='' ">
+            and mo.host_id = #{host_id}
+        </if>
+        <if test="bill_no!=null and bill_no!='' ">
+            and mo.bill_no like '%' + #{bill_no} + '%'
+        </if>
+        <if test="bill_type!=null and bill_type!='' ">
+            and bill_type like '%' + #{bill_type} + '%'
+        </if>
+        <if test="mat_name!=null and mat_name!='' ">
+            and a.mat_name like '%' + #{mat_name} + '%'
+        </if>
+        <if test="qty!=null and qty!='' ">
+            and a.qty = #{qty}
+        </if>
+        <if test="altme!=null and altme!='' ">
+            and a.unit like '%' + #{unit} + '%'
+        </if>
+        <if test="startTime!=null and endTime!=null">
+            and appe_time between #{startTime} and #{endTime}
+        </if>
+    </sql>
+
+
+</mapper>
diff --git a/src/main/webapp/static/js/docType/docType.js b/src/main/webapp/static/js/docType/docType.js
index f74adda..2376bbf 100644
--- a/src/main/webapp/static/js/docType/docType.js
+++ b/src/main/webapp/static/js/docType/docType.js
@@ -22,6 +22,7 @@
 //            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
             ,{field: 'docId', align: 'center',title: '绫诲瀷缂栧彿'}
             ,{field: 'docName', align: 'center',title: '绫诲瀷鍚嶇О'}
+            ,{field: 'docClass$', align: 'center',title: '鍗曟嵁绫诲埆'}
             // ,{field: 'status$', align: 'center',title: '鐘舵��'}
             // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
             // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
@@ -206,6 +207,8 @@
                         layer.getChildFrame('#data-detail-submit-save', index).hide();
                         setFormVal(layer.getChildFrame('#detail', index), data, false);
                         top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
+                        top.convertDisabled(layer.getChildFrame(' #docId', index), true);
+
                         top.convertDisabled(layer.getChildFrame('', index), true);
                         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');
@@ -239,6 +242,7 @@
 //            id: $('#id').val(),
             docId: $('#docId').val(),
             docName: $('#docName').val(),
+            docClass:$('#docClass').val(),
             status: $('#status').val(),
             createBy: $('#createBy').val(),
             createTime: top.strToDate($('#createTime\\$').val()),
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index 4868948..cb499c9 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -46,6 +46,7 @@
         cols: [[
             {field: 'docId', title: '缂栧彿', width: 70, align: 'center'},
             {field: 'docName', title: '鍗曟嵁绫诲瀷'}
+            ,{field: 'docClass', title: '鍗曟嵁绫诲埆', hide:true}
         ]],
         done: function (res, curr, count) {
             $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
@@ -92,6 +93,10 @@
             success: function (layero, dIndex) {
                 // 鍥炴樉琛ㄥ崟鏁版嵁
                 form.val('docTypeEditForm', mData);
+                if(mData){
+                    // $('#docId').addClass("layui-input").attr("disabled",true);
+                    $('input[name="docId"]').addClass("layui-input").attr("disabled",true);
+                }
                 // 琛ㄥ崟鎻愪氦浜嬩欢
                 form.on('submit(docTypeEditSubmit)', function (data) {
                     var loadIndex = layer.load(2);
diff --git a/src/main/webapp/static/js/receive/receive.js b/src/main/webapp/static/js/receive/receive.js
new file mode 100644
index 0000000..21b192f
--- /dev/null
+++ b/src/main/webapp/static/js/receive/receive.js
@@ -0,0 +1,547 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'util', 'admin', 'tableMerge'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var tableMerge = layui.tableMerge;
+    var util = layui.util;
+
+    /****************************************** 宸﹁竟琛� *************************************************/
+
+    /* 娓叉煋琛ㄦ牸 */
+    var insTb = table.render({
+        elem: '#docTypeTable',
+        url: baseUrl + '/docType/list/auth',
+        height: 'full-100',
+        headers: {token: localStorage.getItem('token')},
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        where: {
+            doc_class: 1,//鍏ュ簱鍗�
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        toolbar: ['<p>',
+            '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn"><i class="layui-icon">&#xe654;</i>娣诲姞</button>&nbsp;',
+            '<button lay-event="edit" class="layui-btn layui-btn-sm layui-btn-warm icon-btn"><i class="layui-icon">&#xe642;</i>淇敼</button>&nbsp;',
+            '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon">&#xe640;</i>鍒犻櫎</button>',
+            '</p>'].join(''),
+        defaultToolbar: [],
+        cols: [[
+            {field: 'docId', title: '缂栧彿', width: 70, align: 'center'},
+            {field: 'docName', title: '鍗曟嵁绫诲瀷'}
+            ,{field: 'docClass', title: '鍗曟嵁绫诲埆', hide:true}
+        ]],
+        done: function (res, curr, count) {
+            $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
+        }
+    });
+
+    /* 琛ㄦ牸鎼滅储 */
+    form.on('submit(docTypeTableSearch)', function (data) {
+        insTb.reload({where: {doc_name: data.field.docName,doc_class:1}});
+        return false;
+    });
+
+    /* 琛ㄦ牸澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
+    table.on('toolbar(docTypeTable)', function (obj) {
+        if (obj.event === 'add') { // 娣诲姞
+            showEditModel();
+        } else if (obj.event === 'edit') { // 淇敼
+            if (selObj == null) {
+                return;
+            }
+            showEditModel(selObj.data);
+        } else if (obj.event === 'del') { // 鍒犻櫎
+            if (selObj == null) {
+                return;
+            }
+            doDel(selObj);
+        }
+    });
+
+    /* 鐩戝惉琛屽崟鍑讳簨浠� */
+    var selObj;
+    table.on('row(docTypeTable)', function (obj) {
+        selObj = obj;
+        obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
+        insTb2.reload({where: {doc_type: obj.data.docId}, page: {curr: 1}});
+    });
+
+    /* 鏄剧ず琛ㄥ崟寮圭獥 */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            title: (mData ? '淇敼' : '娣诲姞') + '鍗曟嵁绫诲瀷',
+            content: $('#docTypeEditDialog').html(),
+            success: function (layero, dIndex) {
+                // 鍥炴樉琛ㄥ崟鏁版嵁
+                form.val('docTypeEditForm', mData);
+                if(mData){
+                    // $('#docId').addClass("layui-input").attr("disabled",true);
+                    $('input[name="docId"]').addClass("layui-input").attr("disabled",true);
+                }
+
+                // 琛ㄥ崟鎻愪氦浜嬩欢
+                form.on('submit(docTypeEditSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/docType/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            selObj = null;
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                insTb.reload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function doDel(obj) {
+        layer.confirm('纭畾瑕佸垹闄ゆ鍗曟嵁绫诲瀷鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/docType/delete/one/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {param: JSON.stringify(obj.data)},
+                method: 'POST',
+                success: function (res) {
+                    selObj = null;
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.closeAll();
+                        insTb.reload();
+                        $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+
+    /****************************************** 鍙宠竟琛� *************************************************/
+
+    /* 娓叉煋琛ㄦ牸2 */
+    var insTb2 = table.render({
+        elem: '#orderTable',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/receive/list/auth',
+        page: true,
+        // size: 'lg',
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#orderToolbar',
+        height: 'full-100',
+        cols: [[
+            {type: 'checkbox'}
+            // ,{field: 'uuid', align: 'center',title: '缂栧彿'}
+            ,{field: 'docType$', align: 'center',title: '绫诲埆', templet: '#docTypeTpl', width: 100}
+            ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', minWidth: 200}
+            ,{field: 'orderTime', align: 'center',title: '鍗曟嵁鏃ユ湡', width: 120}
+            ,{field: 'itemName', align: 'center',title: '椤圭洰'}
+            ,{field: 'allotItemId$', align: 'center',title: '璋冩嫧椤圭洰缂栧彿', hide: true}
+            ,{field: 'defNumber', align: 'center',title: '鍒濆绁ㄦ嵁鍙�', hide: true}
+            ,{field: 'number', align: 'center',title: '绁ㄦ嵁鍙�', hide: true}
+            ,{field: 'cstmrName', align: 'center',title: '瀹㈡埛'}
+            ,{align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 140, width: 140}
+            ,{field: 'tel', align: 'center',title: '鑱旂郴鏂瑰紡', hide: true}
+            ,{field: 'operMemb', align: 'center',title: '鎿嶄綔浜哄憳', hide: true}
+            ,{field: 'totalFee', align: 'center',title: '鍚堣閲戦', hide: true}
+            ,{field: 'discount', align: 'center',title: '浼樻儬鐜�', hide: true}
+            ,{field: 'discountFee', align: 'center',title: '浼樻儬閲戦', hide: true}
+            ,{field: 'otherFee', align: 'center',title: '閿�鍞垨閲囪喘璐圭敤鍚堣', hide: true}
+            ,{field: 'actFee', align: 'center',title: '瀹炰粯閲戦', hide: true}
+            ,{field: 'payType$', align: 'center',title: '浠樻绫诲瀷', hide: true}
+            ,{field: 'salesman', align: 'center',title: '涓氬姟鍛�', hide: true}
+            ,{field: 'accountDay', align: 'center',title: '缁撶畻澶╂暟', hide: true}
+            ,{field: 'postFeeType$', align: 'center',title: '閭垂鏀粯绫诲瀷', hide: true}
+            ,{field: 'postFee', align: 'center',title: '閭垂', hide: true}
+            ,{field: 'payTime$', align: 'center',title: '浠樻鏃堕棿', hide: true}
+            ,{field: 'sendTime$', align: 'center',title: '鍙戣揣鏃堕棿', hide: true}
+            ,{field: 'shipName', align: 'center',title: '鐗╂祦鍚嶇О', hide: true}
+            ,{field: 'shipCode', align: 'center',title: '鐗╂祦鍗曞彿', hide: true}
+            ,{field: 'settle$', align: 'center',title: '璁㈠崟鐘舵��', templet: '#settleTpl', width: 100}
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate',  width: 120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+    /* 琛ㄦ牸2鎼滅储 */
+    form.on('submit(orderTbSearch)', function (data) {
+        insTb2.reload({where: data.field, page: {curr: 1}});
+        return false;
+    });
+    /* 琛ㄦ牸2閲嶇疆 */
+    form.on('submit(orderTbReset)', function (data) {
+        insTb2.reload({where: null,page: {curr: 1}});
+        return false;
+    });
+
+    /* 琛ㄦ牸2澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
+    table.on('toolbar(orderTable)', function (obj) {
+        if (obj.event === 'add') { // 娣诲姞
+            right();
+        } else if (obj.event === 'del') { // 鍒犻櫎
+            var checkRows = table.checkStatus('orderTable');
+            if (checkRows.data.length === 0) {
+                layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                return;
+            }
+            var ids = checkRows.data.map(function (d) {
+                return d.id;
+            });
+            doDelOrder({ids: ids});
+        }
+    });
+
+    /* 琛ㄦ牸2宸ュ叿鏉$偣鍑讳簨浠� */
+    table.on('tool(orderTable)', function (obj) {
+        var data = obj.data;
+        switch (obj.event) {
+            // 鎷h揣
+            case 'stockOut':
+                var loadIndex = layer.load(2);
+                $.ajax({
+                    url: baseUrl + "/work/stock/out/preview",
+                    headers: {'token': localStorage.getItem('token')},
+                    contentType: 'application/json;charset=UTF-8',
+                    data: JSON.stringify({
+                        orderNo: data.orderNo
+                    }),
+                    method: 'POST',
+                    success: function (res) {
+                        layer.close(loadIndex);
+                        if (res.code === 200){
+                            layer.open({
+                                type: 1
+                                ,title: false
+                                ,closeBtn: false
+                                ,offset: '100px'
+                                ,area: '1000px'
+                                ,shade: 0.5
+                                ,shadeClose: true
+                                ,btn: ['绔嬪嵆鐢熸垚', '绋嶅悗澶勭悊']
+                                ,btnAlign: 'c'
+                                ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
+                                ,content: $('#stoukOutPreview')
+                                ,success: function(layero, index){
+                                    table.render({
+                                        elem: '#stoPreTab',
+                                        data: res.data,
+                                        page: true,
+                                        cellMinWidth: 100,
+                                        height: 432,
+                                        cols: [[
+                                            {field: 'title', title: '鍟嗗搧', merge: true, align: 'center'},
+                                            {field: 'anfme', title: '鎬绘暟閲�', merge: ['title'], align: 'center', style: 'font-weight: bold', width: 90},
+                                            {field: 'type', title: '浠撳簱', merge: true, align: 'center', templet: '#typeTpl', width: 90},
+                                            {field: 'locNo', title: '璐т綅', align: 'center'},
+                                            {field: 'prior$', title: '鎺ㄨ崘璐т綅', align: 'center', width: 100},
+                                            {field: 'reduce', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
+                                            // {field: 'remQty', title: '浣欓噺', align: 'center', width: 80},
+                                            {field: 'total', title: '鎬婚噺', align: 'center', width: 90},
+                                        ]],
+                                        done: function () {
+                                            tableMerge.render(this);
+                                            $('.layui-table-body.layui-table-main').css("overflow", "auto")
+                                        }
+                                    });
+
+                                }
+                                ,yes: function(index, layero){
+                                    //鎸夐挳銆愰┈涓婃嫞璐с�戠殑鍥炶皟
+                                    stockOut(data.orderNo);
+                                }
+                                ,btn2: function(index, layero){
+                                    //鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
+                                    //return false 寮�鍚浠g爜鍙姝㈢偣鍑昏鎸夐挳鍏抽棴
+                                }
+                            });
+                        } else if (res.code === 403){
+                            top.location.href = baseUrl+"/";
+                        } else {
+                            layer.msg(res.msg, {icon: 2})
+                        }
+                    }
+                })
+                break;
+            // 鎵撳嵃
+            case 'print':
+                layer.confirm('寮�濮嬫墦鍗�' +data.orderNo + ' 鎷h揣鍗曪紵', {shadeClose: true}, function(){
+                    layer.closeAll();
+                    printPakouts(data.orderNo);
+                })
+                break;
+            // 鍒犻櫎
+            case 'del':
+                var ids = [obj.id];
+                doDelOrder({ids: ids});
+                break;
+            // 鏄庣粏
+            case 'look':
+                var $a = $(obj.tr).find('a[lay-event="look"]');
+                var offset = $a.offset();
+                layer.open({
+                    type: 1,
+                    title: false,
+                    area: '700px',
+                    offset: [offset.top + 'px', (offset.left - 530 + $a.outerWidth()) + 'px'],
+                    shade: .01,
+                    shadeClose: true,
+                    fixed: false,
+                    content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>',
+                    success: function (layero) {
+                        table.render({
+                            elem: '#lookSSXMTable',
+                            headers: {token: localStorage.getItem('token')},
+                            url: baseUrl+'/receiveDetl/list/auth',
+                            where: {
+                                order_id: data.id
+                            },
+                            limit: 5,
+                            page: true,
+                            cellMinWidth: 100,
+                            cols: [[
+                                {type: 'numbers'},
+                                {field: 'matnr', title: '鍟嗗搧缂栫爜'},
+                                {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
+                                {field: 'anfme', title: '鏁伴噺', width: 70},
+                                {
+                                    field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) {
+                                        return util.toDateString(d.createTime);
+                                    },  width: 180
+                                }
+                            ]],
+                            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 () {
+                                $(layero).find('.layui-table-view').css('margin', '0');
+                            },
+                            size: ''
+                        });
+                    }
+                });
+                break;
+
+        }
+    });
+
+    /* 鍒犻櫎璁㈠崟 */
+    function doDelOrder(obj) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/receives/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: obj.ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        $(".layui-laypage-btn")[0].click();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    }else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+
+        });
+    }
+
+    // 鐢熸垚鎷h揣鍗�
+    function stockOut(orderNo) {
+        $.ajax({
+            url: baseUrl+"/work/stock/out/create",
+            headers: {'token': localStorage.getItem('token')},
+            contentType:'application/json;charset=UTF-8',
+            data: JSON.stringify({
+                orderNo: orderNo
+            }),
+            method: 'POST',
+            success: function (res) {
+                // 鎴愬姛
+                if (res.code === 200){
+                    layer.closeAll();
+                    $(".layui-laypage-btn")[0].click();
+                    layer.confirm(res.msg, {
+                            shadeClose: true
+                            , btn: ['鎵撳嵃鎷h揣鍗�']
+                        }, function() {
+                            layer.closeAll();
+                            printPakouts(orderNo);
+                        }
+                    )
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        })
+        // });
+    }
+
+    // 鎵撳嵃鎷h揣鍗�
+    function printPakouts(orderNo) {
+        $.ajax({
+            url: baseUrl+"/work/stock/out/print",
+            headers: {'token': localStorage.getItem('token')},
+            data: JSON.stringify({
+                orderNo: orderNo
+            }),
+            contentType:'application/json;charset=UTF-8',
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200){
+                    res.data["barcodeUrl"]=baseUrl+"/receive/code/auth?type=1&param="+res.data.docNum;
+                    var tpl = $('#pakoutPrintTpl').html();
+                    var template = Handlebars.compile(tpl);
+                    var html = template(res);
+                    var box = $("#pakoutPrintBox");
+                    box.html(html);box.show();
+                    box.print({
+                        mediaPrint:true,
+                        deferred: $.Deferred().done(function () {
+                            layer.confirm('[閲嶈] 鎵撳嵃鏄惁鎴愬姛锛�',  {btn: ['Yes', 'No']}, function(){
+                                $.ajax({
+                                    url: baseUrl+"/pakout/print/auth",
+                                    headers: {'token': localStorage.getItem('token')},
+                                    data: {
+                                        docNumber: orderNo
+                                    },
+                                    method: 'POST',
+                                    success: function (res) {
+                                        if (res.code === 200){
+                                            layer.closeAll();
+                                            $(".layui-laypage-btn")[0].click();
+                                            layer.msg(res.msg, {icon: 1})
+                                        } else if (res.code === 403){
+                                            top.location.href = baseUrl+"/";
+                                        } else {
+                                            layer.msg(res.msg, {icon: 2})
+                                        }
+                                    }
+                                })
+                            });
+                        })
+                    });
+                    box.hide();
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        })
+    }
+
+});
+
+function right(){
+    top.popupRight = top.layui.admin.popupRight({
+        id: 'LAY_adminPopupLayerTest'
+        , area: '890px'
+        , type: 2
+        , shade: [0.5,'#000']
+        , content:'receive/matQuery.html'
+        , success: function(){
+            // $('#'+ this.id).html('<div style="padding: 20px;">鏀惧叆鍐呭</div>');
+            //admin.view(this.id).render('system/xxx')
+        }
+        , end: function () {
+            $(".layui-laypage-btn")[0].click();
+        }
+    });
+}
+
+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
+        }
+    });
+}
+
diff --git a/src/main/webapp/static/js/receiveDetl/receiveDetl.js b/src/main/webapp/static/js/receiveDetl/receiveDetl.js
new file mode 100644
index 0000000..fd1aa8e
--- /dev/null
+++ b/src/main/webapp/static/js/receiveDetl/receiveDetl.js
@@ -0,0 +1,530 @@
+var pageCurr;
+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: '#orderDetl',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/receiveDetl/list/auth',
+        page: true,
+        limit: 16,
+        limits: [16, 30, 50, 100, 200, 500],
+        even: true,
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        cols: [[
+            {type: 'checkbox'}
+//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
+            ,{field: 'id', align: 'center',title: 'ID'}
+            ,{field: 'orderId$', align: 'center',title: '璁㈠崟鍐呯爜',event: 'orderId', style: 'cursor:pointer'}
+            ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜'}
+            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'}
+            ,{field: 'name', align: 'center',title: '鍚嶇О'}
+            ,{field: 'specs', align: 'center',title: '瑙勬牸'}
+            ,{field: 'model', align: 'center',title: '鍨嬪彿'}
+            ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
+            ,{field: 'unit', align: 'center',title: '鍗曚綅'}
+            ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜'}
+            ,{field: 'supplier', align: 'center',title: '渚涘簲鍟�'}
+            ,{field: 'unitPrice', align: 'center',title: '鍗曚环'}
+            ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�'}
+            ,{field: 'count', align: 'center',title: '鏁伴噺'}
+            ,{field: 'weight', align: 'center',title: '閲嶉噺'}
+            ,{field: 'status$', align: 'center',title: '鐘舵��'}
+            ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳',event: 'createBy', style: 'cursor:pointer'}
+            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳',event: 'updateBy', style: 'cursor:pointer'}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'memo', 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();
+            form.on('checkbox(tableCheckbox)', function (data) {
+                var _index = $(data.elem).attr('table-index')||0;
+                if(data.elem.checked){
+                    res.data[_index][data.value] = 'Y';
+                }else{
+                    res.data[_index][data.value] = 'N';
+                }
+            });
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(locMast)', 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(orderDetl)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id);
+        switch(obj.event) {
+            case 'addData':
+                layer.open({
+                    type: 2,
+                    title: '鏂板',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    content: 'receiveDetl_detail.html',
+                    success: function(layero, index){
+                        layer.getChildFrame('#data-detail-submit-edit', index).hide();
+                    	clearFormVal(layer.getChildFrame('#detail', index));
+                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                    }
+                });
+                break;
+            case 'deleteData':
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+                        $.ajax({
+                            url: baseUrl+"/receiveDetl/delete/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: {param: JSON.stringify(data)},
+                            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 = {
+                        'orderDetl': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/receiveDetl/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(orderDetl)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            // 璇︽儏
+            case 'detail':
+                layer.open({
+                    type: 2,
+                    title: '璇︽儏',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: true,
+                    content: 'receiveDetl_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-save,#data-detail-submit-edit,#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');
+                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                    }
+                });
+                break;
+            // 缂栬緫
+            case 'edit':
+                layer.open({
+                    type: 2,
+                    title: '淇敼',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    content: 'receiveDetl_detail.html',
+                    success: function(layero, index){
+                        layer.getChildFrame('#data-detail-submit-save', index).hide();
+                        setFormVal(layer.getChildFrame('#detail', index), data, false);
+                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
+                        top.convertDisabled(layer.getChildFrame('', index), true);
+                        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');
+                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                    }
+                });
+                break;
+            case 'orderId':
+                var param = top.reObject(data).orderId;
+                if (param === undefined) {
+                    layer.msg("鏃犳暟鎹�");
+                } else {
+                   layer.open({
+                       type: 2,
+                       title: '璁㈠崟鍐呯爜璇︽儏',
+                       maxmin: true,
+                       area: [top.detailWidth, top.detailHeight],
+                       shadeClose: true,
+                       content: '../receive/receiveDetl_detail.html',
+                       success: function(layero, index){
+                           $.ajax({
+                               url: "baseUrl+/receive/"+ 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-save,#data-detail-submit-edit,#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');
+                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                                   } else if (res.code === 403){
+                                       top.location.href = baseUrl+"/";
+                                   }else {
+                                       layer.msg(res.msg)
+                                   }
+                               }
+                           })
+                       }
+                   });
+                }
+                break;
+            case 'createBy':
+                var param = top.reObject(data).createBy;
+                if (param === undefined) {
+                    layer.msg("鏃犳暟鎹�");
+                } else {
+                   layer.open({
+                       type: 2,
+                       title: '娣诲姞浜哄憳璇︽儏',
+                       maxmin: true,
+                       area: [top.detailWidth, top.detailHeight],
+                       shadeClose: true,
+                       content: '../user/user_detail.html',
+                       success: function(layero, index){
+                           $.ajax({
+                               url: "baseUrl+/user/"+ 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-save,#data-detail-submit-edit,#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');
+                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                                   } else if (res.code === 403){
+                                       top.location.href = baseUrl+"/";
+                                   }else {
+                                       layer.msg(res.msg)
+                                   }
+                               }
+                           })
+                       }
+                   });
+                }
+                break;
+            case 'updateBy':
+                var param = top.reObject(data).updateBy;
+                if (param === undefined) {
+                    layer.msg("鏃犳暟鎹�");
+                } else {
+                   layer.open({
+                       type: 2,
+                       title: '淇敼浜哄憳璇︽儏',
+                       maxmin: true,
+                       area: [top.detailWidth, top.detailHeight],
+                       shadeClose: true,
+                       content: '../user/user_detail.html',
+                       success: function(layero, index){
+                           $.ajax({
+                               url: "baseUrl+/user/"+ 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-save,#data-detail-submit-edit,#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');
+                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                                   } else if (res.code === 403){
+                                       top.location.href = baseUrl+"/";
+                                   }else {
+                                       layer.msg(res.msg)
+                                   }
+                               }
+                           })
+                       }
+                   });
+                }
+                break;
+
+        }
+    });
+
+    // 鏁版嵁淇濆瓨鍔ㄤ綔
+    form.on('submit(save)', function () {
+        if (banMsg != null){
+            layer.msg(banMsg);
+            return;
+        }
+        method("add");
+    });
+
+    // 鏁版嵁淇敼鍔ㄤ綔
+    form.on('submit(edit)', function () {
+        method("update")
+    });
+
+    function method(name){
+        var index = layer.load(1, {
+            shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+        });
+        var data = {
+//            id: $('#id').val(),
+            id: $('#id').val(),
+            orderId: $('#orderId').val(),
+            anfme: $('#anfme').val(),
+            matnr: $('#matnr').val(),
+            maktx: $('#maktx').val(),
+            name: $('#name').val(),
+            specs: $('#specs').val(),
+            model: $('#model').val(),
+            batch: $('#batch').val(),
+            unit: $('#unit').val(),
+            barcode: $('#barcode').val(),
+            supplier: $('#supplier').val(),
+            unitPrice: $('#unitPrice').val(),
+            itemNum: $('#itemNum').val(),
+            count: $('#count').val(),
+            weight: $('#weight').val(),
+            status: $('#status').val(),
+            createBy: $('#createBy').val(),
+            createTime: top.strToDate($('#createTime\\$').val()),
+            updateBy: $('#updateBy').val(),
+            updateTime: top.strToDate($('#updateTime\\$').val()),
+            memo: $('#memo').val(),
+
+        };
+        $.ajax({
+            url: baseUrl+"/receiveDetl/"+name+"/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: top.reObject(data),
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200){
+                    parent.layer.closeAll();
+                    parent.$(".layui-laypage-btn")[0].click();
+                    $("#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('checkbox(detailCheckbox)', function (data) {
+        var el = data.elem;
+        if (el.checked) {
+            $(el).val('Y');
+        } else {
+            $(el).val('N');
+        }
+    });
+
+    // 鎼滅储鏍忔悳绱簨浠�
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 鎼滅储鏍忛噸缃簨浠�
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    layDate.render({
+        elem: '#createTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#updateTime\\$',
+        type: 'datetime'
+    });
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(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 + "']");
+        if (find[0]!=null){
+            if (find[0].type === 'checkbox'){
+                if (data[val]==='Y'){
+                    find.attr("checked","checked");
+                    find.val('Y');
+                } else {
+                    find.remove("checked");
+                    find.val('N');
+                }
+                continue;
+            }
+        }
+        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.8);
+    }
+    layer.style(index, {
+//        top: (($(window).height()-height)/3)+"px",
+        height: height+'px'
+    });
+}
+
+$('body').keydown(function () {
+    if (event.keyCode === 13) {
+        $("#search").click();
+    }
+});
diff --git a/src/main/webapp/views/docType/docType_detail.html b/src/main/webapp/views/docType/docType_detail.html
index ebd73a7..052eebe 100644
--- a/src/main/webapp/views/docType/docType_detail.html
+++ b/src/main/webapp/views/docType/docType_detail.html
@@ -36,6 +36,16 @@
             </div>
         </div>
         <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍗曟嵁绫诲埆锛�</label>
+            <div class="layui-input-inline">
+                <select id="docClass">
+<!--                    <option value="" style="display: none"></option>-->
+                    <option value="1">鍏ュ簱鍗�</option>
+                    <option value="2">鍑哄簱鍗�</option>
+                </select>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
             <label class="layui-form-label">鐘躲��銆�鎬侊細</label>
             <div class="layui-input-inline">
                 <select id="status">
diff --git a/src/main/webapp/views/order/order.html b/src/main/webapp/views/order/order.html
index e323b6f..b2c17b1 100644
--- a/src/main/webapp/views/order/order.html
+++ b/src/main/webapp/views/order/order.html
@@ -171,6 +171,7 @@
 <script type="text/html" id="docTypeEditDialog">
     <form id="docTypeEditForm" lay-filter="docTypeEditForm" class="layui-form model-form">
         <input name="dictId" type="hidden"/>
+        <input name="docClass" value="2" type="hidden"/>
         <div class="layui-form-item">
             <label class="layui-form-label layui-form-required">绫诲瀷缂栫爜:</label>
             <div class="layui-input-block">
diff --git a/src/main/webapp/views/receive/matQuery.html b/src/main/webapp/views/receive/matQuery.html
new file mode 100644
index 0000000..deb9bea
--- /dev/null
+++ b/src/main/webapp/views/receive/matQuery.html
@@ -0,0 +1,214 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+    <style>
+        html {
+            height: 100%;
+            /*padding: 10px;*/
+            background-color: #f1f1f1;
+        }
+        body {
+            background-color: #fff;
+            /*border-radius: 5px;*/
+            box-shadow: 0 0 3px rgba(0,0,0,.3);
+            padding-bottom: 20px;
+        }
+
+        #staNoSpan {
+            text-align: center;
+            display: inline-block;
+            width: 100px;
+            font-size: 13px;
+        }
+        .layui-btn-container .layui-form-select {
+            display: inline-block;
+            width: 150px;
+            height: 30px;
+        }
+        .layui-btn-container .layui-form-select.layui-form-selected {
+            display: inline-block;
+            width: 150px;
+        }
+        .layui-btn-container .layui-select-title input {
+            font-size: 13px;
+        }
+        .layui-btn-container .layui-anim.layui-anim-upbit dd {
+            font-size: 13px;
+        }
+
+        #btn-outbound {
+            margin-left: 20px;
+        }
+
+        /*----------------------------------*/
+        .function-area {
+            padding: 20px 50px;
+        }
+        .function-btn {
+            font-size: 16px;
+            padding: 1px 1px 1px 1px;
+            width: 100px;
+            height: 50px;
+            border-color: #2b425b;
+            border-radius: 4px;
+            border-width: 2px;
+            background: none;
+            border-style: solid;
+            transition: 0.4s;
+            cursor: pointer;
+            letter-spacing: 3px;
+        }
+        .function-btn:hover {
+            background-color: #2b425b;
+            color: #fff;
+        }
+
+        /* 閿�鍞崟缂栧彿 */
+        #getOrderNo .layui-form {
+            padding: 25px 30px 0 0;
+        }
+        #getOrderNo .layui-form-label {
+            padding: 8px 15px;
+            box-sizing: content-box;
+            -webkit-box-sizing: content-box;
+        }
+        #getOrderNo .layui-form-required:before {
+            content: "*";
+            display: inline-block;
+            font-family: SimSun,serif;
+            margin-right: 4px;
+            font-size: 14px;
+            line-height: 1;
+            color: #ed4014;
+        }
+        #getOrderNo .layui-input {
+            height: 36px;
+            border-radius: 4px;
+        }
+        #getOrderNo .cool-button-contain {
+            text-align: right;
+            margin: 20px 0;
+        }
+        #getOrderNo .layui-form-radio>i:hover, .layui-form-radioed>i {
+            color: #007bff;
+        }
+        #getOrderNo .layui-btn {
+            height: 36px;
+            line-height: 36px;
+            border-radius: 4px;
+            box-shadow: 0 1px 0 rgba(0,0,0,.03);
+        }
+        #getOrderNo .layui-btn-primary:hover {
+            border-color: #777777;
+        }
+    </style>
+</head>
+<body>
+
+<!-- 鍔熻兘鍖� -->
+<div class="function-area">
+    <button id="mat-query" class="function-btn" onclick="getMatDetl()"><i class="layui-icon">&#xe654;</i> 鍟嗗搧</button>
+</div>
+
+<hr>
+
+<!-- 琛ㄦ牸 -->
+<div style="padding-bottom: 5px; margin-bottom: 45px">
+
+    <!-- 澶撮儴 -->
+    <script type="text/html" id="toolbar">
+        <div class="layui-form">
+            <div class="layui-btn-container">
+                <!-- 2.鍚姩鍑哄簱 -->
+                <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="createDoc">寮�濮嬬敓鎴�</button>
+            </div>
+        </div>
+    </script>
+
+    <!-- 琛� -->
+    <script type="text/html" id="operate">
+        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="remove">绉婚櫎</a>
+    </script>
+
+    <table class="layui-table" id="chooseData" lay-filter="chooseData"></table>
+</div>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/js/ioWorks/matQuery.js" charset="utf-8"></script>
+
+<div id="getOrderNo" style="display: none">
+    <!-- 璁㈠崟缂栧彿銆佸崟鎹棩鏈熴�佸崟鎹被鍨嬨�侀」鐩紪鍙枫�佸鎴风紪鍙枫�� -->
+    <div class="layui-form">
+        <div class="layui-form-item">
+            <label class="layui-form-label layui-form-required">鍗曟嵁绫诲瀷:</label>
+            <div class="layui-input-block">
+                <select id="docType" name="docType" lay-verType="tips" lay-verify="required" required>
+                </select>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label layui-form-required">鍗曟嵁缂栧彿:</label>
+            <div class="layui-input-block">
+                <input id="orderNo" name="orderNo" placeholder="璇疯緭鍏ュ崟鎹紪鍙�" class="layui-input" lay-verType="tips" lay-verify="required" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label layui-form-required">鍗曟嵁鏃ユ湡:</label>
+            <div class="layui-input-block">
+                <input id="orderTime" name="orderTime" placeholder="璇疯緭鍏ュ崟鎹棩鏈�" class="layui-input icon-date" lay-verType="tips" lay-verify="required" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">椤圭洰:</label>
+            <div class="layui-input-block">
+                <div id="item" name="item">
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">瀹㈡埛:</label>
+            <div class="layui-input-block">
+                <div id="cstmr" name="cstmr">
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item cool-button-contain">
+            <button class="layui-btn layui-btn-primary" id="autoNo" onclick="initOrderNo()">缂栧彿鑷姩鐢熸垚</button>
+            <button class="layui-btn layui-btn-normal" id="confirm" lay-filter="confirm" lay-submit="">纭畾</button>
+        </div>
+    </div>
+</div>
+</body>
+<script type="text/html" id="docTypeSelectTpl">
+    <option value="">璇烽�夋嫨鍗曟嵁绫诲瀷</option>
+    {{#each data}}
+    <option value="{{this.docId}}">{{this.docName}}</option>
+    {{/each}}
+</script>
+<script type="text/html" id="itemSelectTpl">
+    <option value="">璇烽�夋嫨椤圭洰</option>
+    {{#each data}}
+    <option value="{{this.id}}">{{this.name}}</option>
+    {{/each}}
+</script>
+<script type="text/html" id="cstmrSelectTpl">
+    <option value="">璇烽�夋嫨瀹㈡埛</option>
+    {{#each data}}
+    <option value="{{this.id}}">{{this.name}}</option>
+    {{/each}}
+</script>
+</html>
+
diff --git a/src/main/webapp/views/receive/matQueryBox.html b/src/main/webapp/views/receive/matQueryBox.html
new file mode 100644
index 0000000..71c1461
--- /dev/null
+++ b/src/main/webapp/views/receive/matQueryBox.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+    <style>
+        body {
+            padding: 0 20px;
+        }
+        .layui-table-box {
+            border-right: 1px solid #9F9F9F;
+            border-left: 1px solid #9F9F9F;
+        }
+
+        #search-box {
+            padding: 30px 0 20px 0;
+        }
+        #search-box .layui-inline:first-child {
+            margin-left: 30px;
+        }
+        #search-box .layui-inline {
+            margin-right: 5px;
+        }
+
+        #data-search-btn {
+            margin-left: 10px;
+            display: inline-block;
+        }
+        #data-search-btn.layui-btn-container .layui-btn {
+            margin-right: 20px;
+        }
+    </style>
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<fieldset class="layui-elem-field site-demo-button" style="margin: 20px;">
+    <legend>鎼滅储鏍�</legend>
+    <!-- 鎼滅储鏍� -->
+    <div id="search-box" class="layui-form layui-card-header">
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿"  autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="maktx" placeholder="鍟嗗搧鍚嶇О" autocomplete="off">
+            </div>
+        </div>
+        <!-- 寰呮坊鍔� -->
+        <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+            <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+            <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+        </div>
+    </div>
+</fieldset>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="">鎻愬彇</button>
+    </div>
+</script>
+
+<div class="layui-form">
+    <table class="layui-hide" id="stockOut" lay-filter="stockOut"></table>
+</div>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+
+</body>
+<script>
+
+    var pageCurr;
+    function getCol() {
+        var cols = [
+            {type: 'checkbox'}
+        ];
+        cols.push.apply(cols, matCols);
+        cols.push(
+            {field: 'stock', align: 'center',title: '搴撳瓨浣欓噺', style: 'font-weight: bold'}
+            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳', hide: true}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿', hide: true})
+        return cols;
+    }
+
+    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;
+        // 鏁版嵁娓叉煋
+        locDetlTableIns = table.render({
+            elem: '#stockOut',
+            headers: {token: localStorage.getItem('token')},
+            url: baseUrl+'/mat/list/auth',
+            page: true,
+            limit: 8,
+            even: true,
+            toolbar: '#toolbar',
+            cellMinWidth: 50,
+            cols: [getCol()],
+            request: {
+                pageName: 'curr',
+                pageSize: 'limit'
+            },
+            parseData: function (res) {
+                return {
+                    'code': res.code,
+                    'msg': res.msg,
+                    'count': res.data.total,
+                    'data': res.data.records
+                }
+            },
+            response: {
+                statusCode: 200
+            },
+            done: function(res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+            }
+        });
+
+        // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+        table.on('toolbar(stockOut)', function (obj) {
+            var checkStatus = table.checkStatus(obj.config.id);
+            var data = checkStatus.data;
+            switch(obj.event) {
+                case 'confirm':
+                    if (data.length === 0){
+                        layer.msg("璇烽�夋嫨鏁版嵁");
+                        return;
+                    }
+                    parent.addTableData(data);
+                    break;
+            }
+        });
+
+        // 鎼滅储鏍忔悳绱簨浠�
+        form.on('submit(search)', function (data) {
+            pageCurr = 1;
+            tableReload();
+        });
+
+        // 鎼滅储鏍忛噸缃簨浠�
+        form.on('submit(reset)', function (data) {
+            pageCurr = 1;
+            clearFormVal($('#search-box'));
+            tableReload();
+        });
+
+        layDate.render({
+            elem: '.layui-laydate-range'
+            ,type: 'datetime'
+            ,range: true
+        });
+    })
+
+    function tableReload(child) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        locDetlTableIns.reload({
+            where: searchData,
+            page: {
+                curr: pageCurr
+            },
+            done: function (res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+            }
+        });
+    }
+
+    function clearFormVal(el) {
+        $(':input', el)
+            .val('')
+            .removeAttr('checked')
+            .removeAttr('selected');
+    }
+</script>
+</html>
+
diff --git a/src/main/webapp/views/receive/receive.html b/src/main/webapp/views/receive/receive.html
new file mode 100644
index 0000000..f8185eb
--- /dev/null
+++ b/src/main/webapp/views/receive/receive.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <style>
+        body {
+            color: #595959;
+            background-color: #f5f7f9;
+        }
+
+        /* 宸﹁〃 */
+        #docTypeTable + .layui-table-view .layui-table-tool-temp {
+            padding-right: 0;
+        }
+
+        #docTypeTable + .layui-table-view .layui-table-body tbody > tr td {
+            cursor: pointer;
+        }
+
+        #docTypeTable + .layui-table-view .layui-table-body tbody > tr.layui-table-click {
+            background-color: #fff3e0;
+        }
+
+        #docTypeTable + .layui-table-view .layui-table-body tbody > tr.layui-table-click td:last-child > div:before {
+            position: absolute;
+            right: 6px;
+            content: "\e602";
+            font-size: 12px;
+            font-style: normal;
+            font-family: layui-icon,serif !important;
+            -webkit-font-smoothing: antialiased;
+            -moz-osx-font-smoothing: grayscale;
+        }
+
+        #left-table .layui-table-grid-down {
+            display: none;
+        }
+
+
+        .layui-form.layui-border-box.layui-table-view {
+            border-width: 1px;
+        }
+        #left-table .layui-table thead th {
+            /* font-weight: bold; */
+            text-align: left;
+        }
+    </style>
+</head>
+<body>
+<!-- 姝f枃寮�濮� -->
+<div class="layui-fluid" style="padding-bottom: 0;">
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-md3" id="left-table">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <!-- 琛ㄦ牸宸ュ叿鏍�1 -->
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline" style="max-width: 140px;">
+                                <input name="docName" class="layui-input" placeholder="杈撳叆鍗曟嵁绫诲瀷"/>
+                            </div>
+                            <div class="layui-inline">
+                                <button class="layui-btn icon-btn" lay-filter="docTypeTableSearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <!-- 鏁版嵁琛ㄦ牸1 -->
+                    <table id="docTypeTable" lay-filter="docTypeTable"></table>
+                </div>
+            </div>
+        </div>
+        <div class="layui-col-md9">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <!-- 琛ㄦ牸宸ュ叿鏍�2 -->
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline">
+                                <label class="layui-form-label">璁㈠崟缂栧彿:</label>
+                                <div class="layui-input-inline">
+                                    <input name="order_no" class="layui-input" placeholder="杈撳叆璁㈠崟缂栧彿"/>
+                                </div>
+                            </div>
+                            <div class="layui-inline">&emsp;
+                                <button class="layui-btn icon-btn" lay-filter="orderTbSearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                                <button class="layui-btn icon-btn" lay-filter="orderTbReset" lay-submit>
+                                    <i class="layui-icon">&#xe666;</i>閲嶇疆
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <!-- 鏁版嵁琛ㄦ牸2 -->
+                    <table id="orderTable" lay-filter="orderTable"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="docTypeTpl">
+    <span name="docType" class="layui-badge layui-badge-gray">{{d.docType$}}</span>
+</script>
+
+<script type="text/html" id="operate">
+    {{#if (d.settle == 1){ }}
+    <a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="stockOut" style="font-size: 16px">鎷h揣鍗�</a>
+    {{# } }}
+    {{#if (d.settle == 2 || d.settle == 4){ }}
+    <a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="print" style="font-size: 16px">鎵撳嵃</a>
+    {{# } }}
+</script>
+
+<script type="text/html" id="settleTpl">
+    <span name="settle"
+          {{# if( d.settle === 1){ }}
+          class="layui-badge layui-badge-blue"
+          {{# } else if(d.settle === 2){ }}
+          class="layui-badge layui-badge-red"
+          {{# } else if(d.settle === 3){ }}
+          class="layui-badge layui-badge-gray"
+          {{# } else if(d.settle === 4){ }}
+          class="layui-badge layui-badge-green"
+          {{# } else { }}
+          class="layui-badge layui-badge-gray"
+          {{# } }}
+    >{{d.settle$}}</span>
+</script>
+
+<script type="text/html" id="typeTpl">
+    <span name="type"
+          {{# if( d.type === 1){ }}
+          class="layui-badge layui-badge-blue" ><span style="display: none">{{d.number}}</span>骞充粨</span>
+    {{# } else if(d.type === 2){ }}
+    class="layui-badge layui-badge-green" ><span style="display: none">{{d.number}}</span>绔嬪簱</span>
+    {{# } else if(d.type === 0){ }}
+    class="layui-badge layui-badge-red" ><span style="display: none">{{d.number}}</span>缂鸿揣</span>
+    {{# } }}
+</script>
+
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="tbLook">
+    <span class="layui-text">
+        <a href="javascript:;" lay-event="look">
+            <i class="layui-icon" style="font-size: 12px;">&#xe61a;</i> 鏌ョ湅鏄庣粏
+        </a>
+    </span>
+</script>
+
+<!-- 鎵撳嵃瀹瑰櫒 -->
+<div id="pakoutPrintBox" style="display: none"></div>
+<!-- 鍑哄簱棰勮瀹瑰櫒 -->
+<div id="stoukOutPreview" style="display: none">
+    <div  style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
+        <span style="font-size: large; font-weight: bold">鎷h揣鍗曢瑙�</span>
+    </div>
+    <table id="stoPreTab" lay-filter="stoPreTab"></table>
+</div>
+
+<!-- 鍗曟嵁绫诲瀷琛ㄥ崟 -->
+<script type="text/html" id="docTypeEditDialog">
+    <form id="docTypeEditForm" lay-filter="docTypeEditForm" class="layui-form model-form">
+        <input name="dictId" type="hidden"/>
+        <input name="docClass" value="1" type="hidden"/>
+        <div class="layui-form-item">
+            <label class="layui-form-label layui-form-required">绫诲瀷缂栫爜:</label>
+            <div class="layui-input-block">
+                <input name="docId" placeholder="璇疯緭鍏ョ被鍨嬬紪鐮�" class="layui-input"
+                       lay-verType="tips" lay-verify="required" required/>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label layui-form-required">绫诲瀷鍚嶇О:</label>
+            <div class="layui-input-block">
+                <input name="docName" placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" class="layui-input"
+                       lay-verType="tips" lay-verify="required" required/>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">澶囨敞:</label>
+            <div class="layui-input-block">
+                <textarea name="memo" placeholder="璇疯緭鍏ュ娉�" class="layui-textarea"></textarea>
+            </div>
+        </div>
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="docTypeEditSubmit" lay-submit>淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+
+<!-- 璁㈠崟琛ㄥご鎿嶄綔 -->
+<script type="text/html" id="orderToolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm layui-btn-normal" id="btn-add" lay-event="add"><i class="layui-icon">&#xe654;</i>鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="del"><i class="layui-icon">&#xe640;</i>鍒犻櫎</button>
+    </div>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.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/receive/receive.js" charset="utf-8"></script>
+
+</body>
+<script type="text/template" id="pakoutPrintTpl">
+    <!-- 澶� -->
+    <div id="print-header" style="margin: 20px 0">
+        <div style="text-align: center">
+            <div style="text-align: center;margin-bottom: 10px">
+                <span style="font-family: 瀹嬩綋"> 鎷h揣鍗� </span>
+            </div>
+
+            <img class="template-code template-qrcode" src="{{data.barcodeUrl}}" style="width: 80%">
+            <p style="letter-spacing: 2px;margin-top: 5px">{{data.docNum}}</p>
+        </div>
+        <div style="font-size: xx-small; text-align: left; margin-top: 10px">
+            <span style="font-family: 瀹嬩綋">瀹㈡埛锛歿{data.cstmrName}}</span>
+        </div>
+        <div style="margin-top: 10px">
+            <div style="float: left;width: 50%; text-align: left">
+                <span style="font-size: xx-small;font-family: 瀹嬩綋">鎷h揣鏁伴噺锛歿{data.total}}</span>
+            </div>
+            <div style="float: left; width: 50%; text-align: right">
+                <span style="font-size: xx-small;font-family: 瀹嬩綋">鎷h揣浜猴細{{data.workerName}}</span>
+            </div>
+            <div style="clear:both;"></div>
+        </div>
+    </div>
+
+    <!-- 涓讳綋 -->
+    <div style="margin-top: 10px">
+        {{#each data.list}}
+        <div class="pakout-item" style="padding: 10px 5px 10px 5px;border-top: 1px solid #525252">
+            <div class="item-header" style="margin-top: 10px;font-family: 瀹嬩綋; font-size: x-small">
+                {{maktx}}
+            </div>
+            <div class="item-content" style="margin: 10px 0 ">
+                <div style="float: left;font-family: 瀹嬩綋; font-size: xx-small">{{anfme}}{{unit}}</div>
+                <div style="float: right;font-family: 瀹嬩綋; font-size: xx-small">璐т綅锛歿{locNo}}</div>
+                <div style="clear: both;"></div>
+            </div>
+        </div>
+        {{/each}}
+    </div>
+</script>
+</html>
+
diff --git a/src/main/webapp/views/receiveDetl/receiveDetl.html b/src/main/webapp/views/receiveDetl/receiveDetl.html
new file mode 100644
index 0000000..911abce
--- /dev/null
+++ b/src/main/webapp/views/receiveDetl/receiveDetl.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+    <div class="layui-inline">
+        <div class="layui-input-inline">
+            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+        </div>
+    </div>
+    <div class="layui-inline">
+        <div class="layui-input-inline cool-auto-complete">
+            <input id="orderId" class="layui-input" name="order_id" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+            <input id="orderId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璁㈠崟鍐呯爜" onfocus=this.blur()>
+            <div class="cool-auto-complete-window">
+                <input class="cool-auto-complete-window-input" data-key="receiveQueryByorderId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                <select class="cool-auto-complete-window-select" data-key="receiveQueryByorderIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                </select>
+            </div>
+        </div>
+    </div>
+    <div class="layui-inline">
+        <div class="layui-input-inline cool-auto-complete">
+            <input id="createBy" class="layui-input" name="create_by" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+            <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="娣诲姞浜哄憳" onfocus=this.blur()>
+            <div class="cool-auto-complete-window">
+                <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                </select>
+            </div>
+        </div>
+    </div>
+    <div class="layui-inline">
+        <div class="layui-input-inline cool-auto-complete">
+            <input id="updateBy" class="layui-input" name="update_by" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+            <input id="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="淇敼浜哄憳" onfocus=this.blur()>
+            <div class="cool-auto-complete-window">
+                <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" 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>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+    <table class="layui-hide" id="receiveDetl" lay-filter="receiveDetl"></table>
+</div>
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm" 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-primary layui-btn-xs" lay-event="detail">璇︽儏</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/receiveDetl/receiveDetl.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/receiveDetl/receiveDetl_detail.html b/src/main/webapp/views/receiveDetl/receiveDetl_detail.html
new file mode 100644
index 0000000..5d0f270
--- /dev/null
+++ b/src/main/webapp/views/receiveDetl/receiveDetl_detail.html
@@ -0,0 +1,202 @@
+<!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="display: none">
+            <label class="layui-form-label"><span class="not-null">*</span>缂栥��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="id" class="layui-input" type="text" placeholder="缂栧彿">
+            </div>
+        </div>
+    -->
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">I銆�銆�D锛�</label>
+            <div class="layui-input-inline">
+                <input id="id" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">璁㈠崟鍐呯爜锛�</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="orderId" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="orderId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="receiveQueryByorderId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="receiveQueryByorderIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鏁般��銆�閲忥細</label>
+            <div class="layui-input-inline">
+                <input id="anfme" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍟嗗搧缂栫爜锛�</label>
+            <div class="layui-input-inline">
+                <input id="matnr" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍟嗗搧鍚嶇О锛�</label>
+            <div class="layui-input-inline">
+                <input id="maktx" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍚嶃��銆�绉帮細</label>
+            <div class="layui-input-inline">
+                <input id="name" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">瑙勩��銆�鏍硷細</label>
+            <div class="layui-input-inline">
+                <input id="specs" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍨嬨��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="model" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鎵广��銆�鍙凤細</label>
+            <div class="layui-input-inline">
+                <input id="batch" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍗曘��銆�浣嶏細</label>
+            <div class="layui-input-inline">
+                <input id="unit" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍟嗗搧鏉$爜锛�</label>
+            <div class="layui-input-inline">
+                <input id="barcode" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">渚� 搴� 鍟嗭細</label>
+            <div class="layui-input-inline">
+                <input id="supplier" class="layui-input" type="text">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍗曘��銆�浠凤細</label>
+            <div class="layui-input-inline">
+                <input id="unitPrice" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鍝� 椤� 鏁帮細</label>
+            <div class="layui-input-inline">
+                <input id="itemNum" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鏁般��銆�閲忥細</label>
+            <div class="layui-input-inline">
+                <input id="count" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">閲嶃��銆�閲忥細</label>
+            <div class="layui-input-inline">
+                <input id="weight" class="layui-input" type="text" lay-verify="number" >
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">鐘躲��銆�鎬侊細</label>
+            <div class="layui-input-inline">
+                <select id="status">
+                    <option value="" style="display: none"></option>
+                    <option value="1">姝e父</option>
+                    <option value="0">绂佺敤</option>
+                </select>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">娣诲姞浜哄憳锛�</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="createBy" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">娣诲姞鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="createTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼浜哄憳锛�</label>
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="updateBy" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏�..." onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">淇敼鏃堕棿锛�</label>
+            <div class="layui-input-inline">
+                <input id="updateTime$" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:31%;">
+            <label class="layui-form-label">澶囥��銆�娉細</label>
+            <div class="layui-input-inline">
+                <input id="memo" class="layui-input" type="text">
+            </div>
+        </div>
+
+
+        <hr class="layui-bg-gray">
+
+        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
+            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">淇濆瓨</div>
+            <div id="data-detail-submit-edit" 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/receiveDetl/receiveDetl.js" charset="utf-8"></script>
+</html>
+
diff --git a/version/db/wms_saas20211222.bak b/version/db/wms_saas20220104.bak
similarity index 95%
rename from version/db/wms_saas20211222.bak
rename to version/db/wms_saas20220104.bak
index 477d9fe..d8ad6ee 100644
--- a/version/db/wms_saas20211222.bak
+++ b/version/db/wms_saas20220104.bak
Binary files differ

--
Gitblit v1.9.1