From 9ba14d26e2ae8f5b5c3dfae07ea8558e7776bcec Mon Sep 17 00:00:00 2001
From: 王佳豪 <g675230687@126.com>
Date: 星期六, 06 三月 2021 16:59:30 +0800
Subject: [PATCH] 1.0.2 新增平仓管理功能
---
src/main/webapp/views/locNormal/addLocNormal.html | 98 ++++
src/main/resources/mapper/LocNormalMapper.xml | 45 ++
src/main/java/com/zy/common/utils/excel/locNomal/LocNormalExcel.java | 184 ++++++++
src/main/webapp/views/locNormal/locNormal.html | 171 +++++++
src/main/java/com/zy/asrs/service/LocNormalService.java | 18
src/main/webapp/static/js/locNormal/addLocNormal.js | 65 ++
/dev/null | 3
src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java | 37 +
src/main/java/com/zy/asrs/controller/LocNormalController.java | 126 +++++
src/main/webapp/static/js/locNormal/locNormal.js | 294 +++++++++++++
src/main/java/com/zy/asrs/mapper/LocNormalMapper.java | 26 +
src/main/java/com/zy/asrs/entity/LocNormal.java | 115 +++++
version/version/wjh.sql | 29 +
src/main/java/com/zy/common/utils/excel/locNomal/LocNormalExcelListener.java | 93 ++++
src/main/webapp/static/js/common.js | 11
15 files changed, 1,312 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/LocNormalController.java b/src/main/java/com/zy/asrs/controller/LocNormalController.java
new file mode 100644
index 0000000..c17ad69
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/LocNormalController.java
@@ -0,0 +1,126 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.excel.EasyExcel;
+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.LocNormal;
+import com.zy.asrs.service.LocNormalService;
+import com.zy.common.utils.excel.locNomal.LocNormalExcel;
+import com.zy.common.utils.excel.locNomal.LocNormalExcelListener;
+import com.zy.common.utils.excel.matcode.MatCodeExcel;
+import com.zy.common.utils.excel.matcode.MatCodeExcelListener;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.Map;
+
+import static jdk.nashorn.api.scripting.ScriptUtils.convert;
+
+@RestController
+public class LocNormalController extends BaseController{
+ @Autowired
+ private LocNormalService locNormalService;
+
+ @RequestMapping(value = "/locNomal/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(required = false)String condition,
+ @RequestParam Map<String, Object> param){
+ excludeTrash(param);
+ EntityWrapper<LocNormal> wrapper = new EntityWrapper<>();
+ convert(param, wrapper);
+ allLike(LocNormal.class, param.keySet(), wrapper, condition);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+ wrapper.eq("state", "1").or().eq("state", "2");
+ return R.ok(locNormalService.selectPage(new Page<>(curr, limit), wrapper));
+ }
+
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ wrapper.like(entry.getKey(), String.valueOf(entry.getValue()));
+ }
+ }
+ }
+
+ @RequestMapping(value = "/locNomal/add/auth")
+ @ManagerAuth
+ public R add(LocNormal locNormalList) {
+ // 鎻掑叆鍒涘缓淇℃伅
+ locNormalList.setModiUser(getUserId());
+ locNormalList.setModiTime(new Date());
+ locNormalList.setAppeUser(getUserId());
+ locNormalList.setAppeTime(new Date());
+ // 榛樿鏂板涓哄凡鍏ュ簱
+ locNormalList.setState("1");
+ locNormalService.insert(locNormalList);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/matnr/check/column/auth")
+ @ManagerAuth
+ public R query(@RequestBody JSONObject param) {
+ Wrapper<LocNormal> wrapper = new EntityWrapper<LocNormal>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+ if (null != locNormalService.selectOne(wrapper)){
+ return R.parse(BaseRes.REPEAT).add(getComment(LocNormal.class, String.valueOf(param.get("key"))));
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/locNormal/update/auth")
+ @ManagerAuth
+ public void updateLocNormal(LocNormal param) {
+ Long modiUser = getUserId();
+ Date modiTime = new Date();
+ locNormalService.updateLocNormal(param.getMatnr(), param.getAnfme(), modiUser, modiTime);
+ }
+
+ @RequestMapping(value = "/locNormal/outLoc/auth")
+ @ManagerAuth
+ public void outLocNormal(LocNormal param) {
+ Long modiUser = getUserId();
+ Date modiTime = new Date();
+ locNormalService.outLocNormal(param.getMatnr(), modiUser, modiTime);
+ }
+
+ @RequestMapping(value = "/locNormal/removeLoc/auth")
+ @ManagerAuth
+ public void removeLoc(LocNormal param) {
+ Long modiUser = getUserId();
+ Date modiTime = new Date();
+ locNormalService.removeLocNormal(param.getMatnr(), modiUser, modiTime);
+ }
+
+ // 瀵煎叆
+ @RequestMapping(value = "/locNormal/import/auth")
+ @ManagerAuth(memo = "骞充粨绠$悊瀵煎叆")
+ @Transactional
+ public R matCodeImport(MultipartFile file) throws IOException, InterruptedException {
+ LocNormalExcelListener listener = new LocNormalExcelListener(getUserId());
+ EasyExcel.read(file.getInputStream(), LocNormalExcel.class, listener).sheet().doRead();
+ return R.ok("鎴愬姛瀵煎叆"+listener.getTotal()+"鏉$墿鏂欎俊鎭�");
+ }
+}
diff --git a/src/main/java/com/zy/asrs/entity/LocNormal.java b/src/main/java/com/zy/asrs/entity/LocNormal.java
new file mode 100644
index 0000000..92cbee5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/LocNormal.java
@@ -0,0 +1,115 @@
+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.zy.asrs.service.LocMastService;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("asr_loc_normal")
+public class LocNormal implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "鐗╂枡")
+ @TableId(value = "matnr", type = IdType.INPUT)
+ private String matnr;
+
+ @ApiModelProperty(value= "鐗╂枡鎻忚堪")
+ private String maktx;
+
+ @ApiModelProperty(value= "瑙勬牸")
+ private String lgnum;
+
+ @ApiModelProperty(value= "鐗╂枡绫诲埆")
+ private String type;
+
+ @ApiModelProperty(value= "鍔╄鐮�")
+ private String mnemonic;
+
+ @ApiModelProperty(value= "閫氱煡鍗曞彿")
+ private String supplier;
+
+ @ApiModelProperty(value= "浠撳簱")
+ private String warehouse;
+
+ @ApiModelProperty(value= "鍝佺墝")
+ private String brand;
+
+ @ApiModelProperty(value= "鏁伴噺")
+ private Double anfme;
+
+ @ApiModelProperty(value= "鍗曚綅")
+ private String altme;
+
+ @ApiModelProperty(value= "鐢ㄦ埛ID")
+ private String bname;
+
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ @TableField("modi_user")
+ private Long modiUser;
+
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @TableField("modi_time")
+ private Date modiTime;
+
+ @ApiModelProperty(value= "鍒涘缓鑰�")
+ @TableField("appe_user")
+ private Long appeUser;
+
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @TableField("appe_time")
+ private Date appeTime;
+
+ @ApiModelProperty(value= "鐗╂枡鍑哄叆搴撶姸鎬�")
+ @TableField("state")
+ private String state;
+
+ 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 String getModiTime$(){
+ if (Cools.isEmpty(this.modiTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+ }
+
+
+ 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 String getAppeTime$(){
+ if (Cools.isEmpty(this.appeTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/LocNormalMapper.java b/src/main/java/com/zy/asrs/mapper/LocNormalMapper.java
new file mode 100644
index 0000000..a604a9e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/LocNormalMapper.java
@@ -0,0 +1,26 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.LocNormal;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.stereotype.Repository;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+@Repository
+public interface LocNormalMapper extends BaseMapper<LocNormal> {
+ List<LocNormal> getLocNormalData();
+
+ public void updateLocNormal(@Param("matnr") String matnr,@Param("anfme") Double anfme, @Param("modiUser") Long modiUser, @Param("modiTime") Date modiTime);
+
+ public void outLocNormal(@Param("matnr") String matnr, @Param("modiUser") Long modiUser, @Param("modiTime") Date modiTime);
+
+ public void removeLocNormal(@Param("matnr") String matnr, @Param("modiUser") Long modiUser, @Param("modiTime") Date modiTime);
+}
diff --git a/src/main/java/com/zy/asrs/service/LocNormalService.java b/src/main/java/com/zy/asrs/service/LocNormalService.java
new file mode 100644
index 0000000..cb7bc97
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/LocNormalService.java
@@ -0,0 +1,18 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.LocNormal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+public interface LocNormalService extends IService<LocNormal> {
+ List<LocNormal> getLocNormalData();
+
+ public void updateLocNormal(String matnr, Double anfme, Long modiUser, Date modiTime);
+
+ public void outLocNormal(String matnr, Long modiUser, Date modiTime);
+
+ public void removeLocNormal(String matnr, Long modiUser, Date modiTime);
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
new file mode 100644
index 0000000..cfdbba9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
@@ -0,0 +1,37 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.LocNormal;
+import com.zy.asrs.mapper.LocNormalMapper;
+import com.zy.asrs.service.LocNormalService;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Service("locNormalService")
+public class LocNormalServiceImpl extends ServiceImpl<LocNormalMapper, LocNormal> implements LocNormalService {
+
+ @Override
+ public List<LocNormal> getLocNormalData() {
+ return baseMapper.getLocNormalData();
+ }
+
+ @Override
+ public void updateLocNormal(String matnr, Double anfme, Long modiUser, Date modiTime) {
+ baseMapper.updateLocNormal(matnr, anfme, modiUser, modiTime);
+ }
+
+ @Override
+ public void outLocNormal(String matnr, Long modiUser, Date modiTime) {
+ baseMapper.outLocNormal(matnr, modiUser, modiTime);
+ }
+
+ @Override
+ public void removeLocNormal(String matnr, Long modiUser, Date modiTime) {
+ baseMapper.removeLocNormal(matnr, modiUser, modiTime);
+ }
+}
diff --git a/src/main/java/com/zy/common/utils/excel/locNomal/LocNormalExcel.java b/src/main/java/com/zy/common/utils/excel/locNomal/LocNormalExcel.java
new file mode 100644
index 0000000..bf5a8df
--- /dev/null
+++ b/src/main/java/com/zy/common/utils/excel/locNomal/LocNormalExcel.java
@@ -0,0 +1,184 @@
+package com.zy.common.utils.excel.locNomal;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ExcelIgnoreUnannotated
+public class LocNormalExcel {
+ @ExcelProperty(index = 0)
+ private String matnr;
+ @ExcelProperty(index = 1)
+ private String maktx;
+ @ExcelProperty(index = 2)
+ private String lgnum;
+ @ExcelProperty(index = 3)
+ private String type;
+ @ExcelProperty(index = 4)
+ private String mnemonic;
+ @ExcelProperty(index = 5)
+ private String supplier;
+ @ExcelProperty(index = 6)
+ private String warehouse;
+ @ExcelProperty(index = 7)
+ private String brand;
+ @ExcelProperty(index = 8)
+ private Double anfme;
+ @ExcelProperty(index = 9)
+ private String altme;
+ @ExcelProperty(index = 10)
+ private String bname;
+ @ExcelProperty(index = 11)
+ private String memo;
+
+ private Long appeUser;
+
+ private Date appeTime;
+ @ExcelProperty(index = 12)
+ private String state;
+
+ public LocNormalExcel() {
+
+ }
+
+ public LocNormalExcel(String matnr, String maktx, String lgnum, String type, String mnemonic, String supplier, String warehouse, String brand, Double anfme, String altme, String bname, String memo, Long appeUser, Date appeTime,String state) {
+ this.matnr = matnr;
+ this.maktx = maktx;
+ this.lgnum = lgnum;
+ this.type = type;
+ this.mnemonic = mnemonic;
+ this.supplier = supplier;
+ this.warehouse = warehouse;
+ this.brand = brand;
+ this.anfme = anfme;
+ this.altme = altme;
+ this.bname = bname;
+ this.memo = memo;
+ this.appeUser = appeUser;
+ this.appeTime = appeTime;
+ this.state = state;
+ }
+
+ public String getMatnr() {
+ return matnr;
+ }
+
+ public void setMatnr(String matnr) {
+ this.matnr = matnr;
+ }
+
+ public String getMaktx() {
+ return maktx;
+ }
+
+ public void setMaktx(String maktx) {
+ this.maktx = maktx;
+ }
+
+ public String getLgnum() {
+ return lgnum;
+ }
+
+ public void setLgnum(String lgnum) {
+ this.lgnum = lgnum;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getMnemonic() {
+ return mnemonic;
+ }
+
+ public void setMnemonic(String mnemonic) {
+ this.mnemonic = mnemonic;
+ }
+
+ public String getSupplier() {
+ return supplier;
+ }
+
+ public void setSupplier(String supplier) {
+ this.supplier = supplier;
+ }
+
+ public String getWarehouse() {
+ return warehouse;
+ }
+
+ public void setWarehouse(String warehouse) {
+ this.warehouse = warehouse;
+ }
+
+ public String getBrand() {
+ return brand;
+ }
+
+ public void setBrand(String brand) {
+ this.brand = brand;
+ }
+
+ public Double getAnfme() {
+ return anfme;
+ }
+
+ public void setAnfme(Double anfme) {
+ this.anfme = anfme;
+ }
+
+ public String getAltme() {
+ return altme;
+ }
+
+ public void setAltme(String altme) {
+ this.altme = altme;
+ }
+
+ public String getBname() {
+ return bname;
+ }
+
+ public void setBname(String bname) {
+ this.bname = bname;
+ }
+
+ public String getMemo() {
+ return memo;
+ }
+
+ public void setMemo(String memo) {
+ this.memo = memo;
+ }
+
+ public Long getAppeUser() {
+ return appeUser;
+ }
+
+ public void setAppeUser(Long appeUser) {
+ this.appeUser = appeUser;
+ }
+
+ public Date getAppeTime() {
+ return appeTime;
+ }
+
+ public void setAppeTime(Date appeTime) {
+ this.appeTime = appeTime;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+}
diff --git a/src/main/java/com/zy/common/utils/excel/locNomal/LocNormalExcelListener.java b/src/main/java/com/zy/common/utils/excel/locNomal/LocNormalExcelListener.java
new file mode 100644
index 0000000..5ab8b78
--- /dev/null
+++ b/src/main/java/com/zy/common/utils/excel/locNomal/LocNormalExcelListener.java
@@ -0,0 +1,93 @@
+package com.zy.common.utils.excel.locNomal;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.core.common.SpringUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocNormal;
+import com.zy.asrs.entity.MatCode;
+import com.zy.asrs.service.LocNormalService;
+import com.zy.asrs.service.MatCodeService;
+import com.zy.asrs.utils.VersionUtils;
+import com.zy.common.utils.excel.matcode.MatCodeExcel;
+import com.zy.common.utils.excel.matcode.MatCodeExcelListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+public class LocNormalExcelListener extends AnalysisEventListener<LocNormalExcel> {
+ private static final Logger LOGGER = LoggerFactory.getLogger(MatCodeExcelListener.class);
+
+ private int total = 0;
+ private Long userId;
+
+ public LocNormalExcelListener(Long userId) {
+ this.userId = userId;
+ }
+
+ /**
+ * 姣忛殧5鏉″瓨鍌ㄦ暟鎹簱锛屽疄闄呬娇鐢ㄤ腑鍙互3000鏉★紝鐒跺悗娓呯悊list 锛屾柟渚垮唴瀛樺洖鏀�
+ */
+ private static final int BATCH_COUNT = 50;
+
+ private final List<LocNormal> list = new ArrayList<>();
+
+ /**
+ * 杩欓噷浼氫竴琛岃鐨勮繑鍥炲ご
+ */
+ @Override
+ public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+ }
+
+
+ /**
+ * 杩欎釜姣忎竴鏉℃暟鎹В鏋愰兘浼氭潵璋冪敤
+ */
+ @Override
+ public void invoke(LocNormalExcel data, AnalysisContext ctx) {
+ LocNormalService locNormalService = SpringUtils.getBean(LocNormalService.class);
+ if (locNormalService.selectById(data.getMatnr()) == null) {
+ LocNormal locNormal = new LocNormal();
+ // 鎻掑叆
+ locNormal.setMatnr(data.getMatnr());
+ locNormal.setMaktx(data.getMaktx());
+ locNormal.setLgnum(data.getLgnum());
+ locNormal.setType(data.getType());
+ locNormal.setMnemonic(data.getMnemonic());
+ locNormal.setSupplier(data.getSupplier());
+ locNormal.setWarehouse(data.getWarehouse());
+ locNormal.setBrand(data.getBrand());
+ locNormal.setAnfme(data.getAnfme());
+ locNormal.setAltme(data.getAltme());
+ locNormal.setBname(data.getBname());
+ locNormal.setMemo(data.getMemo());
+ locNormal.setState(data.getState());
+
+ locNormal.setModiTime(new Date());
+ locNormal.setModiUser(this.userId);
+ locNormal.setAppeTime(new Date());
+ locNormal.setAppeUser(this.userId);
+ if (!locNormalService.insert(locNormal)) {
+ throw new CoolException("瀵煎叆鏁版嵁寮傚父");
+ }
+ total ++;
+ }
+ }
+
+ /**
+ * 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡璋冪敤
+ * 閫傚悎浜嬪姟
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext ctx) {
+ LOGGER.info("鏂板{}鏉$墿鏂欎俊鎭紒", total);
+ }
+
+ public int getTotal() {
+ return total;
+ }
+}
diff --git a/src/main/resources/mapper/LocNormalMapper.xml b/src/main/resources/mapper/LocNormalMapper.xml
new file mode 100644
index 0000000..af772d4
--- /dev/null
+++ b/src/main/resources/mapper/LocNormalMapper.xml
@@ -0,0 +1,45 @@
+<?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.LocNormalMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocNormal">
+ <result column="matnr" property="matnr" />
+ <result column="maktx" property="maktx" />
+ <result column="lgnum" property="lgnum" />
+ <result column="type" property="type" />
+ <result column="mnemonic" property="mnemonic" />
+ <result column="supplier" property="supplier" />
+ <result column="warehouse" property="warehouse" />
+ <result column="brand" property="brand" />
+ <result column="anfme" property="anfme" />
+ <result column="bname" property="bname" />
+ <result column="memo" property="memo" />
+ <result column="modi_user" property="modiUser" />
+ <result column="modi_time" property="modiTime" />
+ <result column="appe_user" property="appeUser" />
+ <result column="appe_time" property="appeTime" />
+ <result column="state" property="state" />
+ </resultMap>
+
+ <select id="getLocNormalData" resultMap="BaseResultMap">
+ select * from asr_loc_normal
+ </select>
+
+ <!-- 鏇存柊骞充粨鐗╂枡鐨勬暟閲� -->
+ <update id="updateLocNormal">
+ update asr_loc_normal set anfme = #{anfme,jdbcType=DECIMAL},
+ modi_user = #{modiUser, jdbcType=DECIMAL}, modi_time = #{modiTime, jdbcType=TIMESTAMP}
+ where matnr = #{matnr,jdbcType=VARCHAR}
+ </update>
+
+ <update id="outLocNormal">
+ update asr_loc_normal set state = '2',modi_user = #{modiUser, jdbcType=DECIMAL},
+ modi_time = #{modiTime, jdbcType=TIMESTAMP} where matnr = #{matnr,jdbcType=VARCHAR}
+ </update>
+
+ <update id="removeLocNormal">
+ update asr_loc_normal set state = '3',modi_user = #{modiUser, jdbcType=DECIMAL},
+ modi_time = #{modiTime, jdbcType=TIMESTAMP} where matnr = #{matnr,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 50956f9..bd652de 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -216,3 +216,14 @@
,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
]
+var locNormalCols = [
+ {field: 'matnr', align: 'center',title: '鐗╂枡缂栫爜'}
+ ,{field: 'maktx', align: 'center',title: '鐗╂枡鍚嶇О', width: 400}
+ ,{field: 'lgnum', align: 'center',title: '瑙勬牸'}
+ ,{field: 'type', align: 'center',title: '鐗╂枡绫诲埆'}
+ ,{field: 'mnemonic', align: 'center',title: '鍗曟嵁缂栧彿', hide: true}
+ ,{field: 'supplier', align: 'center',title: '閫氱煡鍗曞彿'}
+ ,{field: 'warehouse', align: 'center',title: '浠撳簱', hide: true}
+ ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
+ ,{field: 'altme', align: 'center',title: '鍗曚綅'}
+]
diff --git a/src/main/webapp/static/js/locNormal/addLocNormal.js b/src/main/webapp/static/js/locNormal/addLocNormal.js
new file mode 100644
index 0000000..2f4175a
--- /dev/null
+++ b/src/main/webapp/static/js/locNormal/addLocNormal.js
@@ -0,0 +1,65 @@
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click', '#data-detail-close', function () {
+ parent.layer.closeAll();
+});
+
+layui.use(['table', 'laydate', 'form', 'upload'], function () {
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var upload = layui.upload;
+ var form = layui.form;
+
+ // 鏁版嵁淇濆瓨鍔ㄤ綔
+ form.on('submit(save)', function () {
+ if (banMsg != null) {
+ layer.msg(banMsg);
+ return;
+ }
+ // 鏁伴噺杈撳叆鏍¢獙
+ var reg=/^\d{1,}$/
+ var pattern=new RegExp(reg);
+ var anfme = $('#anfme').val();
+ if (!pattern.test(anfme)) {
+ layer.msg("璇疯緭鍏ユ纭殑鏁伴噺");
+ return;
+ }
+ // loading鍔犺浇鏁堟灉
+ var loadingIndex = layer.load(1, {
+ shade: [0.5,'#000']
+ });
+ // 琛ㄥ崟鍏ュ弬
+ var data = {
+ matnr: $('#matnr').val(),
+ maktx: $('#maktx').val(),
+ lgnum: $('#lgnum').val(),
+ type: $('#type').val(),
+ mnemonic: $('#mnemonic').val(),
+ supplier: $('#supplier').val(),
+ warehouse: $('#warehouse').val(),
+ brand: $('#brand').val(),
+ anfme: $('#anfme').val(),
+ altme: $('#altme').val(),
+ };
+ // 璇锋眰淇濆瓨鎺ュ彛
+ $.ajax({
+ url: baseUrl+"/locNomal/add/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject(data),
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ parent.layer.closeAll();
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg);
+ }
+ // 鍏抽棴loading鍔犺浇鏁堟灉
+ layer.close(loadingIndex);
+ },
+ });
+
+ });
+});
\ No newline at end of file
diff --git a/src/main/webapp/static/js/locNormal/locNormal.js b/src/main/webapp/static/js/locNormal/locNormal.js
new file mode 100644
index 0000000..0fc0998
--- /dev/null
+++ b/src/main/webapp/static/js/locNormal/locNormal.js
@@ -0,0 +1,294 @@
+var pageCurr;
+var locNormalList = [];
+
+function getCol() {
+ var cols = [];
+ cols.push(
+ {field: 'anfme', align: 'center', title: '鏁伴噺', sort: true, edit: 'text'}
+ )
+ cols.push.apply(cols, locNormalCols);
+ cols.push(
+ {field: 'state', align: 'center', title: '鍑哄叆搴撶姸鎬�', templet: '#locNormalState'}
+ , {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳', hide: true}
+ , {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿', hide: true}
+ , {field: 'appeTime$', align: 'center', title: '鍒涘缓鏃堕棿', hide: true}
+ , {field: '', align: 'center', title: '鎿嶄綔', width: 135, fixed: 'right', templet: '#operate'}
+ );
+ return cols;
+}
+
+layui.use(['table', 'laydate', 'form', 'upload'], function () {
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+ var upload = layui.upload;
+
+ // 瀵煎叆excel
+ var uploader = upload.render({
+ elem: '#uploadEx'
+ , url: baseUrl + '/locNormal/import/auth'
+ , headers: {token: localStorage.getItem('token')}
+ , accept: 'file'
+ , exts: 'xls|excel|xlsx'
+ , auto: false
+ , bindAction: '#uploadDo'
+ , before: function(obj){
+ layer.closeAll();
+ layer.load(1, {shade: [0.1,'#fff']});
+ }
+ , choose: function(obj){
+ $('#uploadDesc').hide();
+ $('#uploadDemoView').show();
+ obj.preview(function(index, file, result){
+ $('#fileMame').html(file.name);
+ });
+ }
+ , done: function (res) {
+ limit();
+ $('#uploadDesc').show();
+ $('#uploadDemoView').hide();
+ $('#fileMame').html("");
+ layer.closeAll('loading');
+ layer.msg(res.msg);
+ tableReload(false);
+ }
+ , error: function(index, upload){
+ layer.closeAll('loading');
+ }
+ });
+
+ /* 瀵煎叆 */
+ table.on('toolbar(locNormal)', function (obj) {
+ debugger
+ switch(obj.event) {
+ // 瀵煎叆
+ case 'intoData':
+ layer.open({
+ type: 1,
+ title: '鏁版嵁瀵煎叆',
+ shadeClose: true,
+ content: $('#importDataDiv'),
+ success: function(layero, index){
+ uploader.reload();
+ },
+ end: function () {
+ $('#uploadDesc').show();
+ $('#uploadDemoView').hide();
+ $('#fileMame').html("");
+ }
+ });
+ break;
+ }
+ });
+
+
+ // 鏁版嵁娓叉煋
+ tableIns = table.render({
+ elem: '#locNormal',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl + '/locNomal/list/auth',
+ page: true,
+ limit: 16,
+ limits: [16, 30, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [getCol()],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl + "/";
+ }
+ pageCurr = curr;
+ limit();
+ // 褰撳墠鍒嗛〉鏁版嵁瀛樺偍
+ locNormalList = res.data;
+ }
+ });
+
+ // 鐩戝惉鎺掑簭浜嬩欢
+ table.on('sort(locNormal)', 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();
+ // 褰撳墠鍒嗛〉鏁版嵁瀛樺偍
+ locNormalList = res.data;
+ }
+ });
+ });
+
+ // 椤甸潰淇敼
+ table.on('edit(locNormal)', function (obj) {
+ var count = obj.value;
+ var matnr = obj.data.matnr;
+
+ if (isNaN(count)) {
+ layer.msg("璇疯緭鍏ユ暟瀛�");
+ // 鏁版嵁閲嶈浇
+ tableIns.reload({
+ data: locNormalList, done: function (res) {
+ limit();
+ }
+ });
+ } else {
+ if (count > 0) {
+ for (var i = 0; i < locNormalList.length; i++) {
+ if (locNormalList[i]["matnr"] === matnr) {
+ locNormalList[i]["anfme"] = count;
+ }
+ }
+ } else {
+ layer.msg("鏁伴噺蹇呴』澶т簬闆�");
+ }
+ }
+ // 璇锋眰鏇存柊鎺ュ彛瀹屾垚鏁伴噺鐨勬洿鏂�
+ const param = {
+ matnr: matnr,
+ anfme: count,
+ }
+ $.ajax({
+ url: baseUrl + "/locNormal/update/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject(param),
+ method: 'POST',
+ success: function (res) {
+ },
+ });
+ });
+
+ // 鎼滅储鏍忛噸缃簨浠�
+ form.on('submit(reset)', function (data) {
+ pageCurr = 1;
+ clearFormVal($('#search-box'));
+ tableReload(false);
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ pageCurr = 1;
+ tableReload(false);
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(locNormal)', function (obj) {
+ var data = obj.data;
+ var param = {
+ matnr: data.matnr,
+ }
+ switch (obj.event) {
+ case 'outLocNormal':
+ // 鍑哄簱
+ $.ajax({
+ url: baseUrl + "/locNormal/outLoc/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject(param),
+ method: 'POST',
+ success: function (res) {
+ tableReload(false);
+ },
+ });
+ break;
+ case 'removeLocNormal':
+ // 绉婚櫎
+ $.ajax({
+ url: baseUrl + "/locNormal/removeLoc/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: top.reObject(param),
+ method: 'POST',
+ success: function (res) {
+ tableReload(false);
+ },
+ });
+ break;
+ }
+ });
+
+
+});
+
+/* 琛ㄦ牸鏁版嵁閲嶈浇 */
+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);
+ // 褰撳墠鍒嗛〉鏁版嵁瀛樺偍
+ locNormalList = res.data;
+ }
+ });
+}
+
+/* 鐩戝惉鍥炶溅浜嬩欢 */
+$('body').keydown(function () {
+ if (event.keyCode === 13) {
+ $("#search").click();
+ }
+});
+
+// 鎻愬彇鐗╂枡
+var addLocNormalIdx;
+
+function addLocNormal() {
+ addLocNormalIdx = layer.open({
+ type: 2,
+ title: '鏂板',
+ maxmin: true,
+ area: [top.detailWidth, '550px'],
+ shadeClose: true,
+ content: 'addLocNormal.html',
+ success: function (layero, index) {
+ }
+ });
+}
+
+
diff --git a/src/main/webapp/views/locNormal/addLocNormal.html b/src/main/webapp/views/locNormal/addLocNormal.html
new file mode 100644
index 0000000..b81d243
--- /dev/null
+++ b/src/main/webapp/views/locNormal/addLocNormal.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 璇︽儏 -->
+<div id="data-detail" class="layer_self_wrap">
+ <form id="detail" class="layui-form">
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label"><span class="not-null">*</span>鐗╂枡缂栫爜锛�</label>
+ <div class="layui-input-inline">
+ <input id="matnr" class="layui-input" type="text" onkeyup="check(this.id, 'matnr')" lay-verify="required" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">鐗╂枡鍚嶇О锛�</label>
+ <div class="layui-input-inline">
+ <input id="maktx" class="layui-input" type="text" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline" style="width:31%;">
+ <label class="layui-form-label">瑙勬牸锛�</label>
+ <div class="layui-input-inline">
+ <input id="lgnum" 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="type" 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="mnemonic" 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="supplier" 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="warehouse" 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="brand" 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="anfme" 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="altme" class="layui-input" type="text" autocomplete="off">
+ </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-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/locNormal/addLocNormal.js" charset="utf-8"></script>
+</html>
+
diff --git a/src/main/webapp/views/locNormal/locNormal.html b/src/main/webapp/views/locNormal/locNormal.html
new file mode 100644
index 0000000..5ee4626
--- /dev/null
+++ b/src/main/webapp/views/locNormal/locNormal.html
@@ -0,0 +1,171 @@
+<!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">
+ <link rel="stylesheet" href="../../static/css/print.css" media="all">
+</head>
+<style>
+ #search-box {
+ padding: 30px 30px 10px 30px;
+ }
+
+ #search-box .layui-inline {
+ margin-right: 5px;
+ }
+
+ #data-search-btn {
+ margin-top: 10px;
+ }
+
+ #data-search-btn.layui-btn-container .layui-btn {
+ margin-right: 20px;
+ }
+
+ .btn-print {
+ display: none;
+ }
+
+ #btn-print-batch {
+ display: none;
+ }
+
+ .layui-btn-danger {
+ background-color: lightsalmon;
+ color: #333;
+ }
+
+ /* ------------------------- 鎵撳嵃琛ㄦ牸 ----------------------- */
+ .template-preview {
+ height: 200px;
+ display: inline-block;
+ }
+
+ .contain {
+ }
+
+ .contain td {
+ border: 1px solid #000;
+ /*line-height: 46px;*/
+ }
+
+ .function-area {
+ padding: 15px 0 20px 40px;
+ }
+
+ .function-btn {
+ font-size: 16px;
+ padding: 1px 1px 1px 1px;
+ width: 120px;
+ height: 40px;
+ border-color: #2b425b;
+ border-radius: 4px;
+ border-width: 1px;
+ background: none;
+ border-style: solid;
+ transition: 0.4s;
+ cursor: pointer;
+ }
+
+ .function-btn:hover {
+ background-color: #2b425b;
+ color: #fff;
+ }
+
+</style>
+<body>
+<div>
+ <!-- 鎼滅储鏍� -->
+ <div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="matnr" placeholder="鐗╂枡缂栫爜" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <select id="matStatusSelect" name="state">
+ <option value="">璇烽�夋嫨鍑哄叆搴撶姸鎬�</option>
+ <option value="1">宸插叆搴�</option>
+ <option value="2">宸插嚭搴�</option>
+ </select>
+ </div>
+
+ <!-- 寰呮坊鍔� -->
+ <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储
+ </button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆
+ </button>
+ </div>
+ </div>
+
+ <!-- 鍔熻兘鍖� -->
+ <div class="function-area">
+ <button id="mat-query" class="function-btn" onclick="addLocNormal()">鏂板搴撳瓨</button>
+ </div>
+
+
+ <!-- 琛ㄦ牸 -->
+ <div class="layui-form">
+ <table class="layui-hide" id="locNormal" lay-filter="locNormal"></table>
+ </div>
+ <script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-sm" id="btn-locNormal-into" lay-event="intoData">瀵煎叆</button>
+ </div>
+ </script>
+
+ <!-- 瀵煎叆鎿嶄綔寮圭獥 -->
+ <div id="importDataDiv" style="display: none;padding: 20px 40px">
+ <div class="layui-upload-drag" id="uploadEx"
+ style="width: 200px; font-size: x-small; padding: 10px; text-align: center; box-sizing: border-box">
+ <div id="uploadDesc" style="display: inline-block; ">
+ <i class="layui-icon">顧�</i>
+ <p>鐐瑰嚮娣诲姞锛屾垨灏嗘枃浠舵嫋鎷藉埌姝ゅ</p>
+ </div>
+ <div id="uploadDemoView" style="display: none">
+ <img src="../../static/image/Excel.png" alt="涓婁紶鎴愬姛鍚庢覆鏌�" style="max-width: 196px; padding: 20px 0 10px 0">
+ <span id="fileMame" style="display: block; font-size: small; color: #333"></span>
+ </div>
+ </div>
+ <div style="text-align: center; margin-top: 20px">
+ <button class="layui-btn layui-btn-radius" id="uploadDo">寮�濮嬪鍏�</button>
+ </div>
+ </div>
+
+ <!-- 琛ㄦ牸鑷畾涔夊垪 -->
+ <script type="text/html" id="locNormalState">
+ {{# if(d.state === '1'){ }}
+ <span style="color: green">宸插叆搴�</span>
+ {{# } else if(d.state === '2'){ }}
+ <span style="color: red">宸插嚭搴�</span>
+ {{# } else { }}
+ {{# } }}
+ </script>
+ <script type="text/html" id="operate">
+ <button class="layui-btn layui-btn-xs layui-btn-normal" lay-event="outLocNormal">鍑哄簱</button>
+ <button class="layui-btn layui-btn-xs layui-btn-danger" lay-event="removeLocNormal">绉婚櫎</button>
+ </script>
+
+
+</div>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></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/locNormal/locNormal.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/version/v1.0.1/wjh.sql b/version/v1.0.1/wjh.sql
deleted file mode 100644
index aa7e690..0000000
--- a/version/v1.0.1/wjh.sql
+++ /dev/null
@@ -1,3 +0,0 @@
---琛ㄧ粨鏋勫彉鏇�
-alter table dbo.asr_loc_detl add mat_status varchar(10);
-alter table dbo.asr_wrk_detl add mat_status varchar(10);
\ No newline at end of file
diff --git a/version/version/wjh.sql b/version/version/wjh.sql
new file mode 100644
index 0000000..f97db7a
--- /dev/null
+++ b/version/version/wjh.sql
@@ -0,0 +1,29 @@
+/* v1.0.1 */
+--琛ㄧ粨鏋勫彉鏇�
+alter table dbo.asr_loc_detl add mat_status varchar(10);
+alter table dbo.asr_wrk_detl add mat_status varchar(10);
+/* v1.0.2 2021.03.05 */
+--琛ㄧ粨鏋勫彉鏇�
+CREATE TABLE [dbo].[asr_loc_normal](
+ [matnr] [varchar](50) NOT NULL,
+ [maktx] [nvarchar](50) NULL,
+ [lgnum] [varchar](255) NULL,
+ [type] [varchar](50) NULL,
+ [mnemonic] [varchar](255) NULL,
+ [supplier] [varchar](255) NULL,
+ [warehouse] [varchar](255) NULL,
+ [brand] [varchar](255) NULL,
+ [anfme] [decimal](24, 9) NULL,
+ [altme] [nvarchar](50) NULL,
+ [bname] [nvarchar](50) NULL,
+ [memo] [varchar](600) NULL,
+ [modi_user] [bigint] NULL,
+ [modi_time] [datetime] NULL,
+ [appe_user] [bigint] NULL,
+ [appe_time] [datetime] NULL,
+ [state] [varchar](10) NULL,
+ CONSTRAINT [PK_asr_loc_normal] PRIMARY KEY CLUSTERED
+(
+ [matnr] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
--
Gitblit v1.9.1