From 32700bf6d8abe8935e3dad6433584ac7cf03f87c Mon Sep 17 00:00:00 2001
From: admin <841110950@qq.com>
Date: 星期一, 30 八月 2021 08:40:03 +0800
Subject: [PATCH] 1.0.4

---
 src/main/java/com/zy/ints/mapper/WaitMatoutMapper.java            |    6 
 src/main/webapp/static/js/waitMatout/waitMatout.js                |  580 ++++++++++++++++++++----------
 src/main/webapp/views/waitMatout/waitMatout.html                  |  310 ++++++---------
 src/main/java/com/zy/ints/controller/WaitMatoutController.java    |  119 +++++
 src/main/java/com/zy/ints/service/WaitMatoutService.java          |    3 
 src/main/resources/mapper/WaitMatoutMapper.xml                    |   50 ++
 src/main/webapp/static/js/common.js                               |    2 
 src/main/java/com/zy/ints/service/impl/WaitMatoutServiceImpl.java |    9 
 src/main/webapp/static/js/waitMatin/waitMatin.js                  |   56 ++
 9 files changed, 718 insertions(+), 417 deletions(-)

diff --git a/src/main/java/com/zy/ints/controller/WaitMatoutController.java b/src/main/java/com/zy/ints/controller/WaitMatoutController.java
index b9f5ab7..3b149a3 100644
--- a/src/main/java/com/zy/ints/controller/WaitMatoutController.java
+++ b/src/main/java/com/zy/ints/controller/WaitMatoutController.java
@@ -9,16 +9,16 @@
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.R;
+import com.core.exception.CoolException;
 import com.zy.common.web.BaseController;
+import com.zy.ints.entity.WaitMatin;
 import com.zy.ints.entity.WaitMatout;
 import com.zy.ints.service.WaitMatoutService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @RestController
 public class WaitMatoutController extends BaseController {
@@ -30,6 +30,24 @@
     @ManagerAuth
     public R get(@PathVariable("id") String id) {
         return R.ok(waitMatoutService.selectById(String.valueOf(id)));
+    }
+
+
+    @RequestMapping(value = "/waitMatout/head/page/auth")
+    @ManagerAuth
+    public R headPage(@RequestParam(defaultValue = "1")Integer curr,
+                      @RequestParam(defaultValue = "10")Integer limit,
+                      @RequestParam Map<String, Object> param){
+        if (!Cools.isEmpty(param.get("appe_time"))){
+            String val = String.valueOf(param.get("appe_time"));
+            if (val.contains(RANGE_TIME_LINK)) {
+                String[] dates = val.split(RANGE_TIME_LINK);
+                param.put("startTime", DateUtils.convert(dates[0]));
+                param.put("endTime", DateUtils.convert(dates[1]));
+                param.remove("appe_time");
+            }
+        }
+        return R.ok(waitMatoutService.getHeadPage(toPage(curr, limit, param, WaitMatout.class)));
     }
 
     @RequestMapping(value = "/waitMatout/list/auth")
@@ -44,6 +62,20 @@
         excludeTrash(param);
         convert(param, wrapper);
         allLike(WaitMatout.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(waitMatoutService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/waitMatout/list/auth2")
+    @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(required = false)String condition,
+                  @RequestParam(name = "billNo") String bill_no){
+        EntityWrapper<WaitMatout> wrapper = new EntityWrapper<>();
+        wrapper.eq("bill_no", bill_no);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
         return R.ok(waitMatoutService.selectPage(new Page<>(curr, limit), wrapper));
     }
@@ -63,28 +95,81 @@
 
     @RequestMapping(value = "/waitMatout/add/auth")
     @ManagerAuth
-    public R add(WaitMatout waitMatout) {
-        waitMatoutService.insert(waitMatout);
-        return R.ok();
+    @Transactional
+    public R add(@RequestBody List<WaitMatout> waitMatouts) {
+        if (Cools.isEmpty(waitMatouts)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        if (waitMatoutService.selectCount(new EntityWrapper<WaitMatout>().eq("bill_no", waitMatouts.get(0).getBillNo())) > 0) {
+            return R.error("鍗曟嵁缂栧彿宸插瓨鍦�");
+        }
+        int i = 1;
+        Date now = new Date();
+        for (WaitMatout waitMatout : waitMatouts) {
+            waitMatout.setSeqNo(i);
+            waitMatout.setAppeTime(now);
+            waitMatout.setAppeUser(getUserId());
+            waitMatout.setModiTime(now);
+            waitMatout.setModiUser(getUserId());
+            if (!waitMatoutService.insert(waitMatout)) {
+                throw new CoolException("娣诲姞鍗曟嵁鏄庣粏澶辫触");
+            }
+            i++;
+        }
+        return R.ok("娣诲姞鎴愬姛");
     }
 
-	@RequestMapping(value = "/waitMatout/update/auth")
-	@ManagerAuth
-    public R update(WaitMatout waitMatout){
-        if (Cools.isEmpty(waitMatout) || null==waitMatout.getSeqNo()){
+    @RequestMapping(value = "/waitMatout/modify/auth")
+    @ManagerAuth
+    @Transactional
+    public R update(@RequestBody List<WaitMatout> waitMatouts){
+        if (Cools.isEmpty(waitMatouts)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        Date now = new Date();
+        List<WaitMatout> oldWaitMatouts = waitMatoutService.selectList(new EntityWrapper<WaitMatout>().eq("bill_no", waitMatouts.get(0).getBillNo()));
+        Date appeTime = oldWaitMatouts!=null?oldWaitMatouts.get(0).getAppeTime():now;
+        Long appeUser = oldWaitMatouts!=null?oldWaitMatouts.get(0).getAppeUser():getUserId();
+        if (!waitMatoutService.delete(new EntityWrapper<WaitMatout>().eq("bill_no", waitMatouts.get(0).getBillNo()))) {
             return R.error();
         }
-        waitMatoutService.updateById(waitMatout);
-        return R.ok();
+        int i = 1;
+        for (WaitMatout waitMatout : waitMatouts) {
+            waitMatout.setSeqNo(i);
+            waitMatout.setAppeTime(appeTime);
+            waitMatout.setAppeUser(appeUser);
+            waitMatout.setModiTime(now);
+            waitMatout.setModiUser(getUserId());
+            if (!waitMatoutService.insert(waitMatout)) {
+                throw new CoolException("淇敼鍗曟嵁鏄庣粏澶辫触");
+            }
+            i++;
+        }
+        return R.ok("淇敼鎴愬姛");
     }
+
+    @RequestMapping(value = "/waitMatout/detl/list/auth")
+    @ManagerAuth
+    public R detlPage(@RequestParam String billNo){
+        if (Cools.isEmpty(billNo)){
+            return R.parse(BaseRes.PARAM);
+        }
+        List<WaitMatout> waitMatins = waitMatoutService.selectList(new EntityWrapper<WaitMatout>().eq("bill_no", billNo));
+        if (Cools.isEmpty(waitMatins)) {
+            return R.parse(BaseRes.EMPTY);
+        }
+        return R.ok().add(waitMatins);
+    }
+
+
 
     @RequestMapping(value = "/waitMatout/delete/auth")
     @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
-            waitMatoutService.deleteById(id);
+    public R delete(@RequestParam String billNo){
+        if (!waitMatoutService.delete(new EntityWrapper<WaitMatout>().eq("bill_no", billNo))) {
+            throw new CoolException("鍒犻櫎鍗曟嵁鏄庣粏澶辫触");
         }
-        return R.ok();
+        return R.ok("鍒犻櫎鎴愬姛");
     }
 
     @RequestMapping(value = "/waitMatout/export/auth")
diff --git a/src/main/java/com/zy/ints/mapper/WaitMatoutMapper.java b/src/main/java/com/zy/ints/mapper/WaitMatoutMapper.java
index b29b64a..1e80daf 100644
--- a/src/main/java/com/zy/ints/mapper/WaitMatoutMapper.java
+++ b/src/main/java/com/zy/ints/mapper/WaitMatoutMapper.java
@@ -5,8 +5,14 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+import java.util.Map;
+
 @Mapper
 @Repository
 public interface WaitMatoutMapper extends BaseMapper<WaitMatout> {
 
+    List<WaitMatout> getHeadPage(Map<String, Object> condition);
+
+    Integer getHeadPageCount(Map<String, Object> condition);
 }
diff --git a/src/main/java/com/zy/ints/service/WaitMatoutService.java b/src/main/java/com/zy/ints/service/WaitMatoutService.java
index be40265..27ace8b 100644
--- a/src/main/java/com/zy/ints/service/WaitMatoutService.java
+++ b/src/main/java/com/zy/ints/service/WaitMatoutService.java
@@ -1,8 +1,11 @@
 package com.zy.ints.service;
 
+import com.baomidou.mybatisplus.plugins.Page;
+import com.zy.ints.entity.WaitMatin;
 import com.zy.ints.entity.WaitMatout;
 import com.baomidou.mybatisplus.service.IService;
 
 public interface WaitMatoutService extends IService<WaitMatout> {
 
+    Page<WaitMatout> getHeadPage(Page<WaitMatout> toPage);
 }
diff --git a/src/main/java/com/zy/ints/service/impl/WaitMatoutServiceImpl.java b/src/main/java/com/zy/ints/service/impl/WaitMatoutServiceImpl.java
index 31dac72..46044ad 100644
--- a/src/main/java/com/zy/ints/service/impl/WaitMatoutServiceImpl.java
+++ b/src/main/java/com/zy/ints/service/impl/WaitMatoutServiceImpl.java
@@ -1,5 +1,7 @@
 package com.zy.ints.service.impl;
 
+import com.baomidou.mybatisplus.plugins.Page;
+import com.zy.ints.entity.WaitMatin;
 import com.zy.ints.mapper.WaitMatoutMapper;
 import com.zy.ints.entity.WaitMatout;
 import com.zy.ints.service.WaitMatoutService;
@@ -9,4 +11,11 @@
 @Service("waitMatoutService")
 public class WaitMatoutServiceImpl extends ServiceImpl<WaitMatoutMapper, WaitMatout> implements WaitMatoutService {
 
+    @Override
+    public Page<WaitMatout> getHeadPage(Page<WaitMatout> page) {
+
+        page.setRecords(baseMapper.getHeadPage(page.getCondition()));
+        page.setTotal(baseMapper.getHeadPageCount(page.getCondition()));
+        return page;
+    }
 }
diff --git a/src/main/resources/mapper/WaitMatoutMapper.xml b/src/main/resources/mapper/WaitMatoutMapper.xml
index cfcda26..88472f8 100644
--- a/src/main/resources/mapper/WaitMatoutMapper.xml
+++ b/src/main/resources/mapper/WaitMatoutMapper.xml
@@ -27,4 +27,54 @@
 
     </resultMap>
 
+    <sql id="condition">
+        <if test="bill_no!=null and bill_no!='' ">
+            and 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>
+
+
+    <select id="getHeadPage" resultMap="BaseResultMap">
+        select * from
+        (
+        select *,
+        ROW_NUMBER() over (order by appe_time desc) as row
+        from (
+        select distinct bill_no, bill_type, appe_time
+        from ints_wait_matout
+        where 1=1
+        <include refid="condition"></include>
+        ) r
+        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
+    </select>
+    <select id="getHeadPageCount"  parameterType="java.util.Map" resultType="integer">
+
+        select count(1) from
+        (
+        select *,
+        ROW_NUMBER() over (order by appe_time desc) as row
+        from (
+        select distinct bill_no, bill_type, appe_time
+        from ints_wait_matout
+        where 1=1
+        <include refid="condition"></include>
+        ) r
+        ) t
+    </select>
+
 </mapper>
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index b51fb07..27028d4 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -181,7 +181,7 @@
     ,{field: 'matName', align: 'center',title: '浜у搧鍚嶇О'}
     ,{field: 'specs', align: 'center',title: '瑙勬牸'}
     ,{field: 'qty', align: 'center',title: '鏁伴噺'}
-    ,{field: 'unit', align: 'center',title: '鍗曚綅', width:80}
+    ,{field: 'unit', align: 'center',title: '鍗曚綅', width:80, hide: true}
     ,{field: 'size', align: 'center',title: '灏哄'}
     ,{field: 'color', align: 'center',title: '棰滆壊'}
     ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
diff --git a/src/main/webapp/static/js/waitMatin/waitMatin.js b/src/main/webapp/static/js/waitMatin/waitMatin.js
index 0c9fd90..4cce435 100644
--- a/src/main/webapp/static/js/waitMatin/waitMatin.js
+++ b/src/main/webapp/static/js/waitMatin/waitMatin.js
@@ -73,7 +73,7 @@
             layer.open({
                 type: 1,
                 title: false,
-                area: '630px',
+                area: '800px',
                 offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'],
                 shade: .01,
                 shadeClose: true,
@@ -98,7 +98,10 @@
                                 field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) {
                                     return util.toDateString(d.createTime);
                                 },  width: 180
-                            }
+                            },
+                            {field: 'outqty', title: '宸插嚭搴撻噺'},
+                            {field: 'color', title: '棰滆壊'},
+                            {field: 'specs', title: '瑙勬牸'}
                         ]],
                         request: {
                             pageName: 'curr',
@@ -131,7 +134,7 @@
             type: 1,
             title: (expTpe ? '淇敼' : '娣诲姞') + '鍗曟嵁',
             content: $('#editDialog').html(),
-            area: '700px',
+            area: '1300px',
             success: function (layero, dIndex) {
                 $(layero).children('.layui-layer-content').css('overflow', 'visible');
                 var isExpAdd = !expTpe;
@@ -156,6 +159,11 @@
                                 billType: data.field.billType,
                                 matNo: nList[xi].matNo,
                                 matName: nList[xi].matName,
+                                color: nList[xi].color,
+                                size: nList[xi].size,
+                                specs: nList[xi].specs,
+                                memo: nList[xi].memo,
+                                unit: nList[xi].unit,
                                 qty: nList[xi].qty,
                             })
                         }
@@ -199,6 +207,11 @@
                         {type: 'numbers'},
                         {field: 'matNo', title: '鐗╂枡缂栫爜'},
                         {field: 'matName', title: '鐗╂枡鍚嶇О', width: 160},
+                        {field: 'specs', title: '瑙勬牸', width: 160},
+                        {field: 'color', title: '棰滆壊', width: 160},
+                        {field: 'size', title: '灏哄', width: 160},
+                        {field: 'unit', title: '鍗曚綅', width: 160},
+                        {field: 'memo', title: '澶囨敞' , edit: true, width: 160},
                         {field: 'qty', title: '淇敼鏁伴噺', style: 'color: blue;font-weight: bold', edit: true, minWidth: 100, width: 100},
                         {align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80}
                     ]],
@@ -250,19 +263,29 @@
                 });
                 // 鏁伴噺淇敼
                 table.on('edit(formSSXMTable)', function (obj) {
-                    let count = Number(obj.value);
-                    if (isNaN(count)) {
-                        layer.msg("璇疯緭鍏ユ暟瀛�");
-                    } else {
-                        if (count > 0) {
-                            for (var i=0;i<xxDataList.length;i++){
-                                if (xxDataList[i]["matNo"] === obj.data.matNo){
-                                    xxDataList[i]["qty"] = count;
-                                    break;
-                                }
+                    if (obj.field=='memo'){
+                    let vle = obj.value;
+                        for (var i=0;i<xxDataList.length;i++) {
+                            if (xxDataList[i]["matNo"] === obj.data.matNo) {
+                                xxDataList[i]["memo"] = vle;
+                                break;
                             }
+                        }
+                    }else if (obj.field=='qty'){
+                        let vle = Number(obj.value);
+                        if (isNaN(vle)) {
+                            layer.msg("璇疯緭鍏ユ暟瀛�");
                         } else {
-                            layer.msg("鏁伴噺蹇呴』澶т簬闆�");
+                            if (vle > 0) {
+                                for (var i=0;i<xxDataList.length;i++) {
+                                    if (xxDataList[i]["matNo"] === obj.data.matNo) {
+                                        xxDataList[i]["qty"] = vle;
+                                        break;
+                                    }
+                                }
+                            } else {
+                                layer.msg("鏁伴噺蹇呴』澶т簬闆�");
+                            }
                         }
                     }
                     insTbSSXM.reload({data: xxDataList});
@@ -306,6 +329,11 @@
                                                     xxDataList.push({
                                                         matNo: mat.matNo,
                                                         matName: mat.matName,
+                                                        color:mat.color,
+                                                        size:mat.size,
+                                                        specs:mat.specs,
+                                                        memo: mat.memo,
+                                                        unit: mat.unit,
                                                         qty: 0.0
                                                     });
                                                     insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
diff --git a/src/main/webapp/static/js/waitMatout/waitMatout.js b/src/main/webapp/static/js/waitMatout/waitMatout.js
index 2cfa8d7..40a9fbc 100644
--- a/src/main/webapp/static/js/waitMatout/waitMatout.js
+++ b/src/main/webapp/static/js/waitMatout/waitMatout.js
@@ -1,47 +1,29 @@
-var pageCurr;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
-    var table = layui.table;
+}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate'], function () {
     var $ = layui.jquery;
     var layer = layui.layer;
-    var layDate = layui.laydate;
     var form = layui.form;
+    var table = layui.table;
+    var util = layui.util;
     var admin = layui.admin;
+    var xmSelect = layui.xmSelect;
+    var layDate = layui.laydate;
 
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
+    // 娓叉煋琛ㄦ牸
+    var insTb = table.render({
         elem: '#waitMatout',
+        url: baseUrl+'/waitMatout/head/page/auth',
         headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/waitMatout/list/auth',
         page: true,
-        limit: 16,
-        limits: [16, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
+        cellMinWidth: 100,
         cols: [[
-            {type: 'checkbox'}
-            ,{field: 'billNo', align: 'center',title: '鍗曟嵁缂栧彿'}
-            ,{field: 'seqNo', align: 'center',title: '搴忓彿'}
-            ,{field: 'billType$', align: 'center',title: '鍗曟嵁绫诲瀷'}
-            ,{field: 'matNo', align: 'center',title: '鐗╂枡缂栫爜'}
-            ,{field: 'matName', align: 'center',title: '鐗╂枡鍚嶇О'}
-            ,{field: 'qty', align: 'center',title: '鏁伴噺'}
-            ,{field: 'specs', align: 'center',title: '瑙勬牸'}
-            ,{field: 'unit', align: 'center',title: '鍗曚綅'}
-            ,{field: 'size', align: 'center',title: '灏哄', hide: true}
-            ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
-            ,{field: 'weight', align: 'center',title: '鍗曢噸', hide: true}
-            ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
-            ,{field: 'outQty', align: 'center',title: '宸插嚭搴撻噺'}
-            ,{field: 'linkErp$', align: 'center',title: 'ERP杩炵嚎'}
-            ,{field: 'ioStatus$', align: 'center',title: '瀹屾垚鐘舵��'}
-            ,{field: 'ioTime$', align: 'center',title: '瀹屾垚鏃堕棿', hide: true}
-            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳',event: 'modiUser', style: 'cursor:pointer', hide: true}
-            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide: true}
-            ,{field: 'appeUser$', align: 'center',title: '寤烘。浜哄憳',event: 'appeUser', style: 'cursor:pointer', hide: true}
-            ,{field: 'appeTime$', align: 'center',title: '寤烘。鏃堕棿', hide: true}
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
+            {type: 'numbers'},
+            {field: 'billNo', title: '鍗曟嵁缂栧彿', sort: true},
+            {field: 'billType$', align: 'center', title: '绫诲瀷',  minWidth: 160, width: 160},
+            {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
+            {field: 'appeTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200},
+            {align: 'center', title: '鎿嶄綔', toolbar: '#operate', minWidth: 130, width: 130}
         ]],
         request: {
             pageName: 'curr',
@@ -58,124 +40,176 @@
         response: {
             statusCode: 200
         },
-        done: function(res, curr, count) {
+        done: function (res, curr, count) {
             if (res.code === 403) {
                 top.location.href = baseUrl+"/";
             }
-            pageCurr=curr;
-            limit();
         }
     });
 
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(waitMatout)', 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}
-        });
+    // 鎼滅储
+    form.on('submit(waitMatoutSearch)', function (data) {
+        insTb.reload({where: data.field, page: {curr: 1}});
     });
 
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(waitMatout)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               var ids = checkStatus.map(function (d) {
-                   return d.seqNo;
-               });
-               del(ids);
-               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);
+    // 娣诲姞
+    $("#waitMatoutAddBtn").click(function () {
+        showEditModel();
+    });
+
+    // 宸ュ叿鏉$偣鍑讳簨浠�
+    table.on('tool(waitMatout)', function (obj) {
+        var data = obj.data;
+        var layEvent = obj.event;
+        console.log(obj)
+        if (layEvent === 'edit') {
+            showEditModel(data);
+        } else if (layEvent === 'del') {
+            doDel(data.billNo);
+        } else if (layEvent === 'look') {
+            var $a = $(obj.tr).find('a[lay-event="look"]');
+            var offset = $a.offset();
+            var top = offset.top;
+            var left = offset.left;
+            layer.open({
+                type: 1,
+                title: false,
+                area: '800px',
+                offset: [top + 'px', (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+'/waitMatout/list/auth',
+                        where: {
+                            bill_no: data.billNo
+                        },
+                        page: true,
+                        cellMinWidth: 100,
+                        cols: [[
+                            {type: 'numbers'},
+                            {field: 'matNo', title: '鐗╂枡缂栫爜'},
+                            {field: 'matName', title: '鐗╂枡鍚嶇О', width: 160},
+                            {field: 'qty', title: '鏁伴噺', width: 90},
+                            {
+                                field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) {
+                                    return util.toDateString(d.createTime);
+                                },  width: 180
+                            },
+                            {field: 'outqty', title: '宸插嚭搴撻噺'},
+                            {field: 'color', title: '棰滆壊'},
+                            {field: 'specs', title: '瑙勬牸'},
+                        ]],
+                        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: ''
+                    });
+                }
+            });
+        }
+    });
+
+    // 鏄剧ず琛ㄥ崟寮圭獥
+    function showEditModel(expTpe) {
+
+        //matOut ajax
+        // var DataList = [];
+        // $.ajax({
+        //     url: baseUrl+"/waitMatout/list/auth2?billNo=" + expTpe.billNo,
+        //     headers: {'token': localStorage.getItem('token')},
+        //     contentType:'application/json;charset=UTF-8',
+        //     method: 'POST',
+        //     success: function (res) {
+        //         console.log(res)
+        //         var list=res.data.records;
+        //         for (let i = 0; i < list.length; i++) {
+        //             DataList.push(list[i]);
+        //         }
+        //     }
+        // })
+        // console.log(DataList)
+
+        admin.open({
+            type: 1,
+            title: (expTpe ? '淇敼' : '娣诲姞') + '鍗曟嵁',
+            content: $('#editDialog').html(),
+            area: '1300px',
+            success: function (layero, dIndex) {
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                var isExpAdd = !expTpe;
+                // 鍥炴樉鏁版嵁
+                form.val('editForm', expTpe);
+                if (expTpe) {
+                    $('#billNo').attr("disabled", "disabled");
+                }
+                // 琛ㄥ崟鎻愪氦浜嬩欢
+                form.on('submit(waitMatoutEditSubmit)', function (data) {
+                    console.log(data)
+                    // 缁勮鏁版嵁
+                    if (xxDataList.length <= 0) {
+                        layer.tips('璇锋坊鍔犲崟鎹槑缁�', '#matAddBtnComment', {tips: [1, '#ff4c4c']});
+                        return false;
+                    }
+                    var param = [];
+                    var nList = admin.util.deepClone(xxDataList);
+                    console.log(nList)
+                    for (var xi = 0; xi < nList.length; xi++) {
+                        if (nList[xi].outQty > 0 ) {
+
+                        } else if (nList[xi].qty > 0) {
+                            param.push({
+                                billNo: data.field.billNo,
+                                billType: data.field.billType,
+                                matNo: nList[xi].matNo,
+                                matName: nList[xi].matName,
+                                color: nList[xi].color,
+                                size: nList[xi].size,
+                                specs: nList[xi].specs,
+                                memo: nList[xi].memo,
+                                unit: nList[xi].unit,
+                                outQty: nList[xi].outQty,
+                                qty: nList[xi].qty,
+                            })
                         }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'waitMatout': exportData,
-                        'fields': fields
-                    };
+                    }
+                    if (param.length === 0) {
+                        layer.msg('鍗曟嵁鏄庣粏鏁伴噺涓嶅悎娉�', {icon: 2});
+                        return false;
+                    }
+                    layer.load(2);
                     $.ajax({
-                        url: baseUrl+"/waitMatout/export/auth",
+                        url: baseUrl+"/waitMatout/" + (isExpAdd?"add":"modify") + "/auth",
                         headers: {'token': localStorage.getItem('token')},
                         data: JSON.stringify(param),
-                        dataType:'json',
                         contentType:'application/json;charset=UTF-8',
                         method: 'POST',
                         success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
-    // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(waitMatout)', function(obj){
-        var data = obj.data;
-        switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
-                break;
-            case "del":
-                var ids = [data.seqNo];
-                del(ids);
-                break;
-        }
-    });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender();
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/waitMatout/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
+                            layer.closeAll('loading');
                             if (res.code === 200){
                                 layer.close(dIndex);
+                                insTb.reload({page: {curr: 1}});
                                 layer.msg(res.msg, {icon: 1});
-                                tableReload();
                             } else if (res.code === 403){
                                 top.location.href = baseUrl+"/";
                             }else {
@@ -185,33 +219,233 @@
                     })
                     return false;
                 });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
+                // 鏄庣粏琛ㄦ牸
+                var xxDataList = [];
+                var tbOptions = {
+                    elem: '#formSSXMTable',
+                    headers: {token: localStorage.getItem('token')},
+                    data: xxDataList,
+                    page: true,
+                    height: '350px;',
+                    cellMinWidth: 100,
+                    cols: [[
+                        {type: 'numbers'},
+                        {field: 'matNo', title: '鐗╂枡缂栫爜'},
+                        {field: 'matName', title: '鐗╂枡鍚嶇О', width: 160},
+                        {field: 'specs', title: '瑙勬牸', width: 160},
+                        {field: 'color', title: '棰滆壊', width: 160},
+                        {field: 'size', title: '灏哄', width: 160},
+                        {field: 'qty', title: '淇敼鏁伴噺', style: 'color: blue;font-weight: bold', edit: true, minWidth: 100, width: 100},
+                        {field: 'unit', title: '鍗曚綅', width: 160},
+                        {field: 'memo', title: '澶囨敞' , edit: true, width: 160},
+                        {field: 'outQty', title: '宸插嚭搴撻噺' , width: 160},
+                        {align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80}
+                    ]],
+                    done: function (res) {
+                        var list= res.data
+                        $(layero).find('.layui-table-view').css('margin', '0');
+                    },
+                    size: ''
+                };
+                if (!isExpAdd) {
+                    $.ajax({
+                        url: baseUrl+"/waitMatout/detl/list/auth?billNo=" + expTpe.billNo,
+                        headers: {'token': localStorage.getItem('token')},
+                        method: 'GET',
+                        async: false,
+                        success: function (res) {
+                            if (res.code === 200){
+                                xxDataList = res.data;
+                                tbOptions.data = xxDataList;
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    })
+                }
+                var insTbSSXM = table.render(tbOptions);
+                // 宸ュ叿鏉$偣鍑讳簨浠�
+                table.on('tool(formSSXMTable)', function (obj) {
+                    var data = obj.data;
+                    var layEvent = obj.event;
+                    if (layEvent === 'edit') {
+                        showEditModel2(data);
+                    } else if (layEvent === 'del') {
+                        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+                            shade: .1,
+                            skin: 'layui-layer-admin'
+                        }, function (i) {
+                            layer.close(i);
+                            for (var j = 0; j < xxDataList.length; j++) {
+                                if (xxDataList[j].matNo === data.matNo) {
+                                    xxDataList.splice(j, 1);
+                                    break;
+                                }
+                            }
+                            insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                        });
+                    }
+                });
+                // 鏁伴噺淇敼
+                table.on('edit(formSSXMTable)', function (obj) {
+                    debugger;
+                    if (obj.field=='memo'){
+                        let vle = obj.value;
+                        for (var i=0;i<xxDataList.length;i++) {
+                            if (xxDataList[i]["matNo"] === obj.data.matNo) {
+                                xxDataList[i]["memo"] = vle;
+                                break;
+                            }
+                        }
+                    }else if (obj.field=='qty'){
+                        let vle = Number(obj.value);
+                        if (isNaN(vle)) {
+                            layer.msg("璇疯緭鍏ユ暟瀛�");
+                        } else {
+                            if (vle > 0) {
+                                for (var i=0;i<xxDataList.length;i++) {
+                                    if (xxDataList[i]["matNo"] === obj.data.matNo) {
+                                        xxDataList[i]["qty"] = vle;
+                                        break;
+                                    }
+                                }
+                            } else {
+                                layer.msg("鏁伴噺蹇呴』澶т簬闆�");
+                            }
+                        }
+                    }
+
+                    insTbSSXM.reload({data: xxDataList});
+                });
+                //
+                $('#matAddBtnComment').click(function () {
+                    showEditModel2();
+                });
+
+                // 鏄剧ず娣诲姞鏄庣粏琛ㄥ崟寮圭獥
+                function showEditModel2(exp) {
+                    admin.open({
+                        type: 1,
+                        offset: '150px',
+                        area: '480px',
+                        title: (exp ? '淇敼' : '娣诲姞') + '鏄庣粏',
+                        content: $('#matEditDialog').html(),
+                        success: function (layero, dIndex) {
+                            $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                            // 鍥炴樉鏁版嵁
+                            form.val('matEditForm', exp);
+                            // 琛ㄥ崟鎻愪氦浜嬩欢
+                            form.on('submit(matEditSubmit)', function (data) {
+                                var existMats = [];
+                                xxDataList.forEach(function(elem) {
+                                    existMats.push(elem.matNo);
+                                });
+                                var selectList = matXmSelect.getValue();
+                                for (var i = 0; i<selectList.length; i++) {
+                                    var item = selectList[i];
+                                    if (existMats.indexOf(item.value) === -1) {
+                                        // 鏌ヨ鐗╂枡璇︽儏
+                                        $.ajax({
+                                            url: baseUrl+"/matCode/"+item.value+"/auth",
+                                            headers: {'token': localStorage.getItem('token')},
+                                            method: 'GET',
+                                            async: false,
+                                            success: function (res) {
+                                                if (res.code === 200){
+                                                    var mat = res.data;
+                                                    console.log(mat)
+                                                    xxDataList.push({
+                                                        matNo: mat.matNo,
+                                                        matName: mat.matName,
+                                                        color:mat.color,
+                                                        size:mat.size,
+                                                        specs:mat.specs,
+                                                        memo: mat.memo,
+                                                        unit: mat.unit,
+                                                        outQty: mat.outQty,
+                                                        qty: 0.0
+                                                    });
+                                                    insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                                                } else if (res.code === 403){
+                                                    top.location.href = baseUrl+"/";
+                                                }else {
+                                                    layer.msg(res.msg, {icon: 2})
+                                                }
+                                            }
+                                        })
+                                    }
+                                }
+                                layer.close(dIndex);
+                                return false;
+                            });
+                            // 娓叉煋鐗╂枡閫夋嫨
+                            var matXmSelect = xmSelect.render({
+                                el: '#mat',
+                                style: {
+                                    width: '340px',
+                                },
+                                autoRow: true,
+                                toolbar: { show: true },
+                                filterable: true,
+                                remoteSearch: true,
+                                remoteMethod: function(val, cb, show){
+                                    $.ajax({
+                                        url: baseUrl+"/mat/all/get/kv",
+                                        headers: {'token': localStorage.getItem('token')},
+                                        data: {
+                                            condition: val
+                                        },
+                                        method: 'POST',
+                                        success: function (res) {
+                                            if (res.code === 200){
+                                                cb(res.data)
+                                            } else {
+                                                cb([]);
+                                                layer.msg(res.msg, {icon: 2});
+                                            }
+                                        }
+                                    });
+                                }
+                            })
+                            // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+                            $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                            layui.form.render('select');
+                        }
+                    });
+                }
+
             }
         });
     }
 
-    /* 鍒犻櫎 */
-    function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
-            skin: 'layui-layer-admin',
-            shade: .1
+
+    // 鍒犻櫎鍗曟嵁
+    function doDel(billNo) {
+        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+            shade: .1,
+            skin: 'layui-layer-admin'
         }, function (i) {
             layer.close(i);
-            var loadIndex = layer.load(2);
+            layer.load(2);
+
             $.ajax({
                 url: baseUrl+"/waitMatout/delete/auth",
                 headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
+                data: {
+                    billNo: billNo
+                },
+                // contentType:'application/json;charset=UTF-8',
                 method: 'POST',
                 success: function (res) {
-                    layer.close(loadIndex);
+                    layer.closeAll('loading');
                     if (res.code === 200){
+                        insTb.reload({page: {curr: 1}});
                         layer.msg(res.msg, {icon: 1});
-                        tableReload();
                     } else if (res.code === 403){
                         top.location.href = baseUrl+"/";
-                    } else {
+                    }else {
                         layer.msg(res.msg, {icon: 2});
                     }
                 }
@@ -219,55 +453,9 @@
         });
     }
 
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
+    layDate.render({
+        elem: '.layui-laydate-range'
+        ,type: 'datetime'
+        ,range: true
     });
-
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
-
-    // 鏃堕棿閫夋嫨鍣�
-    function layDateRender() {
-        layDate.render({
-        elem: '#ioTime\\$',
-        type: 'datetime'
-        });
-        layDate.render({
-        elem: '#modiTime\\$',
-        type: 'datetime'
-        });
-        layDate.render({
-        elem: '#appeTime\\$',
-        type: 'datetime'
-        });
-        layDate.render({
-            elem: '.layui-laydate-range'
-            ,type: 'datetime'
-            ,range: true
-        });
-    }
-    layDateRender();
-
-});
-
-// 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
-    parent.layer.closeAll();
-});
-
-function tableReload(child) {
-    var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
-        searchData[this.name] = this.value;
-    });
-    tableIns.reload({
-        where: searchData,
-        page: {curr: pageCurr}
-     });
-}
+});
\ No newline at end of file
diff --git a/src/main/webapp/views/waitMatout/waitMatout.html b/src/main/webapp/views/waitMatout/waitMatout.html
index 6310e90..9949418 100644
--- a/src/main/webapp/views/waitMatout/waitMatout.html
+++ b/src/main/webapp/views/waitMatout/waitMatout.html
@@ -8,51 +8,136 @@
     <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">
+<!--    <link rel="stylesheet" href="../../static/css/cool.css" media="all">-->
+<!--    <link rel="stylesheet" href="../../static/css/common.css" media="all">-->
+
+    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
 </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="bill_no" placeholder="鍗曟嵁缂栧彿" autocomplete="off">
+<!-- 姝f枃寮�濮� -->
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <!-- 琛ㄦ牸椤堕儴宸ュ叿鏍� -->
+            <div class="layui-form toolbar">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline mr0">
+                            <input name="bill_no" class="layui-input" type="text" placeholder="杈撳叆鍗曟嵁缂栧彿"/>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline mr0">
+                            <select name="bill_type" placeholder="璇烽�夋嫨鍗曟嵁绫诲瀷">
+<!--                                1:閿�鍞嚭搴�,2:棰嗘枡鍑哄簱,3:璋冩嫧鍑哄簱,4:閲囪喘閫�鍥炲嚭搴�,5:鍏朵粬鍑哄簱-->
+                                <option value="" style="display: none"></option>
+                                <option value="1">閿�鍞嚭搴�</option>
+                                <option value="2">棰嗘枡鍑哄簱</option>
+                                <option value="3">璋冩嫧鍑哄簱</option>
+                                <option value="4">閲囪喘閫�鍥炲嚭搴�</option>
+                                <option value="5">鍏朵粬鍑哄簱</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="appe_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <button class="layui-btn icon-btn" lay-filter="waitMatoutSearch" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button id="waitMatoutAddBtn" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>娣诲姞
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table id="waitMatout" lay-filter="waitMatout"></table>
         </div>
     </div>
-    <!-- 鏃ユ湡鑼冨洿 -->
-    <div class="layui-inline" style="width: 300px">
-        <div class="layui-input-inline">
-            <input class="layui-input layui-laydate-range" id="modi_time" name="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            鍑哄簱閫氱煡鍗曪細鐢盓RP鎻愪緵鍗曟嵁缂栧彿銆佺被鍨嬨�佸崟鎹椂闂村強鐗╂枡鏄庣粏锛岀敓鎴愬叆搴撲綔涓氬崟锛屼负缁存姢绯荤粺楂樺彲鐢紝鐢ㄦ埛鍙嚜琛屾坊鍔犲叆搴撻�氱煡鍗曟暟鎹紝瀹屾垚鐙珛鐨勫叆搴撲綔涓氥��
+            <span class="text-danger">鎵嬪姩娣诲姞鏃讹紝璇锋鏌ュ崟鎹紪鍙锋槸鍚﹀湪ERP绯荤粺涓凡瀛樺湪锛岄伩鍏嶅彂鐢熸暟鎹敊璇棶棰樸��</span>
         </div>
-    </div>
-    <div class="layui-inline">
-        <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-        </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="waitMatout" lay-filter="waitMatout"></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 btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">鍒犻櫎</a>
+</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>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="editForm" lay-filter="editForm" class="layui-form model-form"  >
+        <input name="experimentTypeId" type="hidden"/>
+        <div class="layui-form-item">
+            <label class="layui-form-label">鍗曟嵁绫诲瀷锛�</label>
+            <div class="layui-input-block">
+                <select name="billType" maxlength="20" lay-verType="tips" lay-verify="required">
+                    <option value="" style="display: none"></option>
+                    <option value="1">閿�鍞嚭搴�</option>
+                    <option value="2">棰嗘枡鍑哄簱</option>
+                    <option value="3">璋冩嫧鍑哄簱</option>
+                    <option value="4">閲囪喘閫�鍥炲嚭搴�</option>
+                    <option value="5">鍏朵粬鍑哄簱</option>
+                </select>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">鍗曟嵁缂栧彿锛�</label>
+            <div class="layui-input-block">
+                <input id="billNo" name="billNo" placeholder="杈撳叆鍗曟嵁缂栧彿" type="text" class="layui-input" maxlength="20" lay-verType="tips" lay-verify="required"/>
+            </div>
+        </div>
+        <div class="layui-form-item" style="position: relative;">
+            <label class="layui-form-label">鍗曟嵁鏄庣粏锛�</label>
+            <div class="layui-input-block">
+                <table id="formSSXMTable" lay-filter="formSSXMTable"></table>
+            </div>
+            <button class="layui-btn layui-btn-sm icon-btn" id="matAddBtnComment"
+                    style="position: absolute; left: 20px;top: 60px;padding: 0 5px;" type="button">
+                <i class="layui-icon">&#xe654;</i>娣诲姞鏄庣粏
+            </button>
+        </div>
+        <div class="layui-form-item text-right">
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+            <button class="layui-btn" lay-filter="waitMatoutEditSubmit" lay-submit>淇濆瓨</button>
+        </div>
+    </form>
+</script>
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="formSSXMTableBar">
+    <!--    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">淇敼</a>-->
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">鍒犻櫎</a>
+</script>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="matEditDialog">
+    <form id="matEditForm" lay-filter="matEditForm" class="layui-form model-form">
+        <input name="experimentId" type="hidden"/>
+        <div class="layui-form-item">
+            <label class="layui-form-label">鐗╂枡 - 澶氶��</label>
+            <div class="layui-input-block">
+                <div id="mat" name="mat">
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item text-right">
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+            <button class="layui-btn" lay-filter="matEditSubmit" lay-submit>淇濆瓨</button>
+        </div>
+    </form>
 </script>
 
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
@@ -61,158 +146,5 @@
 <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/waitMatout/waitMatout.js" charset="utf-8"></script>
 </body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">鍗曟嵁缂栧彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="billNo" placeholder="璇疯緭鍏ュ崟鎹紪鍙�" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">搴忓彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="seqNo" placeholder="璇疯緭鍏ュ簭鍙�" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍗曟嵁绫诲瀷: </label>
-                    <div class="layui-input-block">
-                        <select name="billType">
-                            <option value="">璇烽�夋嫨鍗曟嵁绫诲瀷</option>
-                            <option value="1">閿�鍞嚭搴�</option>
-                            <option value="2">棰嗘枡鍑哄簱</option>
-                            <option value="3">璋冩嫧鍑哄簱</option>
-                            <option value="4">閲囪喘閫�鍥炲嚭搴�</option>
-                            <option value="5">鍏朵粬鍑哄簱</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">鐗╂枡缂栫爜: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="matNo" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">鐗╂枡鍚嶇О: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="matName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鏁伴噺: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="qty" placeholder="璇疯緭鍏ユ暟閲�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">瑙勬牸: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="specs" placeholder="璇疯緭鍏ヨ鏍�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍗曚綅: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="unit" placeholder="璇疯緭鍏ュ崟浣�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">灏哄: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="size" placeholder="璇疯緭鍏ュ昂瀵�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">棰滆壊: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="color" placeholder="璇疯緭鍏ラ鑹�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍗曢噸: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="weight" placeholder="璇疯緭鍏ュ崟閲�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">澶囨敞: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">宸插嚭搴撻噺: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="outQty" placeholder="璇疯緭鍏ュ凡鍑哄簱閲�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">ERP杩炵嚎: </label>
-                    <div class="layui-input-block">
-                        <select name="linkErp">
-                            <option value="">璇烽�夋嫨ERP杩炵嚎</option>
-                            <option value="0">闈炶繛绾�</option>
-                            <option value="1">ERP杩炵嚎</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">瀹屾垚鐘舵��: </label>
-                    <div class="layui-input-block">
-                        <select name="ioStatus">
-                            <option value="">璇烽�夋嫨瀹屾垚鐘舵��</option>
-                            <option value="0">寰呭鐞�</option>
-                            <option value="1">鍑哄簱涓�</option>
-                            <option value="2">鍑哄簱瀹屾垚</option>
-                            <option value="3">鍙栨秷鍑哄簱</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">瀹屾垚鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="ioTime" id="ioTime$" placeholder="璇疯緭鍏ュ畬鎴愭椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼浜哄憳: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="modiUser" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寤烘。浜哄憳: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="appeUser" placeholder="璇疯緭鍏ュ缓妗d汉鍛�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">寤烘。鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="璇疯緭鍏ュ缓妗f椂闂�">
-                    </div>
-                </div>
-
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
 </html>
 

--
Gitblit v1.9.1