From 8ad82b8030b331d8014a72b6d2f00020fe85a1c5 Mon Sep 17 00:00:00 2001
From: vincent <1341870251@qq.com>
Date: 星期五, 05 六月 2020 09:38:26 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/mapper/MatCodeMapper.java            |   12 
 src/main/java/com/zy/asrs/service/impl/MatCodeServiceImpl.java |   12 
 src/main/java/com/zy/asrs/controller/MatCodeController.java    |  129 ++++
 src/main/java/com/zy/asrs/service/MatCodeService.java          |    8 
 src/main/webapp/views/matCode/matCode.html                     |   83 ++
 src/main/java/com/zy/asrs/entity/MatCode.java                  |  596 ++++++++++++++++++++
 src/main/webapp/static/js/matCode/matCode.js                   |  539 ++++++++++++++++++
 src/main/webapp/views/matCode/matCode_detail.html              |  288 +++++++++
 src/main/resources/mapper/MatCodeMapper.xml                    |   48 +
 src/main/java/com/zy/common/CodeBuilder.java                   |    4 
 src/main/resources/application.yml                             |   16 
 11 files changed, 1,725 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MatCodeController.java b/src/main/java/com/zy/asrs/controller/MatCodeController.java
new file mode 100644
index 0000000..6019326
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/MatCodeController.java
@@ -0,0 +1,129 @@
+package com.zy.asrs.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.zy.asrs.entity.MatCode;
+import com.zy.asrs.service.MatCodeService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+public class MatCodeController extends BaseController {
+
+    @Autowired
+    private MatCodeService matCodeService;
+
+    @RequestMapping(value = "/matCode/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(matCodeService.selectById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/matCode/list/auth")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam Map<String, Object> param){
+        excludeTrash(param);
+        EntityWrapper<MatCode> wrapper = new EntityWrapper<>();
+        convert(param, wrapper);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        return R.ok(matCodeService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    private void convert(Map<String, Object> map, EntityWrapper wrapper){
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            if (entry.getKey().endsWith(">")) {
+                wrapper.ge(Cools.deleteChar(entry.getKey()), DateUtils.convert(String.valueOf(entry.getValue())));
+            } else if (entry.getKey().endsWith("<")) {
+                wrapper.le(Cools.deleteChar(entry.getKey()), DateUtils.convert(String.valueOf(entry.getValue())));
+            } else {
+                wrapper.eq(entry.getKey(), String.valueOf(entry.getValue()));
+            }
+        }
+    }
+
+    @RequestMapping(value = "/matCode/add/auth")
+    @ManagerAuth
+    public R add(MatCode matCode) {
+        matCodeService.insert(matCode);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/matCode/update/auth")
+	@ManagerAuth
+    public R update(MatCode matCode){
+        if (Cools.isEmpty(matCode) || null==matCode.getMatNo()){
+            return R.error();
+        }
+        matCodeService.updateById(matCode);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/matCode/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam String param){
+        List<MatCode> list = JSONArray.parseArray(param, MatCode.class);
+        if (Cools.isEmpty(list)){
+            return R.error();
+        }
+        for (MatCode entity : list){
+            matCodeService.delete(new EntityWrapper<>(entity));
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/matCode/export/auth")
+    @ManagerAuth
+    public R export(@RequestBody JSONObject param){
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        EntityWrapper<MatCode> wrapper = new EntityWrapper<>();
+        Map<String, Object> map = excludeTrash(param.getJSONObject("matCode"));
+        convert(map, wrapper);
+        List<MatCode> list = matCodeService.selectList(wrapper);
+        return R.ok(exportSupport(list, fields));
+    }
+
+    @RequestMapping(value = "/matCodeQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        EntityWrapper<MatCode> wrapper = new EntityWrapper<>();
+        wrapper.like("mat_no", condition);
+        Page<MatCode> page = matCodeService.selectPage(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (MatCode matCode : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", matCode.getMatNo());
+            map.put("value", matCode.getMatNo());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping(value = "/matCode/check/column/auth")
+    @ManagerAuth
+    public R query(@RequestBody JSONObject param) {
+        Wrapper<MatCode> wrapper = new EntityWrapper<MatCode>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        if (null != matCodeService.selectOne(wrapper)){
+            return R.parse(BaseRes.REPEAT).add(getComment(MatCode.class, String.valueOf(param.get("key"))));
+        }
+        return R.ok();
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/MatCode.java b/src/main/java/com/zy/asrs/entity/MatCode.java
new file mode 100644
index 0000000..bfa7e5d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/MatCode.java
@@ -0,0 +1,596 @@
+package com.zy.asrs.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 com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@TableName("bas_mat_code")
+public class MatCode implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鐗╂枡缂栫爜
+     */
+    @ApiModelProperty(value= "鐗╂枡缂栫爜")
+    @TableId(value = "mat_no", type = IdType.INPUT)
+    @TableField("mat_no")
+    private String matNo;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    /**
+     * 鐗╂枡鍚嶇О
+     */
+    @ApiModelProperty(value= "鐗╂枡鍚嶇О")
+    @TableField("mat_name")
+    private String matName;
+
+    /**
+     * 鐗╂枡鍗曚綅
+     */
+    @ApiModelProperty(value= "鐗╂枡鍗曚綅")
+    private String str1;
+
+    /**
+     * 鐗╂枡瑙勬牸
+     */
+    @ApiModelProperty(value= "鐗╂枡瑙勬牸")
+    private String str2;
+
+    @ApiModelProperty(value= "")
+    private String str3;
+
+    @ApiModelProperty(value= "")
+    private String str4;
+
+    @ApiModelProperty(value= "")
+    private String str5;
+
+    @ApiModelProperty(value= "")
+    private String str6;
+
+    @ApiModelProperty(value= "")
+    private String str7;
+
+    @ApiModelProperty(value= "")
+    private String str8;
+
+    @ApiModelProperty(value= "")
+    private String str9;
+
+    @ApiModelProperty(value= "")
+    private String str10;
+
+    @ApiModelProperty(value= "")
+    private String str11;
+
+    @ApiModelProperty(value= "")
+    private String str12;
+
+    @ApiModelProperty(value= "")
+    private String str13;
+
+    @ApiModelProperty(value= "")
+    private String str14;
+
+    @ApiModelProperty(value= "")
+    private String str15;
+
+    @ApiModelProperty(value= "")
+    private String str16;
+
+    @ApiModelProperty(value= "")
+    private String str17;
+
+    @ApiModelProperty(value= "")
+    private String str18;
+
+    @ApiModelProperty(value= "")
+    private String str19;
+
+    @ApiModelProperty(value= "")
+    private String str20;
+
+    @ApiModelProperty(value= "")
+    private String str21;
+
+    @ApiModelProperty(value= "")
+    private String str22;
+
+    @ApiModelProperty(value= "")
+    private String str23;
+
+    @ApiModelProperty(value= "")
+    private Double num1;
+
+    @ApiModelProperty(value= "")
+    private Double num2;
+
+    @ApiModelProperty(value= "")
+    private Double num3;
+
+    @ApiModelProperty(value= "")
+    private Double num4;
+
+    @ApiModelProperty(value= "")
+    private Double num5;
+
+    @ApiModelProperty(value= "")
+    private Double num6;
+
+    @ApiModelProperty(value= "")
+    private Date date1;
+
+    /**
+     * 鍒涘缓鑰�
+     */
+    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    private Date appeTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("modi_user")
+    private Long modiUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("modi_time")
+    private Date modiTime;
+
+    @ApiModelProperty(value= "")
+    private Short status;
+
+    public MatCode() {}
+
+    public MatCode(String barcode,String matName,String str1,String str2,String str3,String str4,String str5,String str6,String str7,String str8,String str9,String str10,String str11,String str12,String str13,String str14,String str15,String str16,String str17,String str18,String str19,String str20,String str21,String str22,String str23,Double num1,Double num2,Double num3,Double num4,Double num5,Double num6,Date date1,Long appeUser,Date appeTime,Long modiUser,Date modiTime,Short status) {
+        this.barcode = barcode;
+        this.matName = matName;
+        this.str1 = str1;
+        this.str2 = str2;
+        this.str3 = str3;
+        this.str4 = str4;
+        this.str5 = str5;
+        this.str6 = str6;
+        this.str7 = str7;
+        this.str8 = str8;
+        this.str9 = str9;
+        this.str10 = str10;
+        this.str11 = str11;
+        this.str12 = str12;
+        this.str13 = str13;
+        this.str14 = str14;
+        this.str15 = str15;
+        this.str16 = str16;
+        this.str17 = str17;
+        this.str18 = str18;
+        this.str19 = str19;
+        this.str20 = str20;
+        this.str21 = str21;
+        this.str22 = str22;
+        this.str23 = str23;
+        this.num1 = num1;
+        this.num2 = num2;
+        this.num3 = num3;
+        this.num4 = num4;
+        this.num5 = num5;
+        this.num6 = num6;
+        this.date1 = date1;
+        this.appeUser = appeUser;
+        this.appeTime = appeTime;
+        this.modiUser = modiUser;
+        this.modiTime = modiTime;
+        this.status = status;
+    }
+
+//    MatCode matCode = new MatCode(
+//            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,    // 鍒涘缓鑰�
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null    // 
+//    );
+
+    public String getMatNo() {
+        return matNo;
+    }
+
+    public void setMatNo(String matNo) {
+        this.matNo = matNo;
+    }
+
+    public String getBarcode() {
+        return barcode;
+    }
+
+    public void setBarcode(String barcode) {
+        this.barcode = barcode;
+    }
+
+    public String getMatName() {
+        return matName;
+    }
+
+    public void setMatName(String matName) {
+        this.matName = matName;
+    }
+
+    public String getStr1() {
+        return str1;
+    }
+
+    public void setStr1(String str1) {
+        this.str1 = str1;
+    }
+
+    public String getStr2() {
+        return str2;
+    }
+
+    public void setStr2(String str2) {
+        this.str2 = str2;
+    }
+
+    public String getStr3() {
+        return str3;
+    }
+
+    public void setStr3(String str3) {
+        this.str3 = str3;
+    }
+
+    public String getStr4() {
+        return str4;
+    }
+
+    public void setStr4(String str4) {
+        this.str4 = str4;
+    }
+
+    public String getStr5() {
+        return str5;
+    }
+
+    public void setStr5(String str5) {
+        this.str5 = str5;
+    }
+
+    public String getStr6() {
+        return str6;
+    }
+
+    public void setStr6(String str6) {
+        this.str6 = str6;
+    }
+
+    public String getStr7() {
+        return str7;
+    }
+
+    public void setStr7(String str7) {
+        this.str7 = str7;
+    }
+
+    public String getStr8() {
+        return str8;
+    }
+
+    public void setStr8(String str8) {
+        this.str8 = str8;
+    }
+
+    public String getStr9() {
+        return str9;
+    }
+
+    public void setStr9(String str9) {
+        this.str9 = str9;
+    }
+
+    public String getStr10() {
+        return str10;
+    }
+
+    public void setStr10(String str10) {
+        this.str10 = str10;
+    }
+
+    public String getStr11() {
+        return str11;
+    }
+
+    public void setStr11(String str11) {
+        this.str11 = str11;
+    }
+
+    public String getStr12() {
+        return str12;
+    }
+
+    public void setStr12(String str12) {
+        this.str12 = str12;
+    }
+
+    public String getStr13() {
+        return str13;
+    }
+
+    public void setStr13(String str13) {
+        this.str13 = str13;
+    }
+
+    public String getStr14() {
+        return str14;
+    }
+
+    public void setStr14(String str14) {
+        this.str14 = str14;
+    }
+
+    public String getStr15() {
+        return str15;
+    }
+
+    public void setStr15(String str15) {
+        this.str15 = str15;
+    }
+
+    public String getStr16() {
+        return str16;
+    }
+
+    public void setStr16(String str16) {
+        this.str16 = str16;
+    }
+
+    public String getStr17() {
+        return str17;
+    }
+
+    public void setStr17(String str17) {
+        this.str17 = str17;
+    }
+
+    public String getStr18() {
+        return str18;
+    }
+
+    public void setStr18(String str18) {
+        this.str18 = str18;
+    }
+
+    public String getStr19() {
+        return str19;
+    }
+
+    public void setStr19(String str19) {
+        this.str19 = str19;
+    }
+
+    public String getStr20() {
+        return str20;
+    }
+
+    public void setStr20(String str20) {
+        this.str20 = str20;
+    }
+
+    public String getStr21() {
+        return str21;
+    }
+
+    public void setStr21(String str21) {
+        this.str21 = str21;
+    }
+
+    public String getStr22() {
+        return str22;
+    }
+
+    public void setStr22(String str22) {
+        this.str22 = str22;
+    }
+
+    public String getStr23() {
+        return str23;
+    }
+
+    public void setStr23(String str23) {
+        this.str23 = str23;
+    }
+
+    public Double getNum1() {
+        return num1;
+    }
+
+    public void setNum1(Double num1) {
+        this.num1 = num1;
+    }
+
+    public Double getNum2() {
+        return num2;
+    }
+
+    public void setNum2(Double num2) {
+        this.num2 = num2;
+    }
+
+    public Double getNum3() {
+        return num3;
+    }
+
+    public void setNum3(Double num3) {
+        this.num3 = num3;
+    }
+
+    public Double getNum4() {
+        return num4;
+    }
+
+    public void setNum4(Double num4) {
+        this.num4 = num4;
+    }
+
+    public Double getNum5() {
+        return num5;
+    }
+
+    public void setNum5(Double num5) {
+        this.num5 = num5;
+    }
+
+    public Double getNum6() {
+        return num6;
+    }
+
+    public void setNum6(Double num6) {
+        this.num6 = num6;
+    }
+
+    public Date getDate1() {
+        return date1;
+    }
+
+    public String getDate1$(){
+        if (Cools.isEmpty(this.date1)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.date1);
+    }
+
+    public void setDate1(Date date1) {
+        this.date1 = date1;
+    }
+
+    public Long getAppeUser() {
+        return appeUser;
+    }
+
+    public String getAppeUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.appeUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public void setAppeUser(Long appeUser) {
+        this.appeUser = appeUser;
+    }
+
+    public Date getAppeTime() {
+        return appeTime;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+    public void setAppeTime(Date appeTime) {
+        this.appeTime = appeTime;
+    }
+
+    public Long getModiUser() {
+        return modiUser;
+    }
+
+    public String getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public void setModiUser(Long modiUser) {
+        this.modiUser = modiUser;
+    }
+
+    public Date getModiTime() {
+        return modiTime;
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public void setModiTime(Date modiTime) {
+        this.modiTime = modiTime;
+    }
+
+    public Short getStatus() {
+        return status;
+    }
+
+    public void setStatus(Short status) {
+        this.status = status;
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/MatCodeMapper.java b/src/main/java/com/zy/asrs/mapper/MatCodeMapper.java
new file mode 100644
index 0000000..d83016c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/MatCodeMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.MatCode;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface MatCodeMapper extends BaseMapper<MatCode> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/MatCodeService.java b/src/main/java/com/zy/asrs/service/MatCodeService.java
new file mode 100644
index 0000000..77b9506
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/MatCodeService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.MatCode;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface MatCodeService extends IService<MatCode> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MatCodeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MatCodeServiceImpl.java
new file mode 100644
index 0000000..c5f33c4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/MatCodeServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.MatCodeMapper;
+import com.zy.asrs.entity.MatCode;
+import com.zy.asrs.service.MatCodeService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("matCodeService")
+public class MatCodeServiceImpl extends ServiceImpl<MatCodeMapper, MatCode> implements MatCodeService {
+
+}
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index d2c576a..6b9826d 100644
--- a/src/main/java/com/zy/common/CodeBuilder.java
+++ b/src/main/java/com/zy/common/CodeBuilder.java
@@ -15,10 +15,10 @@
 //        generator.password="xltys1995";
 //        generator.table="sys_host";
         // sqlserver
-        generator.url="192.168.3.208:1433;databasename=cool";
+        generator.url="192.168.1.108:1433;databasename=cool";
         generator.username="sa";
         generator.password="sa@123";
-        generator.table="asr_wrk_detl";
+        generator.table="bas_mat_code";
         generator.packagePath="com.zy.asrs";
         generator.build();
     }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 5ef5315..69d57e2 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -7,15 +7,15 @@
     name:
   datasource:
     # mysql
-    driver-class-name: com.mysql.jdbc.Driver
-    url: jdbc:mysql://127.0.0.1:3306/cool?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
-    username: root
-    password: xltys1995
+#    driver-class-name: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://127.0.0.1:3306/cool?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+#    username: root
+#    password: xltys1995
     # sql-server
-#    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-#    url: jdbc:sqlserver://192.168.1.103:1433;databasename=cool
-#    username: sa
-#    password: sa@123
+    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+    url: jdbc:sqlserver://192.168.1.108:1433;databasename=cool
+    username: sa
+    password: sa@123
   mvc:
     static-path-pattern: /**
   redis:
diff --git a/src/main/resources/mapper/MatCodeMapper.xml b/src/main/resources/mapper/MatCodeMapper.xml
new file mode 100644
index 0000000..8e78b20
--- /dev/null
+++ b/src/main/resources/mapper/MatCodeMapper.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.MatCodeMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.MatCode">
+        <result column="mat_no" property="matNo" />
+        <result column="barcode" property="barcode" />
+        <result column="mat_name" property="matName" />
+        <result column="str1" property="str1" />
+        <result column="str2" property="str2" />
+        <result column="str3" property="str3" />
+        <result column="str4" property="str4" />
+        <result column="str5" property="str5" />
+        <result column="str6" property="str6" />
+        <result column="str7" property="str7" />
+        <result column="str8" property="str8" />
+        <result column="str9" property="str9" />
+        <result column="str10" property="str10" />
+        <result column="str11" property="str11" />
+        <result column="str12" property="str12" />
+        <result column="str13" property="str13" />
+        <result column="str14" property="str14" />
+        <result column="str15" property="str15" />
+        <result column="str16" property="str16" />
+        <result column="str17" property="str17" />
+        <result column="str18" property="str18" />
+        <result column="str19" property="str19" />
+        <result column="str20" property="str20" />
+        <result column="str21" property="str21" />
+        <result column="str22" property="str22" />
+        <result column="str23" property="str23" />
+        <result column="num1" property="num1" />
+        <result column="num2" property="num2" />
+        <result column="num3" property="num3" />
+        <result column="num4" property="num4" />
+        <result column="num5" property="num5" />
+        <result column="num6" property="num6" />
+        <result column="date1" property="date1" />
+        <result column="appe_user" property="appeUser" />
+        <result column="appe_time" property="appeTime" />
+        <result column="modi_user" property="modiUser" />
+        <result column="modi_time" property="modiTime" />
+        <result column="status" property="status" />
+
+    </resultMap>
+
+</mapper>
diff --git a/src/main/webapp/static/js/matCode/matCode.js b/src/main/webapp/static/js/matCode/matCode.js
new file mode 100644
index 0000000..d516296
--- /dev/null
+++ b/src/main/webapp/static/js/matCode/matCode.js
@@ -0,0 +1,539 @@
+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: '#matCode',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/matCode/list/auth',
+        page: true,
+        limit: 16,
+        even: true,
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        cols: [[
+            {type: 'checkbox'}
+//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
+            ,{field: 'matNo', align: 'center',title: '鐗╂枡缂栫爜'}
+            ,{field: 'barcode', align: 'center',title: '鏉$爜'}
+            ,{field: 'matName', align: 'center',title: '鐗╂枡鍚嶇О'}
+            ,{field: 'str1', align: 'center',title: '鐗╂枡鍗曚綅'}
+            ,{field: 'str2', align: 'center',title: '鐗╂枡瑙勬牸'}
+            ,{field: 'str3', align: 'center',title: ''}
+            ,{field: 'str4', align: 'center',title: ''}
+            ,{field: 'str5', align: 'center',title: ''}
+            ,{field: 'str6', align: 'center',title: ''}
+            ,{field: 'str7', align: 'center',title: ''}
+            ,{field: 'str8', align: 'center',title: ''}
+            ,{field: 'str9', align: 'center',title: ''}
+            ,{field: 'str10', align: 'center',title: ''}
+            ,{field: 'str11', align: 'center',title: ''}
+            ,{field: 'str12', align: 'center',title: ''}
+            ,{field: 'str13', align: 'center',title: ''}
+            ,{field: 'str14', align: 'center',title: ''}
+            ,{field: 'str15', align: 'center',title: ''}
+            ,{field: 'str16', align: 'center',title: ''}
+            ,{field: 'str17', align: 'center',title: ''}
+            ,{field: 'str18', align: 'center',title: ''}
+            ,{field: 'str19', align: 'center',title: ''}
+            ,{field: 'str20', align: 'center',title: ''}
+            ,{field: 'str21', align: 'center',title: ''}
+            ,{field: 'str22', align: 'center',title: ''}
+            ,{field: 'str23', align: 'center',title: ''}
+            ,{field: 'num1', align: 'center',title: ''}
+            ,{field: 'num2', align: 'center',title: ''}
+            ,{field: 'num3', align: 'center',title: ''}
+            ,{field: 'num4', align: 'center',title: ''}
+            ,{field: 'num5', align: 'center',title: ''}
+            ,{field: 'num6', align: 'center',title: ''}
+            ,{field: 'date1$', align: 'center',title: ''}
+            ,{field: 'appeUser$', align: 'center',title: '鍒涘缓鑰�',event: 'appeUser', style: 'cursor:pointer'}
+            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳',event: 'modiUser', style: 'cursor:pointer'}
+            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'status', 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(matCode)', 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],
+                    shadeClose: false,
+                    content: 'matCode_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 'refreshData':
+                tableIns.reload({
+                    page: {
+                        curr: pageCurr
+                    }
+                });
+                limit();
+                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+"/matCode/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鍚�', 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 = {
+                        'matCode': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/matCode/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(matCode)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            // 璇︽儏
+            case 'detail':
+                layer.open({
+                    type: 2,
+                    title: '璇︽儏',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: false,
+                    content: 'matCode_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],
+                    shadeClose: false,
+                    content: 'matCode_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('#matNo', 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 'appeUser':
+                var param = top.reObject(data).appeUser;
+                if (param === undefined) {
+                    layer.msg("鏃犳暟鎹�");
+                } else {
+                   layer.open({
+                       type: 2,
+                       title: '鍒涘缓鑰呰鎯�',
+                       maxmin: true,
+                       area: [top.detailWidth, top.detailHeight],
+                       shadeClose: false,
+                       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){
+                                       parent.location.href = baseUrl;
+                                   }else {
+                                       layer.msg(res.msg)
+                                   }
+                               }
+                           })
+                       }
+                   });
+                }
+                break;
+            case 'modiUser':
+                var param = top.reObject(data).modiUser;
+                if (param === undefined) {
+                    layer.msg("鏃犳暟鎹�");
+                } else {
+                   layer.open({
+                       type: 2,
+                       title: '淇敼浜哄憳璇︽儏',
+                       maxmin: true,
+                       area: [top.detailWidth, top.detailHeight],
+                       shadeClose: false,
+                       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){
+                                       parent.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(),
+            matNo: $('#matNo').val(),
+            barcode: $('#barcode').val(),
+            matName: $('#matName').val(),
+            str1: $('#str1').val(),
+            str2: $('#str2').val(),
+            str3: $('#str3').val(),
+            str4: $('#str4').val(),
+            str5: $('#str5').val(),
+            str6: $('#str6').val(),
+            str7: $('#str7').val(),
+            str8: $('#str8').val(),
+            str9: $('#str9').val(),
+            str10: $('#str10').val(),
+            str11: $('#str11').val(),
+            str12: $('#str12').val(),
+            str13: $('#str13').val(),
+            str14: $('#str14').val(),
+            str15: $('#str15').val(),
+            str16: $('#str16').val(),
+            str17: $('#str17').val(),
+            str18: $('#str18').val(),
+            str19: $('#str19').val(),
+            str20: $('#str20').val(),
+            str21: $('#str21').val(),
+            str22: $('#str22').val(),
+            str23: $('#str23').val(),
+            num1: $('#num1').val(),
+            num2: $('#num2').val(),
+            num3: $('#num3').val(),
+            num4: $('#num4').val(),
+            num5: $('#num5').val(),
+            num6: $('#num6').val(),
+            date1: top.strToDate($('#date1\\$').val()),
+            appeUser: $('#appeUser').val(),
+            appeTime: top.strToDate($('#appeTime\\$').val()),
+            modiUser: $('#modiUser').val(),
+            modiTime: top.strToDate($('#modiTime\\$').val()),
+            status: $('#status').val(),
+
+        };
+        $.ajax({
+            url: baseUrl+"/matCode/"+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: '#date1\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#appeTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#modiTime\\$',
+        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/matCode/matCode.html b/src/main/webapp/views/matCode/matCode.html
new file mode 100644
index 0000000..3fcf2e7
--- /dev/null
+++ b/src/main/webapp/views/matCode/matCode.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="/static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/static/css/cool.css" media="all">
+    <link rel="stylesheet" href="/static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+    <div class="layui-inline">
+        <label class="layui-form-label">缂栥��銆�鍙凤細</label>
+        <div class="layui-input-inline">
+            <input class="layui-input" type="text" name="id" placeholder="璇疯緭鍏�" autocomplete="off">
+        </div>
+    </div>
+    <div class="layui-inline">
+        <label class="layui-form-label">鍒� 寤� 鑰咃細</label>
+        <div class="layui-input-inline cool-auto-complete">
+            <input id="appeUser" class="layui-input" name="appe_user" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+            <input id="appeUser$" 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="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                </select>
+            </div>
+        </div>
+    </div>
+    <div class="layui-inline">
+        <label class="layui-form-label">淇敼浜哄憳锛�</label>
+        <div class="layui-input-inline cool-auto-complete">
+            <input id="modiUser" class="layui-input" name="modi_user" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+            <input id="modiUser$" 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="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" 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="matCode" lay-filter="matCode"></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-refresh" lay-event="refreshData">鍒锋柊</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/matCode/matCode.js" charset="utf-8"></script>
+
+<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/matCode/matCode_detail.html b/src/main/webapp/views/matCode/matCode_detail.html
new file mode 100644
index 0000000..6f9fce4
--- /dev/null
+++ b/src/main/webapp/views/matCode/matCode_detail.html
@@ -0,0 +1,288 @@
+<!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"><span class="not-null">*</span>鐗╂枡缂栫爜锛�</label>
+            <div class="layui-input-inline">
+                <input id="matNo" class="layui-input" type="text" onkeyup="check(this.id, 'matCode')" lay-verify="required" >
+            </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="matName" 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="str1" 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="str2" 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="str3" 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="str4" 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="str5" 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="str6" 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="str7" 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="str8" 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="str9" 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="str10" 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="str11" 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="str12" 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="str13" 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="str14" 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="str15" 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="str16" 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="str17" 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="str18" 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="str19" 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="str20" 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="str21" 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="str22" 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="str23" 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="num1" 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="num2" 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="num3" 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="num4" 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="num5" 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="num6" 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="date1$" 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="appeUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="appeUser$" 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="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" 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="appeTime$" 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="modiUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
+                <input id="modiUser$" 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="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" 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="modiTime$" 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="status" class="layui-input" type="text" lay-verify="number" >
+            </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/matCode/matCode.js" charset="utf-8"></script>
+</html>
+

--
Gitblit v1.9.1