From 419c6a9b87b37be567a581d6a80d7e3f505d84e9 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 23 六月 2025 13:39:04 +0800
Subject: [PATCH] #新增空箱入库功能,界面等修改
---
src/main/java/com/zy/asrs/controller/LocDetlController.java | 31 +
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 2
src/main/webapp/views/pakStore/locDetlQuery.html | 15
src/main/java/com/zy/asrs/controller/MobileController.java | 13
src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java | 6
src/main/webapp/static/js/locDetl/locDetl.js | 4
src/main/java/com/zy/asrs/entity/param/BoxInParam.java | 13
src/main/webapp/static/js/mat/boxMat.js | 482 ++++++++++++++++
src/main/webapp/views/mat/boxMat.html | 444 ++++++++++++++
src/main/webapp/static/js/pakStore/boxOut.js | 180 ++++++
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 12
src/main/java/com/zy/asrs/mapper/MatMapper.java | 3
src/main/resources/mapper/MatMapper.xml | 38
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 120 +++
src/main/webapp/views/pakStore/boxQuery.html | 243 ++++++++
src/main/java/com/zy/asrs/controller/MatController.java | 27
src/main/webapp/views/pakStore/boxOut.html | 132 ++++
src/main/java/com/zy/asrs/service/MatService.java | 3
src/main/java/com/zy/asrs/service/MobileService.java | 7
19 files changed, 1,755 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/LocDetlController.java b/src/main/java/com/zy/asrs/controller/LocDetlController.java
index 9639102..952ed10 100644
--- a/src/main/java/com/zy/asrs/controller/LocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -85,6 +85,15 @@
return R.ok(locDetls);
}
+ @PostMapping("/getBoxLocDateByLocNo")
+ @ManagerAuth(memo = "鏍规嵁鍖呰缁勫彿鎻愬彇涓�鏁寸搴撳瓨")
+ public R getBoxLocDateByLocNo(@RequestBody List<String> packageNoList) {
+
+ List<LocDetl> locDetls = locDetlMapper.selectList(new EntityWrapper<LocDetl>().in("loc_no", packageNoList));
+
+ return R.ok(locDetls);
+ }
+
@Transactional(rollbackFor = Exception.class)
public void importLocData1(MultipartFile multipartFile) throws IOException {
EasyExcel.read(multipartFile.getInputStream(), LocMat.class,
@@ -148,6 +157,28 @@
return R.ok(stockOut);
}
+ @RequestMapping(value = "/stock/boxOut/list/auth")
+ @ManagerAuth
+ public R boxOut(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam Map<String, Object> param){
+ if (!Cools.isEmpty(param.get("modi_time"))){
+ String val = String.valueOf(param.get("modi_time"));
+ if (val.contains(RANGE_TIME_LINK)) {
+ String[] dates = val.split(RANGE_TIME_LINK);
+ param.put("startTime", DateUtils.convert(dates[0]));
+ param.put("endTime", DateUtils.convert(dates[1]));
+ param.remove("modi_time");
+ }
+ }
+ param.put("matnr","绌虹");
+ Page<LocDetl> stockOut = locDetlService.getStockOut(toPage(curr, limit, param, LocDetl.class));
+ if (stockOut.getRecords().size()==0){
+ stockOut = locDetlService.getStockOut(toPage(1, limit, param, LocDetl.class));
+ }
+ return R.ok(stockOut);
+ }
+
@RequestMapping(value = "/locDetl/list/auth")// /locDetl/list/auth 鎺ュ彛闂
@ManagerAuth
public R list(@RequestParam(defaultValue = "1")Integer curr,
diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java
index 9c53503..7f6de8b 100644
--- a/src/main/java/com/zy/asrs/controller/MatController.java
+++ b/src/main/java/com/zy/asrs/controller/MatController.java
@@ -105,6 +105,33 @@
}
+ @RequestMapping(value = "/boxMat/list/auth")
+ @ManagerAuth
+ public R listBox(@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) {
+
+ Object tagIdObj = param.get("tag_id");
+ if (Cools.isEmpty(tagIdObj)) {
+ tagIdObj = getOriginTag().getId();
+ }
+
+ String tagId = String.valueOf(tagIdObj);
+
+
+
+ return R.ok(matService.getPage(
+ new Page<>(curr, limit),
+ tagId,
+ param.get("matnr"),
+ param.get("memo")
+ ));
+ }
+
+
+
private void convert(Map<String, Object> map, EntityWrapper wrapper){
for (Map.Entry<String, Object> entry : map.entrySet()){
String val = String.valueOf(entry.getValue());
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 96b3c97..136a38d 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -598,6 +598,19 @@
return mobileService.pdaFxprk(param, getUserId());
}
+ @PostMapping("/pdaBoxIn")
+ @ManagerAuth(memo = "pda绌虹鍏ュ簱")
+ public synchronized R pdaBoxIn(@RequestBody BoxInParam param) {
+
+ return mobileService.pdaBoxIn(param, getUserId());
+ }
+
+ @PostMapping("/pdaGetMemo")
+ @ManagerAuth(memo = "pda鑾峰彇鏈ㄧ璧勬枡")
+ public synchronized List<Map<String, Object>> pdaGetMemo() {
+ return mobileService.pdaGetMemo();
+ }
+
@PostMapping("/pdaFhhd")
@ManagerAuth(memo = "pda鍙戣揣鏍稿")
public synchronized R pdaFhhd(@RequestBody PdaDhhdParam param) {
diff --git a/src/main/java/com/zy/asrs/entity/param/BoxInParam.java b/src/main/java/com/zy/asrs/entity/param/BoxInParam.java
new file mode 100644
index 0000000..edc3b99
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/BoxInParam.java
@@ -0,0 +1,13 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class BoxInParam {
+ private String barcode; // 鎵樼洏鐮�
+ private Integer palletizingNo;// 鐮佸灈浣嶇紪鍙�
+
+ private String batch; //灏哄
+ private String memo; // 澶囨敞
+ private Double anfme;
+}
diff --git a/src/main/java/com/zy/asrs/mapper/MatMapper.java b/src/main/java/com/zy/asrs/mapper/MatMapper.java
index bf12ef8..b3812ba 100644
--- a/src/main/java/com/zy/asrs/mapper/MatMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/MatMapper.java
@@ -15,7 +15,7 @@
@Repository
public interface MatMapper extends BaseMapper<Mat> {
- List<Mat> listByPage(Page page, @Param("tagId") String tagId, @Param("matnr") Object matnr, @Param("maktx") Object maktx);
+ List<Mat> listByPage(Page page, @Param("tagId") String tagId, @Param("matnr") Object matnr, @Param("memo") Object memo);
List<Mat> listByPage2(Page page, @Param("tagId") String tagId, @Param("matnr") Object matnr, @Param("maktx") Object maktx, @Param("specs") Object specs);
Mat selectByMatnr(@Param("matnr")String matnr);
@@ -29,4 +29,5 @@
@Update("update man_mat set origin= #{boxPos},barcode=#{barcode} where brand= #{packageGroupNo}")
Integer updateBoxPos(@Param("packageGroupNo") String packageGroupNo, @Param("boxPos") String boxPos,@Param("barcode") String barcode);
+ List<Map<String, Object>> getBoxMemoMap(@Param("tagIds") List<Integer> tagIds);
}
diff --git a/src/main/java/com/zy/asrs/service/MatService.java b/src/main/java/com/zy/asrs/service/MatService.java
index 59c97b2..47dcef7 100644
--- a/src/main/java/com/zy/asrs/service/MatService.java
+++ b/src/main/java/com/zy/asrs/service/MatService.java
@@ -8,7 +8,7 @@
public interface MatService extends IService<Mat> {
- Page<Mat> getPage(Page page, String tagId, Object matnr, Object maktx);
+ Page<Mat> getPage(Page page, String tagId, Object matnr,Object memo);
Page<Mat> getPage2(Page page, String tagId, Object matnr, Object maktx, Object specs);
Mat selectByMatnr(String matnr);
@@ -16,4 +16,5 @@
Page<Mat> getMatTurnPage(Page<Mat> page);
+
}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index aa10f0c..1c9b78f 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -68,6 +68,11 @@
R pdaFxprk(GwmsGenerateInventoryDto param, Long userId);
/**
+ * pda绌虹鍏ュ簱
+ */
+ R pdaBoxIn(BoxInParam param, Long userId);
+
+ /**
* 鐩樼偣寮傚父鎸夊疄鐗╄皟鏁村簱瀛樹俊鎭�
*/
R pdtz(PdtzParam param);
@@ -76,4 +81,6 @@
* 鍙戣揣鏍稿
*/
R pdaFhhd(PdaDhhdParam param,Long userId);
+
+ List<Map<String, Object>> pdaGetMemo();
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
index f7b239e..2bb6c66 100644
--- a/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
@@ -13,8 +13,8 @@
public class MatServiceImpl extends ServiceImpl<MatMapper, Mat> implements MatService {
@Override
- public Page<Mat> getPage(Page page, String tagId, Object matnr, Object maktx) {
- return page.setRecords(baseMapper.listByPage(page, tagId, matnr, maktx));
+ public Page<Mat> getPage(Page page, String tagId, Object matnr, Object memo) {
+ return page.setRecords(baseMapper.listByPage(page, tagId, matnr, memo));
}
@Override
public Page<Mat> getPage2(Page page, String tagId, Object matnr, Object maktx, Object specs) {
@@ -42,4 +42,6 @@
+
+
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index fc60578..e957894 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1557,6 +1557,95 @@
return R.ok("鍙嶄慨鍏ュ簱鎴愬姛");
}
+ @Override
+ public R pdaBoxIn(BoxInParam param, Long userId) {
+
+ if (Cools.isEmpty(param.getBarcode())) {
+ throw new CoolException("鏉$爜涓嶈兘涓虹┖锛�" + param.getBarcode());
+ }
+
+ int zpalletCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
+ if (zpalletCount > 0) {
+ throw new CoolException("搴撳瓨鎵樼洏鐮佸凡瀛樺湪锛�" + param.getBarcode());
+ }
+
+ int barcodeCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
+ if (barcodeCount > 0) {
+ throw new CoolException("宸ヤ綔妗e凡瀛樺湪璇ユ墭鐩樼爜锛�" + param.getBarcode());
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1((short) 1);
+ int iotype = 1; //绌虹
+
+ // 鏍规嵁婧愮珯鐐瑰鎵惧簱浣�
+ StartupDto dto = commonService.getLocNo(iotype, param.getPalletizingNo(), locTypeDto, 0);
+
+ int workNo = dto.getWorkNo();
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細璁惧涓婅蛋
+ wrkMast.setIoType(iotype); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(param.getPalletizingNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setModiTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMastService.insert(wrkMast);
+
+ if (!Cools.isEmpty(param.getBatch())) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setMatnr("绌虹");
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setBatch(param.getBatch()); // 灏哄
+ wrkDetl.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ wrkDetl.setBarcode(param.getBarcode());
+ wrkDetl.setMemo(param.getMemo()); //澶囨敞
+ wrkDetl.setAnfme(param.getAnfme());
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiUser(userId);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ }
+
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")) {
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+ }
+
+ // 杩斿洖GWCS鐩爣淇℃伅
+ openServiceImpl.pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode(), "涓�妤肩┖绠卞叆搴撴帹閫乬wcs");
+
+ return R.ok("绌虹鍏ュ簱鎴愬姛");
+ }
+
private void pushFxrkToMes(GwmsGenerateInventoryDto param) {
for (GwmsGenerateInventoryDto.MatList matList : param.getMatList()){
@@ -1929,7 +2018,7 @@
* 璋冩暣搴撳瓨鏄庣粏
*/
@Transactional
- void insertLocDetl(String locNo, String barcode, List<PdtzParam.MatList> matList) {
+ public void insertLocDetl(String locNo, String barcode, List<PdtzParam.MatList> matList) {
Date now = new Date();
for (PdtzParam.MatList mat : matList) {
LocDetl locDetl = new LocDetl();
@@ -2114,4 +2203,33 @@
}
return result;
}
+
+ @Override
+ public List<Map<String, Object>> pdaGetMemo() {
+ List<Integer> tagIds = Arrays.asList(7, 8);
+ List<Map<String, Object>> raw = matMapper.getBoxMemoMap(tagIds);
+
+ // 鐢� Map<String, List<String>> 鍒嗙粍
+ Map<String, List<String>> grouped = new HashMap<>();
+ for (Map<String, Object> row : raw) {
+ String tagId = String.valueOf(row.get("tag_id"));
+ String memo = String.valueOf(row.get("memo"));
+ if (memo == null || "null".equalsIgnoreCase(memo)) continue;
+
+ grouped.computeIfAbsent(tagId, k -> new ArrayList<>()).add(memo);
+ }
+
+ // 杞垚 List<Map<String, Object>> 缁撴瀯杩斿洖
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (Map.Entry<String, List<String>> entry : grouped.entrySet()) {
+ Map<String, Object> item = new HashMap<>();
+ item.put("tagId", entry.getKey());
+ item.put("memos", entry.getValue());
+ result.add(item);
+ }
+
+ return result;
+ }
+
+
}
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 8ef9e32..eaa13af 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -183,14 +183,20 @@
// 鑾峰彇搴撲綅鏄庣粏
List<LocDetlDto> locDetlDtos = new ArrayList<>();
for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+ LocDetl one = new LocDetl();
// if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
- LocDetl one = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no",paramLocDetl.getLocNo())
+ one = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no",paramLocDetl.getLocNo())
.eq("brand",paramLocDetl.getBrand()).eq("model",paramLocDetl.getModel()));
// selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
- if (null != one) {
+ if(paramLocDetl.getMatnr().equals("绌虹")){
+ one= locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no",paramLocDetl.getLocNo()));
+ }
+ if (null != one && !paramLocDetl.getMatnr().equals("绌虹")) {
if(!"鍚堟牸".equals(one.getThreeCode())) {
throw new CoolException(one.getModel() + "鍗蜂笉鍚堟牸:" + one.getThreeCode() );
}
+ locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount(), param.getOrderNo()));
+ }else{
locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount(), param.getOrderNo()));
}
// }
@@ -950,7 +956,7 @@
}
// 鍏ュ簱 + 搴撲綅杞Щ
if (wrkMast.getIoType() < 60) {
- wrkMast.setWrkSts(5L);
+ wrkMast.setWrkSts(4L);
// 鍑哄簱
} else if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 103 && wrkMast.getIoType() != 107 && wrkMast.getIoType() != 109) {
wrkMast.setWrkSts(14L);
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index dbc1353..f549c1b 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -121,7 +121,7 @@
locDetl.setBarcode(wrkMast.getBarcode());
locDetl.setModiTime(now);
locDetl.setAppeTime(now);
- locDetl.setBatch("");
+// locDetl.setBatch("");
if (!locDetlService.insert(locDetl)) {
// exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
diff --git a/src/main/resources/mapper/MatMapper.xml b/src/main/resources/mapper/MatMapper.xml
index 09a8d0a..5cc3281 100644
--- a/src/main/resources/mapper/MatMapper.xml
+++ b/src/main/resources/mapper/MatMapper.xml
@@ -53,23 +53,28 @@
FROM man_mat mm
LEFT JOIN man_tag mt ON mm.tag_id = mt.id
LEFT JOIN (
- select
- matnr,
- sum(anfme) as amount
- from man_loc_detl
- group by matnr
- ) as mld on mld.matnr = mm.matnr
+ SELECT
+ matnr,
+ SUM(anfme) AS amount
+ FROM man_loc_detl
+ GROUP BY matnr
+ ) AS mld ON mld.matnr = mm.matnr
WHERE 1=1
- and (mm.memo is null or mm.memo != '鎵撳寘涓婄嚎')
- AND (CHARINDEX(','+#{tagId}+',', ','+mt.path+',') > 0 OR mt.id = #{tagId})
+ <!-- 鉁� 灞忚斀 tag_id = 6 -->
+ AND mt.id != 6
+
+ <!-- 鉁� 鍒ゆ柇鏄惁鍦ㄨ矾寰勪腑 or 鏈韩 id 鍖归厤 -->
+ AND (CHARINDEX(',' + #{tagId} + ',', ',' + mt.path + ',') > 0 OR mt.id = #{tagId})
+
<if test="matnr != null and matnr != ''">
- and mm.matnr like concat('%',#{matnr},'%')
+ AND mm.matnr LIKE CONCAT('%', #{matnr}, '%')
</if>
- <if test="maktx != null and maktx != ''">
- and mm.maktx like concat('%',#{maktx},'%')
+ <if test="memo != null and memo != ''">
+ AND mm.memo LIKE CONCAT('%', #{memo}, '%')
</if>
ORDER BY mm.create_time DESC
</select>
+
<select id="listByPage2" resultMap="BaseResultMap">
SELECT
@@ -125,6 +130,17 @@
) t where t.matNo between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
</select>
+
+ <select id="getBoxMemoMap" resultType="map">
+ SELECT tag_id, memo
+ FROM man_mat
+ WHERE tag_id IN
+ <foreach item="id" collection="tagIds" open="(" close=")" separator=",">
+ #{id}
+ </foreach>
+ </select>
+
+
<select id="getStockOutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">
select
count(1)
diff --git a/src/main/webapp/static/js/locDetl/locDetl.js b/src/main/webapp/static/js/locDetl/locDetl.js
index a8bc332..8ca490d 100644
--- a/src/main/webapp/static/js/locDetl/locDetl.js
+++ b/src/main/webapp/static/js/locDetl/locDetl.js
@@ -8,6 +8,8 @@
// ,{field: 'anfme', align: 'center',title: '鏁伴噺',hide: true}
,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
,{field: 'matnr', align: 'center',title: '瑙勬牸', sort:true,width: 150}
+ ,{field: 'batch', align: 'center',title: '绌虹灏哄', hide: true}
+ ,{field: 'memo', align: 'center',title: '绌虹澶囨敞', hide: true}
,{field: 'brand', align: 'center',title: '鍖呰缁勫彿', hide: false,width: 150}
,{field: 'model', align: 'center',title: '鍗峰彿', hide: false,width: 150}
,{field: 'unit', align: 'center',title: '绠卞彿', hide: false,width: 150}
@@ -27,6 +29,8 @@
,{field: 'volume', align: 'center',title: '鍗曠姣涢噸', hide: true}
,{field: 'specs', align: 'center',title: '鎺ュご', hide:true}
,{field: 'deadWarn$', align: 'center',title: '鐞嗚揣鐘舵��', hide: false}
+
+
,{
field: 'threeCode',
align: 'center',
diff --git a/src/main/webapp/static/js/mat/boxMat.js b/src/main/webapp/static/js/mat/boxMat.js
new file mode 100644
index 0000000..7705d58
--- /dev/null
+++ b/src/main/webapp/static/js/mat/boxMat.js
@@ -0,0 +1,482 @@
+var pageCurr;
+var printMatCodeNos = [];
+var admin;
+function getCol() {
+ var cols = [
+ {type: 'checkbox'}
+ ,{field: 'tagId$', align: 'center',title: '褰掔被', templet: '#tagTpl'}
+ ,{field: 'memo', align: 'center',title: '鏈ㄧ璧勬枡',hide:false}
+ ];
+ // cols.push.apply(cols, matCols);
+ cols.push(
+ {fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
+ )
+ return cols;
+}
+
+layui.config({
+ base: baseUrl + "/static/layui/lay/modules/"
+}).extend({
+ dropdown: 'dropdown/dropdown',
+}).use(['table','laydate', 'form', 'treeTable', 'admin', 'xmSelect', 'dropdown', 'element'], function(){
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+ admin = layui.admin;
+ var treeTable = layui.treeTable;
+ var xmSelect = layui.xmSelect;
+
+ // 鍟嗗搧鍒嗙被鏁版嵁
+ var insTb = treeTable.render({
+ elem: '#tag',
+ url: baseUrl+'/tag/list/auth',
+ headers: {token: localStorage.getItem('token')},
+ tree: {
+ iconIndex: 2, // 鎶樺彔鍥炬爣鏄剧ず鍦ㄧ鍑犲垪
+ isPidData: true, // 鏄惁鏄痠d銆乸id褰㈠紡鏁版嵁
+ idName: 'id', // id瀛楁鍚嶇О
+ pidName: 'parentId' // pid瀛楁鍚嶇О
+ },
+ cols: [],
+ done: function (data) {
+ $('.ew-tree-table-box').css('height', '100%');
+ insTb.expandAll();
+ }
+ });
+
+ // 鏁版嵁娓叉煋
+ tableIns = table.render({
+ elem: '#mat',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/boxMat/list/auth',
+ page: true,
+ limit: 16,
+ limits: [16, 30, 50, 100, 200, 500],
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ height: 'full-105',
+ 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();
+ 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(mat)', function (obj) {
+ var checkStatus = table.checkStatus(obj.config.id);
+ switch(obj.event) {
+ case 'addData':
+ showEditModel()
+ 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+"/mat/delete/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {param: JSON.stringify(data)},
+ method: 'POST',
+ traditional:true,
+ success: function (res) {
+ if (res.code === 200){
+ layer.closeAll();
+ tableReload(false);
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ });
+ }
+ break;
+ case 'exportData':
+ layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+ var titles=[];
+ var fields=[];
+ obj.config.cols[0].map(function (col) {
+ if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+ titles.push(col.title);
+ fields.push(col.field);
+ }
+ });
+ var exportData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ exportData[this.name] = this.value;
+ });
+ var param = {
+ 'mat': exportData,
+ 'fields': fields
+ };
+ $.ajax({
+ url: baseUrl+"/mat/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;
+ // 鎵归噺鎵撳嵃
+ case "btnPrintBatch":
+ printMatCodeNos = [];
+ var data = checkStatus.data;
+ if (data.length === 0){
+ layer.msg('璇烽�夋嫨鎵撳嵃鏁版嵁');
+ } else {
+ layer.open({
+ type: 1,
+ title: '鎵归噺鎵撳嵃 [鏁伴噺'+ data.length +']',
+ area: ['500px'],
+ shadeClose: true,
+ content: $('#printDataDiv'),
+ success: function(layero, index){
+ for (var i = 0; i<data.length;i++) {
+ printMatCodeNos.push(data[i].matnr);
+ }
+ },
+ end: function () {
+ }
+ });
+ }
+ break;
+ }
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(mat)', function(obj){
+ var data = obj.data;
+ switch (obj.event) {
+ // 鎵撳嵃
+ case "btnPrint":
+ printMatCodeNos = [];
+ layer.open({
+ type: 1,
+ title: data.matnr + ' [鏁伴噺锛�1]',
+ area: ['500px'],
+ shadeClose: true,
+ content: $('#printDataDiv'),
+ success: function(layero, index){
+ layer.iframeAuto(index);
+ printMatCodeNos.push(data.matnr);
+ },
+ end: function () {
+ }
+ });
+ break;
+ // 缂栬緫
+ case 'edit':
+ showEditModel(data)
+ break;
+ }
+ });
+
+ /* 鏄剧ず琛ㄥ崟寮圭獥 */
+ function showEditModel(mData) {
+ admin.open({
+ type: 1,
+ area: '600px',
+ title: (mData ? '淇敼' : '娣诲姞') + '鍟嗗搧',
+ content: $('#editDialog').html(),
+ success: function (layero, dIndex) {
+ // 鍥炴樉琛ㄥ崟鏁版嵁
+ form.val('detail', mData);
+ // 鏂板鑷姩鐢熸垚鍟嗗搧缂栧彿
+ if (!mData) {
+ http.get(baseUrl + "/mat/auto/matnr/auth", null, function (res) {
+ $('#matnr').val(res.data);
+ })
+ }
+ // 琛ㄥ崟鎻愪氦浜嬩欢
+ form.on('submit(editSubmit)', function (data) {
+ console.log(data)
+ data.field.tagId = insXmSel.getValue('valueStr');
+ if (isEmpty(data.field.tagId)) {
+ layer.msg('鍒嗙被涓嶈兘涓虹┖', {icon: 2});
+ return false;
+ }
+ var loadIndex = layer.load(2);
+ $.ajax({
+ url: baseUrl+"/mat/"+(mData?'update':'add')+"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: data.field,
+ method: 'POST',
+ success: function (res) {
+ layer.close(loadIndex);
+ if (res.code === 200){
+ layer.close(dIndex);
+ layer.msg(res.msg, {icon: 1});
+ $(".layui-laypage-btn")[0].click();
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg, {icon: 2});
+ }
+ }
+ })
+ return false;
+ });
+ // 娓叉煋涓嬫媺鏍�
+ var insXmSel = xmSelect.render({
+ el: '#tagSel',
+ height: '250px',
+ data: insTb.options.data,
+ initValue: mData ? [mData.tagId] : [],
+ model: {label: {type: 'text'}},
+ prop: {
+ name: 'name',
+ value: 'id'
+ },
+ radio: true,
+ clickClose: true,
+ tree: {
+ show: true,
+ indent: 15,
+ strict: false,
+ expandedKeys: true
+ }
+ });
+ // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+ $(layero).children('.layui-layer-content').css('overflow', 'visible');
+ layui.form.render('select');
+ }
+ });
+ }
+
+ // 妯℃澘閫夋嫨
+ form.on('radio(selectTemplateRadio)', function (data) {
+ $('.template-preview').hide();
+ $('#template-preview-'+data.value).show();
+ });
+
+ // 寮�濮嬫墦鍗�
+ form.on('submit(doPrint)', function (data) {
+ var templateNo = data.field.selectTemplate;
+ $.ajax({
+ url: baseUrl+"/mat/print/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {param: printMatCodeNos},
+ method: 'POST',
+ async: false,
+ success: function (res) {
+ if (res.code === 200){
+ layer.closeAll();
+ for (let i=0;i<res.data.length;i++){
+ var templateDom = $("#templatePreview"+templateNo);
+ var className = templateDom.attr("class");
+ if (className === 'template-barcode') {
+ res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=1¶m="+res.data[i].matnr;
+ } else {
+ res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2¶m="+res.data[i].matnr;
+ }
+ }
+ var tpl = templateDom.html();
+ var template = Handlebars.compile(tpl);
+ var html = template(res);
+ var box = $("#box");
+ box.html(html);box.show();
+ box.print({mediaPrint:true});
+ box.hide();
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ pageCurr = 1;
+ tableReload(false);
+ });
+
+ // 鎼滅储鏍忛噸缃簨浠�
+ form.on('submit(reset)', function (data) {
+ pageCurr = 1;
+ clearFormVal($('#search-box'));
+ tableReload(false);
+ });
+
+ // 鏃堕棿閫夋嫨鍣�
+ layDate.render({
+ elem: '#createTime\\$',
+ type: 'datetime'
+ });
+ layDate.render({
+ elem: '#updateTime\\$',
+ type: 'datetime'
+ });
+
+
+});
+
+// excel瀵煎叆妯℃澘涓嬭浇
+function excelMouldDownload(){
+ layer.load(1, {shade: [0.1,'#fff']});
+ location.href = baseUrl + "/mat/excel/import/mould";
+ layer.closeAll('loading');
+}
+
+// excel瀵煎叆
+function importExcel() {
+ $("#importExcel").trigger("click");
+}
+function upload(obj){
+ if(!obj.files) {
+ return;
+ }
+ var file = obj.files[0];
+ admin.confirm('纭鍚屾 [' + file.name +'] 鏂囦欢鍚楋紵', function (index) {
+ layer.load(1, {shade: [0.1,'#fff']});
+ var url = baseUrl + "/mat/excel/import/auth";
+ var form = new FormData();
+ form.append("file", file);
+ xhr = new XMLHttpRequest();
+ xhr.open("post", url, true); //post鏂瑰紡锛寀rl涓烘湇鍔″櫒璇锋眰鍦板潃锛宼rue 璇ュ弬鏁拌瀹氳姹傛槸鍚﹀紓姝ュ鐞嗐��
+ xhr.setRequestHeader('token', localStorage.getItem('token'));
+ xhr.onload = uploadComplete; //璇锋眰瀹屾垚
+ xhr.onerror = uploadFailed; //璇锋眰澶辫触
+ xhr.onloadend = function () { // // 涓婁紶瀹屾垚閲嶇疆鏂囦欢娴�
+ layer.closeAll('loading');
+ $("#importExcel").val("");
+ };
+ // xhr.upload.onprogress = progressFunction;//銆愪笂浼犺繘搴﹁皟鐢ㄦ柟娉曞疄鐜般��
+ xhr.upload.onloadstart = function(){//涓婁紶寮�濮嬫墽琛屾柟娉�
+ ot = new Date().getTime(); //璁剧疆涓婁紶寮�濮嬫椂闂�
+ oloaded = 0;//璁剧疆涓婁紶寮�濮嬫椂锛屼互涓婁紶鐨勬枃浠跺ぇ灏忎负0
+ };
+ xhr.send(form);
+ }, function(index){
+ $("#importExcel").val("");
+ });
+}
+function uploadComplete(evt) {
+ var res = JSON.parse(evt.target.responseText);
+ if(res.code === 200) {
+ layer.msg(res.msg, {icon: 1});
+ loadTree("");
+ } else {
+ layer.msg(res.msg, {icon: 2});
+ }
+}
+function uploadFailed(evt) {
+ var res = JSON.parse(evt.target.responseText);
+ layer.msg(res.msg, {icon: 2});
+}
+
+// excel瀵煎嚭
+function exportExcel() {
+
+}
+
+
+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 clearFormVal(el) {
+ $(':input', el)
+ .val('')
+ .removeAttr('checked')
+ .removeAttr('selected');
+}
+
+$('body').keydown(function () {
+ if (event.keyCode === 13) {
+ $("#search").click();
+ }
+});
diff --git a/src/main/webapp/static/js/pakStore/boxOut.js b/src/main/webapp/static/js/pakStore/boxOut.js
new file mode 100644
index 0000000..9377099
--- /dev/null
+++ b/src/main/webapp/static/js/pakStore/boxOut.js
@@ -0,0 +1,180 @@
+var locDetlLayerIdx;
+var locDetlData = [];
+var admin;
+function getCol() {
+ var cols = [
+ // {field: 'count', align: 'center',title: '鍑哄簱鏁伴噺', edit:'text', width: 130, style:'color: blue;font-weight: bold'},
+ {field: 'anfme', align: 'center',title: '鏁伴噺'}
+ ,{field: 'locNo$', align: 'center',title: '搴撲綅鍙�'}
+ ,{field: 'batch', align: 'center',title: '鏈ㄧ灏哄'}
+ ,{field: 'memo', align: 'center',title: '鏈ㄧ澶囨敞'}
+ ];
+ // cols.push({fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 80})
+ return cols;
+}
+
+layui.config({
+ base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin'], function() {
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var form = layui.form;
+ admin = layui.admin;
+
+ tableIns = table.render({
+ elem: '#chooseData',
+ headers: {token: localStorage.getItem('token')},
+ data: [],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ limit: 500,
+ cols: [getCol()],
+ done: function(res, curr, count) {
+ limit();
+ getOutBound();
+ }
+ });
+
+ // 椤甸潰淇敼
+ table.on('edit(chooseData)', function (obj) {
+ let index = obj.tr.attr("data-index");
+ let data = locDetlData[index];
+ let modify = true;
+ // if (obj.field === 'count'){
+ // let vle = Number(obj.value);
+ // if (isNaN(vle)) {
+ // layer.msg("璇疯緭鍏ユ暟瀛�", {icon: 2});
+ // modify = false;
+ // } else {
+ // if (vle <= 0) {
+ // layer.msg("鏁伴噺蹇呴』澶т簬闆�", {icon: 2});
+ // modify = false;
+ // }
+ // if (vle > Number(data.anfme)) {
+ // layer.msg("鍑哄簱鏁伴噺涓嶅緱澶т簬搴撳瓨鏁伴噺", {icon: 2});
+ // modify = false;
+ // }
+ // }
+ // }
+ if (modify) {
+ data[obj.field] = obj.value;
+ }
+ tableIns.reload({data: locDetlData});
+ });
+
+ // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+ table.on('toolbar(chooseData)', function (obj) {
+ switch (obj.event) {
+ case 'outbound':
+ if (locDetlData.length === 0){
+ layer.msg('璇峰厛鎻愬彇鍟嗗搧搴撳瓨', {icon: 2});
+ } else {
+ var staNo = $("#staNoSelect").val();
+ if (staNo === "" || staNo === null){
+ layer.msg("璇烽�夋嫨鍑哄簱鍙�", {icon: 2});
+ return;
+ }
+ let param = {
+ outSite: staNo,
+ locDetls: locDetlData
+ }
+ $.ajax({
+ url: baseUrl+"/plate/out/start",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(param),
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ locDetlData = [];
+ tableIns.reload({data: locDetlData,done:function (res) {limit();getOutBound();}});
+ layer.msg(res.msg, {icon: 1});
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg, {icon: 2})
+ }
+ }
+ });
+ }
+ break;
+ }
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(chooseData)', function(obj){
+ switch (obj.event) {
+ case 'remove':
+ let index = obj.tr.attr("data-index");
+ locDetlData.splice(index, 1);
+ tableIns.reload({data: locDetlData});
+ break;
+ }
+ });
+
+ // 鑾峰彇鍑哄簱鍙�
+ function getOutBound(){
+ $.ajax({
+ url: baseUrl+"/available/take/site",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'POST',
+ async: false,
+ success: function (res) {
+ if (res.code === 200){
+ var tpl = $("#takeSiteSelectTemplate").html();
+ var template = Handlebars.compile(tpl);
+ var html = template(res);
+ $('#staNoSelect').append(html);
+ form.render('select');
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ }
+
+
+ $(document).on('click','#mat-query', function () {
+ let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
+ locDetlLayerIdx = layer.open({
+ type: 2,
+ title: false,
+ closeBtn: false,
+ maxmin: false,
+ area: ['90%', '85%'],
+ shadeClose: true,
+ content: 'boxQuery.html',
+ success: function(layero, index){
+ layer.close(loadIndex);
+ }
+ });
+ })
+
+})
+
+// 娣诲姞琛ㄦ牸鏁版嵁
+function addTableData(data) {
+ let newData = [];
+
+ for (let i = 0; i < data.length; i++) {
+ let item = data[i];
+ let exist = locDetlData.some(old =>
+ (old.locNo$ === item.locNo$ || old.locNo === item.locNo)
+ );
+
+ if (!exist) {
+ item.count = item.anfme;
+ newData.push(item);
+ }
+ }
+
+ locDetlData = locDetlData.concat(newData);
+ console.log("浼犲叆琛ㄦ牸鏁版嵁闀垮害锛�", locDetlData.length, locDetlData);
+ tableIns.reload({data: locDetlData});
+ layer.close(locDetlLayerIdx);
+}
+
diff --git a/src/main/webapp/views/mat/boxMat.html b/src/main/webapp/views/mat/boxMat.html
new file mode 100644
index 0000000..bb8b246
--- /dev/null
+++ b/src/main/webapp/views/mat/boxMat.html
@@ -0,0 +1,444 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/tree.css" media="all">
+ <style>
+ body {
+ color: #595959;
+ background-color: #f5f7f9;
+ }
+ .layui-fluid {
+ padding: 15px;
+ }
+ .layui-form.layui-border-box.layui-table-view {
+ /*margin: 15px 0 35px 0;*/
+ width: 100%;
+ border-width: 1px;
+ }
+ .layui-form.layui-border-box.layui-table-view {
+ height: calc(100vh - 160px);
+ }
+ .layui-form.layui-border-box.layui-table-view {
+ margin: 0;
+ }
+ #search-box {
+ padding: 30px 30px 10px 0px;
+ margin-left: 0px;
+ }
+ .layui-form.layui-border-box.layui-table-view {
+ height: 100%;
+ }
+
+ .admin-form {
+ padding: 25px 30px 0 0 !important;
+ margin: 0 !important;
+ }
+
+ /* ------------------------- 鎵撳嵃琛ㄦ牸 ----------------------- */
+ .template-preview {
+ height: 200px;
+ display: inline-block;
+ }
+ .contain td {
+ border: 1px solid #000;
+ /*font-family: 榛戜綋;*/
+ /*font-weight: bold;*/
+ /*color: #000000;*/
+ }
+ </style>
+</head>
+<body>
+
+<div class="layui-fluid">
+ <!-- 宸� -->
+ <div class="layui-row layui-col-space15">
+ <div class="layui-col-md3">
+ <div class="layui-card">
+ <div class="layui-card-body" style="padding: 10px;">
+ <!-- 鏍戝伐鍏锋爮 -->
+ <div class="layui-form toolbar" id="organizationTreeBar">
+ <div class="layui-inline" style="max-width: 200px;">
+ <input id="condition" onkeyup="findData(this)" type="text" class="layui-input" placeholder="璇疯緭鍏ュ叧閿瓧" autocomplete="off">
+ </div>
+ <div class="layui-inline">
+ <button class="layui-btn icon-btn layui-btn-sm" id="treeReset" style="padding: 0 10px">
+ <i class="layui-icon layui-icon-close"></i>
+ </button>
+ </div>
+ </div>
+ <!-- 鏍� -->
+ <div class="layui-form toolbar" id="organizationTree"></div>
+ </div>
+ </div>
+ </div>
+ <!-- 鍙� -->
+ <div class="layui-col-md9">
+ <div class="layui-card">
+ <div class="layui-card-body" style="padding: 10px;">
+ <!-- 琛ㄦ牸宸ュ叿鏍�2 -->
+ <div id="search-box" class="layui-form toolbar" style="padding-top: 5px">
+<!-- <div class="layui-inline">-->
+<!-- <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鏈ㄧ灏哄:</label>-->
+<!-- <div class="layui-input-inline">-->
+<!-- <input name="name" class="layui-input" placeholder="杈撳叆鏈ㄧ灏哄"/>-->
+<!-- </div>-->
+<!-- </div>-->
+ <div class="layui-inline">
+ <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鏈ㄧ鍐呭:</label>
+ <div class="layui-input-inline">
+ <input name="memo" class="layui-input" placeholder="杈撳叆鏁版嵁"/>
+ </div>
+ </div>
+<!-- <div class="layui-inline">-->
+<!-- <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧瑙勬牸:</label>-->
+<!-- <div class="layui-input-inline">-->
+<!-- <input name="specs" class="layui-input" placeholder="杈撳叆鍟嗗搧瑙勬牸"/>-->
+<!-- </div>-->
+<!-- </div>-->
+ <div class="layui-inline"> 
+ <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+ <i class="layui-icon"></i>鎼滅储
+ </button>
+ <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+ <i class="layui-icon"></i>閲嶇疆
+ </button>
+ </div>
+ </div>
+ <table class="layui-hide" id="mat" lay-filter="mat"></table>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<script type="text/html" id="tagTpl">
+ <span name="tagId" class="layui-badge layui-badge-gray">{{d.tagId$}}</span>
+</script>
+
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+<!-- <button class="layui-btn layui-btn-sm" id="btn-print-batch" lay-event="btnPrintBatch">鎵归噺鎵撳嵃</button>-->
+ <button class="layui-btn layui-btn-sm layui-btn-normal" id="btn-add" lay-event="addData">鏂板</button>
+ <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+ <!-- 鍟嗗搧/鐗╂枡 鏁版嵁涓績 -->
+ <div class="dropdown-menu" style="float: right">
+<!-- <button class="layui-btn layui-btn-primary layui-border-black icon-btn layui-btn-sm"> 鏁版嵁鍚屾 <i class="layui-icon layui-icon-drop"></i></button>-->
+ <ul class="dropdown-menu-nav dark">
+ <div class="dropdown-anchor"></div>
+ <li class="title">1st menu</li>
+<!-- <li><a onclick="excelMouldDownload()" style="font-size: 12px"><i class="layui-icon layui-icon-template-1"></i>妯℃澘涓嬭浇</a></li>-->
+<!-- <li><a onclick="importExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-upload"></i>瀵煎叆 Excel</a></li>-->
+<!-- <li style="display: none"><input id="importExcel" type="file" onchange="upload(this)" ></li>-->
+ <hr>
+ <li class="title">2nd menu</li>
+<!-- <li><a onclick="exportExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-export"></i>瀵煎嚭 Excel</a></li>-->
+ </ul>
+ </div>
+ <!-- <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right;margin-right: -10px">瀵煎嚭</button>-->
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-xs btn-edit layui-btn-primary" lay-event="edit">淇敼</a>
+<!-- <button class="layui-btn layui-btn-xs btn-print" lay-event="btnPrint">鎵撳嵃</button>-->
+</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/jquery/jQuery.print.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/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/mat/boxMat.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/tagTree.js" charset="utf-8"></script>
+
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+ <form id="detail" lay-filter="detail" class="layui-form admin-form">
+ <input name="id" type="hidden">
+ <input name="uuid" type="hidden">
+ <input name="nodeId" type="hidden">
+ <input name="tag_id" type="hidden">
+ <input name="model" type="hidden">
+ <input name="name" type="hidden">
+ <input name="batch" type="hidden">
+ <input name="docId" type="hidden">
+ <input name="docNum" type="hidden">
+ <input name="custName" type="hidden">
+ <input name="itemNum" type="hidden">
+ <input name="count" type="hidden">
+ <input name="weight" type="hidden">
+ <input name="status" type="hidden">
+ <input name="createBy" type="hidden">
+ <input name="updateTime$" type="hidden">
+ <input name="updateBy" type="hidden">
+ <div class="layui-row">
+
+ <div class="layui-col-md6">
+
+ <div class="layui-form-item">
+ <label class="layui-form-label">鍒嗙被</label>
+ <div class="layui-input-block">
+ <div id="tagSel" class="ew-xmselect-tree"></div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <label class="layui-form-label layui-form-required">鏈ㄧ璧勬枡</label>
+ <div class="layui-input-block">
+ <input name="memo" placeholder="璇疯緭鍏ヨ祫鏂�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
+ </div>
+ </div>
+
+<!-- <div class="layui-form-item">-->
+<!-- <label class="layui-form-label">閰嶇疆</label>-->
+<!-- <div class="layui-input-block">-->
+<!-- <input name="specs" placeholder="璇疯緭鍏ラ厤缃�" class="layui-input">-->
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- <div class="layui-form-item">-->
+<!-- <label class="layui-form-label">鎬婚噸閲�</label>-->
+<!-- <div class="layui-input-block">-->
+<!-- <input name="weight" placeholder="璇疯緭鍏ユ�婚噸閲�" class="layui-input">-->
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- <div class="layui-form-item">-->
+<!-- <label class="layui-form-label">鍗曠浣撶Н</label>-->
+<!-- <div class="layui-input-block">-->
+<!-- <input name="volume" placeholder="璇疯緭鍏ュ崟绠变綋绉�" class="layui-input">-->
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- </div>-->
+
+<!-- <div class="layui-col-md6">-->
+<!-- <div class="layui-form-item">-->
+<!-- <label class="layui-form-label layui-form-required">鍟嗗搧缂栧彿</label>-->
+<!-- <div class="layui-input-block">-->
+<!-- <input id="matnr" name="matnr" placeholder="璇疯緭鍏ュ晢鍝佺紪鍙�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">-->
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- <div class="layui-form-item">-->
+<!-- <label class="layui-form-label">瑙勬牸</label>-->
+<!-- <div class="layui-input-block">-->
+<!-- <input name="specs" placeholder="璇疯緭鍏ヤ唬鐮�" class="layui-input">-->
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- <div class="layui-form-item">-->
+<!-- <label class="layui-form-label">澶囨敞</label>-->
+<!-- <div class="layui-input-block">-->
+<!-- <input name="memo" placeholder="璇疯緭鍏ュ娉�" class="layui-input">-->
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- <div class="layui-form-item">-->
+<!-- <label class="layui-form-label">鍗曠姣涢噸</label>-->
+<!-- <div class="layui-input-block">-->
+<!-- <input name="length" placeholder="璇疯緭鍏ュ崟绠辨瘺閲�" class="layui-input">-->
+<!-- </div>-->
+<!-- </div>-->
+
+<!-- <div class="layui-form-item">-->
+<!-- <label class="layui-form-label">鍗曠浣撶Н</label>-->
+<!-- <div class="layui-input-block">-->
+<!-- <input name="threeCode" placeholder="璇疯緭鍏ョ瀛愬昂瀵�" class="layui-input">-->
+<!-- </div>-->
+<!-- </div>-->
+
+ </div>
+ </div>
+ <hr class="layui-bg-gray">
+ <div class="layui-form-item text-right">
+ <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+ <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+ </div>
+ </form>
+</script>
+
+<!--<!– 鎵撳嵃鎿嶄綔寮圭獥 –>-->
+<!--<div id="printDataDiv" style="display: none;padding: 20px">-->
+<!-- <div class="layui-form" style="text-align: center">-->
+<!-- <hr>-->
+<!-- <!–鍗曢�夋–>-->
+<!-- <div class="layui-form-item" style="display: inline-block; margin-bottom: 10px">-->
+<!-- <input type="radio" name="selectTemplate" value="1" title="妯℃澘涓�" lay-filter="selectTemplateRadio" checked="">-->
+<!-- <input type="radio" name="selectTemplate" value="2" title="妯℃澘浜�" lay-filter="selectTemplateRadio">-->
+<!-- <input type="radio" name="selectTemplate" value="3" title="妯℃澘涓�" lay-filter="selectTemplateRadio">-->
+<!-- </div>-->
+<!-- <fieldset class="layui-elem-field site-demo-button" style="margin-top: 30px;text-align: left;">-->
+<!-- <legend>鎵撳嵃棰勮</legend>-->
+<!-- <div id="template-container" style="margin: 20px;text-align: center">-->
+
+<!-- <!– 棰勮鍥� 1 –>-->
+<!-- <div id="template-preview-1" class="template-preview" style="display: inline-block">-->
+<!-- <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">-->
+<!-- <tr style="height: 74px">-->
+<!-- <td colspan="3" align="center" scope="col">鍟嗗搧缂栫爜</td>-->
+<!-- <td class="barcode" colspan="9" align="center" scope="col">-->
+<!-- <img class="template-code template-barcode" src="" width="90%;">-->
+<!-- <div style="letter-spacing: 2px;margin-top: 1px; text-align: center;">-->
+<!-- <span>xxxxxx</span>-->
+<!-- </div>-->
+<!-- </td>-->
+<!-- </tr>-->
+<!-- <tr style="height: 74px">-->
+<!-- <td align="center" colspan="3">鍟嗗搧</td>-->
+<!-- <td align="center" colspan="5">xxxxxx-xx/xx</td>-->
+<!-- <td align="center" colspan="2">澶囨敞</td>-->
+<!-- <td align="center" colspan="2">xx</td>-->
+<!-- </tr>-->
+<!-- </table>-->
+<!-- </div>-->
+
+<!-- <!– 棰勮鍥� 2 –>-->
+<!-- <div id="template-preview-2" class="template-preview" style="display: none">-->
+<!-- <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">-->
+<!-- <tr style="height: 30px">-->
+<!-- <td align="center" width="20%">鍟嗗搧</td>-->
+<!-- <td align="center" width="80%" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">xxxxxxx</td>-->
+<!-- </tr>-->
+<!-- <tr style="height: 30px">-->
+<!-- <td align="center" width="20%">澶囨敞</td>-->
+<!-- <td align="center" width="80%">xxxxxxxx</td>-->
+<!-- </tr>-->
+<!-- <tr style="height: 75px;">-->
+<!-- <td align="center" colspan="2" width="100%" style="border: none">-->
+<!-- <img class="template-code template-barcode" src="" width="80%">-->
+<!-- <div style="letter-spacing: 2px;margin-top: 1px; text-align: center">-->
+<!-- <span>xxxxxx</span>-->
+<!-- </div>-->
+<!-- </td>-->
+<!-- </tr>-->
+<!-- </table>-->
+<!-- </div>-->
+
+<!-- <!– 棰勮鍥� 3 –>-->
+<!-- <div id="template-preview-3" class="template-preview" style="display: none">-->
+<!-- <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">-->
+<!-- <tr style="height: 74px">-->
+<!-- <td align="center" scope="col" colspan="1">鍟嗗搧</td>-->
+<!-- <td align="center" scope="col" colspan="1" style="">xxxxxx-xx/xx</td>-->
+<!-- <td align="center" scope="col" colspan="2" rowspan="2">-->
+<!-- <img class="template-code template-qrcode" src="" width="80%">-->
+<!-- <div style="letter-spacing: 1px;margin-top: 1px; text-align: center">-->
+<!-- <span>xxxxxx</span>-->
+<!-- </div>-->
+<!-- </td>-->
+<!-- </tr>-->
+<!-- <tr style="height: 74px">-->
+<!-- <td align="center" colspan="1">澶囨敞</td>-->
+<!-- <td align="center" colspan="1" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">xxxxxxx</td>-->
+<!-- </tr>-->
+<!-- </table>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </fieldset>-->
+
+<!-- <button class="layui-btn" id="doPrint" lay-submit lay-filter="doPrint" style="margin-top: 20px">纭畾</button>-->
+<!-- </div>-->
+<!--</div>-->
+
+<!--<div id="box" style="display: block"></div>-->
+
+<!-- 鍒濆鍖栨墦鍗版ā鏉跨殑鏉″舰鐮� -->
+<script type="text/javascript">
+ $('.template-barcode').attr("src", baseUrl+"/mac/code/auth?type=1¶m=123");
+ $('.template-qrcode').attr("src", baseUrl+"/mac/code/auth?type=2¶m=123");
+</script>
+
+<!-- 妯℃澘寮曟搸 -->
+<!-- 妯℃澘1 -->
+<script type="text/template" id="templatePreview1" class="template-barcode">
+ {{#each data}}
+ <table class="contain" width="280" style="overflow: hidden;font-size: small;table-layout: fixed;">
+ <tr style="height: 74px">
+ <td align="center" colspan="3" scope="col">鍟嗗搧缂栫爜</td>
+ <td align="center" class="barcode" colspan="9" scope="col">
+ <img class="template-code" src="{{this.barcodeUrl}}" width="90%">
+ <div style="letter-spacing: 2px;margin-top: 1px; text-align: center">
+ <span>{{this.matnr}}</span>
+ </div>
+ </td>
+ </tr>
+ <tr style="height: 74px">
+ <td align="center" colspan="3">鍟嗗搧</td>
+ <td align="center" colspan="5" style="overflow: hidden; white-space: nowrap;text-overflow: ellipsis;">{{this.maktx}}</td>
+ <td align="center" colspan="2">澶囨敞</td>
+ <td align="center" colspan="2">{{this.memo}}</td>
+ </tr>
+ </table>
+ {{/each}}
+</script>
+<!-- 妯℃澘2 -->
+<script type="text/template" id="templatePreview2" class="template-barcode">
+ {{#each data}}
+ <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+ <tr style="height: 35px">
+ <td align="center" width="20%">鍟嗗搧</td>
+ <td align="center" width="80%" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">{{this.maktx}}</td>
+ </tr>
+ <tr style="height: 35px">
+ <td align="center" width="20%">澶囨敞</td>
+ <td align="center" width="80%">{{this.memo}}</td>
+ </tr>
+ <tr style="height: 79px;">
+ <td align="center" colspan="2" width="100%" style="border: none">
+ <img class="template-code" src="{{this.barcodeUrl}}" width="80%">
+ <div style="letter-spacing: 2px;margin-top: 1px; text-align: center">
+ <span>{{this.matnr}}</span>
+ </div>
+ </td>
+ </tr>
+ </table>
+ {{/each}}
+</script>
+<!-- 妯℃澘3 -->
+<script type="text/template" id="templatePreview3" class="template-qrcode">
+ {{#each data}}
+ <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+ <tr style="height: 74px" >
+ <td align="center" scope="col" colspan="1">鍟嗗搧</td>
+ <td align="center" scope="col" colspan="1" style="
+ display: inline-block;
+ line-height: 20px;
+ vertical-align: middle;
+ border: none;
+ border-top: 1px solid #000;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 3;
+ -webkit-box-orient: vertical;
+ ">
+ {{this.maktx}}
+ </td>
+ <td align="center" scope="col" colspan="2" rowspan="2">
+ <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" width="80%">
+ <div style="letter-spacing: 1px;margin-top: 1px; text-align: center">
+ <span>{{this.matnr}}</span>
+ </div>
+ </td>
+ </tr>
+ <tr style="height: 74px">
+ <td align="center" colspan="1">澶囨敞</td>
+ <td align="center" colspan="1" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">{{this.memo}}</td>
+ </tr>
+ </table>
+ {{/each}}
+</script>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/pakStore/boxOut.html b/src/main/webapp/views/pakStore/boxOut.html
new file mode 100644
index 0000000..1ea8fbf
--- /dev/null
+++ b/src/main/webapp/views/pakStore/boxOut.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <style>
+ html {
+ height: 100%;
+ padding: 10px;
+ background-color: #f1f1f1;
+ box-sizing: border-box;
+ }
+ body {
+ background-color: #fff;
+ border-radius: 5px;
+ box-shadow: 0 0 3px rgba(0,0,0,.3);
+ padding-bottom: 20px;
+ }
+
+ #staNoSpan {
+ text-align: center;
+ display: inline-block;
+ width: 100px;
+ font-size: 13px;
+ }
+ .layui-btn-container .layui-form-select {
+ display: inline-block;
+ width: 150px;
+ height: 30px;
+ }
+ .layui-btn-container .layui-form-select.layui-form-selected {
+ display: inline-block;
+ width: 150px;
+ }
+ .layui-btn-container .layui-select-title input {
+ font-size: 13px;
+ }
+ .layui-btn-container .layui-anim.layui-anim-upbit dd {
+ font-size: 13px;
+ }
+
+ #btn-outbound {
+ margin-left: 60px;
+ display: none;
+ }
+
+ /*----------------------------------*/
+ .function-area {
+ padding: 20px 50px;
+ }
+ .function-btn {
+ font-size: 16px;
+ padding: 1px 2px;
+ width: 100px;
+ height: 50px;
+ border-color: #2b425b;
+ border-radius: 4px;
+ border-width: 2px;
+ background: none;
+ border-style: solid;
+ transition: 0.4s;
+ cursor: pointer;
+ letter-spacing: 1.5px;
+ }
+ .function-btn:hover {
+ background-color: #2b425b;
+ color: #fff;
+ }
+
+ #mat-query {
+ display: none;
+ }
+ </style>
+</head>
+<body>
+
+<!-- 鍔熻兘鍖� -->
+<div class="function-area">
+ <button id="mat-query" class="function-btn">鎻愬彇搴撳瓨</button>
+</div>
+
+<hr>
+
+<!-- 琛ㄦ牸 -->
+<div style="padding-bottom: 5px; margin-bottom: 45px">
+
+ <!-- 澶撮儴 -->
+ <script type="text/html" id="toolbar">
+ <div class="layui-form">
+ <div class="layui-btn-container">
+ <!-- 1.閫夋嫨鍑哄簱鍙� -->
+ <span id="staNoSpan">鍑哄簱鍙o細</span>
+ <select id="staNoSelect" lay-verify="required">
+ <option value="">璇烽�夋嫨绔欑偣</option>
+ </select>
+ <!-- 2.鍚姩鍑哄簱 -->
+ <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="outbound">鍚姩鍑哄簱</button>
+ </div>
+ </div>
+ </script>
+
+ <!-- 琛� -->
+ <script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="remove">绉婚櫎</a>
+ </script>
+
+ <table class="layui-table" id="chooseData" lay-filter="chooseData"></table>
+</div>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/jquery/jQuery.print.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/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/js/pakStore/boxOut.js" charset="utf-8"></script>
+
+<script type="text/template" id="takeSiteSelectTemplate">
+ {{#each data}}
+ <option value="{{siteId}}">{{desc}}</option>
+ {{/each}}
+</script>
+</body>
+</html>
+
diff --git a/src/main/webapp/views/pakStore/boxQuery.html b/src/main/webapp/views/pakStore/boxQuery.html
new file mode 100644
index 0000000..b34da5a
--- /dev/null
+++ b/src/main/webapp/views/pakStore/boxQuery.html
@@ -0,0 +1,243 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <style>
+ body {
+ }
+ .layui-table-box {
+ border-right: 1px solid #9F9F9F;
+ border-left: 1px solid #9F9F9F;
+ }
+
+ #search-box {
+ padding: 30px 0 20px 0;
+ }
+ #search-box .layui-inline:first-child {
+ margin-left: 30px;
+ }
+ #search-box .layui-inline {
+ margin-right: 5px;
+ }
+
+ #data-search-btn {
+ margin-left: 10px;
+ display: inline-block;
+ }
+ #data-search-btn.layui-btn-container .layui-btn {
+ margin-right: 20px;
+ }
+ </style>
+</head>
+<body>
+<div style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
+ <span style="font-size: large; font-weight: bold">鎻愬彇搴撳瓨鍟嗗搧</span>
+</div>
+<!-- 鎼滅储鏍� -->
+<fieldset class="layui-elem-field site-demo-button" style="margin: 20px;">
+ <legend>鎼滅储鏍�</legend>
+ <!-- 鎼滅储鏍� -->
+ <div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline cool-auto-complete">
+ <input id="crnNo" class="layui-input" name="crnNo" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+ <input id="crnNo$" 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="basCrnpQueryBycrnNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+ <select class="cool-auto-complete-window-select" data-key="basCrnpQueryBycrnNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">
+ </div>
+ </div>
+<!-- <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="batch" placeholder="灏哄" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="memo" placeholder="澶囨敞" autocomplete="off">
+ </div>
+ </div>
+ <!-- 鏃ユ湡鑼冨洿 -->
+ <div class="layui-inline" style="width: 300px">
+ <div class="layui-input-inline">
+ <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+ </div>
+ </div>
+ <!-- 寰呮坊鍔� -->
+ <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ </div>
+ </div>
+</fieldset>
+
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="">鎻愬彇</button>
+ </div>
+</script>
+
+<div class="layui-form">
+ <table class="layui-hide" id="stockOut" lay-filter="stockOut"></table>
+</div>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+
+</body>
+<script>
+
+ function getCol() {
+ var cols = [
+ {type: 'checkbox', merge: ['locNo']}
+ ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�', merge: true, style: 'font-weight: bold'}
+ ,{field: 'matnr', align: 'center',title: '鐗╂枡绫诲瀷',style: 'font-weight: bold'}
+ ,{field: 'batch', align: 'center',title: '鏈ㄧ灏哄',style: 'font-weight: bold'}
+ ,{field: 'memo', align: 'center',title: '鏈ㄧ澶囨敞',style: 'font-weight: bold'}
+ ,{field: 'anfme', align: 'center',title: '鏁伴噺',style: 'font-weight: bold'}
+
+ ];
+ cols.push({field: 'modiUser$', align: 'center',title: '淇敼浜哄憳',hide:true}
+ ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'})
+ return cols;
+ }
+
+ layui.config({
+ base: baseUrl + "/static/layui/lay/modules/"
+ }).use(['table','laydate', 'form', 'admin', 'tableMerge'], function() {
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+ var admin = layui.admin;
+ var tableMerge = layui.tableMerge;
+ var dataSource = []
+
+ // 鏁版嵁娓叉煋
+ locDetlTableIns = table.render({
+ elem: '#stockOut',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl+'/stock/boxOut/list/auth',
+ page: true,
+ limits: [16, 30, 50, 100, 200, 500],
+ limit: 16,
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [getCol()],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit',
+ },
+ parseData: function (res) {
+ dataSource = res.data.records
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function(res, curr, count) {
+ tableMerge.render(this);
+ if (res.code === 403) {
+ top.location.href = baseUrl+"/";
+ }
+ }
+ });
+
+ // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+ table.on('toolbar(stockOut)', function (obj) {
+
+ var checkStatus = table.checkStatus(obj.config.id);
+ var data = checkStatus.data;
+ var dataList = []
+ for (var j = 0; j < data.length; j++) {
+ var locno = data[j].locNo
+ for(var i = 0;i < dataSource.length; i++) {
+ if (dataSource[i].locNo === locno) {
+ dataList.push(dataSource[i])
+ }
+ }
+ }
+
+ switch(obj.event) {
+ case 'confirm':
+ if (data.length === 0){
+ layer.msg("璇烽�夋嫨鏁版嵁");
+ return;
+ }
+
+ const reqDate = [...new Set(dataList.map(obj => obj.locNo))]
+ $.ajax({
+ url: baseUrl+"/getBoxLocDateByLocNo",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(reqDate),
+ contentType:'application/json;charset=UTF-8',
+ dataType:'json',
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ console.log(res)
+ parent.addTableData(res.data);
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg, {icon: 2})
+ }
+ }
+ });
+ break;
+ }
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ tableReload();
+ });
+
+ layDate.render({
+ elem: '.layui-laydate-range'
+ ,type: 'datetime'
+ ,range: true
+ });
+ })
+
+ function tableReload() {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function() {
+ searchData[this.name] = this.value;
+ });
+ locDetlTableIns.reload({
+ where: searchData,
+ });
+ }
+</script>
+</html>
+
diff --git a/src/main/webapp/views/pakStore/locDetlQuery.html b/src/main/webapp/views/pakStore/locDetlQuery.html
index 12616cf..6e7e5b1 100644
--- a/src/main/webapp/views/pakStore/locDetlQuery.html
+++ b/src/main/webapp/views/pakStore/locDetlQuery.html
@@ -77,6 +77,21 @@
<input class="layui-input" type="text" name="unit" placeholder="绠卞彿" autocomplete="off">
</div>
</div>
+ <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="batch" placeholder="灏哄" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="memo" placeholder="澶囨敞" autocomplete="off">
+ </div>
+ </div>
<!-- 鏃ユ湡鑼冨洿 -->
<div class="layui-inline" style="width: 300px">
<div class="layui-input-inline">
--
Gitblit v1.9.1