自动化立体仓库 - WMS系统
lty
2026-01-22 35b1b26f1fe16550b4ee2881a26d599456fe59b4
#i18n翻译
4个文件已添加
155个文件已修改
6348 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/license.lic 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/license4.lic 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/i18n/en.json 435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/i18n/zh-cn.json 439 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/basLocSts/basLocSts.js 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/basWrkIotype/basWrkIotype.js 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/basWrkStatus/basWrkStatus.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 141 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/cool.js 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/i18n/i18n-helper.js 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locDetl/locDetl.js 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locMast/locMast.js 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/mat/mat.js 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/report/locMap.js 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/waitPakin/waitPakin.js 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/waitPakinLog/waitPakinLog.js 129 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/wrkDetl/wrkDetl.js 137 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/wrkDetlLog/wrkDetlLog.js 758 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/wrkMast/wrkMast.js 187 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/wrkMastLog/wrkMastLog.js 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/layui/lay/modules/admin.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/layui/lay/modules/index.js 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/layuiadmin/lib/index.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/404.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/adjDetl/adjDetl.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/adjDetl/adjDetl_detail.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/api/api.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/api/api_detail.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/apiLog/apiLog.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/autoMove/autoMove.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basCrnError/basCrnError.html 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basCrnError/basCrnError_detail.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basCrnOpt/basCrnOpt.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basCrnOpt/basCrnOpt_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basCrnStatus/basCrnStatus.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basCrnStatus/basCrnStatus_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basCrnp/basCrnp.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basCrnp/basCrnp_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basDevp/basDevp.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basDevp/basDevp_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basErrLog/basErrLog.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basErrLog/basErrLog_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basLocSts/basLocSts.html 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basLocSts/basLocSts_detail.html 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basPlcerror/basPlcerror.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basPlcerror/basPlcerror_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basWhs/basWhs.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basWhs/basWhs_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basWrkIotype/basWrkIotype.html 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basWrkIotype/basWrkIotype_detail.html 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basWrkStatus/basWrkStatus.html 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basWrkStatus/basWrkStatus_detail.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/config/config.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/config/config_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/docType/docType.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/errorWrkMast/errorWrkMast.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/handWrkMast/handWrkMast.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/handWrkMast/wrkDetlLog.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/home/console.html 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/home/navigation.html 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/host/host.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/host/host_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/ioWorks/locDetlQuery.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/ioWorks/matQuery.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/ioWorks/stockIn.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/ioWorks/stockOut.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locCheck/locCheck.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetl/locDetl.html 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetl/locDetl1.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetl/locDetl_detail.html 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetlStatis/locDetlStatis.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locMast/locMast.html 99 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locMast/locMast_detail.html 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/manLocDetl/manLocDetl.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/mat/mat.html 114 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/matTurn/matTurn.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/matTurn/turnOverQuery.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/node/node.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/operateLog/operateLog.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/operateLog/operateLog_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/order/order.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/order/out.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/orderDetl/orderDetl.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/orderSettle/orderSettle.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pack/pack.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/emptyIn.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/emptyOut.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/locCheckOut.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/locDetlCheckQuery.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/locDetlQuery.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/locMove.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/matQuery.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/pakStore.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/stockAdjust.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/stockOut.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/password.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/permission/permission.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/permission/permission_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/locDetl.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewInOut.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewLocMap.html 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewStayTime.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewStockUse.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkCountIn.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkCountOut.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkIn.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkOut.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/resource/resource.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/role/role.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/role/role_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/role/role_power_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/rowLastno/rowLastno.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/rowLastno/rowLastno_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/rowLastnoType/rowLastnoType.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/saas/locDetl.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/saas/locMove.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/saas/matQuery.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/saas/stockAdjust.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/saasLog/saasLog.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/staDesc/staDesc.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/staDesc/staDesc_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/stkPlcm/stkPlcm.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/stkPlcm/stkPlcm_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/stoMan/stoQue.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/tag/tag.html 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/tpl/alarm-detl.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/tpl/tpl-note.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/tpl/tpl-theme.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/trayCode/trayCode.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/trayCode/trayCode_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/user/user.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/user/user_detail.html 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/userLogin/userLogin.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/userLogin/userLogin_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/waitPakin/waitPakin.html 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/waitPakin/waitPakin_detail.html 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/waitPakinLog/waitPakinLog.html 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/waitPakinLog/waitPakinLog_detail.html 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkDetl/wrkDetl.html 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkDetl/wrkDetl_detail.html 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkDetlLog/wrkDetlLog.html 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkDetlLog/wrkDetlLog_detail.html 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkLastno/wrkLastno.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkLastno/wrkLastno_detail.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMast/wrkDetl.html 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMast/wrkMast.html 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMast/wrkMast_detail.html 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMastExecute/wrkMastExecute.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMastExecuteLog/wrkMastExecuteLog.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMastFourWarVehicle/wrkMastFourWarVehicle.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMastFourWarVehicleLog/wrkMastFourWarVehicleLog.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMastLog/wrkDetlLog.html 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMastLog/wrkMastLog.html 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMastLog/wrkMastLog_detail.html 143 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -491,7 +491,7 @@
                wrkMast.setAppeTime(now);
                wrkMast.setModiUser(userId);
                wrkMast.setModiTime(now);
                locSts = ioType != 101? "R" : "P";
                locSts = ioType != 101? "P" : "R";
                // 生成工作档明细(保留原逻辑)
                for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                    if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
src/main/java/com/zy/common/web/WcsController.java
@@ -107,7 +107,7 @@
            //全板入库
            param.setIoType(1);
        }
        if (param.getFromPort().equals("1001") && param.getIoType()!=103 && param.getIoType() != 107) {
        if (param.getFromPort().equals("101") && param.getIoType()!=103 && param.getIoType() != 107) {
            //有空板出库时禁止入库
            int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", 1001).notIn("wrk_sts", 7));
src/main/resources/application.yml
@@ -42,7 +42,7 @@
  subject: arydasrs
  publicAlias: publicCert
  storePass: public_zhongyang_123456789
  licensePath: license1.lic
  licensePath: license.lic
  publicKeysStorePath: publicCerts.keystore
# 下位机配置
src/main/resources/license.lic
Binary files differ
src/main/resources/license4.lic
Binary files differ
src/main/webapp/static/i18n/en.json
New file
@@ -0,0 +1,435 @@
{
    "status_desc": "Status Description",
    "wrk_status_0": "0.Pending Receive",
    "wrk_status_1": "1.Received",
    "wrk_status_2": "2.Task Started",
    "wrk_status_3": "3.Pickup Completed",
    "wrk_status_4": "4.Inbound Completed",
    "wrk_status_5": "5.Inventory Updated",
    "wrk_status_6": "6.Task Interrupted",
    "wrk_status_7": "7.Drop-off Completed",
    "wrk_status_11": "11.Outbound ID Generated",
    "wrk_status_12": "12.Crane Outbound In Progress",
    "wrk_status_13": "13.Crane Empty Outbound Error",
    "wrk_status_14": "14.Outbound Unconfirmed",
    "wrk_status_15": "15.Outbound Update Completed",
    "display_mode": "Display Mode",
    "view_by_row": "View by Row",
    "view_by_layer": "View by Layer",
    "enable_selection": "Enable Selection",
    "disable_selection": "Disable Selection",
    "assign_zone": "Assign Zone",
    "zone_legend": "Zone Legend",
    "selection_mode_tip": "Selection mode enabled, please drag to select on the location map",
    "please_select_zone": "Please select a zone",
    "zone_color": "Zone Color",
    "assign_zone_and_color": "Assign Zone and Color",
    "confirm": "Confirm",
    "cancel": "Cancel",
    "cancel_selection": "Cancel Selection",
    "assign_success": "Assignment successful",
    "operation_failed": "Operation failed",
    "fetch_zone_list_failed": "Failed to fetch zone list",
    "modify_zone_color": "Modify Zone Color",
    "zone_name": "Zone Name",
    "select_color": "Select Color",
    "save": "Save",
    "color_updated": "Color updated",
    "update_failed": "Update failed",
    "load_failed": "Load failed",
    "language": "Language",
    "license_validity_prefix": "Temporary license valid for: ",
    "license_validity_suffix": " days",
    "basic_info": "Basic Information",
    "logout": "Log Out",
    "home": "Home",
    "_comment_home": "Home Tab Bar",
    "主页": "Home",
    "控制台": "Dashboard",
    "分析页": "Analytics",
    "库位热点图": "Location Heatmap",
    "基础数据": "Master Data",
    "商品档案": "Item Master",
    "工作状态": "Task Status",
    "入出库类型": "Transaction Types",
    "库位状态": "Location Status",
    "库位类型管理": "LocType Management",
    "工作序号查询": "Task Number Query",
    "库位排号分配": "Location Slot Query",
    "归类管理": "Category Management",
    "库区管理": "Zone Management",
    "路径站点设置": "Path & Station Setup",
    "库存管理": "Inventory Management",
    "库位查询": "Location Inquiry",
    "库存明细管理": "Inventory Detail",
    "库存调整": "Inventory Adjustment",
    "库存明细统计": "Inventory Summary",
    "入出库作业": "Out & In Operations",
    "入库作业": "Inbound Operations",
    "出库作业": "Outbound Operations",
    "盘点出库": "Cycle Count Outbound",
    "库位移转": "Location Transfer",
    "空板出库": "Empty Pallet Outbound",
    "工作档管理": "Work Orders",
    "工作档查询维护": "Work Order Query",
    "工作档明细查询": "Work Order Details",
    "工作历史档查询": "Work Order History",
    "工作明细历史档查询": "Work Order Detail History",
    "work_order_detail_history": "Work Order Detail History",
    "入库通知档": "Inbound Notice",
    "入库通知历史档": "Inbound Notice History",
    "订单系统": "Order System",
    "单据管理": "Order Management",
    "订单出库": "Order Outbound",
    "订单状态": "Order Status",
    "单据类型": "Order Types",
    "设备维护": "Equipment Maintenance",
    "库位管理": "Location Management",
    "站点管理": "Station Management",
    "日志统计": "Logs & Stats",
    "库存调整记录": "Inventory Adjustments",
    "三方接口统计": "3rd-Party API Logs",
    "异常工作档": "Exception Work Orders",
    "库位使用率统计": "Location Utilization",
    "库存在库时间统计": "Inventory Age",
    "日入出库次数统计": "Daily Transactions",
    "日入库明细查询": "Inbound Details",
    "日出库明细查询": "Outbound Details",
    "工作档维护日志": "Work Maintenance Log",
    "开发专用": "Developer Tools",
    "菜单列表": "Menu List",
    "权限控制": "Permission Control",
    "接口文档": "API Documentation",
    "凭证记录": "Credential Records",
    "系统配置": "System Configuration",
    "系统管理": "System Management",
    "系统用户": "System Users",
    "角色管理": "Role Management",
    "操作日志": "Operation Log",
    "个人设置": "Personal Settings",
    "基本资料": "Basic Information",
    "可视化": "Visualization",
    "侧边伸缩": "Toggle Side",
    "刷新": "Refresh",
    "全屏": "Full Screen",
    "主题": "Theme",
    "关闭当前": "Close Current",
    "关闭其他": "Close Others",
    "关闭所有": "Close All",
    "关闭当前标签页": "Close Current Tab",
    "关闭其他标签页": "Close Other Tabs",
    "关闭所有标签页": "Close All Tabs",
    "主页不能关闭": "Home page cannot be closed",
    "首页": "Home Page",
    "库存滞留时间统计表": "Stock Retention Time Statistics",
    "库位使用比例": "Location Usage Ratio",
    "库位占比": "Location Percentage",
    "日入出库数量": "Daily In/Out Quantity",
    "入_出库数量": "In/Out Quantity",
    "仓储管理系统": "WMS",
    "请选择您要使用的模块": "Please select the module you want to use",
    "运行任务": "Running Tasks",
    "库存明细": "Inventory Details",
    "_comment_common": "Common Table Columns",
    "商品编号_品号": "Item No.",
    "商品名称_品名": "Item Name",
    "规格": "Spec",
    "代码": "Code",
    "颜色": "Color",
    "品牌": "Brand",
    "单位": "Unit",
    "单价": "Price",
    "sku": "SKU",
    "单位量": "Unit Qty",
    "条码": "Barcode",
    "产地": "Origin",
    "厂家": "Manufacturer",
    "生产日期": "Mfg Date",
    "品项数": "Item Count",
    "安全库存量": "Safety Stock",
    "单箱净重": "Net Weight/Box",
    "单箱毛重": "Gross Weight/Box",
    "单箱体积": "Volume/Box",
    "箱子尺寸": "Box Size",
    "供应商": "Supplier",
    "供应商编码": "Supplier Code",
    "是否批次": "Batch Managed",
    "保质期": "Shelf Life",
    "预警天数": "Warning Days",
    "制购": "Make/Buy",
    "要求检验": "Inspection Reqd",
    "危险品": "Hazardous",
    "修改人员": "Updated By",
    "修改时间": "Updated Time",
    "备注": "Remark",
    "单据编号": "Order No.",
    "批号": "Batch No.",
    "数量": "Quantity",
    "托盘条码": "Pallet Barcode",
    "入库时间": "Inbound Time",
    "滞留天数": "Retention Days",
    "库位号": "Location No.",
    "托盘码": "Pallet Code",
    "商品编号": "Item No.",
    "商品名称": "Item Name",
    "请输入": "Please enter",
    "搜索": "Search",
    "重置": "Reset",
    "导出": "Export",
    "详情": "Detail",
    "库龄_天": "Age(Days)",
    "no_data": "No Data",
    "start_end_time": "Start / End Time",
    "add": "Add",
    "delete": "Delete",
    "edit": "Edit",
    "data_status": "Data Status",
    "normal": "Normal",
    "status_disabled": "Disabled",
    "locked": "Locked",
    "io_status": "Transaction Status",
    "inbound": "Inbound",
    "pending_inbound": "Pending Inbound",
    "confirm_generate_task": "Confirm Task Generation",
    "select_one_data": "Select One Record",
    "confirm_delete_data": "Confirm Delete Record",
    "confirm_delete_prefix": "Are you sure to delete ",
    "confirm_delete_suffix": " record(s)?",
    "this": "this",
    "account": "Account",
    "username": "Username",
    "password": "Password",
    "role": "Role",
    "age_days": "Inventory Age(Days)",
    "product_name": "Item Name",
    "order_no": "Order No.",
    "batch_no": "Batch No.",
    "unit_qty": "Unit Qty",
    "spec": "Spec",
    "code": "Code",
    "color": "Color",
    "brand": "Brand",
    "origin": "Origin",
    "manufacturer": "Manufacturer",
    "mfg_date": "Mfg Date",
    "item_count": "Item Count",
    "safety_stock": "Safety Stock",
    "net_weight_box": "Net Weight/Box",
    "gross_weight_box": "Gross Weight/Box",
    "volume_box": "Volume/Box",
    "box_size": "Box Size",
    "supplier": "Supplier",
    "supplier_code": "Supplier Code",
    "batch_managed": "Batch Managed",
    "shelf_life": "Shelf Life",
    "warning_days": "Warning Days",
    "make_buy": "Make/Buy",
    "inspection_reqd": "Inspection Reqd",
    "hazardous": "Hazardous",
    "confirm_export_excel": "Confirm Export to Excel",
    "no_data_found": "No Data Found",
    "creator_detail": "Creator Details",
    "modifier_detail": "Modifier Details",
    "please_select_data": "please select data",
    "pallet_barcode": "Pallet Code",
    "product_code": "Item No.",
    "location_no": "Location No.",
    "search": "search",
    "reset": "reset",
    "export": "export",
    "exporting": "Exporting...",
    "detail": "Detail",
    "modifier": "Modifier",
    "modify_time": "Modify Time",
    "prompt": "Prompt",
    "info": "Info",
    "id": "ID",
    "material": "Material",
    "material_desc": "Material Desc",
    "status": "Status",
    "remark": "Remark",
    "add_time": "Add Time",
    "creator": "Creator",
    "close": "Close",
    "modify": "Modify",
    "warm_prompt_prefix": "Warm Prompt: Please fill in the information carefully, ",
    "warm_prompt_suffix": "is mandatory.",
    "total_prefix": "Total ",
    "total_suffix": " items",
    "jump_to": "Go to ",
    "page": " page",
    "items_per_page": " items/page",
    "running": "Running",
    "pending": "Pending",
    "inbound_notice_no": "Inbound Notice No",
    "input_placeholder": "Please input...",
    "work_time": "Work Time",
    "barcode": "Barcode",
    "work_no": "Work No",
    "work_status": "Work Status",
    "crane_no": "Crane No",
    "crane": "Crane",
    "increase_priority": "Increase Priority",
    "decrease_priority": "Decrease Priority",
    "pre_existing": "Pre-Existing",
    "empty_op": "Empty Op",
    "pick": "Pick",
    "count": "Count",
    "complete": "Complete",
    "cancel": "Cancel",
    "transaction_type": "Transaction Type",
    "priority": "Priority",
    "source_station": "Source Station",
    "target_station": "Target Station",
    "source_location": "Source Location",
    "target_location": "Target Location",
    "picking": "Picking",
    "exit": "Exit",
    "warehouse_no": "Warehouse No",
    "transfer_req_no": "Transfer Req No",
    "item_no": "Item No",
    "material_label_id": "Material Label ID",
    "factory": "Factory",
    "quantity": "Quantity",
    "unit": "Unit",
    "user_id": "User ID",
    "empty_pallet": "Empty Pallet",
    "work_time": "Work Time",
    "crane_start_time": "Crane Start Time",
    "crane_end_time": "Crane End Time",
    "picking_time": "Picking Time",
    "full_pallet": "Full Pallet",
    "operation": "Operation",
    "current_workflow_detail": "Material details for current workflow",
    "confirm_cancel_work_order": "Confirm cancel this work order?",
    "confirm_complete_work_order": "Confirm complete this work order?",
    "confirm_pick_work_order": "Pick inbound this work order?",
    "confirm_pre_existing_exception": "Pre-existing exception occurred. To re-inbound, ensure cargo is at crane outbound station!",
    "confirm_cancel_erp_order": "Current task linked to ERP sales order. Cancellation will regenerate outbound task. Continue?",
    "confirm_export": "Confirm export to Excel?",
    "confirm_empty_op_exception": "Empty operation exception! Continue?",
    "work_order_detail": "Work Order Detail",
    "location_type": "Location Type",
    "row": "Row",
    "bay": "Bay",
    "level": "Level",
    "group": "Group",
    "init": "Init",
    "please_enter_password_reset_location": "Please enter password to reset location",
    "init_location": "Initialize Location",
    "password_error": "Password Error",
    "location_detail": "Location Detail",
    "modify_detail": "Modification Detail",
    "create_detail": "Creation Detail",
    "high_low_type": "High/Low Type",
    "width_type": "Width Type",
    "weight_type": "Weight Type",
    "delete_location": "Delete Location",
    "delete_keep": "Delete|Keep",
    "start_end_row": "Start/End Row",
    "start_end_bay": "Start/End Bay",
    "start_end_level": "Start/End Level",
    "crane_amount": "Crane Amount",
    "start_crane": "Start Crane",
    "low_location": "Low Location",
    "high_location": "High Location",
    "middle_location": "Middle Location",
    "narrow_location": "Narrow Location",
    "wide_location": "Wide Location",
    "light_location": "Light Location",
    "heavy_location": "Heavy Location",
    "unknown": "Unknown",
    "standard_crane_whs": "Standard Crane Whs",
    "flat_whs": "Flat Whs",
    "shuttle_board": "Shuttle Board",
    "four_way_vehicle": "Four-way Vehicle",
    "agv": "AGV",
    "warm_prompt_clear_inventory": "Warm Prompt: Clearing inventory when modifying to empty location",
    "禁用库位": "Disabled Location",
    "在库库位": "Occupied Location",
    "空库位": "Empty Location",
    "使用库位": "Used Location",
    "入库数量": "Inbound Quantity",
    "出库数量": "Outbound Quantity",
    "classification": "Type",
    "stock_upper_limit": "Stock Max",
    "stock_lower_limit": "Stock Min",
    "stock_age_upper_limit_days": "Max Stock Age (Days)",
    "area": "Area",
    "please_select_print_data": "Please select data to print",
    "batch_print_count": "Batch Print [Count: {{count}}]",
    "category_cannot_be_empty": "Category cannot be empty",
    "confirm_sync_file": "Confirm sync file [{{filename}}]?",
    "template_1": "Template 1",
    "template_2": "Template 2",
    "template_3": "Template 3",
    "print_preview": "Print Preview",
    "please_input_item_no": "Enter Item No.",
    "please_input_item_name": "Enter Item Name",
    "please_input_item_spec": "Enter Item Spec",
    "batch_print": "Batch Print",
    "print": "Print",
    "select_template": "Select Template",
    "item": "Item",
    "item_code": "Item Code",
    "item_name": "Item Name",
    "item_spec": "Item Spec",
    "data_sync": "Sync Data",
    "io_type_code": "Transaction Type Code",
    "io_type_desc": "Transaction Type Description",
    "io_type_1": "1.Inbound",
    "io_type_3": "3.Station to Station",
    "io_type_6": "6.Exit on Device",
    "io_type_10": "10.Empty Pallet Inbound",
    "io_type_11": "11.Bin Transfer",
    "io_type_53": "53.Picking Re-inbound",
    "io_type_54": "54.Merge Re-inbound",
    "io_type_57": "57.Cycle Count Re-inbound",
    "io_type_101": "101.Outbound",
    "io_type_103": "103.Picking Outbound",
    "io_type_104": "104.Merge Outbound",
    "io_type_107": "107.Cycle Count Outbound",
    "io_type_110": "110.Empty Pallet Outbound",
    "loc_status_code": "Location Status Code",
    "loc_status_desc": "Location Status Description",
    "location_status": "Location Status",
    "loc_status_D": "D.Empty Bin/Pallet",
    "loc_status_F": "F.In Stock",
    "loc_status_G": "G.Aisle",
    "loc_status_O": "O.Empty Location",
    "loc_status_P": "P.Picking/Counting/Merging Outbound",
    "loc_status_Q": "Q.Picking/Counting/Merging Re-inbound",
    "loc_status_R": "R.Outbound Reserved",
    "loc_status_S": "S.Inbound Reserved",
    "loc_status_X": "X.Disabled",
    "loc_status_Y": "Y.Merged",
    "parent_menu": "Parent Menu",
    "please_select_type": "Please Select Type",
    "other": "Other",
    "responsible_person": "Owner",
    "please_enter_responsible_person": "Please enter Owner",
    "classification_name": "Category Name",
    "please_enter_classification_name": "Please enter Category Name",
    "sort": "Sort",
    "please_enter_sort": "Please enter sort",
    "memo": "Memo",
    "please_enter_memo": "Please enter memo",
    "type": "Type",
    "name": "Name",
    "image": "Image",
    "confirm_delete_selected_data": "Are you sure you want to delete the selected data?"
}
src/main/webapp/static/i18n/zh-cn.json
New file
@@ -0,0 +1,439 @@
{
    "status_desc": "状态描述",
    "wrk_status_0": "0.待接收",
    "wrk_status_1": "1.已接收",
    "wrk_status_2": "2.任务开始",
    "wrk_status_3": "3.取货完成",
    "wrk_status_4": "4.入库完成",
    "wrk_status_5": "5.库存更新完成",
    "wrk_status_6": "6.任务中断",
    "wrk_status_7": "7.放货完成",
    "wrk_status_11": "11.生成出库ID",
    "wrk_status_12": "12.吊车出库中",
    "wrk_status_13": "13.吊车空出库错误",
    "wrk_status_14": "14.已出库未确认",
    "wrk_status_15": "15.出库更新完成",
    "_comment_loc_map": "=== 库位热点图 ===",
    "display_mode": "显示模式",
    "view_by_row": "按排显示",
    "view_by_layer": "按层显示",
    "enable_selection": "开启框选",
    "disable_selection": "关闭框选",
    "assign_zone": "分配库区",
    "zone_legend": "库区图例",
    "selection_mode_tip": "已开启框选模式,请在库位图上拖拽选择",
    "please_select_zone": "请选择库区",
    "zone_color": "库区颜色",
    "assign_zone_and_color": "分配库区及颜色",
    "confirm": "确定",
    "cancel": "取消",
    "cancel_selection": "取消选择",
    "assign_success": "分配成功",
    "operation_failed": "操作失败",
    "fetch_zone_list_failed": "无法获取库区列表",
    "modify_zone_color": "修改库区颜色",
    "zone_name": "库区名称",
    "select_color": "选择颜色",
    "save": "保存",
    "color_updated": "颜色已更新",
    "update_failed": "更新失败",
    "load_failed": "加载失败",
    "language": "语言",
    "license_validity_prefix": "临时许可证有效期:",
    "license_validity_suffix": "天",
    "basic_info": "基本资料",
    "logout": "退出",
    "home": "主页",
    "_comment_home": "主页标签栏",
    "主页": "主页",
    "控制台": "控制台",
    "分析页": "分析页",
    "库位热点图": "库位热点图",
    "基础数据": "基础数据",
    "商品档案": "商品档案",
    "工作状态": "工作状态",
    "入出库类型": "入出库类型",
    "库位状态": "库位状态",
    "库位类型管理": "库位类型管理",
    "工作序号查询": "工作序号查询",
    "库位排号分配": "库位排号分配",
    "归类管理": "归类管理",
    "库区管理": "库区管理",
    "路径站点设置": "路径站点设置",
    "库存管理": "库存管理",
    "库位查询": "库位查询",
    "库存明细管理": "库存明细管理",
    "库存调整": "库存调整",
    "库存明细统计": "库存明细统计",
    "入出库作业": "入出库作业",
    "入库作业": "入库作业",
    "出库作业": "出库作业",
    "盘点出库": "盘点出库",
    "库位移转": "库位移转",
    "空板出库": "空板出库",
    "工作档管理": "工作档管理",
    "工作档查询维护": "工作档查询维护",
    "工作档明细查询": "工作档明细查询",
    "工作历史档查询": "工作历史档查询",
    "工作明细历史档查询": "工作明细历史档查询",
    "work_order_detail_history": "工作明细历史档",
    "入库通知档": "入库通知档",
    "入库通知历史档": "入库通知历史档",
    "订单系统": "订单系统",
    "单据管理": "单据管理",
    "订单出库": "订单出库",
    "订单状态": "订单状态",
    "单据类型": "单据类型",
    "设备维护": "设备维护",
    "库位管理": "库位管理",
    "站点管理": "站点管理",
    "日志统计": "日志统计",
    "库存调整记录": "库存调整记录",
    "三方接口统计": "三方接口统计",
    "异常工作档": "异常工作档",
    "库位使用率统计": "库位使用率统计",
    "库存在库时间统计": "库存在库时间统计",
    "日入出库次数统计": "日入出库次数统计",
    "日入库明细查询": "日入库明细查询",
    "日出库明细查询": "日出库明细查询",
    "工作档维护日志": "工作档维护日志",
    "开发专用": "开发专用",
    "菜单列表": "菜单列表",
    "权限控制": "权限控制",
    "接口文档": "接口文档",
    "凭证记录": "凭证记录",
    "系统配置": "系统配置",
    "系统管理": "系统管理",
    "系统用户": "系统用户",
    "角色管理": "角色管理",
    "操作日志": "操作日志",
    "个人设置": "角色管理",
    "基本资料": "基本资料",
    "可视化": "可视化",
    "侧边伸缩": "侧边伸缩",
    "刷新": "刷新",
    "全屏": "全屏",
    "主题": "主题",
    "关闭当前": "关闭当前",
    "关闭其他": "关闭其他",
    "关闭所有": "关闭所有",
    "关闭当前标签页": "关闭当前标签页",
    "关闭其他标签页": "关闭其他标签页",
    "关闭所有标签页": "关闭所有标签页",
    "主页不能关闭": "主页不能关闭",
    "首页": "首页",
    "库存滞留时间统计表": "库存滞留时间统计表",
    "库位使用比例": "库位使用比例",
    "库位占比": "库位占比",
    "日入出库数量": "日入出库数量",
    "入_出库数量": "入/出库数量",
    "仓储管理系统": "仓储管理系统",
    "请选择您要使用的模块": "请选择您要使用的模块",
    "运行任务": "运行任务",
    "库存明细": "库存明细",
    "_comment_common": "Common Table Columns",
    "商品编号_品号": "商品编号(品号)",
    "商品名称_品名": "商品名称(品名)",
    "规格": "规格",
    "代码": "代码",
    "颜色": "颜色",
    "品牌": "品牌",
    "单位": "单位",
    "单价": "单价",
    "sku": "sku",
    "单位量": "单位量",
    "条码": "条码",
    "产地": "产地",
    "厂家": "厂家",
    "生产日期": "生产日期",
    "品项数": "品项数",
    "安全库存量": "安全库存量",
    "单箱净重": "单箱净重",
    "单箱毛重": "单箱毛重",
    "单箱体积": "单箱体积",
    "箱子尺寸": "箱子尺寸",
    "供应商": "供应商",
    "供应商编码": "供应商编码",
    "是否批次": "是否批次",
    "保质期": "保质期",
    "预警天数": "预警天数",
    "制购": "制购",
    "要求检验": "要求检验",
    "危险品": "危险品",
    "修改人员": "修改人员",
    "修改时间": "修改时间",
    "备注": "备注",
    "单据编号": "单据编号",
    "批号": "批号",
    "数量": "数量",
    "托盘条码": "托盘条码",
    "入库时间": "入库时间",
    "滞留天数": "滞留天数",
    "库位号": "库位号",
    "托盘码": "托盘码",
    "pallet_code": "托盘码",
    "商品编号": "商品编号",
    "商品名称": "商品名称",
    "请输入": "请输入",
    "搜索": "搜索",
    "重置": "重置",
    "导出": "导出",
    "详情": "详情",
    "库龄_天": "库龄(天)",
    "no_data": "暂无相关数据",
    "start_end_time": "起始时间 - 终止时间",
    "add": "新增",
    "delete": "删除",
    "edit": "编辑",
    "data_status": "数据状态",
    "normal": "正常",
    "status_disabled": "禁用",
    "locked": "锁定",
    "io_status": "入出状态",
    "inbound": "入库中",
    "pending_inbound": "待入库",
    "confirm_generate_task": "确定生成工作档任务吗",
    "select_one_data": "请至少选择一条数据",
    "confirm_delete_data": "确定删除数据吗",
    "confirm_delete_prefix": "确定删除",
    "confirm_delete_suffix": "条数据吗",
    "this": "此",
    "account": "账号",
    "username": "名称",
    "password": "密码",
    "role": "角色",
    "age_days": "库龄(天)",
    "product_name": "商品名称",
    "order_no": "单据编号",
    "batch_no": "批号",
    "unit_qty": "单位量",
    "spec": "规格",
    "code": "代码",
    "color": "颜色",
    "brand": "品牌",
    "origin": "产地",
    "manufacturer": "厂家",
    "mfg_date": "生产日期",
    "item_count": "品项数",
    "safety_stock": "安全库存量",
    "net_weight_box": "单箱净重",
    "gross_weight_box": "单箱毛重",
    "volume_box": "单箱体积",
    "box_size": "箱子尺寸",
    "supplier": "供应商",
    "supplier_code": "供应商编码",
    "batch_managed": "是否批次",
    "shelf_life": "保质期",
    "warning_days": "预警天数",
    "make_buy": "制购",
    "inspection_reqd": "要求检验",
    "hazardous": "危险品",
    "confirm_export_excel": "确定导出Excel吗",
    "no_data_found": "无数据",
    "creator_detail": "创建者详情",
    "modifier_detail": "修改人员详情",
    "please_select_data": "请选择数据",
    "pallet_barcode": "托盘条码",
    "product_code": "商品编号",
    "location_no": "库位号",
    "search": "搜索",
    "reset": "重置",
    "export": "导出",
    "exporting": "正在导出...",
    "detail": "详情",
    "modifier": "修改人员",
    "modify_time": "修改时间",
    "prompt": "提示",
    "info": "信息",
    "id": "编号",
    "material": "物料",
    "material_desc": "物料描述",
    "status": "状态",
    "remark": "备注",
    "add_time": "添加时间",
    "creator": "创建者",
    "close": "关闭",
    "modify": "修改",
    "warm_prompt_prefix": "温馨提示:请仔细填写相关信息,",
    "warm_prompt_suffix": "为必填选项。",
    "total_prefix": "共 ",
    "total_suffix": " 条",
    "jump_to": "到第",
    "page": "页",
    "items_per_page": " 条/页",
    "running": "运行中",
    "pending": "待处理",
    "inbound_notice_no": "入库通知号",
    "input_placeholder": "请输入...",
    "work_time": "工作时间",
    "barcode": "条码",
    "work_no": "工作号",
    "work_status": "工作状态",
    "crane_no": "堆垛机号",
    "crane": "堆垛机",
    "increase_priority": "增加优先级",
    "decrease_priority": "降低优先级",
    "pre_existing": "先入品",
    "empty_op": "空操作",
    "pick": "拣",
    "count": "盘",
    "complete": "完成",
    "cancel": "取消",
    "transaction_type": "入出库类型",
    "priority": "优先级",
    "source_station": "源站",
    "target_station": "目标站",
    "source_location": "源库位",
    "target_location": "目标库位",
    "warehouse_no": "仓库号",
    "transfer_req_no": "转储请求编号",
    "item_no": "物料编码",
    "material_label_id": "物料标签ID",
    "factory": "工厂",
    "quantity": "数量",
    "unit": "单位",
    "user_id": "用户ID",
    "picking": "拣料",
    "exit": "退出",
    "empty_pallet": "空板",
    "work_time": "工作时间",
    "crane_start_time": "堆垛机启动时间",
    "crane_end_time": "堆垛机停止时间",
    "picking_time": "拣料时间",
    "full_pallet": "满板",
    "operation": "操作",
    "current_workflow_detail": "以下为当前工作流的物料明细",
    "confirm_cancel_work_order": "确认取消该笔工作档?",
    "confirm_complete_work_order": "确认完成该笔工作档?",
    "confirm_pick_work_order": "拣料入库该笔工作档?",
    "confirm_pre_existing_exception": "任务发生先入品异常。如需重新入库,请确保货物已放至堆垛机出库站!",
    "confirm_cancel_erp_order": "当前任务关联ERP销售单,取消将重新生成出库作业,是否继续?",
    "confirm_export": "确定导出Excel吗",
    "confirm_empty_op_exception": "任务发送空操作异常!是否继续?",
    "work_order_detail": "工作档明细",
    "location_type": "库位类型",
    "row": "排",
    "bay": "列",
    "level": "层",
    "group": "组",
    "init": "初始化",
    "please_enter_password_reset_location": "请输入口令,并重置库位",
    "init_location": "初始化库位",
    "password_error": "口令错误",
    "location_detail": "库位详情",
    "modify_detail": "修改详情",
    "create_detail": "创建详情",
    "high_low_type": "高低类型",
    "width_type": "宽窄类型",
    "weight_type": "轻重类型",
    "delete_location": "删除库位",
    "delete_keep": "删除|保留",
    "start_end_row": "起止排",
    "start_end_bay": "起止列",
    "start_end_level": "起止层",
    "crane_amount": "堆垛机数量",
    "start_crane": "起始堆垛机",
    "low_location": "低库位",
    "high_location": "高库位",
    "middle_location": "中库位",
    "narrow_location": "窄库位",
    "wide_location": "宽库位",
    "light_location": "轻库位",
    "heavy_location": "重库位",
    "unknown": "未知",
    "standard_crane_whs": "标准堆垛机库",
    "flat_whs": "平库",
    "shuttle_board": "穿梭板",
    "four_way_vehicle": "四向车",
    "agv": "AGV",
    "warm_prompt_clear_inventory": "温馨提示:修改为空库位时会清除库存明细",
    "禁用库位": "禁用库位",
    "在库库位": "在库库位",
    "空库位": "空库位",
    "使用库位": "使用库位",
    "入库数量": "入库数量",
    "出库数量": "出库数量",
    "classification": "归类",
    "stock_upper_limit": "库存上限",
    "stock_lower_limit": "库存下限",
    "stock_age_upper_limit_days": "库龄上限(天)",
    "area": "区域",
    "please_select_print_data": "请选择打印数据",
    "batch_print_count": "批量打印 [数量: {{count}}]",
    "category_cannot_be_empty": "分类不能为空",
    "confirm_sync_file": "确认同步 [{{filename}}] 文件吗?",
    "template_1": "模板一",
    "template_2": "模板二",
    "template_3": "模板三",
    "print_preview": "打印预览",
    "please_input_item_no": "请输入商品编号",
    "please_input_item_name": "请输入商品名称",
    "please_input_item_spec": "请输入商品规格",
    "batch_print": "批量打印",
    "print": "打印",
    "select_template": "选择模板",
    "item": "商品",
    "item_code": "商品编码",
    "item_name": "商品名称",
    "item_spec": "商品名称",
    "data_sync": "数据同步",
    "io_type_code": "入出类型代号",
    "io_type_desc": "入出类型描述",
    "io_type_1": "1.入库",
    "io_type_3": "3.站到站",
    "io_type_6": "6.设备上退出",
    "io_type_10": "10.空板入库",
    "io_type_11": "11.库格移载",
    "io_type_53": "53.拣料再入库",
    "io_type_54": "54.并板再入库",
    "io_type_57": "57.盘点再入库",
    "io_type_101": "101.出库",
    "io_type_103": "103.拣料出库",
    "io_type_104": "104.并板出库",
    "io_type_107": "107.盘点出库",
    "io_type_110": "110.空板出库",
    "loc_status_code": "库位状态代号",
    "loc_status_desc": "库位状态描述",
    "location_status": "库位状态",
    "loc_status_D": "D.空桶/空栈板",
    "loc_status_F": "F.在库",
    "loc_status_G": "G.轨道",
    "loc_status_O": "O.空库位",
    "loc_status_P": "P.拣料/盘点/并板出库中",
    "loc_status_Q": "Q.拣料/盘点/并板再入库",
    "loc_status_R": "R.出库预约",
    "loc_status_S": "S.入库预约",
    "loc_status_X": "X.禁用",
    "loc_status_Y": "Y.被合并",
    "parent_menu": "上级菜单",
    "please_select_type": "请选择类型",
    "other": "其他",
    "responsible_person": "负责人",
    "please_enter_responsible_person": "请输入负责人",
    "classification_name": "归类名称",
    "please_enter_classification_name": "请输入归类名称",
    "sort": "排序",
    "please_enter_sort": "请输入排序",
    "memo": "备注",
    "please_enter_memo": "请输入备注",
    "type": "类型",
    "name": "名称",
    "image": "图片",
    "confirm_delete_selected_data": "确定要删除选中数据吗?"
}
src/main/webapp/static/js/basLocSts/basLocSts.js
@@ -6,6 +6,44 @@
    var layDate = layui.laydate;
    var form = layui.form;
    var doneCallback = function(res, curr, count) {
        if (res.code === 403) {
            top.location.href = baseUrl+"/";
        }
        pageCurr=curr;
        limit();
        if (typeof I18n !== 'undefined') {
            I18n.updatePage();
            I18n.updateLayuiPagination();
        }
    };
    function getCol() {
        return [[
            {type: 'checkbox', fixed: 'left'}
//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
            ,{field: 'locSts', align: 'center',sort:true,title: I18n.t('loc_status_code')}
            ,{field: 'locDesc', align: 'center',sort: true,title: I18n.t('loc_status_desc'), templet: function(d) {
                var key = 'loc_status_' + d.locSts;
                var text = I18n.t(key);
                return text === key ? d.locDesc : text;
            }}
            ,{field: 'modiUser$', align: 'center',title: I18n.t('modifier')}
            ,{field: 'modiTime$', align: 'center',title: I18n.t('modify_time')}
            // ,{field: 'appeUser$', align: 'center',title: '创建者',event: 'appeUser', style: 'text-decoration: underline;cursor:pointer'}
            // ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{fixed: 'right', title: I18n.t('operation'), align: 'center', toolbar: '#operate', width:150}
        ]];
    }
    $(document).on('i18n:languageChanged', function() {
        tableIns.reload({
            cols: getCol(),
            done: doneCallback
        });
    });
    // 数据渲染
    tableIns = table.render({
        elem: '#basLocSts',
@@ -17,18 +55,7 @@
        even: true,
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [[
            {type: 'checkbox', fixed: 'left'}
//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
            ,{field: 'locSts', align: 'center',sort:true,title: '库位状态代号'}
            ,{field: 'locDesc', align: 'center',sort: true,title: '库位状态描述'}
            ,{field: 'modiUser$', align: 'center',title: '修改人员'}
            ,{field: 'modiTime$', align: 'center',title: '修改时间'}
            // ,{field: 'appeUser$', align: 'center',title: '创建者',event: 'appeUser', style: 'text-decoration: underline;cursor:pointer'}
            // ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150}
        ]],
        cols: getCol(),
        request: {
            pageName: 'curr',
            pageSize: 'limit'
@@ -44,13 +71,7 @@
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
        done: doneCallback
    });
    // 监听排序事件
@@ -66,13 +87,8 @@
            page: {
                curr: 1
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                pageCurr=curr;
                limit();
            }
            cols: getCol(),
            done: doneCallback
        });
    });
@@ -83,7 +99,7 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: I18n.t('add'),
                    maxmin: true,
                    area: ['500px', top.detailHeight],
                    shadeClose: false,
@@ -99,16 +115,18 @@
                tableIns.reload({
                    page: {
                        curr: pageCurr
                    }
                    },
                    cols: getCol(),
                    done: doneCallback
                });
                limit();
                break;
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(I18n.t('select_data_alert') || '请选择数据');
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    layer.confirm(I18n.t('confirm_delete_alert') || '确定删除选中的数据吗', function(){
                        $.ajax({
                            url: baseUrl+"/basLocSts/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -118,7 +136,7 @@
                            success: function (res) {
                                if (res.code === 200){
                                    layer.closeAll();
                                    tableReload(false);
                                    tableIns.reload({cols: getCol(), done: doneCallback});
                                } else if (res.code === 403){
                                    top.location.href = baseUrl+"/";
                                } else {
@@ -130,7 +148,7 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_export') || '确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -178,7 +196,7 @@
            case 'detail':
                layer.open({
                    type: 2,
                    title: '详情',
                    title: I18n.t('detail'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -197,7 +215,7 @@
            case 'edit':
                layer.open({
                    type: 2,
                    title: '修改',
                    title: I18n.t('modify'),
                    maxmin: true,
                    area: ['500px', top.detailHeight],
                    shadeClose: false,
@@ -219,7 +237,7 @@
                } else {
                   layer.open({
                       type: 2,
                       title: '修改详情',
                       title: I18n.t('modify_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -255,7 +273,7 @@
                } else {
                   layer.open({
                       type: 2,
                       title: '创详情',
                       title: I18n.t('create_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -298,143 +316,46 @@
    // 数据修改动作
    form.on('submit(edit)', function () {
        method("update")
        if (banMsg != null){
            layer.msg(banMsg);
            return;
        }
        method("edit");
    });
    function method(name){
        var index = layer.load(1, {
            shade: [0.5,'#000'] //0.1透明度的背景
    function method(key) {
        var data = {};
        $.each($('#detail [name]').serializeArray(), function() {
            data[this.name] = this.value;
        });
        var data = {
//            id: $('#id').val(),
            locSts: $('#locSts').val(),
            locDesc: $('#locDesc').val(),
            modiUser: $('#modiUser').val(),
            modiTime: top.strToDate($('#modiTime\\$').val()),
            appeUser: $('#appeUser').val(),
            appeTime: top.strToDate($('#appeTime\\$').val()),
        $.each($('#detail .layui-input').serializeArray(), function() {
            data[this.name] = this.value;
        });
        };
        var url = "";
        if (key === "add") url = baseUrl+"/basLocSts/add/auth";
        else if (key === "edit") url = baseUrl+"/basLocSts/update/auth";
        $.ajax({
            url: baseUrl+"/basLocSts/"+name+"/auth",
            url: url,
            headers: {'token': localStorage.getItem('token')},
            data: top.reObject(data),
            data: JSON.stringify(data),
            contentType: "application/json;charset=UTF-8",
            method: 'POST',
            success: function (res) {
                if (res.code === 200){
                    parent.layer.closeAll();
                    tableReload(true);
                    $("#data-detail :input").each(function () {
                        $(this).val("");
                    });
                    layer.msg(res.msg);
                    setTimeout(function () {
                        var index = parent.layer.getFrameIndex(window.name);
                        parent.layer.close(index);
                        parent.tableIns.reload({cols: parent.getCol(), done: parent.doneCallback});
                    }, 1000)
                } else if (res.code === 403){
                    top.location.href = baseUrl+"/";
                }else {
                } else {
                    layer.msg(res.msg)
                }
                layer.close(index);
            }
        })
    }
    // 搜索栏搜索事件
    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: '#modiTime\\$',
        type: 'datetime'
    });
    layDate.render({
        elem: '#appeTime\\$',
        type: 'datetime'
    });
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    (child ? parent.tableIns : tableIns).reload({
        where: searchData,
        page: {
            curr: pageCurr
        },
        done: function (res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            if (res.data.length === 0 && count !== 0) {
                tableIns.reload({
                    where: searchData,
                    page: {
                        curr: pageCurr-1
                    }
                });
                pageCurr -= 1;
            }
            limit(child);
        }
    });
}
function setFormVal(el, data, showImg) {
    for (var val in data) {
        var find = el.find(":input[id='" + val + "']");
        find.val(data[val]);
        if (showImg){
            var next = find.next();
            if (next.get(0)){
                if (next.get(0).localName === "img") {
                    find.hide();
                    next.attr("src", data[val]);
                    next.show();
                }
            }
        }
    }
}
function clearFormVal(el) {
    $(':input', el)
        .val('')
        .removeAttr('checked')
        .removeAttr('selected');
}
function detailScreen(index) {
    var detail = layer.getChildFrame('#data-detail', index);
    var height = detail.height()+60;
    if (height > ($(window).height()*0.9)) {
        height = ($(window).height()*0.9);
    }
    layer.style(index, {
//        top: (($(window).height()-height)/3)+"px",
        height: height+'px'
    });
}
$('body').keydown(function () {
    if (event.keyCode === 13) {
        $("#search").click();
    }
});
src/main/webapp/static/js/basWrkIotype/basWrkIotype.js
@@ -6,6 +6,45 @@
    var layDate = layui.laydate;
    var form = layui.form;
    var doneCallback = function(res, curr, count) {
        if (res.code === 403) {
            top.location.href = baseUrl+"/";
        }
        pageCurr=curr;
        limit();
        if (typeof I18n !== 'undefined') {
            I18n.updatePage($('.layui-table-view'));
            I18n.updateLayuiPagination();
        }
    };
    $(document).on('i18n:languageChanged', function() {
        tableIns.reload({
            cols: getCol(),
            done: doneCallback
        });
    });
    function getCol() {
        return [[
            {type: 'checkbox', fixed: 'left'}
//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
            ,{field: 'ioType', align: 'center',sort:true,title: I18n.t('io_type_code')}
            // ,{field: 'ioPri', align: 'center',title: '主要'}
            ,{field: 'ioDesc', align: 'center',title: I18n.t('io_type_desc'), templet: function(d) {
                var key = 'io_type_' + d.ioType;
                var text = I18n.t(key);
                return text === key ? d.ioDesc : text;
            }}
            ,{field: 'modiUser$', align: 'center',title: I18n.t('modifier')}
            ,{field: 'modiTime$', align: 'center',title: I18n.t('modify_time')}
            // ,{field: 'appeUser$', align: 'center',title: '创建者',event: 'appeUser', style: 'text-decoration: underline;cursor:pointer'}
            // ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{fixed: 'right', title: I18n.t('operation'), align: 'center', toolbar: '#operate', width:150}
        ]];
    }
    // 数据渲染
    tableIns = table.render({
        elem: '#basWrkIotype',
@@ -18,19 +57,7 @@
        even: true,
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [[
            {type: 'checkbox', fixed: 'left'}
//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
            ,{field: 'ioType', align: 'center',sort:true,title: '入出类型代号'}
            // ,{field: 'ioPri', align: 'center',title: '主要'}
            ,{field: 'ioDesc', align: 'center',title: '入出类型描述'}
            ,{field: 'modiUser$', align: 'center',title: '修改人员'}
            ,{field: 'modiTime$', align: 'center',title: '修改时间'}
            // ,{field: 'appeUser$', align: 'center',title: '创建者',event: 'appeUser', style: 'text-decoration: underline;cursor:pointer'}
            // ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150}
        ]],
        cols: getCol(),
        request: {
            pageName: 'curr',
            pageSize: 'limit'
@@ -46,13 +73,7 @@
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
        done: doneCallback
    });
    // 监听排序事件
@@ -68,13 +89,7 @@
            page: {
                curr: 1
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                pageCurr=curr;
                limit();
            }
            done: doneCallback
        });
    });
@@ -85,7 +100,7 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: I18n.t('add'),
                    maxmin: true,
                    area: ['500px', top.detailHeight],
                    shadeClose: false,
@@ -101,16 +116,18 @@
                tableIns.reload({
                    page: {
                        curr: pageCurr
                    }
                    },
                    done: doneCallback
                });
                limit();
                break;
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(I18n.t('please_select_data'));
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    var msg = I18n.t('confirm_delete_prefix') + (data.length===1?I18n.t('this'):data.length) + I18n.t('confirm_delete_suffix');
                    layer.confirm(msg, function(){
                        $.ajax({
                            url: baseUrl+"/basWrkIotype/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -132,7 +149,7 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_export'), {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
src/main/webapp/static/js/basWrkStatus/basWrkStatus.js
@@ -6,6 +6,35 @@
    var layDate = layui.laydate;
    var form = layui.form;
    // 定义列生成函数
    var getCol = function() {
        return [
            {type: 'checkbox', fixed: 'left'}
            ,{field: 'wrkSts', align: 'center', sort: true, title: I18n.t('code')}
            ,{field: 'wrkDesc', align: 'center', title: I18n.t('status_desc'), templet: function(d) {
                var key = 'wrk_status_' + d.wrkSts;
                var text = I18n.t(key);
                return text === key ? d.wrkDesc : text;
            }}
            ,{field: 'modiUser$', align: 'center', title: I18n.t('modifier')}
            ,{field: 'modiTime$', align: 'center', title: I18n.t('modify_time')}
            ,{fixed: 'right', title: I18n.t('operation'), align: 'center', toolbar: '#operate', width: 150}
        ];
    };
    // 定义通用done回调
    var tableDone = function(res, curr, count) {
        if (res.code === 403) {
            top.location.href = baseUrl + "/";
        }
        pageCurr = curr;
        limit();
        if (typeof I18n !== 'undefined') {
            I18n.updatePage();
            I18n.updateLayuiPagination();
        }
    };
    // 数据渲染
    tableIns = table.render({
        elem: '#basWrkStatus',
@@ -14,22 +43,10 @@
        page: true,
        limit: 16,
        limits: [16, 30, 50, 100, 200, 500],
        // skin: 'line',
        even: true,
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [[
            {type: 'checkbox', fixed: 'left'}
//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
            ,{field: 'wrkSts', align: 'center',sort:true,title: '代号'}
            ,{field: 'wrkDesc', align: 'center',title: '状态描述'}
            ,{field: 'modiUser$', align: 'center',title: '修改人员'}
            ,{field: 'modiTime$', align: 'center',title: '修改时间'}
            // ,{field: 'appeUser$', align: 'center',title: '创建者',event: 'appeUser', style: 'text-decoration: underline;cursor:pointer'}
            // ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150}
        ]],
        cols: [getCol()],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
@@ -45,13 +62,7 @@
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
        done: tableDone
    });
    // 监听排序事件
@@ -67,13 +78,16 @@
            page: {
                curr: 1
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                pageCurr=curr;
                limit();
            }
            cols: [getCol()],
            done: tableDone
        });
    });
    // 监听语言切换
    $(document).on('i18n:languageChanged i18n:ready', function() {
        tableIns.reload({
            cols: [getCol()],
            done: tableDone
        });
    });
@@ -84,7 +98,7 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: I18n.t('add'),
                    maxmin: true,
                    area: ['500px', top.detailHeight],
                    shadeClose: false,
@@ -100,16 +114,17 @@
                tableIns.reload({
                    page: {
                        curr: pageCurr
                    }
                    },
                    done: tableDone
                });
                limit();
                break;
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(I18n.t('please_select_data'));
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    layer.confirm(I18n.t('confirm_delete_prefix')+(data.length===1?I18n.t('this'):data.length)+I18n.t('confirm_delete_suffix'), {title: I18n.t('info')}, function(){
                        $.ajax({
                            url: baseUrl+"/basWrkStatus/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -131,7 +146,7 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_export'), {title: I18n.t('info'), shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -179,7 +194,7 @@
            case 'detail':
                layer.open({
                    type: 2,
                    title: '详情',
                    title: I18n.t('detail'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -198,7 +213,7 @@
            case 'edit':
                layer.open({
                    type: 2,
                    title: '修改',
                    title: I18n.t('edit'),
                    maxmin: true,
                    area: ['500px', top.detailHeight],
                    shadeClose: false,
@@ -216,11 +231,11 @@
            case 'modiUser':
                var param = top.reObject(data).modiUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data'));
                } else {
                   layer.open({
                       type: 2,
                       title: '修改详情',
                       title: I18n.t('modifier_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -252,11 +267,11 @@
            case 'appeUser':
                var param = top.reObject(data).appeUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data'));
                } else {
                   layer.open({
                       type: 2,
                       title: '创详情',
                       title: I18n.t('creator_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -394,48 +409,10 @@
                pageCurr -= 1;
            }
            limit(child);
        }
    });
}
function setFormVal(el, data, showImg) {
    for (var val in data) {
        var find = el.find(":input[id='" + val + "']");
        find.val(data[val]);
        if (showImg){
            var next = find.next();
            if (next.get(0)){
                if (next.get(0).localName === "img") {
                    find.hide();
                    next.attr("src", data[val]);
                    next.show();
                }
            var i18nObj = child ? parent.I18n : I18n;
            if (typeof i18nObj !== 'undefined') {
                 i18nObj.updateLayuiPagination();
            }
        }
    }
}
function clearFormVal(el) {
    $(':input', el)
        .val('')
        .removeAttr('checked')
        .removeAttr('selected');
}
function detailScreen(index) {
    var detail = layer.getChildFrame('#data-detail', index);
    var height = detail.height()+60;
    if (height > ($(window).height()*0.9)) {
        height = ($(window).height()*0.9);
    }
    layer.style(index, {
//        top: (($(window).height()-height)/3)+"px",
        height: height+'px'
    });
}
$('body').keydown(function () {
    if (event.keyCode === 13) {
        $("#search").click();
    }
});
}
src/main/webapp/static/js/common.js
@@ -180,80 +180,85 @@
    }
}
var matCols = [
    {field: 'matnr', align: 'center',title: '商品编号(品号)', width: 180}
function getMatCols() {
    return [
    {field: 'matnr', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('商品编号_品号') : '商品编号(品号)', width: 180}
    // {field: 'id', align: 'center',title: 'ID'}
    // ,{field: 'uuid', align: 'center',title: '编号'}
    // ,{field: 'tagId$', align: 'center',title: '所属归类'}
    ,{field: 'maktx', align: 'center',title: '商品名称(品名)', width: 200}
    ,{field: 'maktx', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('商品名称_品名') : '商品名称(品名)', width: 200}
    // ,{field: 'name', align: 'center',title: '别名'}
    ,{field: 'specs', align: 'center',title: '规格'}
    ,{field: 'model', align: 'center',title: '代码', hide: true}
    ,{field: 'color', align: 'center',title: '颜色', hide: true}
    ,{field: 'brand', align: 'center',title: '品牌', hide: true}
    ,{field: 'unit', align: 'center',title: '单位', hide: false}
    ,{field: 'price', align: 'center',title: '单价', hide: true}
    ,{field: 'sku', align: 'center',title: 'sku', hide: true}
    ,{field: 'units', align: 'center',title: '单位量', hide: true}
    ,{field: 'barcode', align: 'center',title: '条码', hide: true}
    ,{field: 'origin', align: 'center',title: '产地', hide: true}
    ,{field: 'manu', align: 'center',title: '厂家', hide: true}
    ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true}
    ,{field: 'itemNum', align: 'center',title: '品项数', hide: true}
    ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true}
    ,{field: 'weight', align: 'center',title: '单箱净重', hide: true}
    ,{field: 'length', align: 'center',title: '单箱毛重', hide: true}
    ,{field: 'volume', align: 'center',title: '单箱体积', hide: true}
    ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true}
    ,{field: 'supp', align: 'center',title: '供应商', hide: true}
    ,{field: 'suppCode', align: 'center',title: '供应商编码', hide: true}
    ,{field: 'beBatch$', align: 'center',title: '是否批次', hide: true}
    ,{field: 'deadTime', align: 'center',title: '保质期', hide: true}
    ,{field: 'deadWarn', align: 'center',title: '预警天数', hide: true}
    ,{field: 'source$', align: 'center',title: '制购', hide: true}
    ,{field: 'check$', align: 'center',title: '要求检验', hide: true}
    ,{field: 'danger$', align: 'center',title: '危险品', hide: true}
    ,{field: 'specs', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('规格') : '规格'}
    ,{field: 'model', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('代码') : '代码', hide: true}
    ,{field: 'color', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('颜色') : '颜色', hide: true}
    ,{field: 'brand', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('品牌') : '品牌', hide: true}
    ,{field: 'unit', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单位') : '单位', hide: false}
    ,{field: 'price', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单价') : '单价', hide: true}
    ,{field: 'sku', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('sku') : 'sku', hide: true}
    ,{field: 'units', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单位量') : '单位量', hide: true}
    ,{field: 'barcode', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('条码') : '条码', hide: true}
    ,{field: 'origin', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('产地') : '产地', hide: true}
    ,{field: 'manu', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('厂家') : '厂家', hide: true}
    ,{field: 'manuDate', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('生产日期') : '生产日期', hide: true}
    ,{field: 'itemNum', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('品项数') : '品项数', hide: true}
    ,{field: 'safeQty', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('安全库存量') : '安全库存量', hide: true}
    ,{field: 'weight', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单箱净重') : '单箱净重', hide: true}
    ,{field: 'length', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单箱毛重') : '单箱毛重', hide: true}
    ,{field: 'volume', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单箱体积') : '单箱体积', hide: true}
    ,{field: 'threeCode', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('箱子尺寸') : '箱子尺寸', hide: true}
    ,{field: 'supp', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('供应商') : '供应商', hide: true}
    ,{field: 'suppCode', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('供应商编码') : '供应商编码', hide: true}
    ,{field: 'beBatch$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('是否批次') : '是否批次', hide: true}
    ,{field: 'deadTime', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('保质期') : '保质期', hide: true}
    ,{field: 'deadWarn', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('预警天数') : '预警天数', hide: true}
    ,{field: 'source$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('制购') : '制购', hide: true}
    ,{field: 'check$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('要求检验') : '要求检验', hide: true}
    ,{field: 'danger$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('危险品') : '危险品', hide: true}
    // ,{field: 'status$', align: 'center',title: '状态'}
    // ,{field: 'createBy$', align: 'center',title: '添加人员'}
    // ,{field: 'createTime$', align: 'center',title: '添加时间'}
    ,{field: 'updateBy$', align: 'center',title: '修改人员', hide: true}
    ,{field: 'updateTime$', align: 'center',title: '修改时间', hide: true}
    ,{field: 'memo', align: 'center',title: '备注', hide: true}
]
    ,{field: 'updateBy$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('修改人员') : '修改人员', hide: true}
    ,{field: 'updateTime$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('修改时间') : '修改时间', hide: true}
    ,{field: 'memo', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('备注') : '备注', hide: true}
    ];
}
var matCols = getMatCols();
var detlCols = [
    {field: 'matnr', align: 'center',title: '商品编号(品号)', sort:true}
    ,{field: 'maktx', align: 'center',title: '商品名称(品名)', sort:true}
    ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false}
    ,{field: 'batch', align: 'center',title: '批号', sort:true}
    ,{field: 'anfme', align: 'center',title: '数量', hide: false}
    ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: false}
function getDetlCols() {
    return [
    {field: 'matnr', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('商品编号_品号') : '商品编号(品号)', sort:true}
    ,{field: 'maktx', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('商品名称_品名') : '商品名称(品名)', sort:true}
    ,{field: 'orderNo', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单据编号') : '单据编号', hide: false}
    ,{field: 'batch', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('批号') : '批号', sort:true}
    ,{field: 'anfme', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('数量') : '数量', hide: false}
    ,{field: 'zpallet', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('托盘条码') : '托盘条码', hide: false}
    ,{field: 'specs', align: 'center',title: '规格', hide: false}
    ,{field: 'model', align: 'center',title: '代码', hide: true}
    ,{field: 'color', align: 'center',title: '颜色', hide: true}
    ,{field: 'brand', align: 'center',title: '品牌', hide: true}
    ,{field: 'unit', align: 'center',title: '单位', hide: false}
    ,{field: 'price', align: 'center',title: '单价', hide: true}
    ,{field: 'sku', align: 'center',title: 'sku', hide: true}
    ,{field: 'units', align: 'center',title: '单位量', hide: true}
    ,{field: 'barcode', align: 'center',title: '条码', hide: true}
    ,{field: 'origin', align: 'center',title: '产地', hide: true}
    ,{field: 'manu', align: 'center',title: '厂家', hide: true}
    ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true}
    ,{field: 'itemNum', align: 'center',title: '品项数', hide: true}
    ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true}
    ,{field: 'weight', align: 'center',title: '单箱净重', hide: true}
    ,{field: 'length', align: 'center',title: '单箱毛重', hide: true}
    ,{field: 'volume', align: 'center',title: '单箱体积', hide: true}
    ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true}
    ,{field: 'supp', align: 'center',title: '供应商', hide: true}
    ,{field: 'suppCode', align: 'center',title: '供应商编码', hide: true}
    ,{field: 'beBatch$', align: 'center',title: '是否批次', hide: true}
    ,{field: 'deadTime', align: 'center',title: '保质期', hide: true}
    ,{field: 'deadWarn', align: 'center',title: '预警天数', hide: true}
    ,{field: 'source$', align: 'center',title: '制购', hide: true}
    ,{field: 'check$', align: 'center',title: '要求检验', hide: true}
    ,{field: 'danger$', align: 'center',title: '危险品', hide: true}
]
    ,{field: 'specs', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('规格') : '规格', hide: false}
    ,{field: 'model', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('代码') : '代码', hide: true}
    ,{field: 'color', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('颜色') : '颜色', hide: true}
    ,{field: 'brand', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('品牌') : '品牌', hide: true}
    ,{field: 'unit', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单位') : '单位', hide: false}
    ,{field: 'price', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单价') : '单价', hide: true}
    ,{field: 'sku', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('sku') : 'sku', hide: true}
    ,{field: 'units', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单位量') : '单位量', hide: true}
    ,{field: 'barcode', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('条码') : '条码', hide: true}
    ,{field: 'origin', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('产地') : '产地', hide: true}
    ,{field: 'manu', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('厂家') : '厂家', hide: true}
    ,{field: 'manuDate', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('生产日期') : '生产日期', hide: true}
    ,{field: 'itemNum', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('品项数') : '品项数', hide: true}
    ,{field: 'safeQty', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('安全库存量') : '安全库存量', hide: true}
    ,{field: 'weight', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单箱净重') : '单箱净重', hide: true}
    ,{field: 'length', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单箱毛重') : '单箱毛重', hide: true}
    ,{field: 'volume', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('单箱体积') : '单箱体积', hide: true}
    ,{field: 'threeCode', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('箱子尺寸') : '箱子尺寸', hide: true}
    ,{field: 'supp', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('供应商') : '供应商', hide: true}
    ,{field: 'suppCode', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('供应商编码') : '供应商编码', hide: true}
    ,{field: 'beBatch$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('是否批次') : '是否批次', hide: true}
    ,{field: 'deadTime', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('保质期') : '保质期', hide: true}
    ,{field: 'deadWarn', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('预警天数') : '预警天数', hide: true}
    ,{field: 'source$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('制购') : '制购', hide: true}
    ,{field: 'check$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('要求检验') : '要求检验', hide: true}
    ,{field: 'danger$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('危险品') : '危险品', hide: true}
    ];
}
var detlCols = getDetlCols();
src/main/webapp/static/js/cool.js
@@ -33,7 +33,7 @@
    var inputDomVal = document.querySelector("input[data-key="+val+"]").value;
    var selectDom = document.querySelector("select[data-key="+val+"Select]");
    selectDom.length = 0;
    var defaultOption = new Option("取消选择", "");
    var defaultOption = new Option(typeof I18n !== 'undefined' ? I18n.t('cancel_selection') : "取消选择", "");
    defaultOption.title = "";
    selectDom.appendChild(defaultOption);
    selectDom.style.display='none';
@@ -47,7 +47,30 @@
            if (res.code === 200){
                var list = res.data;
                for (var i=0;i<list.length;i++){
                    var option = new Option(list[i].value, i);
                    var text = list[i].value;
                    var id = list[i].id;
                    // 尝试翻译
                    if (typeof I18n !== 'undefined' && typeof window.i18nEnumMap !== 'undefined') {
                        var mapper = window.i18nEnumMap[val];
                        if (mapper) {
                            var transKey = null;
                            if (typeof mapper === 'function') {
                                transKey = mapper(id);
                            } else {
                                transKey = mapper[id];
                            }
                            if (transKey) {
                                var trans = I18n.t(transKey);
                                if (trans !== transKey) {
                                    text = trans;
                                }
                            }
                        }
                    }
                    var option = new Option(text, i);
                    option.title = list[i].id;
                    selectDom.options[i+1] = option;
                }
src/main/webapp/static/js/i18n/i18n-helper.js
New file
@@ -0,0 +1,191 @@
/**
 * Simple I18n Helper for Layui/jQuery projects
 */
var I18n = (function() {
    var lang = localStorage.getItem('lang') || 'zh-cn'; // Default to zh-cn
    var messages = {};
    var isReady = false;
    function loadLanguage(language, callback) {
        // Auto-detect path based on script location
        var path = '';
        var scripts = document.getElementsByTagName('script');
        for (var i = 0; i < scripts.length; i++) {
            if (scripts[i].src && scripts[i].src.indexOf('i18n-helper.js') !== -1) {
                var src = scripts[i].src;
                // Assuming structure: .../static/js/i18n/i18n-helper.js
                // We want: .../static/i18n/
                var jsI18nDir = src.substring(0, src.lastIndexOf('/')); // .../static/js/i18n
                var jsDir = jsI18nDir.substring(0, jsI18nDir.lastIndexOf('/')); // .../static/js
                var staticDir = jsDir.substring(0, jsDir.lastIndexOf('/')); // .../static
                path = staticDir + '/i18n/' + language + '.json';
                break;
            }
        }
        // Fallback if script tag detection fails
        if (!path) {
            if (typeof baseUrl !== 'undefined') {
                path = baseUrl + '/static/i18n/' + language + '.json';
            } else {
                path = '../../static/i18n/' + language + '.json';
            }
        }
        // Add timestamp to prevent caching
        path += '?t=' + new Date().getTime();
        $.getJSON(path, function(data) {
            messages = data;
            isReady = true;
            if (callback) callback();
            updatePage();
            $(document).trigger('i18n:ready');
            $(document).trigger('i18n:updated');
            $(document).trigger('i18n:languageChanged');
        }).fail(function(jqxhr, textStatus, error) {
            console.error('Failed to load language file: ' + path + ', error: ' + error);
            // Even if failed, mark as ready so dependent scripts can proceed (using keys or defaults)
            isReady = true;
            $(document).trigger('i18n:ready');
            $(document).trigger('i18n:updated');
        });
    }
    // Listen for language changes from other tabs/frames
    window.addEventListener('storage', function(e) {
        if (e.key === 'lang' && e.newValue && e.newValue !== lang) {
            lang = e.newValue;
            loadLanguage(lang);
        }
    });
    function t(key, params) {
        var text = messages[key] || key;
        if (params) {
            for (var prop in params) {
                text = text.replace(new RegExp('{{' + prop + '}}', 'g'), params[prop]);
            }
        }
        return text;
    }
    function updatePage(root) {
        var $root = root ? $(root) : $('body');
        $root.find('[data-i18n]').each(function() {
            var key = $(this).attr('data-i18n');
            if (!key) return;
            var attr = $(this).attr('data-i18n-attr');
            var text = t(key);
            if (attr) {
                $(this).attr(attr, text);
            } else if (this.tagName === 'INPUT' || this.tagName === 'TEXTAREA') {
                $(this).attr('placeholder', text);
            } else {
                $(this).text(text);
            }
        });
        // Handle data-i18n-placeholder
        $root.find('[data-i18n-placeholder]').each(function() {
            var key = $(this).attr('data-i18n-placeholder');
            if (!key) return;
            var text = t(key);
            $(this).attr('placeholder', text);
        });
        // Trigger a custom event for JS to listen to if needed (only if full page update)
        if (!root) {
            $(document).trigger('i18n:updated');
        }
    }
    function setLanguage(language) {
        lang = language;
        localStorage.setItem('lang', language);
        loadLanguage(language);
    }
    function getLanguage() {
        return lang;
    }
    // Initialize
    $(document).ready(function() {
        loadLanguage(lang);
    });
    // Listen for storage changes (for syncing across tabs/frames)
    window.addEventListener('storage', function(e) {
        if (e.key === 'lang' && e.newValue && e.newValue !== lang) {
            lang = e.newValue;
            loadLanguage(lang);
        }
    });
    function updateLayuiPagination() {
        // Update 'Total X items'
        $('.layui-laypage-count').each(function() {
            var text = $(this).text();
            var count = text.match(/\d+/);
            if (count) {
                $(this).text(t('total_prefix') + count[0] + t('total_suffix'));
            }
        });
        // Update 'Go to [input] page [button]'
        $('.layui-laypage-skip').each(function() {
            var $this = $(this);
            // Replace "到第" (First text node)
            var contents = $this.contents();
            for (var i = 0; i < contents.length; i++) {
                if (contents[i].nodeType === 3 && contents[i].textContent.trim() !== '') {
                    // Assuming the first non-empty text node is "到第"
                    contents[i].textContent = t('jump_to');
                    break;
                }
            }
            // Replace "页" (Text node after input)
            var input = $this.find('.layui-input');
            if (input.length) {
                var nextNode = input[0].nextSibling;
                if (nextNode && nextNode.nodeType === 3) {
                    nextNode.textContent = t('page');
                }
            }
            // Replace Button text
            var btn = $this.find('.layui-laypage-btn');
            if (btn.length) {
                btn.text(t('confirm'));
            }
        });
        // Update 'X items/page'
        $('.layui-laypage-limits select option').each(function() {
            var text = $(this).text();
            var limit = text.match(/\d+/);
            if (limit) {
                $(this).text(limit[0] + t('items_per_page'));
            }
        });
        // Force render of select to update displayed text if needed,
        // but usually Layui re-renders select only on form.render.
        // For pagination limits, it's a browser native select usually?
        // No, Layui table might use native select for limits in some versions,
        // but often it's native. Let's check visually or assume native for now.
    }
    return {
        t: t,
        setLanguage: setLanguage,
        getLanguage: getLanguage,
        updatePage: updatePage,
        updateLayuiPagination: updateLayuiPagination,
        isReady: function() { return isReady; }
    };
})();
src/main/webapp/static/js/locDetl/locDetl.js
@@ -1,46 +1,46 @@
var pageCurr;
function getCol() {
    var cols = [
        {field: 'locNo$', align: 'center',title: '库位号'}
        ,{field: 'storeDate', align: 'center',title: '库龄(天)', sort:true}
        ,{field: 'matnr', align: 'center',title: '商品编号', sort:true}
        ,{field: 'maktx', align: 'center',title: '商品名称', sort:true}
        ,{field: 'orderNo', align: 'center',title: '单据编号', hide: true}
        ,{field: 'batch', align: 'center',title: '批号', width: 300, sort:true}
        ,{field: 'anfme', align: 'center',title: '数量'}
        ,{field: 'zpallet', align: 'center',title: '托盘条码'}
        ,{field: 'specs', align: 'center',title: '规格'}
        ,{field: 'model', align: 'center',title: '代码', hide: true}
        ,{field: 'color', align: 'center',title: '颜色', hide: true}
        ,{field: 'brand', align: 'center',title: '品牌', hide: true}
        ,{field: 'unit', align: 'center',title: '单位', hide: true}
        ,{field: 'price', align: 'center',title: '单价', hide: true}
        ,{field: 'sku', align: 'center',title: 'sku', hide: true}
        ,{field: 'units', align: 'center',title: '单位量', hide: true}
        ,{field: 'barcode', align: 'center',title: '条码', hide: true}
        ,{field: 'origin', align: 'center',title: '产地', hide: true}
        ,{field: 'manu', align: 'center',title: '厂家', hide: true}
        ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true}
        ,{field: 'itemNum', align: 'center',title: '品项数', hide: true}
        ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true}
        ,{field: 'weight', align: 'center',title: '单箱净重', hide: true}
        ,{field: 'length', align: 'center',title: '单箱毛重', hide: true}
        ,{field: 'volume', align: 'center',title: '单箱体积', hide: true}
        ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true}
        ,{field: 'supp', align: 'center',title: '供应商', hide: true}
        ,{field: 'suppCode', align: 'center',title: '供应商编码', hide: true}
        ,{field: 'beBatch$', align: 'center',title: '是否批次', hide: true}
        ,{field: 'deadTime', align: 'center',title: '保质期', hide: true}
        ,{field: 'deadWarn', align: 'center',title: '预警天数', hide: true}
        ,{field: 'source$', align: 'center',title: '制购', hide: true}
        ,{field: 'check$', align: 'center',title: '要求检验', hide: true}
        ,{field: 'danger$', align: 'center',title: '危险品', hide: true}
        {field: 'locNo$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('location_no') : 'Location No.'}
        ,{field: 'storeDate', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('age_days') : 'Age(Days)', sort:true}
        ,{field: 'matnr', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('product_code') : 'Item No.', sort:true}
        ,{field: 'maktx', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('product_name') : 'Item Name', sort:true}
        ,{field: 'orderNo', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('order_no') : 'Order No.', hide: true}
        ,{field: 'batch', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('batch_no') : 'Batch No.', width: 300, sort:true}
        ,{field: 'anfme', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('quantity') : 'Quantity'}
        ,{field: 'zpallet', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('pallet_barcode') : 'Pallet Code'}
        ,{field: 'specs', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('spec') : 'Spec'}
        ,{field: 'model', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('code') : 'Code', hide: true}
        ,{field: 'color', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('color') : 'Color', hide: true}
        ,{field: 'brand', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('brand') : 'Brand', hide: true}
        ,{field: 'unit', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('unit') : 'Unit', hide: true}
        ,{field: 'price', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('price') : 'Price', hide: true}
        ,{field: 'sku', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('sku') : 'SKU', hide: true}
        ,{field: 'units', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('unit_qty') : 'Unit Qty', hide: true}
        ,{field: 'barcode', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('barcode') : 'Barcode', hide: true}
        ,{field: 'origin', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('origin') : 'Origin', hide: true}
        ,{field: 'manu', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('manufacturer') : 'Manufacturer', hide: true}
        ,{field: 'manuDate', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('mfg_date') : 'Mfg Date', hide: true}
        ,{field: 'itemNum', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('item_count') : 'Item Count', hide: true}
        ,{field: 'safeQty', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('safety_stock') : 'Safety Stock', hide: true}
        ,{field: 'weight', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('net_weight_box') : 'Net Weight/Box', hide: true}
        ,{field: 'length', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('gross_weight_box') : 'Gross Weight/Box', hide: true}
        ,{field: 'volume', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('volume_box') : 'Volume/Box', hide: true}
        ,{field: 'threeCode', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('box_size') : 'Box Size', hide: true}
        ,{field: 'supp', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('supplier') : 'Supplier', hide: true}
        ,{field: 'suppCode', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('supplier_code') : 'Supplier Code', hide: true}
        ,{field: 'beBatch$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('batch_managed') : 'Batch Managed', hide: true}
        ,{field: 'deadTime', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('shelf_life') : 'Shelf Life', hide: true}
        ,{field: 'deadWarn', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('warning_days') : 'Warning Days', hide: true}
        ,{field: 'source$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('make_buy') : 'Make/Buy', hide: true}
        ,{field: 'check$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('inspection_reqd') : 'Inspection Reqd', hide: true}
        ,{field: 'danger$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('hazardous') : 'Hazardous', hide: true}
    ];
    // cols.push.apply(cols, detlCols);
    cols.push({field: 'modiUser$', align: 'center',title: '修改人员',hide: true}
        ,{field: 'modiTime$', align: 'center',title: '修改时间'}
    cols.push({field: 'modiUser$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('modifier') : 'Modifier',hide: true}
        ,{field: 'modiTime$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('modify_time') : 'Modify Time'}
    )
    return cols;
}
@@ -82,6 +82,9 @@
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            if (typeof I18n !== 'undefined') {
                I18n.updatePage($('.layui-table-tool'));
            }
            pageCurr=curr;
            limit();
@@ -126,7 +129,7 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: I18n.t('add'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -149,9 +152,9 @@
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(I18n.t('please_select_data'));
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    layer.confirm(I18n.t('confirm_delete_prefix') + (data.length===1 ? I18n.t('this') : data.length) + I18n.t('confirm_delete_suffix'), function(){
                        $.ajax({
                            url: baseUrl+"/locDetl/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -173,7 +176,7 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_export_excel'), {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -190,7 +193,7 @@
                        'locDetl': exportData,
                        'fields': fields
                    };
                    var loadIndex = layer.msg('正在导出...', {icon: 16, shade: 0.01, time: false});
                    var loadIndex = layer.msg(I18n.t('exporting'), {icon: 16, shade: 0.01, time: false});
                    $.ajax({
                        url: baseUrl+"/locDetl/export/auth",
                        headers: {'token': localStorage.getItem('token')},
@@ -223,7 +226,7 @@
            case 'detail':
                layer.open({
                    type: 2,
                    title: '详情',
                    title: I18n.t('detail'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -242,7 +245,7 @@
            case 'edit':
                layer.open({
                    type: 2,
                    title: '修改',
                    title: I18n.t('modify'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -261,11 +264,11 @@
            case 'locNo':
                var param = top.reObject(data).locNo;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data_found'));
                } else {
                   layer.open({
                       type: 2,
                       title: '库位号详情',
                       title: I18n.t('location_no') + I18n.t('detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -297,11 +300,11 @@
            case 'modiUser':
                var param = top.reObject(data).modiUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data_found'));
                } else {
                   layer.open({
                       type: 2,
                       title: '修改人员详情',
                       title: I18n.t('modifier_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -333,11 +336,11 @@
            case 'appeUser':
                var param = top.reObject(data).appeUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data_found'));
                } else {
                   layer.open({
                       type: 2,
                       title: '创建者详情',
                       title: I18n.t('creator_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -466,6 +469,12 @@
    });
    // 监听i18n更新事件,重新渲染表格
    $(document).on('i18n:updated', function() {
        table.reload('locDetl', {
            cols: [getCol()]
        });
    });
});
// 关闭动作
src/main/webapp/static/js/locMast/locMast.js
@@ -6,6 +6,87 @@
    var layDate = layui.laydate;
    var form = layui.form;
    var doneCallback = function(res, curr, count) {
        if (res.code === 403) {
            top.location.href = baseUrl+"/";
        }
        pageCurr=curr;
        limit();
        if (typeof I18n !== 'undefined') {
            I18n.updatePage($('.layui-table-view'));
            I18n.updateLayuiPagination();
        }
    };
    // 获取表头配置
    function getCols() {
        return [[
            {type: 'checkbox', fixed: 'left'}
            // ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
            ,{field: 'locNo', align: 'center',title: I18n.t('location_no'),sort:true, hide:false}
            ,{field: 'locSts', align: 'center',title: I18n.t('location_status'),width:200, hide:false, templet: function(d) {
                var key = 'loc_status_' + d.locSts;
                var text = I18n.t(key);
                return text === key ? d.locSts$ : text;
            }}
            ,{field: 'whsType', align: 'center',title: I18n.t('location_type'),width:200, hide:false, templet: function(d) {
                var map = {
                    '1': 'standard_crane_whs',
                    '2': 'flat_whs',
                    '3': 'shuttle_board',
                    '4': 'four_way_vehicle',
                    '5': 'agv'
                };
                var key = map[d.whsType];
                return key ? I18n.t(key) : d.whsType$;
            }}
            // ,{field: 'pltType', align: 'center',title: ''}
            // ,{field: 'ctnType', align: 'center',title: ''}
            // ,{field: 'locSts', align: 'center',title: ''}
            // ,{field: 'sheetNo', align: 'center',title: ''}
            ,{field: 'crnNo', align: 'center',title: I18n.t('crane_no'), hide:false}
            ,{field: 'row1', align: 'center',title: I18n.t('row'), sort:true, hide:false}
            ,{field: 'bay1', align: 'center',title: I18n.t('bay'), sort:true, hide:false}
            ,{field: 'lev1', align: 'center',title: I18n.t('level'), sort:true, hide:false}
            ,{field: 'gro1', align: 'center',title: I18n.t('group'), sort:true, hide:false}
            ,{field: 'fullPlt', align: 'center',title: I18n.t('full_pallet'), templet:function(row){
                    var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' disabled table-index='"+row.LAY_TABLE_INDEX+"'";
                    if(row.fullPlt === 'Y'){html += " checked ";}
                    html += ">";
                    return html;
                },width:80, hide:false}
            // ,{field: 'outEnable', align: 'center',title: ''}
            ,{field: 'ioTime$', align: 'center',title: 'ioTime', hide:true}
            // ,{field: 'firstTime$', align: 'center',title: '', hide:true}
            ,{field: 'modiUser$', align: 'center',title: I18n.t('modifier'), hide:true}
            ,{field: 'modiTime$', align: 'center',title: I18n.t('modify_time'), hide:true}
            ,{field: 'appeUser$', align: 'center',title: I18n.t('creator'),event: 'appeUser', style: 'text-decoration: underline;cursor:pointer', hide:true}
            ,{field: 'appeTime$', align: 'center',title: I18n.t('add_time'), hide:true}
            // ,{field: 'errorTime$', align: 'center',title: ''}
            // ,{field: 'errorMemo', align: 'center',title: ''}
            // ,{field: 'ctnKind', align: 'center',title: ''}
            // ,{field: 'scWeight', align: 'center',title: ''}
            // ,{field: 'invWh', align: 'center',title: ''}
            // ,{field: 'mk', align: 'center',title: ''}
            // ,{field: 'barcode', align: 'center',title: ''}
            // ,{field: 'PdcType', align: 'center',title: ''}
            // ,{field: 'ctnNo', align: 'center',title: ''}
            ,{field: 'locType1$', align: 'center',title: I18n.t('high_low_type'), hide:true}
            ,{field: 'locType2$', align: 'center',title: I18n.t('width_type'), hide:true}
            ,{field: 'locType3$', align: 'center',title: I18n.t('weight_type'), hide:true}
            ,{fixed: 'right', title: I18n.t('operation'), align: 'center', toolbar: '#operate', width:100}
        ]];
    }
    // 监听语言切换事件
    $(document).on('i18n:languageChanged', function() {
        tableIns.reload({
            cols: getCols(),
            done: doneCallback
        });
    });
    // 数据渲染
    tableIns = table.render({
        elem: '#locMast',
@@ -18,49 +99,7 @@
        // size: 'sm',
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [[
            {type: 'checkbox', fixed: 'left'}
//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
            ,{field: 'locNo', align: 'center',title: '库位号',sort:true, hide:false}
            ,{field: 'locSts$', align: 'center',title: '库位状态',width:200, hide:false}
            ,{field: 'whsType$', align: 'center',title: '库位类型',width:200, hide:false}
            // ,{field: 'pltType', align: 'center',title: ''}
            // ,{field: 'ctnType', align: 'center',title: ''}
            // ,{field: 'locSts', align: 'center',title: ''}
            // ,{field: 'sheetNo', align: 'center',title: ''}
            ,{field: 'crnNo', align: 'center',title: '堆垛机号', hide:false}
            ,{field: 'row1', align: 'center',title: '排', sort:true, hide:false}
            ,{field: 'bay1', align: 'center',title: '列', sort:true, hide:false}
            ,{field: 'lev1', align: 'center',title: '层', sort:true, hide:false}
            ,{field: 'gro1', align: 'center',title: '组', sort:true, hide:false}
            ,{field: 'fullPlt', align: 'center',title: '满板', templet:function(row){
                    var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' disabled table-index='"+row.LAY_TABLE_INDEX+"'";
                    if(row.fullPlt === 'Y'){html += " checked ";}
                    html += ">";
                    return html;
                },width:80, hide:false}
            // ,{field: 'outEnable', align: 'center',title: ''}
            ,{field: 'ioTime$', align: 'center',title: 'ioTime', hide:true}
            // ,{field: 'firstTime$', align: 'center',title: '', hide:true}
            ,{field: 'modiUser$', align: 'center',title: '修改人员', hide:true}
            ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true}
            ,{field: 'appeUser$', align: 'center',title: '创建者',event: 'appeUser', style: 'text-decoration: underline;cursor:pointer', hide:true}
            ,{field: 'appeTime$', align: 'center',title: '添加时间', hide:true}
            // ,{field: 'errorTime$', align: 'center',title: ''}
            // ,{field: 'errorMemo', align: 'center',title: ''}
            // ,{field: 'ctnKind', align: 'center',title: ''}
            // ,{field: 'scWeight', align: 'center',title: ''}
            // ,{field: 'invWh', align: 'center',title: ''}
            // ,{field: 'mk', align: 'center',title: ''}
            // ,{field: 'barcode', align: 'center',title: ''}
            // ,{field: 'PdcType', align: 'center',title: ''}
            // ,{field: 'ctnNo', align: 'center',title: ''}
            ,{field: 'locType1$', align: 'center',title: '高低类型', hide:true}
            ,{field: 'locType2$', align: 'center',title: '宽窄类型', hide:true}
            ,{field: 'locType3$', align: 'center',title: '轻重类型', hide:true}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:100}
        ]],
        cols: getCols(),
        request: {
            pageName: 'curr',
            pageSize: 'limit'
@@ -76,21 +115,7 @@
        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';
                }
            });
        }
        done: doneCallback
    });
    // 监听排序事件
@@ -106,13 +131,7 @@
            page: {
                curr: 1
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                pageCurr=curr;
                limit();
            }
            done: doneCallback
        });
    });
@@ -123,9 +142,9 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: I18n.t('add'),
                    maxmin: true,
                    area: ['500px', top.detailHeight],
                    area: ['2000px', top.detailHeight],
                    shadeClose: false,
                    content: 'locMast_detail.html',
                    success: function(layero, index){
@@ -147,9 +166,9 @@
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(I18n.t('please_select_data'));
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    layer.confirm(I18n.t('confirm_delete_prefix') + (data.length===1 ? I18n.t('this') : data.length) + I18n.t('confirm_delete_suffix'), function(){
                        $.ajax({
                            url: baseUrl+"/locMast/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -171,7 +190,7 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_export_excel'), {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -209,12 +228,12 @@
                });
                break;
            case "init":
                layer.prompt({title: '请输入口令,并重置库位', formType: 1,   shadeClose: true}, function(pass, idx){
                layer.prompt({title: I18n.t('please_enter_password_reset_location'), formType: 1,   shadeClose: true}, function(pass, idx){
                    http.get(baseUrl+"/locMast/init/pwd", {pwd: pass}, function (res) {
                        if (res.data) {
                            layer.open({
                                type: 1,
                                title: '初始化库位',
                                title: I18n.t('init_location'),
                                area: ["400px"],
                                maxmin: true,
                                shadeClose: true,
@@ -224,7 +243,7 @@
                                }
                            })
                        } else {
                            layer.msg("口令错误");
                            layer.msg(I18n.t('password_error'));
                        }
                        layer.close(idx);
                    })
@@ -232,6 +251,36 @@
                break;
        }
    });
    // 翻译详情数据
    function translateDetailData(data) {
        var newData = $.extend({}, data);
        // 翻译 locSts
        if (newData.locSts) {
            var key = 'loc_status_' + newData.locSts;
            var text = I18n.t(key);
            if (text !== key) {
                newData.locSts$ = text;
            }
        }
        // 翻译 whsType
        if (newData.whsType) {
            var map = {
                '1': 'standard_crane_whs',
                '2': 'flat_whs',
                '3': 'shuttle_board',
                '4': 'four_way_vehicle',
                '5': 'agv'
            };
            var key = map[newData.whsType];
            if (key) {
                newData.whsType$ = I18n.t(key);
            }
        }
        return newData;
    }
    // 监听行工具事件
    table.on('tool(locMast)', function(obj){
@@ -241,7 +290,7 @@
            case 'detail':
                layer.open({
                    type: 2,
                    title: '详情',
                    title: I18n.t('detail'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -261,9 +310,9 @@
            case 'edit':
                layer.open({
                    type: 2,
                    title: '修改',
                    title: I18n.t('modify'),
                    maxmin: true,
                    area: ['500px', top.detailHeight],
                    area: ['700px', '600px'],
                    shadeClose: false,
                    content: 'locMast_detail.html',
                    success: function(layero, index){
@@ -280,11 +329,11 @@
            case 'whsType':
                var param = top.reObject(data).whsType;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data_found'));
                } else {
                   layer.open({
                       type: 2,
                       title: '库位详情',
                       title: I18n.t('location_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -316,11 +365,11 @@
            case 'modiUser':
                var param = top.reObject(data).modiUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data_found'));
                } else {
                   layer.open({
                       type: 2,
                       title: '修改详情',
                       title: I18n.t('modify_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -353,11 +402,11 @@
            case 'appeUser':
                var param = top.reObject(data).appeUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data_found'));
                } else {
                   layer.open({
                       type: 2,
                       title: '创详情',
                       title: I18n.t('create_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -563,6 +612,10 @@
                pageCurr -= 1;
            }
            limit(child);
            if (typeof I18n !== 'undefined') {
                I18n.updatePage();
                I18n.updateLayuiPagination();
            }
        }
    });
}
src/main/webapp/static/js/mat/mat.js
@@ -4,16 +4,16 @@
function getCol() {
    var cols = [
        {type: 'checkbox'}
        ,{field: 'tagId$', align: 'center',title: '归类', templet: '#tagTpl'}
        ,{field: 'store_max', align: 'center',title: '库存上限'}
        ,{field: 'store_min', align: 'center',title: '库存下限'}
        ,{field: 'store_max_date', align: 'center',title: '库龄上限(天)'}
        ,{field: 'areaId$', align: 'center',title: '区域', templet: '#areaTpl'}
        ,{field: 'tagId$', align: 'center',title: I18n.t('classification'), templet: '#tagTpl'}
        ,{field: 'store_max', align: 'center',title: I18n.t('stock_upper_limit')}
        ,{field: 'store_min', align: 'center',title: I18n.t('stock_lower_limit')}
        ,{field: 'store_max_date', align: 'center',title: I18n.t('stock_age_upper_limit_days')}
        ,{field: 'areaId$', align: 'center',title: I18n.t('area'), templet: '#areaTpl'}
    ];
    cols.push.apply(cols, matCols);
    cols.push.apply(cols, getMatCols());
    cols.push(
        {fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150}
        {fixed: 'right', title: I18n.t('operation'), align: 'center', toolbar: '#operate', width:150}
    )
    return cols;
}
@@ -76,6 +76,26 @@
    });
    // 数据渲染
    var tableDone = 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';
            }
        });
        if (typeof I18n !== 'undefined') {
            I18n.updatePage();
            I18n.updateLayuiPagination();
        }
    };
    tableIns = table.render({
        elem: '#mat',
        headers: {token: localStorage.getItem('token')},
@@ -102,21 +122,7 @@
        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';
                }
            });
        }
        done: tableDone
    });
    // 监听排序事件
@@ -132,13 +138,15 @@
            page: {
                curr: 1
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                pageCurr=curr;
                limit();
            }
            done: tableDone
        });
    });
    // 监听语言切换
    $(document).on('i18n:languageChanged i18n:ready', function() {
        tableIns.reload({
            cols: [getCol()],
            done: tableDone
        });
    });
@@ -152,9 +160,9 @@
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(I18n.t('please_select_data'));
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    layer.confirm(I18n.t('confirm_delete_prefix') + (data.length===1?I18n.t('this'):data.length) + I18n.t('confirm_delete_suffix'), function(){
                        $.ajax({
                            url: baseUrl+"/mat/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -176,7 +184,7 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_export_excel'), {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -218,11 +226,11 @@
                printMatCodeNos = [];
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择打印数据');
                    layer.msg(I18n.t('please_select_print_data'));
                } else {
                    layer.open({
                        type: 1,
                        title: '批量打印 [数量'+ data.length +']',
                        title: I18n.t('batch_print_count', {count: data.length}),
                        area: ['500px'],
                        shadeClose: true,
                        content: $('#printDataDiv'),
@@ -248,7 +256,7 @@
                printMatCodeNos = [];
                layer.open({
                    type: 1,
                    title: data.matnr + ' [数量:1]',
                    title: data.matnr + ' [' + I18n.t('count') + ':1]',
                    area: ['500px'],
                    shadeClose: true,
                    content: $('#printDataDiv'),
@@ -272,7 +280,7 @@
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '商品',
            title: (mData ? I18n.t('edit') : I18n.t('add')) + I18n.t('material'),
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                // 回显表单数据
@@ -289,7 +297,7 @@
                    data.field.tagId = insXmSel.getValue('valueStr');
                    data.field.areaId = areaXmSel.getValue('valueStr');
                    if (isEmpty(data.field.tagId)) {
                        layer.msg('分类不能为空', {icon: 2});
                        layer.msg(I18n.t('category_cannot_be_empty'), {icon: 2});
                        return false;
                    }
                    var loadIndex = layer.load(2);
@@ -334,8 +342,6 @@
                    }
                });
                // 渲染区域下拉选择
                console.log('准备渲染区域选择器,数据:', areaData);
                console.log('当前商品数据:', mData);
                var areaXmSel = xmSelect.render({
                    el: $(layero).find('#areaSel')[0],
                    height: '250px',
@@ -349,10 +355,8 @@
                    radio: true,
                    clickClose: true,
                    on: function(data) {
                        console.log('区域选择器事件:', data);
                    }
                });
                console.log('区域选择器渲染完成');
                // 弹窗不出现滚动条
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
@@ -392,6 +396,9 @@
                    var html = template(res);
                    var box = $("#box");
                    box.html(html);box.show();
                    if (typeof I18n !== 'undefined' && I18n.updatePage) {
                        I18n.updatePage(box[0]);
                    }
                    box.print({mediaPrint:true});
                    box.hide();
                } else if (res.code === 403){
@@ -445,7 +452,7 @@
        return;
    }
    var file = obj.files[0];
    admin.confirm('确认同步 [' + file.name +'] 文件吗?', function (index) {
    admin.confirm(I18n.t('confirm_sync_file', {filename: file.name}), function (index) {
        layer.load(1, {shade: [0.1,'#fff']});
        var url = baseUrl + "/mat/excel/import/auth";
        var form = new FormData();
@@ -514,6 +521,10 @@
                pageCurr -= 1;
            }
            limit(child);
            if (typeof I18n !== 'undefined') {
                I18n.updatePage();
                I18n.updateLayuiPagination();
            }
        }
    });
}
src/main/webapp/static/js/report/locMap.js
@@ -13,10 +13,42 @@
    });
    // 初始加载
    loadAreas();             // 加载库区颜色信息
    loadRowsOptions();       // 加载「排」选项(始终需要)
    loadLayersOptions();     // 加载「层」选项(提前准备)
    getLocTable('byRow', 1); // 默认按排 + 第1排
    function initMap() {
        loadAreas();             // 加载库区颜色信息
        loadRowsOptions();       // 加载「排」选项(始终需要)
        loadLayersOptions();     // 加载「层」选项(提前准备)
        getLocTable('byRow', 1); // 默认按排 + 第1排
    }
    if (I18n.isReady()) {
        initMap();
    } else {
        $(document).on('i18n:ready', initMap);
    }
    // Listen for dynamic language updates (no reload)
    $(document).on('i18n:updated', function() {
        // Update selection button text
        if (isSelectionMode) {
            $('#btnSelectMode').text(I18n.t('disable_selection'));
        } else {
            $('#btnSelectMode').text(I18n.t('enable_selection'));
        }
        // Update assign button text if visible
        if ($('.loc-selected').length > 0) {
            $('#btnAssignZone').text(I18n.t('assign_zone') + ' (' + $('.loc-selected').length + ')');
        } else {
            $('#btnAssignZone').text(I18n.t('assign_zone'));
        }
        // Re-render legend to update text
        loadAreas();
        // Re-render select options if needed (but options usually don't have text needing translation unless hardcoded)
        // Re-render form to apply changes
        form.render();
    });
    // 加载库区信息并显示图例
    function loadAreas() {
@@ -27,7 +59,7 @@
            success: function(res) {
                if (res.code === 200) {
                    areaMap = {};
                    var legendHtml = '<div class="area-legend-item" style="cursor:default;font-weight:bold;">库区图例:</div>';
                    var legendHtml = '<div class="area-legend-item" style="cursor:default;font-weight:bold;">' + I18n.t('zone_legend') + ':</div>';
                    // 默认颜色列表,用于自动分配
                    var defaultColors = ['#FF5733', '#33FF57', '#3357FF', '#FF33A1', '#A133FF', '#33FFF5', '#FFD700', '#FF8C00'];
                    var colorIndex = 0;
@@ -55,21 +87,21 @@
        
        var contentHtml = '<div style="padding: 20px;"><form class="layui-form">' +
            '<div class="layui-form-item">' +
            '<label class="layui-form-label" style="width: auto; padding-left: 0;">库区名称:</label>' +
            '<label class="layui-form-label" style="width: auto; padding-left: 0;">' + I18n.t('zone_name') + ':</label>' +
            '<div class="layui-input-inline" style="line-height: 45px;">' + areaData.name + '</div>' +
            '</div>' +
            '<div class="layui-form-item">' +
            '<label class="layui-form-label" style="width: auto; padding-left: 0;">选择颜色</label>' +
            '<label class="layui-form-label" style="width: auto; padding-left: 0;">' + I18n.t('select_color') + '</label>' +
            '<div class="layui-input-inline"><input type="color" id="singleAreaColorPicker" value="' + (areaData.color || '#cccccc') + '" style="height: 38px; width: 100%;"></div>' +
            '</div>' +
            '</form></div>';
        layer.open({
            type: 1,
            title: '修改库区颜色',
            title: I18n.t('modify_zone_color'),
            area: ['350px', '250px'],
            content: contentHtml,
            btn: ['保存', '取消'],
            btn: [I18n.t('save'), I18n.t('cancel')],
            yes: function(index) {
                var newColor = $('#singleAreaColorPicker').val();
                if (newColor !== areaData.color) {
@@ -80,7 +112,7 @@
                        data: { id: areaId, backup1: newColor },
                        success: function(res) {
                            if (res.code === 200) {
                                layer.msg('颜色已更新');
                                layer.msg(I18n.t('color_updated'));
                                layer.close(index);
                                loadAreas(); // 刷新图例和缓存
                                // 刷新地图以应用新颜色
@@ -88,7 +120,7 @@
                                if (mode === 'byRow') getLocTable('byRow', $('#rowSelect').val());
                                else getLocTable('byLayer', $('#layerSelect').val());
                            } else {
                                layer.msg(res.msg || '更新失败');
                                layer.msg(res.msg || I18n.t('update_failed'));
                            }
                        }
                    });
@@ -160,7 +192,7 @@
                } else if (res.code === 403) {
                    top.location.href = baseUrl + "/";
                } else {
                    layer.msg(res.msg || '加载失败');
                    layer.msg(res.msg || I18n.t('load_failed'));
                }
            }
        });
@@ -208,15 +240,15 @@
    $('#btnSelectMode').click(function () {
        isSelectionMode = !isSelectionMode;
        if (isSelectionMode) {
            $(this).text('关闭框选').addClass('layui-btn-danger').removeClass('layui-btn-normal');
            $(this).text(I18n.t('disable_selection')).addClass('layui-btn-danger').removeClass('layui-btn-normal');
            // 禁用原有点击事件,防止冲突 (通过 CSS pointer-events 或移除 onclick)
            // 这里选择移除 onclick 属性
            $('.a-loc').each(function(){
                $(this).attr('data-onclick', $(this).attr('onclick')).removeAttr('onclick');
            });
            layer.msg('已开启框选模式,请在库位图上拖拽选择');
            layer.msg(I18n.t('selection_mode_tip'));
        } else {
            $(this).text('开启框选').addClass('layui-btn-normal').removeClass('layui-btn-danger');
            $(this).text(I18n.t('enable_selection')).addClass('layui-btn-normal').removeClass('layui-btn-danger');
            $('.loc-selected').removeClass('loc-selected');
            $('#btnAssignZone').hide();
            // 恢复点击事件
@@ -307,7 +339,7 @@
        });
        if ($('.loc-selected').length > 0) {
            $('#btnAssignZone').show().text('分配库区 (' + $('.loc-selected').length + ')');
            $('#btnAssignZone').show().text(I18n.t('assign_zone') + ' (' + $('.loc-selected').length + ')');
        } else {
            $('#btnAssignZone').hide();
        }
@@ -328,7 +360,7 @@
            headers: {'token': localStorage.getItem('token')},
            success: function(listRes) {
                if (listRes.code === 200) {
                        var optionsHtml = '<option value="">请选择库区</option>';
                        var optionsHtml = '<option value="">' + I18n.t('please_select_zone') + '</option>';
                        var areas = listRes.data.records;
                        areas.forEach(function(area) {
                            optionsHtml += '<option value="' + area.id + '">' + area.areaName + ' (' + area.areaId + ')</option>';
@@ -337,17 +369,17 @@
                        var contentHtml = '<div style="padding: 20px;"><form class="layui-form">' +
                            '<div class="layui-form-item"><select id="selectArea" lay-filter="selectArea">' + optionsHtml + '</select></div>' +
                            '<div class="layui-form-item">' +
                            '<label class="layui-form-label" style="width: auto; padding-left: 0;">库区颜色</label>' +
                            '<label class="layui-form-label" style="width: auto; padding-left: 0;">' + I18n.t('zone_color') + '</label>' +
                            '<div class="layui-input-inline"><input type="color" id="areaColorPicker" value="#cccccc" style="height: 38px; width: 100%;"></div>' +
                            '</div>' +
                            '</form></div>';
                        layer.open({
                            type: 1,
                            title: '分配库区及颜色',
                            title: I18n.t('assign_zone_and_color'),
                            area: ['400px', '350px'],
                            content: contentHtml,
                            btn: ['确定', '取消'],
                            btn: [I18n.t('confirm'), I18n.t('cancel')],
                            success: function(layero, index) {
                                form.render('select');
                                form.on('select(selectArea)', function(data){
@@ -362,7 +394,7 @@
                                var newColor = $('#areaColorPicker').val();
                                if (!areaId) {
                                    layer.msg('请选择库区');
                                    layer.msg(I18n.t('please_select_zone'));
                                    return;
                                }
@@ -392,7 +424,7 @@
                                    }),
                                    success: function(updRes) {
                                        if (updRes.code === 200) {
                                            layer.msg('分配成功');
                                            layer.msg(I18n.t('assign_success'));
                                            layer.close(index);
                                            // 刷新
                                            var mode = $('#viewMode').val();
@@ -412,14 +444,14 @@
                                                }, 500); // 简单延时等待渲染
                                            }
                                        } else {
                                            layer.msg(updRes.msg || '操作失败');
                                            layer.msg(updRes.msg || I18n.t('operation_failed'));
                                        }
                                    }
                                });
                            }
                        });
                } else {
                    layer.msg(listRes.msg || '无法获取库区列表');
                    layer.msg(listRes.msg || I18n.t('fetch_zone_list_failed'));
                }
            }
        });
src/main/webapp/static/js/waitPakin/waitPakin.js
@@ -1,23 +1,74 @@
var pageCurr;
function getCol() {
    var cols = [ {type: 'checkbox'} ];
    cols.push.apply(cols, detlCols);
    cols.push({field: 'locNo', align: 'center',title: '库位号'}
        ,{field: 'status', align: 'center',title: '数据状态', templet:function(row){
                var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='正常|锁定'' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
    cols.push.apply(cols, typeof getDetlCols === 'function' ? getDetlCols() : detlCols);
    cols.push({field: 'locNo', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('location_no') : '库位号'}
        ,{field: 'status', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('data_status') : '数据状态', templet:function(row){
                var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='"+(typeof I18n !== 'undefined' ? I18n.t('normal') : '正常')+"|"+(typeof I18n !== 'undefined' ? I18n.t('locked') : '锁定')+"' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
                if(row.status === 'Y'){html += " checked ";}
                html += ">";
                return html;
            }, hide: true}
        ,{field: 'ioStatus', align: 'center',title: '入出状态', templet:function(row){
                var html = "<input value='ioStatus' type='checkbox' lay-skin='switch' lay-text='入库中|待入库' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
        ,{field: 'ioStatus', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('io_status') : '入出状态', templet:function(row){
                var html = "<input value='ioStatus' type='checkbox' lay-skin='switch' lay-text='"+(typeof I18n !== 'undefined' ? I18n.t('inbound') : '入库中')+"|"+(typeof I18n !== 'undefined' ? I18n.t('pending_inbound') : '待入库')+"' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
                if(row.ioStatus === 'Y'){html += " checked ";}
                html += ">";
                return html;
            }}
        ,{field: 'modiUser$', align: 'center',title: '修改人员', hide:true}
        ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true})
        ,{field: 'modiUser$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('modifier') : '修改人员', hide:true}
        ,{field: 'modiTime$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('modify_time') : '修改时间', hide:true})
    return cols;
}
function updatePagination() {
    if (typeof I18n === 'undefined') return;
    // Update 'Total X items'
    $('.layui-laypage-count').each(function() {
        var text = $(this).text();
        var count = text.match(/\d+/);
        if (count) {
            $(this).text(I18n.t('total_prefix') + count[0] + I18n.t('total_suffix'));
        }
    });
    // Update 'Go to [input] page [button]'
    $('.layui-laypage-skip').each(function() {
        var $this = $(this);
        // Replace "到第" (First text node)
        var contents = $this.contents();
        for (var i = 0; i < contents.length; i++) {
            if (contents[i].nodeType === 3 && contents[i].textContent.trim() !== '') {
                // Assuming the first non-empty text node is "到第"
                contents[i].textContent = I18n.t('jump_to');
                break;
            }
        }
        // Replace "页" (Text node after input)
        var input = $this.find('.layui-input');
        if (input.length) {
            var nextNode = input[0].nextSibling;
            if (nextNode && nextNode.nodeType === 3) {
                nextNode.textContent = I18n.t('page');
            }
        }
        // Replace Button text
        var btn = $this.find('.layui-laypage-btn');
        if (btn.length) {
            btn.text(I18n.t('confirm'));
        }
    });
    // Update 'X items/page'
    $('.layui-laypage-limits select option').each(function() {
        var text = $(this).text();
        var limit = text.match(/\d+/);
        if (limit) {
            $(this).text(limit[0] + I18n.t('items_per_page'));
        }
    });
}
layui.config({
@@ -42,6 +93,9 @@
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [getCol()],
        text: {
            none: typeof I18n !== 'undefined' ? I18n.t('no_data') : '暂无相关数据'
        },
        request: {
            pageName: 'curr',
            pageSize: 'limit'
@@ -62,6 +116,10 @@
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            if (typeof I18n !== 'undefined') {
                I18n.updatePage($('.layui-table-view'));
                updatePagination();
            }
            pageCurr=curr;
            limit();
            form.on('checkbox(tableCheckbox)', function (data) {
@@ -76,7 +134,7 @@
    });
    // 监听排序事件
    table.on('sort(locMast)', function (obj) {
    table.on('sort(waitPakin)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
@@ -92,6 +150,9 @@
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                if (typeof I18n !== 'undefined') {
                    updatePagination();
                }
                pageCurr=curr;
                limit();
            }
@@ -104,9 +165,12 @@
        switch(obj.event) {
            case 'addWrk':
                if (checkStatus.data.length === 0){
                    layer.msg('请至少选择一条数据', {icon: 2});
                    layer.msg(typeof I18n !== 'undefined' ? I18n.t('select_one_data') : '请至少选择一条数据', {icon: 2});
                } else {
                    layer.confirm('确定生成工作档任务吗', function(){
                    layer.confirm(typeof I18n !== 'undefined' ? I18n.t('confirm_generate_task') : '确定生成工作档任务吗', {
                        title: typeof I18n !== 'undefined' ? I18n.t('prompt') : '提示',
                        btn: [typeof I18n !== 'undefined' ? I18n.t('confirm') : '确定', typeof I18n !== 'undefined' ? I18n.t('cancel') : '取消']
                    }, function(){
                        $.ajax({
                            url: baseUrl+"/create/waitPain/wrkMast/start",
                            headers: {'token': localStorage.getItem('token')},
@@ -132,7 +196,7 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: typeof I18n !== 'undefined' ? I18n.t('add') : '新增',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    content: 'waitPakin_detail.html',
@@ -146,9 +210,16 @@
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(typeof I18n !== 'undefined' ? I18n.t('please_select_data') : '请选择数据');
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    var msg = '确定删除'+(data.length===1?'此':data.length)+'条数据吗';
                    if (typeof I18n !== 'undefined') {
                        msg = I18n.t('confirm_delete_prefix') + " " + data.length + " " + I18n.t('confirm_delete_suffix');
                    }
                    layer.confirm(msg, {
                        title: typeof I18n !== 'undefined' ? I18n.t('prompt') : '提示',
                        btn: [typeof I18n !== 'undefined' ? I18n.t('confirm') : '确定', typeof I18n !== 'undefined' ? I18n.t('cancel') : '取消']
                    }, function(){
                        $.ajax({
                            url: baseUrl+"/waitPakin/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -170,7 +241,11 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(typeof I18n !== 'undefined' ? I18n.t('confirm_export_excel') : '确定导出Excel吗', {
                    shadeClose: true,
                    title: typeof I18n !== 'undefined' ? I18n.t('prompt') : '提示',
                    btn: [typeof I18n !== 'undefined' ? I18n.t('confirm') : '确定', typeof I18n !== 'undefined' ? I18n.t('cancel') : '取消']
                }, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -218,7 +293,7 @@
            case 'detail':
                layer.open({
                    type: 2,
                    title: '详情',
                    title: typeof I18n !== 'undefined' ? I18n.t('detail') : '详情',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: true,
@@ -237,7 +312,7 @@
            case 'edit':
                layer.open({
                    type: 2,
                    title: '修改',
                    title: typeof I18n !== 'undefined' ? I18n.t('edit') : '修改',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    content: 'waitPakin_detail.html',
@@ -255,11 +330,11 @@
            case 'modiUser':
                var param = top.reObject(data).modiUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(typeof I18n !== 'undefined' ? I18n.t('no_data_found') : "无数据");
                } else {
                   layer.open({
                       type: 2,
                       title: '修改人员详情',
                       title: typeof I18n !== 'undefined' ? I18n.t('modifier_detail') : '修改人员详情',
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: true,
@@ -291,11 +366,11 @@
            case 'appeUser':
                var param = top.reObject(data).appeUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(typeof I18n !== 'undefined' ? I18n.t('no_data_found') : "无数据");
                } else {
                   layer.open({
                       type: 2,
                       title: '创建者详情',
                       title: typeof I18n !== 'undefined' ? I18n.t('creator_detail') : '创建者详情',
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: true,
@@ -422,6 +497,12 @@
        ,range: true
    });
    $(document).on('i18n:updated', function() {
        table.reload('waitPakin', {
            cols: [getCol()]
        });
    });
});
// 关闭动作
@@ -443,6 +524,9 @@
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            if (typeof I18n !== 'undefined') {
                updatePagination();
            }
            pageCurr=curr;
            if (res.data.length === 0 && count !== 0) {
                tableIns.reload({
src/main/webapp/static/js/waitPakinLog/waitPakinLog.js
@@ -2,23 +2,78 @@
function getCol() {
    var cols = [
    ];
    cols.push.apply(cols, detlCols);
    cols.push({field: 'status', align: 'center',title: '数据状态', templet:function(row){
                var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='正常|锁定' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
    cols.push.apply(cols, typeof getDetlCols === 'function' ? getDetlCols() : detlCols);
    cols.push({field: 'status', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('data_status') : '数据状态', templet:function(row){
                var normal = typeof I18n !== 'undefined' ? I18n.t('normal') : '正常';
                var locked = typeof I18n !== 'undefined' ? I18n.t('locked') : '锁定';
                var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='"+normal+"|"+locked+"' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
                if(row.status === 'Y'){html += " checked ";}
                html += ">";
                return html;
            }}
        ,{field: 'ioStatus', align: 'center',title: '入出状态', templet:function(row){
                var html = "<input value='ioStatus' type='checkbox' lay-skin='switch' lay-text='运行中|待处理' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
        ,{field: 'ioStatus', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('io_status') : '入出状态', templet:function(row){
                var running = typeof I18n !== 'undefined' ? I18n.t('running') : '运行中';
                var pending = typeof I18n !== 'undefined' ? I18n.t('pending') : '待处理';
                var html = "<input value='ioStatus' type='checkbox' lay-skin='switch' lay-text='"+running+"|"+pending+"' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
                if(row.ioStatus === 'Y'){html += " checked ";}
                html += ">";
                return html;
            }}
        ,{field: 'modiUser$', align: 'center',title: '修改人员', hide:true}
        ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true})
        ,{field: 'modiUser$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('modifier') : '修改人员', hide:true}
        ,{field: 'modiTime$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('modify_time') : '修改时间', hide:true})
    return cols;
}
function updatePagination() {
    if (typeof I18n === 'undefined') return;
    // Update 'Total X items'
    $('.layui-laypage-count').each(function() {
        var text = $(this).text();
        var count = text.match(/\d+/);
        if (count) {
            $(this).text(I18n.t('total_prefix') + count[0] + I18n.t('total_suffix'));
        }
    });
    // Update 'Go to [input] page [button]'
    $('.layui-laypage-skip').each(function() {
        var $this = $(this);
        // Replace "到第" (First text node)
        var contents = $this.contents();
        for (var i = 0; i < contents.length; i++) {
            if (contents[i].nodeType === 3 && contents[i].textContent.trim() !== '') {
                contents[i].textContent = I18n.t('jump_to');
                break;
            }
        }
        // Replace "页" (Text node after input)
        var input = $this.find('.layui-input');
        if (input.length) {
            var nextNode = input[0].nextSibling;
            if (nextNode && nextNode.nodeType === 3) {
                nextNode.textContent = I18n.t('page');
            }
        }
        // Replace Button text
        var btn = $this.find('.layui-laypage-btn');
        if (btn.length) {
            btn.text(I18n.t('confirm'));
        }
    });
    // Update 'X items/page'
    $('.layui-laypage-limits select option').each(function() {
        var text = $(this).text();
        var limit = text.match(/\d+/);
        if (limit) {
            $(this).text(limit[0] + I18n.t('items_per_page'));
        }
    });
}
layui.use(['table','laydate', 'form'], function(){
    var table = layui.table;
    var $ = layui.jquery;
@@ -57,6 +112,10 @@
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            if (typeof I18n !== 'undefined') {
                I18n.updatePage($('.layui-table-view'));
                updatePagination();
            }
            pageCurr=curr;
            limit();
            form.on('checkbox(tableCheckbox)', function (data) {
@@ -87,6 +146,10 @@
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                if (typeof I18n !== 'undefined') {
                    I18n.updatePage($('.layui-table-view'));
                    updatePagination();
                }
                pageCurr=curr;
                limit();
            }
@@ -100,7 +163,7 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: typeof I18n !== 'undefined' ? I18n.t('add') : '新增',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    content: 'waitPakinLog_detail.html',
@@ -114,9 +177,16 @@
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(typeof I18n !== 'undefined' ? I18n.t('please_select_data') : '请选择数据');
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    var msg = '确定删除'+(data.length===1?'此':data.length)+'条数据吗';
                    if (typeof I18n !== 'undefined') {
                        msg = I18n.t('confirm_delete_prefix') + " " + data.length + " " + I18n.t('confirm_delete_suffix');
                    }
                    layer.confirm(msg, {
                        title: typeof I18n !== 'undefined' ? I18n.t('prompt') : '提示',
                        btn: [typeof I18n !== 'undefined' ? I18n.t('confirm') : '确定', typeof I18n !== 'undefined' ? I18n.t('cancel') : '取消']
                    }, function(){
                        $.ajax({
                            url: baseUrl+"/waitPakinLog/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -138,7 +208,11 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(typeof I18n !== 'undefined' ? I18n.t('confirm_export_excel') : '确定导出Excel吗', {
                    shadeClose: true,
                    title: typeof I18n !== 'undefined' ? I18n.t('prompt') : '提示',
                    btn: [typeof I18n !== 'undefined' ? I18n.t('confirm') : '确定', typeof I18n !== 'undefined' ? I18n.t('cancel') : '取消']
                }, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -186,7 +260,7 @@
            case 'detail':
                layer.open({
                    type: 2,
                    title: '详情',
                    title: typeof I18n !== 'undefined' ? I18n.t('detail') : '详情',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: true,
@@ -205,7 +279,7 @@
            case 'edit':
                layer.open({
                    type: 2,
                    title: '修改',
                    title: typeof I18n !== 'undefined' ? I18n.t('edit') : '修改',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    content: 'waitPakinLog_detail.html',
@@ -223,11 +297,11 @@
            case 'modiUser':
                var param = top.reObject(data).modiUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(typeof I18n !== 'undefined' ? I18n.t('no_data_found') : "无数据");
                } else {
                   layer.open({
                    layer.open({
                       type: 2,
                       title: '修改人员详情',
                       title: typeof I18n !== 'undefined' ? I18n.t('modifier_detail') : '修改人员详情',
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: true,
@@ -259,11 +333,11 @@
            case 'appeUser':
                var param = top.reObject(data).appeUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(typeof I18n !== 'undefined' ? I18n.t('no_data_found') : "无数据");
                } else {
                   layer.open({
                    layer.open({
                       type: 2,
                       title: '创建者详情',
                       title: typeof I18n !== 'undefined' ? I18n.t('creator_detail') : '创建者详情',
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: true,
@@ -391,6 +465,19 @@
        ,range: true
    });
    // Add i18n listener
    $(document).on('i18n:updated', function() {
        table.reload('waitPakinLog', {
            cols: [getCol()],
            done: function() {
                if (typeof I18n !== 'undefined') {
                    I18n.updatePage($('.layui-table-view'));
                    updatePagination();
                }
            }
        });
    });
});
// 关闭动作
@@ -412,6 +499,10 @@
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            if (typeof I18n !== 'undefined') {
                I18n.updatePage($('.layui-table-view'));
                updatePagination();
            }
            pageCurr=curr;
            if (res.data.length === 0 && count !== 0) {
                tableIns.reload({
src/main/webapp/static/js/wrkDetl/wrkDetl.js
@@ -1,21 +1,101 @@
var pageCurr;
function getCol() {
    var cols = [
        {field: 'wrkNo', align: 'center',title: '工作号'}
        ,{field: 'ioTime$', align: 'center',title: '工作时间', width: 160}
        {field: 'wrkNo', align: 'center',title: I18n.t('work_no')}
        ,{field: 'ioTime$', align: 'center',title: I18n.t('work_time'), width: 160}
    ];
    cols.push.apply(cols, detlCols);
    cols.push({field: 'modiUser$', align: 'center',title: '修改人员', hide:true}
        ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true})
    if (typeof getDetlCols === 'function') {
        cols.push.apply(cols, getDetlCols());
    } else {
        cols.push.apply(cols, detlCols);
    }
    cols.push({field: 'modiUser$', align: 'center',title: I18n.t('modifier'), hide:true}
        ,{field: 'modiTime$', align: 'center',title: I18n.t('modify_time'), hide:true})
    return cols;
}
function updatePagination() {
    if (typeof I18n === 'undefined') return;
    // Update 'Total X items'
    $('.layui-laypage-count').each(function() {
        var text = $(this).text();
        var count = text.match(/\d+/);
        if (count) {
            $(this).text(I18n.t('total_prefix') + count[0] + I18n.t('total_suffix'));
        }
    });
    // Update 'Go to [input] page [button]'
    $('.layui-laypage-skip').each(function() {
        var $this = $(this);
        // Replace "到第" (First text node)
        var contents = $this.contents();
        for (var i = 0; i < contents.length; i++) {
            if (contents[i].nodeType === 3 && contents[i].textContent.trim() !== '') {
                // Assuming the first non-empty text node is "到第"
                contents[i].textContent = I18n.t('jump_to');
                break;
            }
        }
        // Replace "页" (Text node after input)
        var input = $this.find('.layui-input');
        if (input.length) {
            var nextNode = input[0].nextSibling;
            if (nextNode && nextNode.nodeType === 3) {
                nextNode.textContent = I18n.t('page');
            }
        }
        // Replace Button text
        var btn = $this.find('.layui-laypage-btn');
        if (btn.length) {
            btn.text(I18n.t('confirm'));
        }
    });
    // Update 'X items/page'
    $('.layui-laypage-limits select option').each(function() {
        var text = $(this).text();
        var limit = text.match(/\d+/);
        if (limit) {
            $(this).text(limit[0] + I18n.t('items_per_page'));
        }
    });
}
layui.use(['table','laydate', 'form'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var doneCallback = 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';
            }
        });
        if (typeof I18n !== 'undefined') {
            I18n.updatePage($('.layui-table-view'));
            updatePagination();
        }
    };
    $(document).on('i18n:updated', function() {
        tableIns.reload({
            cols: [getCol()],
            done: doneCallback
        });
    });
    // 数据渲染
    tableIns = table.render({
@@ -44,21 +124,7 @@
        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';
                }
            });
        }
        done: doneCallback
    });
    // 监听排序事件
@@ -78,6 +144,10 @@
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                if (typeof I18n !== 'undefined') {
                    I18n.updatePage($('.layui-table-view'));
                    updatePagination();
                }
                pageCurr=curr;
                limit();
            }
@@ -91,7 +161,7 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: I18n.t('add'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -114,9 +184,9 @@
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(I18n.t('please_select_data'));
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    layer.confirm(I18n.t('confirm_delete_prefix')+(data.length===1?I18n.t('this'):data.length)+I18n.t('confirm_delete_suffix'), function(){
                        $.ajax({
                            url: baseUrl+"/wrkDetl/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -138,7 +208,10 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_export_excel'), {shadeClose: true,
                    title: typeof I18n !== 'undefined' ? I18n.t('prompt') : '提示',
                    btn: [typeof I18n !== 'undefined' ? I18n.t('confirm') : '确定', typeof I18n !== 'undefined' ? I18n.t('cancel') : '取消']
                }, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -186,7 +259,7 @@
            case 'detail':
                layer.open({
                    type: 2,
                    title: '详情',
                    title: I18n.t('detail'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: true,
@@ -205,7 +278,7 @@
            case 'edit':
                layer.open({
                    type: 2,
                    title: '修改',
                    title: I18n.t('modify'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -224,11 +297,11 @@
            case 'modiUser':
                var param = top.reObject(data).modiUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data_found'));
                } else {
                   layer.open({
                       type: 2,
                       title: '修改人员详情',
                       title: I18n.t('modifier_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -260,11 +333,11 @@
            case 'appeUser':
                var param = top.reObject(data).appeUser;
                if (param === undefined) {
                    layer.msg("无数据");
                    layer.msg(I18n.t('no_data_found'));
                } else {
                   layer.open({
                       type: 2,
                       title: '创建者详情',
                       title: I18n.t('creator_detail'),
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: false,
@@ -423,6 +496,10 @@
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            if (typeof I18n !== 'undefined') {
                I18n.updatePage($('.layui-table-view'));
                updatePagination();
            }
            pageCurr=curr;
            if (res.data.length === 0 && count !== 0) {
                tableIns.reload({
src/main/webapp/static/js/wrkDetlLog/wrkDetlLog.js
@@ -1,398 +1,421 @@
var pageCurr;
function getCol() {
    var cols = [
        {field: 'wrkNo', align: 'center',title: '工作号'}
        ,{field: 'ioTime$', align: 'center',title: '工作时间'}
        {field: 'wrkNo', align: 'center',title: I18n.t('work_no')}
        ,{field: 'ioTime$', align: 'center',title: I18n.t('work_time')}
    ];
    cols.push.apply(cols, detlCols);
    cols.push({field: 'modiUser$', align: 'center',title: '修改人员',hide: true}
        ,{field: 'modiTime$', align: 'center',title: '修改时间',hide: true}
    cols.push.apply(cols, getDetlCols());
    cols.push({field: 'modiUser$', align: 'center',title: I18n.t('modifier'),hide: true}
        ,{field: 'modiTime$', align: 'center',title: I18n.t('modify_time'),hide: true}
        ,{fixed: 'right', title: I18n.t('operation'), align: 'center', toolbar: '#operate', width: 120}
    )
    return cols;
}
layui.use(['table','laydate', 'form'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
function initTable() {
    layui.use(['table','laydate', 'form'], function(){
        var table = layui.table;
        var $ = layui.jquery;
        var layer = layui.layer;
        var layDate = layui.laydate;
        var form = layui.form;
    // 数据渲染
    tableIns = table.render({
        elem: '#wrkDetlLog',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/wrkDetlLogs/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();
            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
        // 数据渲染
        tableIns = table.render({
            elem: '#wrkDetlLog',
            headers: {token: localStorage.getItem('token')},
            url: baseUrl+'/wrkDetlLogs/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'
            },
            done: function (res, curr, count) {
            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();
            }
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(wrkDetlLog)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id);
        switch(obj.event) {
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    content: 'wrkDetlLog_detail.html',
                    success: function(layero, index){
                        layer.getChildFrame('#data-detail-submit-edit', index).hide();
                        clearFormVal(layer.getChildFrame('#detail', index));
                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                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';
                    }
                });
                break;
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                if (typeof I18n !== 'undefined') {
                    I18n.updatePage($('.layui-table-view'));
                    I18n.updateLayuiPagination();
                }
            }
        });
        // 监听排序事件
        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();
                    if (typeof I18n !== 'undefined') {
                        I18n.updatePage($('.layui-table-view'));
                        I18n.updateLayuiPagination();
                    }
                }
            });
        });
        // 监听头工具栏事件
        table.on('toolbar(wrkDetlLog)', function (obj) {
            var checkStatus = table.checkStatus(obj.config.id);
            switch(obj.event) {
                case 'addData':
                    layer.open({
                        type: 2,
                        title: I18n.t('add'),
                        maxmin: true,
                        area: [top.detailWidth, top.detailHeight],
                        content: 'wrkDetlLog_detail.html',
                        success: function(layero, index){
                            layer.getChildFrame('#data-detail-submit-edit', index).hide();
                            clearFormVal(layer.getChildFrame('#detail', index));
                            layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                        }
                    });
                    break;
                case 'deleteData':
                    var data = checkStatus.data;
                    if (data.length === 0){
                        layer.msg(I18n.t('please_select_data'));
                    } else {
                        layer.confirm(I18n.t('confirm_delete_prefix')+(data.length===1?I18n.t('this'):data.length)+I18n.t('confirm_delete_suffix'), function(){
                            $.ajax({
                                url: baseUrl+"/wrkDetlLog/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(I18n.t('confirm_export_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 = {
                            'wrkDetlLog': exportData,
                            'fields': fields
                        };
                        $.ajax({
                            url: baseUrl+"/wrkDetlLog/delete/auth",
                            url: baseUrl+"/wrkDetlLog/export/auth",
                            headers: {'token': localStorage.getItem('token')},
                            data: {param: JSON.stringify(data)},
                            data: JSON.stringify(param),
                            dataType:'json',
                            contentType:'application/json;charset=UTF-8',
                            method: 'POST',
                            traditional:true,
                            success: function (res) {
                                if (res.code === 200){
                                    layer.closeAll();
                                    tableReload(false);
                                } else if (res.code === 403){
                                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 '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 = {
                        'wrkDetlLog': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/wrkDetlLog/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg)
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(wrkDetlLog)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            // 详情
            case 'detail':
                layer.open({
                    type: 2,
                    title: '详情',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: true,
                    content: 'wrkDetlLog_detail.html',
                    success: function(layero, index){
                        setFormVal(layer.getChildFrame('#detail', index), data, true);
                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
                        layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                    }
                });
                break;
            // 编辑
            case 'edit':
                layer.open({
                    type: 2,
                    title: '修改',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    content: 'wrkDetlLog_detail.html',
                    success: function(layero, index){
                        layer.getChildFrame('#data-detail-submit-save', index).hide();
                        setFormVal(layer.getChildFrame('#detail', index), data, false);
                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
                        top.convertDisabled(layer.getChildFrame('', index), true);
                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                    }
                });
                break;
            case 'modiUser':
                var param = top.reObject(data).modiUser;
                if (param === undefined) {
                    layer.msg("无数据");
                } else {
                   layer.open({
                       type: 2,
                       title: '修改人员详情',
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: true,
                       content: '../user/user_detail.html',
                       success: function(layero, index){
                           $.ajax({
                               url: "baseUrl+/user/"+ param +"/auth",
                               headers: {'token': localStorage.getItem('token')},
                               method: 'GET',
                               success: function (res) {
                                   if (res.code === 200){
                                       setFormVal(layer.getChildFrame('#detail', index), res.data, true);
                                       top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
                                       layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
                                       layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                                       layero.find('iframe')[0].contentWindow.layui.form.render('select');
                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                                   } else if (res.code === 403){
                                       top.location.href = baseUrl+"/";
                                   }else {
                                       layer.msg(res.msg)
                                   }
                               }
                           })
                       }
                   });
                }
                break;
            case 'appeUser':
                var param = top.reObject(data).appeUser;
                if (param === undefined) {
                    layer.msg("无数据");
                } else {
                   layer.open({
                       type: 2,
                       title: '创建者详情',
                       maxmin: true,
                       area: [top.detailWidth, top.detailHeight],
                       shadeClose: true,
                       content: '../user/user_detail.html',
                       success: function(layero, index){
                           $.ajax({
                               url: "baseUrl+/user/"+ param +"/auth",
                               headers: {'token': localStorage.getItem('token')},
                               method: 'GET',
                               success: function (res) {
                                   if (res.code === 200){
                                       setFormVal(layer.getChildFrame('#detail', index), res.data, true);
                                       top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
                                       layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
                                       layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                                       layero.find('iframe')[0].contentWindow.layui.form.render('select');
                                       layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                                   } else if (res.code === 403){
                                       top.location.href = baseUrl+"/";
                                   }else {
                                       layer.msg(res.msg)
                                   }
                               }
                           })
                       }
                   });
                }
                break;
        }
    });
    // 数据保存动作
    form.on('submit(save)', function () {
        if (banMsg != null){
            layer.msg(banMsg);
            return;
        }
        method("add");
    });
    // 数据修改动作
    form.on('submit(edit)', function () {
        method("update")
    });
    function method(name){
        var index = layer.load(1, {
            shade: [0.5,'#000'] //0.1透明度的背景
        });
        var data = {
//            id: $('#id').val(),
            wrkNo: $('#wrkNo').val(),
            ioTime: top.strToDate($('#ioTime\\$').val()),
            matnr: $('#matnr').val(),
            lgnum: $('#lgnum').val(),
            tbnum: $('#tbnum').val(),
            tbpos: $('#tbpos').val(),
            zmatid: $('#zmatid').val(),
            maktx: $('#maktx').val(),
            werks: $('#werks').val(),
            anfme: $('#anfme').val(),
            altme: $('#altme').val(),
            zpallet: $('#zpallet').val(),
            bname: $('#bname').val(),
            memo: $('#memo').val(),
            modiUser: $('#modiUser').val(),
            modiTime: top.strToDate($('#modiTime\\$').val()),
            appeUser: $('#appeUser').val(),
            appeTime: top.strToDate($('#appeTime\\$').val()),
            nista: $('#nista').val(),
        };
        $.ajax({
            url: baseUrl+"/wrkDetlLog/"+name+"/auth",
            headers: {'token': localStorage.getItem('token')},
            data: top.reObject(data),
            method: 'POST',
            success: function (res) {
                if (res.code === 200){
                    parent.layer.closeAll();
                    parent.$(".layui-laypage-btn")[0].click();
                    $("#data-detail :input").each(function () {
                        $(this).val("");
                    });
                } else if (res.code === 403){
                    top.location.href = baseUrl+"/";
                }else {
                    layer.msg(res.msg)
                }
                layer.close(index);
                    break;
            }
        })
    }
        });
    // 复选框事件
    form.on('checkbox(detailCheckbox)', function (data) {
        var el = data.elem;
        if (el.checked) {
            $(el).val('Y');
        } else {
            $(el).val('N');
        // 监听行工具事件
        table.on('tool(wrkDetlLog)', function(obj){
            var data = obj.data;
            switch (obj.event) {
                // 详情
                case 'detail':
                    layer.open({
                        type: 2,
                        title: I18n.t('detail'),
                        maxmin: true,
                        area: [top.detailWidth, top.detailHeight],
                        shadeClose: true,
                        content: 'wrkDetlLog_detail.html',
                        success: function(layero, index){
                            setFormVal(layer.getChildFrame('#detail', index), data, true);
                            top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
                            layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
                            layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                            layero.find('iframe')[0].contentWindow.layui.form.render('select');
                            layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                        }
                    });
                    break;
                // 编辑
                case 'edit':
                    layer.open({
                        type: 2,
                        title: I18n.t('edit'),
                        maxmin: true,
                        area: [top.detailWidth, top.detailHeight],
                        content: 'wrkDetlLog_detail.html',
                        success: function(layero, index){
                            layer.getChildFrame('#data-detail-submit-save', index).hide();
                            setFormVal(layer.getChildFrame('#detail', index), data, false);
                            top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
                            top.convertDisabled(layer.getChildFrame('', index), true);
                            layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                            layero.find('iframe')[0].contentWindow.layui.form.render('select');
                            layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                        }
                    });
                    break;
                case 'modiUser':
                    var param = top.reObject(data).modiUser;
                    if (param === undefined) {
                        layer.msg("无数据");
                    } else {
                       layer.open({
                           type: 2,
                           title: I18n.t('modifier_detail'),
                           maxmin: true,
                           area: [top.detailWidth, top.detailHeight],
                           shadeClose: true,
                           content: '../user/user_detail.html',
                           success: function(layero, index){
                               $.ajax({
                                   url: "baseUrl+/user/"+ param +"/auth",
                                   headers: {'token': localStorage.getItem('token')},
                                   method: 'GET',
                                   success: function (res) {
                                       if (res.code === 200){
                                           setFormVal(layer.getChildFrame('#detail', index), res.data, true);
                                           top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
                                           layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
                                           layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                                           layero.find('iframe')[0].contentWindow.layui.form.render('select');
                                           layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                                       } else if (res.code === 403){
                                           top.location.href = baseUrl+"/";
                                       }else {
                                           layer.msg(res.msg)
                                       }
                                   }
                               })
                           }
                       });
                    }
                    break;
                case 'appeUser':
                    var param = top.reObject(data).appeUser;
                    if (param === undefined) {
                        layer.msg("无数据");
                    } else {
                       layer.open({
                           type: 2,
                           title: I18n.t('creator_detail'),
                           maxmin: true,
                           area: [top.detailWidth, top.detailHeight],
                           shadeClose: true,
                           content: '../user/user_detail.html',
                           success: function(layero, index){
                               $.ajax({
                                   url: "baseUrl+/user/"+ param +"/auth",
                                   headers: {'token': localStorage.getItem('token')},
                                   method: 'GET',
                                   success: function (res) {
                                       if (res.code === 200){
                                           setFormVal(layer.getChildFrame('#detail', index), res.data, true);
                                           top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
                                           layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
                                           layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                                           layero.find('iframe')[0].contentWindow.layui.form.render('select');
                                           layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                                       } else if (res.code === 403){
                                           top.location.href = baseUrl+"/";
                                       }else {
                                           layer.msg(res.msg)
                                       }
                                   }
                               })
                           }
                       });
                    }
                    break;
            }
        });
        // 数据保存动作
        form.on('submit(save)', function () {
            if (banMsg != null){
                layer.msg(banMsg);
                return;
            }
            method("add");
        });
        // 数据修改动作
        form.on('submit(edit)', function () {
            method("update")
        });
        function method(name){
            var index = layer.load(1, {
                shade: [0.5,'#000'] //0.1透明度的背景
            });
            var data = {
//            id: $('#id').val(),
                wrkNo: $('#wrkNo').val(),
                ioTime: top.strToDate($('#ioTime\\$').val()),
                matnr: $('#matnr').val(),
                lgnum: $('#lgnum').val(),
                tbnum: $('#tbnum').val(),
                tbpos: $('#tbpos').val(),
                zmatid: $('#zmatid').val(),
                maktx: $('#maktx').val(),
                werks: $('#werks').val(),
                anfme: $('#anfme').val(),
                altme: $('#altme').val(),
                zpallet: $('#zpallet').val(),
                bname: $('#bname').val(),
                memo: $('#memo').val(),
                modiUser: $('#modiUser').val(),
                modiTime: top.strToDate($('#modiTime\\$').val()),
                appeUser: $('#appeUser').val(),
                appeTime: top.strToDate($('#appeTime\\$').val()),
                nista: $('#nista').val(),
            };
            $.ajax({
                url: baseUrl+"/wrkDetlLog/"+name+"/auth",
                headers: {'token': localStorage.getItem('token')},
                data: top.reObject(data),
                method: 'POST',
                success: function (res) {
                    if (res.code === 200){
                        parent.layer.closeAll();
                        parent.$(".layui-laypage-btn")[0].click();
                        $("#data-detail :input").each(function () {
                            $(this).val("");
                        });
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    }else {
                        layer.msg(res.msg)
                    }
                    layer.close(index);
                }
            })
        }
    });
    // 搜索栏搜索事件
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
        // 复选框事件
        form.on('checkbox(detailCheckbox)', function (data) {
            var el = data.elem;
            if (el.checked) {
                $(el).val('Y');
            } else {
                $(el).val('N');
            }
        });
    // 搜索栏重置事件
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
        // 搜索栏搜索事件
        form.on('submit(search)', function (data) {
            pageCurr = 1;
            tableReload(false);
        });
    // 时间选择器
    layDate.render({
        elem: '#ioTime\\$',
        type: 'datetime'
    });
    layDate.render({
        elem: '#modiTime\\$',
        type: 'datetime'
    });
    layDate.render({
        elem: '#appeTime\\$',
        type: 'datetime'
    });
    layDate.render({
        elem: '.layui-laydate-range'
        ,type: 'datetime'
        ,range: true
    });
        // 搜索栏重置事件
        form.on('submit(reset)', function (data) {
            pageCurr = 1;
            clearFormVal($('#search-box'));
            tableReload(false);
        });
        // 时间选择器
        layDate.render({
            elem: '#ioTime\\$',
            type: 'datetime'
        });
        layDate.render({
            elem: '#modiTime\\$',
            type: 'datetime'
        });
        layDate.render({
            elem: '#appeTime\\$',
            type: 'datetime'
        });
        layDate.render({
            elem: '.layui-laydate-range'
            ,type: 'datetime'
            ,range: true
        });
    });
}
if (typeof I18n !== 'undefined' && I18n.isReady()) {
    initTable();
} else {
    $(document).on('i18n:ready', function() {
        initTable();
    });
}
$(document).on('i18n:languageChanged', function() {
    initTable();
});
// 关闭动作
@@ -425,6 +448,19 @@
                pageCurr -= 1;
            }
            limit(child);
            setTimeout(function() {
                if (typeof I18n !== 'undefined') {
                    if (child) {
                        if (typeof parent.I18n !== 'undefined') {
                            parent.I18n.updatePage(parent.layui.jquery('.layui-table-view'));
                            parent.I18n.updateLayuiPagination();
                        }
                    } else {
                        I18n.updatePage($('.layui-table-view'));
                        I18n.updateLayuiPagination();
                    }
                }
            }, 50);
        }
    });
}
src/main/webapp/static/js/wrkMast/wrkMast.js
@@ -1,11 +1,67 @@
var pageCurr;
var wrkNo;
layui.use(['table','laydate', 'form'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var doneCallback = 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';
            }
        });
        if (typeof I18n !== 'undefined') {
            I18n.updatePage($('.layui-table-view'));
            I18n.updateLayuiPagination();
        }
    };
    $(document).on('i18n:languageChanged', function() {
        tableIns.reload({
            cols: getCol(),
            done: doneCallback
        });
    });
    function getCol() {
        return [[
            {type: 'checkbox'}
            ,{field: 'wrkNo', align: 'center',title: I18n.t('work_no'),sort: true, width: 85}
            ,{field: 'ioTime$', align: 'center',title: I18n.t('work_time'),sort: true, width: 160}
            ,{field: 'wrkSts', align: 'center',title: I18n.t('work_status'), templet: function(d) {
                var key = 'wrk_status_' + d.wrkSts;
                var text = I18n.t(key);
                return text === key ? d.wrkSts$ : text;
            }}
            ,{field: 'ioType', align: 'center',title: I18n.t('transaction_type'), templet: function(d) {
                var key = 'io_type_' + d.ioType;
                var text = I18n.t(key);
                return text === key ? d.ioType$ : text;
            }}
            ,{field: 'ioPri', align: 'center',title: I18n.t('priority')}
            ,{field: 'crnNo$', align: 'center',title: I18n.t('crane')}
            ,{field: 'sourceStaNo$', align: 'center',title: I18n.t('source_station')}
            ,{field: 'staNo$', align: 'center',title: I18n.t('target_station')}
            ,{field: 'sourceLocNo$', align: 'center',title: I18n.t('source_location')}
            ,{field: 'locNo$', align: 'center',title: I18n.t('target_location')}
            ,{field: 'barcode', align: 'center',title: I18n.t('barcode')}
            ,{field: 'preHave', align: 'center',title: I18n.t('pre_existing'), hide: true}
            ,{field: 'takeNone', align: 'center',title: I18n.t('empty_op'), hide: true}
            ,{field: 'modiUser$', align: 'center',title: I18n.t('modifier'), hide:true}
            ,{field: 'modiTime$', align: 'center',title: I18n.t('modify_time'), hide:true, width: 160}
            ,{fixed: 'right', title: I18n.t('operation'), align: 'center', toolbar: '#operate', width:250}
        ]];
    }
    // 数据渲染
    tableIns = table.render({
@@ -18,56 +74,7 @@
        even: true,
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [[
            {type: 'checkbox'}
            ,{field: 'wrkNo', align: 'center',title: '工作号',sort: true, width: 85}
            ,{field: 'ioTime$', align: 'center',title: '工作时间',sort: true, width: 160}
            ,{field: 'wrkSts$', align: 'center',title: '工作状态'}
            ,{field: 'ioType$', align: 'center',title: '入出库类型'}
            ,{field: 'ioPri', align: 'center',title: '优先级'}
            ,{field: 'crnNo$', align: 'center',title: '堆垛机'}
            ,{field: 'sourceStaNo$', align: 'center',title: '源站'}
            ,{field: 'staNo$', align: 'center',title: '目标站'}
            ,{field: 'sourceLocNo$', align: 'center',title: '源库位'}
            ,{field: 'locNo$', align: 'center',title: '目标库位'}
            ,{field: 'barcode', align: 'center',title: '条码'}
            ,{field: 'preHave', align: 'center',title: '先入品', hide: true}
            ,{field: 'takeNone', align: 'center',title: '空操作', hide: true}
            // ,{field: 'picking', align: 'center',title: '拣料', templet:function(row){
            //         var html = "<input value='picking' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.picking === 'Y'){html += " checked ";}
            //         html += ">";
            //         return html;
            //     }}
            // ,{field: 'exitMk', align: 'center',title: '退出', templet:function(row){
            //         var html = "<input value='exitMk' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.exitMk === 'Y'){html += " checked ";}
            //         html += ">";
            //         return html;
            //     }}
            // ,{field: 'emptyMk', align: 'center',title: '空板', templet:function(row){
            //         var html = "<input value='emptyMk' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.emptyMk === 'Y'){html += " checked ";}
            //         html += ">";
            //         return html;
            //     }}
            //
            // ,{field: 'crnStrTime$', align: 'center',title: '堆垛机启动时间'}
            // ,{field: 'crnEndTime$', align: 'center',title: '堆垛机停止时间'}
            // ,{field: 'refIotime$', align: 'center',title: '拣料时间'}
            ,{field: 'modiUser$', align: 'center',title: '修改人员', hide:true}
            ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true, width: 160}
            // ,{field: 'memo', align: 'center',title: '备注'}
            //
            // ,{field: 'fullPlt', align: 'center',title: '满板', templet:function(row){
            //         var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.fullPlt === 'Y'){html += " checked ";}
            //         html += ">";
            //         return html;
            //     }}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:250}
        ]],
        cols: getCol(),
        request: {
            pageName: 'curr',
            pageSize: 'limit'
@@ -83,21 +90,7 @@
        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';
                }
            });
        }
        done: doneCallback
    });
    // 监听排序事件
@@ -113,13 +106,7 @@
            page: {
                curr: 1
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                pageCurr=curr;
                limit();
            }
            done: doneCallback
        });
    });
@@ -190,7 +177,7 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: I18n.t('add'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -205,9 +192,9 @@
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(I18n.t('please_select_data'));
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    layer.confirm(I18n.t('confirm_delete_prefix')+data.length+I18n.t('confirm_delete_suffix'), function(){
                        $.ajax({
                            url: baseUrl+"/wrkMast/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -229,7 +216,7 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_export'), {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -281,7 +268,7 @@
                // 弹层显示
                layer.open({
                    type: 2,
                    title: '工作档明细',
                    title: I18n.t('work_order_detail'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: true,
@@ -292,7 +279,7 @@
                break;
            // 完成
            case 'complete':
                layer.confirm('确认完成该笔工作档?', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_complete_work_order'), {title: I18n.t('work_no')+':'+data.wrkNo, shadeClose: true}, function(){
                    http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:1}, function (res) {
                        $(".layui-laypage-btn")[0].click();
                        layer.msg(data.wrkNo + res.msg);
@@ -304,7 +291,7 @@
            // 取消
            case 'cancel':
                if (data.pdcType === "Y") {
                    layer.confirm('当前任务关联ERP销售单,取消将重新生成出库作业,是否继续?', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){
                    layer.confirm(I18n.t('confirm_cancel_erp_order'), {title: I18n.t('work_no')+':'+data.wrkNo, shadeClose: true}, function(){
                        http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) {
                            $(".layui-laypage-btn")[0].click();
                            layer.msg(data.wrkNo + res.msg);
@@ -312,7 +299,7 @@
                        layer.closeAll();
                    });
                } else {
                    layer.confirm('确认取消该笔工作档?', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){
                    layer.confirm(I18n.t('confirm_cancel_work_order'), {title: I18n.t('work_no')+':'+data.wrkNo, shadeClose: true}, function(){
                        http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) {
                            $(".layui-laypage-btn")[0].click();
                            layer.msg(data.wrkNo + res.msg);
@@ -323,7 +310,7 @@
                break;
            //  拣料入库
            case 'pick':
                layer.confirm('拣料入库该笔工作档?', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_pick_work_order'), {title: I18n.t('work_no')+':'+data.wrkNo, shadeClose: true}, function(){
                    http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:3}, function (res) {
                        $(".layui-laypage-btn")[0].click();
                        layer.msg(data.wrkNo + res.msg);
@@ -333,7 +320,7 @@
                break;
            //  先入品
            case 'preHave':
                layer.confirm('任务发生先入品异常。如需重新入库,请确保货物已放至堆垛机出库站!', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_pre_existing_exception'), {title: I18n.t('work_no')+':'+data.wrkNo, shadeClose: true}, function(){
                    http.post(baseUrl+"/deal/preHave/start", {wrkNo: data.wrkNo}, function (res) {
                        $(".layui-laypage-btn")[0].click();
                        layer.msg(data.wrkNo + res.msg, {icon: 1});
@@ -343,7 +330,7 @@
                break;
            //  空操作
            case 'takeNone':
                layer.confirm('任务发送空操作异常!是否。。。。。。。。?', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_empty_op_exception'), {title: I18n.t('work_no')+':'+data.wrkNo, shadeClose: true}, function(){
                });
                break;
        }
@@ -546,22 +533,22 @@
            cellMinWidth: 50,
            cols: [[
                {type: 'checkbox'}
                ,{field: 'wrkNo', align: 'center',title: '工作号'}
                ,{field: 'ioTime$', align: 'center',title: '工作时间'}
                ,{field: 'matnr', align: 'center',title: '物料'}
                ,{field: 'lgnum', align: 'center',title: '仓库号'}
                ,{field: 'tbnum', align: 'center',title: '转储请求编号'}
                ,{field: 'tbpos', align: 'center',title: '行项目'}
                ,{field: 'zmatid', align: 'center',title: '物料标签ID'}
                ,{field: 'maktx', align: 'center',title: '物料描述'}
                ,{field: 'werks', align: 'center',title: '工厂'}
                ,{field: 'anfme', align: 'center',title: '数量'}
                ,{field: 'altme', align: 'center',title: '单位'}
                ,{field: 'zpallet', align: 'center',title: '托盘条码'}
                ,{field: 'bname', align: 'center',title: '用户ID'}
                ,{field: 'memo', align: 'center',title: '备注'}
                ,{field: 'wrkNo', align: 'center',title: I18n.t('work_no')}
                ,{field: 'ioTime$', align: 'center',title: I18n.t('work_time')}
                ,{field: 'matnr', align: 'center',title: I18n.t('material')}
                ,{field: 'lgnum', align: 'center',title: I18n.t('warehouse_no')}
                ,{field: 'tbnum', align: 'center',title: I18n.t('transfer_req_no')}
                ,{field: 'tbpos', align: 'center',title: I18n.t('item_no')}
                ,{field: 'zmatid', align: 'center',title: I18n.t('material_label_id')}
                ,{field: 'maktx', align: 'center',title: I18n.t('material_desc')}
                ,{field: 'werks', align: 'center',title: I18n.t('factory')}
                ,{field: 'anfme', align: 'center',title: I18n.t('quantity')}
                ,{field: 'altme', align: 'center',title: I18n.t('unit')}
                ,{field: 'zpallet', align: 'center',title: I18n.t('pallet_barcode')}
                ,{field: 'bname', align: 'center',title: I18n.t('user_id')}
                ,{field: 'memo', align: 'center',title: I18n.t('remark')}
                ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:50}
                ,{fixed: 'right', title: I18n.t('operation'), align: 'center', toolbar: '#operate', width:50}
            ]],
            request: {
                pageName: 'curr',
@@ -616,6 +603,10 @@
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            if (typeof I18n !== 'undefined') {
                I18n.updatePage($('.layui-table-view'));
                I18n.updateLayuiPagination();
            }
            pageCurr=curr;
            if (res.data.length === 0 && count !== 0) {
                tableIns.reload({
src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
@@ -9,30 +9,95 @@
    var form = layui.form;
    // 数据渲染
    tableIns = table.render({
        elem: '#wrkMastLog',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/wrkMastLog/list/auth',
        page: true,
        limit: 16,
        limits: [16, 30, 50, 100, 200, 500],
        even: true,
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [[
    function initTable() {
        tableIns = table.render({
            elem: '#wrkMastLog',
            headers: {token: localStorage.getItem('token')},
            url: baseUrl+'/wrkMastLog/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: doneCallback
        });
    }
    if (I18n.isReady()) {
        initTable();
    } else {
        $(document).on('i18n:ready', initTable);
    }
    var doneCallback = 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';
            }
        });
        setTimeout(function() {
            if (typeof I18n !== 'undefined') {
                I18n.updatePage($('.layui-table-view'));
                I18n.updateLayuiPagination();
            }
        }, 50);
    };
    $(document).on('i18n:languageChanged', function() {
        tableIns.reload({
            cols: getCol(),
            done: doneCallback
        });
    });
    function getCol() {
        return [[
            // {type: 'checkbox'}
//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
//             ,{field: 'id', align: 'center',title: '编号'}
            {field: 'wrkNo', align: 'center',title: '工作号',event: 'wrkNo', sort: true}
            ,{field: 'ioTime$', align: 'center',title: '工作时间', width:160, sort: true}
            ,{field: 'wrkSts$', align: 'center',title: '工作状态', width:160}
            ,{field: 'ioType$', align: 'center',title: '入出库类型', width:160}
            ,{field: 'ioPri', align: 'center',title: '优先级'}
            ,{field: 'crnNo$', align: 'center',title: '堆垛机号'}
            ,{field: 'sourceStaNo$', align: 'center',title: '源站'}
            ,{field: 'staNo$', align: 'center',title: '目标站'}
            ,{field: 'sourceLocNo$', align: 'center',title: '源库位'}
            ,{field: 'locNo$', align: 'center',title: '目标库位'}
            {field: 'wrkNo', align: 'center',title: I18n.t('work_no'),event: 'wrkNo', sort: true}
            ,{field: 'ioTime$', align: 'center',title: I18n.t('work_time'), width:160, sort: true}
            ,{field: 'wrkSts', align: 'center',title: I18n.t('work_status'), width:160, templet: function(d) {
                var key = 'wrk_status_' + d.wrkSts;
                var text = I18n.t(key);
                return text === key ? d.wrkSts$ : text;
            }}
            ,{field: 'ioType', align: 'center',title: I18n.t('transaction_type'), width:160, templet: function(d) {
                var key = 'io_type_' + d.ioType;
                var text = I18n.t(key);
                return text === key ? d.ioType$ : text;
            }}
            ,{field: 'ioPri', align: 'center',title: I18n.t('priority')}
            ,{field: 'crnNo$', align: 'center',title: I18n.t('crane_no')}
            ,{field: 'sourceStaNo$', align: 'center',title: I18n.t('source_station')}
            ,{field: 'staNo$', align: 'center',title: I18n.t('target_station')}
            ,{field: 'sourceLocNo$', align: 'center',title: I18n.t('source_location')}
            ,{field: 'locNo$', align: 'center',title: I18n.t('target_location')}
            // ,{field: 'picking', align: 'center',title: '拣料', templet:function(row){
            //         var html = "<input value='picking' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.picking === 'Y'){html += " checked ";}
@@ -55,11 +120,11 @@
            // ,{field: 'crnStrTime$', align: 'center',title: '堆垛机启动时间'}
            // ,{field: 'crnEndTime$', align: 'center',title: '堆垛机停止时间'}
            // ,{field: 'plcStrTime$', align: 'center',title: '拣料时间'}
            ,{field: 'modiUser$', align: 'center',title: '修改人员', hide:true}
            ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true}
            ,{field: 'modiUser$', align: 'center',title: I18n.t('modifier'), hide:true}
            ,{field: 'modiTime$', align: 'center',title: I18n.t('modify_time'), hide:true}
            // ,{field: 'appeUser$', align: 'center',title: '创建者',event: 'appeUser', style: 'cursor:pointer'}
            // ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{field: 'barcode', align: 'center',title: '条码'}
            ,{field: 'barcode', align: 'center',title: I18n.t('barcode')}
            // ,{field: 'fullPlt', align: 'center',title: '满板', templet:function(row){
            //         var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.fullPlt === 'Y'){html += " checked ";}
@@ -67,39 +132,11 @@
            //         return html;
            //     }}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 80}
        ]],
        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';
                }
            });
        }
    });
            ,{fixed: 'right', title: I18n.t('operation'), align: 'center', width: 80, templet: function(d) {
                return '<a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detlShow" data-i18n="detail">' + I18n.t('detail') + '</a>';
            }}
        ]];
    }
    // 监听排序事件
    table.on('sort(wrkMastLog)', function (obj) {
@@ -120,6 +157,10 @@
                }
                pageCurr=curr;
                limit();
                if (typeof I18n !== 'undefined') {
                    I18n.updatePage($('.layui-table-view'));
                    I18n.updateLayuiPagination();
                }
            }
        });
    });
@@ -131,7 +172,7 @@
            case 'addData':
                layer.open({
                    type: 2,
                    title: '新增',
                    title: I18n.t('add'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -154,9 +195,9 @@
            case 'deleteData':
                var data = checkStatus.data;
                if (data.length === 0){
                    layer.msg('请选择数据');
                    layer.msg(I18n.t('please_select_data'));
                } else {
                    layer.confirm('确定删除'+(data.length===1?'此':data.length)+'条数据吗', function(){
                    layer.confirm(I18n.t('confirm_delete_prefix')+(data.length===1?I18n.t('this'):data.length)+I18n.t('confirm_delete_suffix'), function(){
                        $.ajax({
                            url: baseUrl+"/wrkMastLog/delete/auth",
                            headers: {'token': localStorage.getItem('token')},
@@ -178,7 +219,7 @@
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                layer.confirm(I18n.t('confirm_export_excel'), {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -231,7 +272,7 @@
                // 弹层显示
                layer.open({
                    type: 2,
                    title: '工作明细历史档',
                    title: I18n.t('work_order_detail_history'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: true,
@@ -244,7 +285,7 @@
            case 'detail':
                layer.open({
                    type: 2,
                    title: '详情',
                    title: I18n.t('detail'),
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: false,
@@ -474,6 +515,20 @@
                pageCurr -= 1;
            }
            limit(child);
            setTimeout(function() {
                if (typeof I18n !== 'undefined') {
                    if (child) {
                        // If reloading parent table from iframe
                        if (typeof parent.I18n !== 'undefined') {
                            parent.I18n.updatePage(parent.layui.jquery('.layui-table-view'));
                            parent.I18n.updateLayuiPagination();
                        }
                    } else {
                        I18n.updatePage($('.layui-table-view'));
                        I18n.updateLayuiPagination();
                    }
                }
            }, 50);
        }
    });
}
src/main/webapp/static/layui/lay/modules/admin.js
@@ -1,4 +1,4 @@
/** EasyWeb iframe v3.1.8 date:2020-05-04 License By http://easyweb.vip */
/** EasyWeb iframe v3.1.8 date:2020-05-04 License By http://easyweb.vip */
layui.define(['layer'], function (exports) {
    var $ = layui.jquery;
@@ -421,10 +421,10 @@
        admin.closeTabOperNav();
        var $title = $(tabDOM + '>.layui-tab-title');
        if (!url) {
            if ($title.find('li').first().hasClass('layui-this')) return layer.msg('主页不能关闭', {icon: 2});
            if ($title.find('li').first().hasClass('layui-this')) return layer.msg(typeof I18n !== 'undefined' ? I18n.t('主页不能关闭') : '主页不能关闭', {icon: 2});
            $title.find('li.layui-this').find('.layui-tab-close').trigger('click');
        } else {
            if (url === $title.find('li').first().attr('lay-id')) return layer.msg('主页不能关闭', {icon: 2});
            if (url === $title.find('li').first().attr('lay-id')) return layer.msg(typeof I18n !== 'undefined' ? I18n.t('主页不能关闭') : '主页不能关闭', {icon: 2});
            $title.find('li[lay-id="' + url + '"]').find('.layui-tab-close').trigger('click');
        }
    };
src/main/webapp/static/layui/lay/modules/index.js
@@ -31,8 +31,21 @@
                    return admin.activeNav(index.mTabPosition);
                }
                mIsAddTab = true;
                var titleHtml = param.menuName || '';
                if (!param.i18nKey && param.menuPath) {
                    var $menuItem = $(sideDOM).find('a[lay-href="' + param.menuPath + '"]');
                    if ($menuItem.length > 0) {
                        param.i18nKey = $menuItem.attr('data-i18n-key');
                    }
                }
                if (param.i18nKey && typeof I18n !== 'undefined') {
                    titleHtml = I18n.t(param.i18nKey);
                }
                if (param.i18nKey) {
                    titleHtml = '<span data-i18n="' + param.i18nKey + '">' + titleHtml + '</span>';
                }
                element.tabAdd(tabFilter, {
                    id: param.menuPath, title: '<span class="title">' + (param.menuName || '') + '</span>',
                    id: param.menuPath, title: '<span class="title">' + titleHtml + '</span>',
                    content: '<iframe class="admin-iframe" lay-id="' + param.menuPath + '" src="' + param.menuPath +
                        '" onload="layui.index.hideLoading(this);" frameborder="0"></iframe>'
                });
@@ -63,11 +76,16 @@
            index.mTabList.splice(0, index.mTabList.length);
            if (param.menuPath === index.homeUrl) {
                index.mTabPosition = undefined;
                index.setTabTitle($(param.menuName).text() || $(sideDOM + ' [lay-href="' + index.homeUrl + '"]').text() || '主页');
                var homeTitle = $(param.menuName).text() || $(sideDOM + ' [lay-href="' + index.homeUrl + '"]').text() || '<span data-i18n="home">主页</span>';
                index.setTabTitle(homeTitle);
            } else {
                index.mTabPosition = param.menuPath;
                index.mTabList.push(param);
                index.setTabTitle(param.menuName);
                var titleHtml = param.menuName || '';
                if (param.i18nKey) {
                    titleHtml = '<span data-i18n="' + param.i18nKey + '">' + titleHtml + '</span>';
                }
                index.setTabTitle(titleHtml);
            }
            if (!setter.cacheTab) return;
            admin.putTempData('indexTabs', index.mTabList);
@@ -97,7 +115,7 @@
    index.openTab = function (param) {
        if (window !== top && !admin.isTop() && top.layui && top.layui.index) return top.layui.index.openTab(param);
        if (param.end) tabEndCall[param.url] = param.end;
        index.loadView({menuPath: param.url, menuName: param.title});
        index.loadView({menuPath: param.url, menuName: param.title, i18nKey: param.i18nKey});
    };
    /** 关闭tab */
@@ -196,9 +214,9 @@
            '   <ul class="layui-nav" lay-filter="admin-pagetabs-nav">',
            '      <li class="layui-nav-item" lay-unselect>',
            '         <dl class="layui-nav-child layui-anim-fadein">',
            '            <dd ew-event="closeThisTabs" lay-unselect><a>关闭当前标签页</a></dd>',
            '            <dd ew-event="closeOtherTabs" lay-unselect><a>关闭其它标签页</a></dd>',
            '            <dd ew-event="closeAllTabs" lay-unselect><a>关闭全部标签页</a></dd>',
            '            <dd ew-event="closeThisTabs" lay-unselect><a data-i18n="关闭当前标签页">关闭当前标签页</a></dd>',
            '            <dd ew-event="closeOtherTabs" lay-unselect><a data-i18n="关闭其他标签页">关闭其它标签页</a></dd>',
            '            <dd ew-event="closeAllTabs" lay-unselect><a data-i18n="关闭所有标签页">关闭全部标签页</a></dd>',
            '         </dl>',
            '      </li>',
            '   </ul>',
@@ -214,6 +232,7 @@
        if (!href || href === '#') return;
        if (href.indexOf('javascript:') === 0) return new Function(href.substring(11))();
        var name = $that.attr('ew-title') || $that.text().replace(/(^\s*)|(\s*$)/g, '');
        var i18nKey = $that.attr('data-i18n-key');
        var end = $that.attr('ew-end');
        try {
            if (end) end = new Function(end);
@@ -221,7 +240,7 @@
        } catch (e) {
            console.error(e);
        }
        index.openTab({url: href, title: name, end: end});
        index.openTab({url: href, title: name, end: end, i18nKey: i18nKey});
        layui.event.call(this, 'admin', 'side({*})', {href: href});
    });
@@ -269,26 +288,26 @@
                var layId = $(this).attr('lay-id');
                layui.contextMenu.show([{
                    icon: 'layui-icon layui-icon-refresh',
                    name: '刷新当前',
                    name: typeof I18n !== 'undefined' ? I18n.t('刷新') : '刷新当前',
                    click: function () {
                        element.tabChange(tabFilter, layId);
                        if ('true' != $(tabDOM).attr('lay-autoRefresh')) admin.refresh(layId);
                    }
                }, {
                    icon: 'layui-icon layui-icon-close-fill ctx-ic-lg',
                    name: '关闭当前',
                    name: typeof I18n !== 'undefined' ? I18n.t('关闭当前') : '关闭当前',
                    click: function () {
                        admin.closeThisTabs(layId);
                    }
                }, {
                    icon: 'layui-icon layui-icon-unlink',
                    name: '关闭其他',
                    name: typeof I18n !== 'undefined' ? I18n.t('关闭其他') : '关闭其他',
                    click: function () {
                        admin.closeOtherTabs(layId);
                    }
                }, {
                    icon: 'layui-icon layui-icon-close ctx-ic-lg',
                    name: '关闭全部',
                    name: typeof I18n !== 'undefined' ? I18n.t('关闭所有') : '关闭全部',
                    click: function () {
                        admin.closeAllTabs();
                    }
src/main/webapp/static/layuiadmin/lib/index.js
@@ -19,7 +19,7 @@
  ,view = layui.view
  
  //打开标签页
  ,openTabsPage = function(url, text){
  ,openTabsPage = function(url, text, i18nKey){
    //遍历页签选项卡
    var matchTo
    ,tabs = $('#LAY_app_tabsheader>li')
@@ -37,6 +37,10 @@
    
    text = text || '新标签页';
    
    if(i18nKey && typeof I18n !== 'undefined'){
      text = I18n.t(i18nKey);
    }
    if(setter.pageTabs){
      //如果未在选项卡中匹配到,则追加选项卡
      if(!matchTo){
@@ -47,7 +51,7 @@
        ].join(''));
        tabsPage.index = tabs.length;
        element.tabAdd(FILTER_TAB_TBAS, {
          title: '<span>'+ text +'</span>'
          title: (i18nKey ? '<span data-i18n="'+ i18nKey +'">' : '<span>') + text + '</span>'
          ,id: url
          ,attr: path
        });
src/main/webapp/views/404.html
@@ -6,11 +6,4 @@
</head>
<body background="../static/image/404.jpg" style="background-repeat:no-repeat; background-size:100% 100%; background-attachment:fixed;">
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/adjDetl/adjDetl.html
@@ -72,12 +72,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/adjDetl/adjDetl_detail.html
@@ -141,13 +141,6 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/api/api.html
@@ -52,12 +52,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/api/api_detail.html
@@ -86,13 +86,6 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/apiLog/apiLog.html
@@ -180,12 +180,5 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/autoMove/autoMove.html
@@ -134,12 +134,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basCrnError/basCrnError.html
@@ -53,11 +53,6 @@
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basCrnError/basCrnError_detail.html
@@ -87,13 +87,6 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/basCrnOpt/basCrnOpt.html
@@ -69,12 +69,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basCrnOpt/basCrnOpt_detail.html
@@ -145,13 +145,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/basCrnStatus/basCrnStatus.html
@@ -52,12 +52,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basCrnStatus/basCrnStatus_detail.html
@@ -87,13 +87,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/basCrnp/basCrnp.html
@@ -116,12 +116,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basCrnp/basCrnp_detail.html
@@ -213,13 +213,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/basDevp/basDevp.html
@@ -80,12 +80,6 @@
    </div>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basDevp/basDevp_detail.html
@@ -256,13 +256,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/basErrLog/basErrLog.html
@@ -78,12 +78,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basErrLog/basErrLog_detail.html
@@ -199,13 +199,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/basLocSts/basLocSts.html
@@ -16,14 +16,14 @@
<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="loc_sts" placeholder="库位状态代号" autocomplete="off">
            <input class="layui-input" type="text" name="loc_sts" placeholder="库位状态代号" autocomplete="off" data-i18n-placeholder="loc_status_code">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -31,31 +31,23 @@
<table class="layui-hide" id="basLocSts" lay-filter="basLocSts"></table>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData" data-i18n="add">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData" data-i18n="delete">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-xs layui-btn-normal btn-edit" lay-event="edit" data-i18n="modify">修改</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/basLocSts/basLocSts.js" charset="utf-8"></script>
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basLocSts/basLocSts_detail.html
@@ -16,19 +16,19 @@
<div id="data-detail" class="layer_self_wrap">
    <form id="detail" class="layui-form" style="text-align: center;">
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span>库位状态代号:</label>
            <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span><span data-i18n="loc_status_code">库位状态代号</span>:</label>
            <div class="layui-input-inline">
                <input id="locSts" class="layui-input" type="text" onkeyup="check(this.id, 'basLocSts')" lay-verify="required">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label" style="font-size: x-small">库位状态描述:</label>
            <label class="layui-form-label" style="font-size: x-small"><span data-i18n="loc_status_desc">库位状态描述</span>:</label>
            <div class="layui-input-inline">
                <input id="locDesc" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">修改人员:</label>
            <label class="layui-form-label"><span data-i18n="modifier">修改人员</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="modiUser" class="layui-input" type="text" style="display: none">
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -58,7 +58,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">添加时间:</label>
            <label class="layui-form-label"><span data-i18n="add_time">添加时间</span>:</label>
            <div class="layui-input-inline">
                <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
            </div>
@@ -68,28 +68,22 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="modify">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix"></span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix"></span></span>
        </div>
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/basLocSts/basLocSts.js" charset="utf-8"></script>
</html>
src/main/webapp/views/basPlcerror/basPlcerror.html
@@ -52,12 +52,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basPlcerror/basPlcerror_detail.html
@@ -87,13 +87,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/basWhs/basWhs.html
@@ -54,12 +54,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basWhs/basWhs_detail.html
@@ -92,12 +92,6 @@
<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/basWhs/basWhs.js" charset="utf-8"></script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basWrkIotype/basWrkIotype.html
@@ -16,14 +16,14 @@
<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="io_type" placeholder="入出类型代号" autocomplete="off">
            <input class="layui-input" type="text" name="io_type" placeholder="入出类型代号" autocomplete="off" data-i18n-placeholder="io_type_code">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -31,31 +31,23 @@
<table class="layui-hide" id="basWrkIotype" lay-filter="basWrkIotype"></table>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detail" data-i18n="detail">详情</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/basWrkIotype/basWrkIotype.js" charset="utf-8"></script>
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basWrkIotype/basWrkIotype_detail.html
@@ -16,7 +16,7 @@
<div id="data-detail" class="layer_self_wrap">
    <form id="detail" class="layui-form" style="text-align: center">
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span>入出类型代号:</label>
            <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span><span data-i18n="io_type_code">入出类型代号</span>:</label>
            <div class="layui-input-inline">
                <input id="ioType" class="layui-input" type="text" onkeyup="check(this.id, 'basWrkIotype')"  lay-verify="required|number">
            </div>
@@ -28,7 +28,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label" style="font-size: x-small">入出类型描述:</label>
            <label class="layui-form-label" style="font-size: x-small"><span data-i18n="io_type_desc">入出类型描述</span>:</label>
            <div class="layui-input-inline">
                <input id="ioDesc" class="layui-input" type="text">
            </div>
@@ -74,13 +74,13 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
@@ -89,13 +89,7 @@
<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/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/basWrkIotype/basWrkIotype.js" charset="utf-8"></script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basWrkStatus/basWrkStatus.html
@@ -16,14 +16,14 @@
<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="wrk_sts" placeholder="代号" autocomplete="off">
            <input class="layui-input" type="text" name="wrk_sts" placeholder="代号" autocomplete="off" data-i18n-placeholder="code">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -31,18 +31,19 @@
<table class="layui-hide" id="basWrkStatus" lay-filter="basWrkStatus"></table>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData" data-i18n="add">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData" data-i18n="delete">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit" data-i18n="edit">编辑</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.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/basWrkStatus/basWrkStatus.js" charset="utf-8"></script>
@@ -50,12 +51,5 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/basWrkStatus/basWrkStatus_detail.html
@@ -24,22 +24,22 @@
        </div>
    -->
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label"><span class="not-null">*</span>代  号:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="code">代  号</span>:</label>
            <div class="layui-input-inline">
                <input id="wrkSts" class="layui-input" type="text" onkeyup="check(this.id, 'basWrkStatus')"  lay-verify="required|number">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label"><span class="not-null">*</span>状态描述:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="status_desc">状态描述</span>:</label>
            <div class="layui-input-inline">
                <input id="wrkDesc" class="layui-input" type="text"  lay-verify="required">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">修改人员:</label>
            <label class="layui-form-label"><span data-i18n="modifier">修改人员</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="modiUser" class="layui-input" type="text" style="display: none">
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur() data-i18n-placeholder="input_placeholder">
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -48,16 +48,16 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">修改时间:</label>
            <label class="layui-form-label"><span data-i18n="modify_time">修改时间</span>:</label>
            <div class="layui-input-inline">
                <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">创 建 者:</label>
            <label class="layui-form-label"><span data-i18n="creator">创 建 者</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="appeUser" class="layui-input" type="text" style="display: none">
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur() data-i18n-placeholder="input_placeholder">
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -66,7 +66,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">添加时间:</label>
            <label class="layui-form-label"><span data-i18n="add_time">添加时间</span>:</label>
            <div class="layui-input-inline">
                <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
            </div>
@@ -76,13 +76,13 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
@@ -92,12 +92,6 @@
<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/basWrkStatus/basWrkStatus.js" charset="utf-8"></script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>s
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
</html>
src/main/webapp/views/config/config.html
@@ -51,12 +51,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/config/config_detail.html
@@ -79,12 +79,6 @@
<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/config/config.js" charset="utf-8"></script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/detail.html
@@ -169,11 +169,5 @@
        });
    });
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/docType/docType.html
@@ -116,12 +116,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/errorWrkMast/errorWrkMast.html
@@ -119,12 +119,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/handWrkMast/handWrkMast.html
@@ -132,12 +132,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/handWrkMast/wrkDetlLog.html
@@ -89,12 +89,6 @@
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/home/console.html
@@ -2,7 +2,7 @@
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
    <title data-i18n="首页">首页</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">
@@ -12,6 +12,7 @@
    <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
    <script type="text/javascript" src="../../static/js/echarts/echarts.min.js"></script>
    <script type="text/javascript" src="../../static/js/echarts/highcharts.js"></script>
    <script src="../../static/js/i18n/i18n-helper.js"></script>
    <style>
        body {
            background-color: #f1f1f1;
@@ -99,17 +100,20 @@
    </div>
</div>
<!--表格数据-->
<div class="home-elem loc-retention">
    <div class="layui-form">
        <div id="form-header">库存滞留时间统计表</div>
        <table class="layui-hide" id="stayTime" lay-filter="stayTime"></table>
    <!--表格数据-->
    <div class="home-elem loc-retention">
        <div class="layui-form">
            <div id="form-header" data-i18n="库存滞留时间统计表">库存滞留时间统计表</div>
            <table class="layui-hide" id="stayTime" lay-filter="stayTime"></table>
        </div>
    </div>
</div>
</body>
<script>
    pieCharts();
    lineCharts();
    $(document).on('i18n:ready', function() {
        pieCharts();
        lineCharts();
    });
    // 饼图
    function pieCharts(){
        $.ajax({
@@ -122,13 +126,22 @@
            success:function(res){
                var data = res.data;
                var dataPie=eval(data.rows);
                if (dataPie && typeof I18n !== 'undefined') {
                    for(var i=0; i<dataPie.length; i++) {
                        if(dataPie[i].name) {
                            dataPie[i].name = I18n.t(dataPie[i].name);
                        } else if (Array.isArray(dataPie[i]) && dataPie[i].length > 0) {
                            dataPie[i][0] = I18n.t(dataPie[i][0]);
                        }
                    }
                }
                var chart = {
                    plotBackgroundColor: null,
                    plotBorderWidth: null,
                    plotShadow: false
                };
                var title = {
                    text: '库位使用比例',
                    text: typeof I18n !== 'undefined' ? I18n.t('库位使用比例') : '库位使用比例',
                    margin:1,
                    style: {fontSize: '18px',color: '#777',fontWeight: 'bold'},
                    y: 5
@@ -151,7 +164,7 @@
                };
                var series= [{
                    type: 'pie',
                    name: '库位占比',
                    name: typeof I18n !== 'undefined' ? I18n.t('库位占比') : '库位占比',
                    data: dataPie
                }];
                var loading = {
@@ -185,8 +198,17 @@
            success: function (res) {
                var data = res.data;
                var dataPie = eval(data.rows);
                if (dataPie && typeof I18n !== 'undefined') {
                    for(var i=0; i<dataPie.length; i++) {
                        if(dataPie[i].name) {
                            dataPie[i].name = I18n.t(dataPie[i].name);
                        } else if (Array.isArray(dataPie[i]) && dataPie[i].length > 0) {
                            dataPie[i][0] = I18n.t(dataPie[i][0]);
                        }
                    }
                }
                var title = {
                    text: '日入出库数量',
                    text: typeof I18n !== 'undefined' ? I18n.t('日入出库数量') : '日入出库数量',
                    margin: 1,
                    style: {fontSize: '18px',color: '#777',fontWeight: 'bold'},
                    y: 5
@@ -197,7 +219,7 @@
                };
                var yAxis = {
                    title: {
                        text: '入/出库数量'
                        text: typeof I18n !== 'undefined' ? I18n.t('入_出库数量') : '入/出库数量'
                    },
                    plotLines: [{
                        value: 0,
@@ -233,76 +255,106 @@
    // 表格
    var pageCurr;
    var tableIns;
    function getCol() {
        var cols = [
            {field: 'appeTime$', title: '入库时间', align: 'center', width: 200}
            ,{field: 'stay_time', align: 'center',title: '滞留天数'}
            ,{field: 'loc_no', align: 'center',title: '库位号'}
            {field: 'appeTime$', title: typeof I18n !== 'undefined' ? I18n.t('入库时间') : '入库时间', align: 'center', width: 200}
            ,{field: 'stay_time', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('滞留天数') : '滞留天数'}
            ,{field: 'loc_no', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('库位号') : '库位号'}
        ];
        cols.push.apply(cols, detlCols);
        cols.push.apply(cols, getDetlCols());
        return cols;
    }
    // 监听语言切换事件
    $(document).on('i18n:languageChanged', function() {
        pieCharts();
        lineCharts();
        if (tableIns) {
            tableIns.reload({
                cols: [getCol()],
                text: { none: typeof I18n !== 'undefined' ? I18n.t('no_data') : 'No Data' }
            });
        }
    });
    layui.use(['table','laydate', 'form'], function() {
        var table = layui.table;
        var $ = layui.jquery;
        var layer = layui.layer;
        // 数据渲染
        tableIns = table.render({
            elem: '#stayTime',
            headers: {token: localStorage.getItem('token')},
            url: baseUrl+'/report/viewStayTimeList.action',
            page: true,
            limit: 10,
            toolbar: '#toolbar',
            even: true,
            cellMinWidth: 50,
            crossDomain: true,
            cols: [getCol()],
            request: {
                pageName: 'curr',
                pageSize: 'limit'
            },
            parseData: function (res) {
                return {
                    'code': res.code,
                    'msg': res.msg,
                    'count': res.data.total,
                    'data': res.data.records
                }
            },
            response: {
                statusCode: 200
            },
            done: function(res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                pageCurr=curr;
            }
        });
        // 监听排序事件
        table.on('sort(stayTime)', 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
        function initTable() {
            // 数据渲染
            tableIns = table.render({
                elem: '#stayTime',
                headers: {token: localStorage.getItem('token')},
                url: baseUrl+'/report/viewStayTimeList.action',
                page: true,
                limit: 10,
                toolbar: '#toolbar',
                even: true,
                cellMinWidth: 50,
                crossDomain: true,
                cols: [getCol()],
                text: { none: typeof I18n !== 'undefined' ? I18n.t('no_data') : 'No Data' },
                request: {
                    pageName: 'curr',
                    pageSize: 'limit'
                },
                done: function (res, curr, count) {
                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;
                    if (typeof I18n !== 'undefined') {
                        I18n.updateLayuiPagination();
                    }
                }
            });
        });
            // 监听排序事件
            table.on('sort(stayTime)', 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;
                        if (typeof I18n !== 'undefined') {
                            I18n.updateLayuiPagination();
                        }
                    }
                });
            });
        }
        if (typeof I18n !== 'undefined' && I18n.isReady()) {
            initTable();
        } else {
            $(document).on('i18n:ready', function() {
                initTable();
            });
        }
    });
@@ -329,12 +381,5 @@
            if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        return fmt;
    }
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/home/navigation.html
@@ -2,7 +2,7 @@
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>仓储管理系统</title>
    <title data-i18n="仓储管理系统">仓储管理系统</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">
@@ -114,24 +114,25 @@
<body>
<div class="header">
    <p style="margin-left:20px">请选择您要使用的模块</p>
    <p style="margin-left:20px" data-i18n="请选择您要使用的模块">请选择您要使用的模块</p>
</div>
<div class="center">
    <a class="list fn_1 moveUpDownFla1" ew-href="order/order.html?resourceId=40517">
        <p>单据管理</p>
        <p data-i18n="单据管理">单据管理</p>
    </a>
    <a class="list fn_2 moveUpDownFla2" ew-href="wrkMast/wrkMast.html?resourceId=214">
        <p>运行任务</p>
        <p data-i18n="运行任务">运行任务</p>
    </a>
    <a class="list fn_3 moveUpDownFla1" ew-href="stoMan/stoQue.html?resourceId=10276">
        <p>库存明细</p>
        <p data-i18n="库存明细">库存明细</p>
    </a>
</div>
</body>
<script type="text/javascript" src="../../static/js/common.js"></script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/common.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js"></script>
<script>
    layui.config({
@@ -143,10 +144,4 @@
        var admin = layui.admin;
    })
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.execute();
</script>
</html>
</html>
src/main/webapp/views/host/host.html
@@ -51,12 +51,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/host/host_detail.html
@@ -75,12 +75,6 @@
<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/host/host.js" charset="utf-8"></script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/index.html
@@ -10,9 +10,7 @@
  <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/loader.css" media="all">
  <!-- 引入 AutoTranslate 模块 -->
  <script src="https://cdn.jsdelivr.net/gh/Mr-vero/AutoTranslate@v.1.0.1/dist/autoTranslate.js"></script>
  <style>
    .layui-logo img {
      width: 25px;
@@ -45,17 +43,17 @@
    </ul>
    <ul class="layui-nav layui-layout-right">
      <li class="layui-nav-item" lay-unselect>
        <a><i class="layui-icon layui-icon-website"></i> <span id="currentLang">语言</span></a>
        <a><i class="layui-icon layui-icon-website"></i> <span id="currentLang" data-i18n="language">语言</span></a>
        <dl class="layui-nav-child">
          <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('chinese_simplified', '简体中文')">简体中文</a></dd>
          <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('zh-cn')">简体中文</a></dd>
<!--          <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('chinese_traditional', '繁體中文')">繁體中文</a></dd>-->
          <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('english', 'English')">English</a></dd>
          <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('en')">English</a></dd>
<!--          <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('japanese', '日本語')">日本語</a></dd>-->
<!--          <dd><a href="javascript:;" class="notranslate" onclick="changeLanguage('korean', '한국어')">한국어</a></dd>-->
        </dl>
      </li>
      <li class="layui-nav-item" lay-unselect id="licenseShow" style="display: none;user-select: none;">
        <div style="color: red;">临时许可证有效期:<span id="licenseDays">29</span>天</div>
        <div style="color: red;"><span data-i18n="license_validity_prefix">临时许可证有效期:</span><span id="licenseDays">29</span><span data-i18n="license_validity_suffix">天</span></div>
      </li>
      <li class="layui-nav-item layui-hide-xs" lay-unselect>
        <a ew-event="fullScreen" title="全屏"><i class="layui-icon layui-icon-screen-full"></i></a>
@@ -65,13 +63,13 @@
          <cite id="username" style="margin-right: 5px">管理员</cite>
        </a>
        <dl class="layui-nav-child">
          <dd lay-unselect><a ew-href="detail.html?resourceId=8">基本资料</a></dd>
          <dd lay-unselect><a ew-href="detail.html?resourceId=8" data-i18n="basic_info">基本资料</a></dd>
          <hr>
          <dd lay-unselect><a id="logout">退出</a></dd>
          <dd lay-unselect><a id="logout" data-i18n="logout">退出</a></dd>
        </dl>
      </li>
      <li class="layui-nav-item" lay-unselect>
        <a ew-event="theme" title="主题"><i class="layui-icon layui-icon-more-vertical"></i></a>
        <a ew-event="theme" title="主题" data-i18n="主题" data-i18n-attr="title"><i class="layui-icon layui-icon-more-vertical"></i></a>
      </li>
    </ul>
  </div>
@@ -103,6 +101,7 @@
<script type="text/javascript" src="../static/layui/layui.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"></script>
<script type="text/javascript" src="../static/js/i18n/i18n-helper.js"></script>
<script>
  console.log('%c 中扬立库平台 %c 1.0.0','background-color:rgb(53,73,94);color: #fff;border-radius:2px 0 0 2px;padding:2px 4px;','background-color:rgb(25,190,107);color: #fff;border-radius:0 2px 2px 0;padding:2px 4px;font: 9pt "Apercu Regular", Georgia, "Times New Roman", Times, serif;');
  $(function () {
@@ -123,6 +122,13 @@
    var admin = layui.admin;
    var notice = layui.notice;
    // Register Handlebars helper for i18n
    if (typeof Handlebars !== 'undefined' && typeof I18n !== 'undefined') {
        Handlebars.registerHelper('t', function(key) {
            return I18n.t(key);
        });
    }
    var easywebIframeMsg = localStorage.getItem("easyweb-iframe");
    if (!isEmpty(easywebIframeMsg)) {
      var easywebIframeObj = JSON.parse(easywebIframeMsg);
@@ -140,11 +146,21 @@
        // 关闭加载动画
        $('.layuimini-loader').fadeOut();
        if (res.code === 200) {
          // Register Handlebars helper for i18n
          Handlebars.registerHelper('t', function(key) {
              return I18n.t(key);
          });
          var tpl = $('#menuTpl').html();
          var template = Handlebars.compile(tpl);
          var html = template(res);
          $("#menu-main").html(html);
          element.init();
          // 默认加载主页 (Move here to ensure menu is loaded for tab title translation)
          index.loadHome({
            menuPath: baseUrl+'/views/home/navigation.html',
            menuName: '<i class="layui-icon layui-icon-home"></i>'
          });
        } else if (res.code === 403) {
          top.location.href = baseUrl + "/login";
        } else {
@@ -163,7 +179,7 @@
          if (days <= 30) {
            $("#licenseShow").show()
            $("#licenseDays").html(days)
            alert("临时许可有效期:" + days + "天")
            alert(I18n.t('license_validity_prefix') + days + I18n.t('license_validity_suffix'))
          }
        }else {
          top.location.href = baseUrl + "/login";
@@ -171,11 +187,11 @@
      }
    });
    // 默认加载主页
    index.loadHome({
      menuPath: baseUrl+'/views/home/navigation.html',
      menuName: '<i class="layui-icon layui-icon-home"></i>'
    });
    // 默认加载主页 (Moved to menu auth success callback)
    // index.loadHome({
    //   menuPath: baseUrl+'/views/home/navigation.html',
    //   menuName: '<i class="layui-icon layui-icon-home"></i>'
    // });
    $('#username').text(localStorage.getItem('username'));
@@ -196,32 +212,48 @@
<script type="text/html" id="menuTpl">
  {{#each data}}
  <li class="layui-nav-item">
    <a><i class="layui-icon {{this.menuIcon}}"></i>&emsp;<cite>{{this.menu}}</cite></a>
    <a><i class="layui-icon {{this.menuIcon}}"></i>&emsp;<cite data-i18n="{{this.menu}}">{{t this.menu}}</cite></a>
    <dl class="layui-nav-child">
      {{#each this.subMenu}}
      <dd><a lay-href="{{this.code}}?resourceId={{this.id}}">{{this.name}}</a></dd>
      <dd><a lay-href="{{this.code}}?resourceId={{this.id}}" data-i18n-key="{{this.name}}"><span data-i18n="{{this.name}}">{{t this.name}}</span></a></dd>
      {{/each}}
    </dl>
  </li>
  {{/each}}
</script>
<script src="../static/js/translate.js"></script>
<!--chinese_simplified-->
<!-- 引入 layui 的 translate.js AI翻译模块,自行下载这个js放到你自己项目里。 js下载地址:  https://raw.githubusercontent.com/xnx3/translate/refs/heads/master/extend/layui/layui_exts/translate/translate.js  -->
<script>
  translate.language.setLocal('chinese_simplified');     //设置本地语种,如果不设置会自动识别 http://translate.zvo.cn/4066.html
  translate.service.use('client.edge');     //设置翻译通道 http://translate.zvo.cn/4081.html
  translate.visual.webPageLoadTranslateBeforeHiddenText();     //网页打开时自动隐藏文字,翻译完成后显示译文。 参考文档 http://translate.zvo.cn/549731.html
  translate.progress.api.startUITip();     //启用翻译中的遮罩层 参考文档 http://translate.zvo.cn/407105.html
  translate.selectLanguageTag.show = false; //不出现的select的选择语言
  translate.ignore.class.push('notranslate'); //添加 notranslate 类到忽略列表,使语言下拉框不参与翻译
  window.onload = function () {     //当页面DOM加载完后执行翻译操作
    translate.execute();     //进行翻译的执行
  };
  // Initialize language display
  var currentLang = I18n.getLanguage();
  if (currentLang === 'en') {
      $('#currentLang').text('English');
  } else {
      $('#currentLang').text('简体中文');
  }
  // 切换语言函数
  function changeLanguage(lang, displayName) {
    translate.changeLanguage(lang);
  // Language switching function
  function changeLanguage(lang) {
      if (lang === I18n.getLanguage()) return;
      // Update parent page
      I18n.setLanguage(lang);
      // Update display text
      if (lang === 'en') {
          $('#currentLang').text('English');
      } else {
          $('#currentLang').text('简体中文');
      }
      // Notify all iframes
      $('iframe').each(function() {
          try {
              if (this.contentWindow && this.contentWindow.I18n) {
                  this.contentWindow.I18n.setLanguage(lang);
              }
          } catch (e) {
              console.error('Cannot access iframe:', e);
          }
      });
  }
</script>
</body>
src/main/webapp/views/ioWorks/locDetlQuery.html
@@ -224,12 +224,6 @@
            .removeAttr('selected');
    }
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/ioWorks/matQuery.html
@@ -190,12 +190,6 @@
            .removeAttr('selected');
    }
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/ioWorks/stockIn.html
@@ -141,12 +141,6 @@
    </form>
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/ioWorks/stockOut.html
@@ -121,12 +121,6 @@
    {{/each}}
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/locCheck/locCheck.html
@@ -160,12 +160,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/locDetl/locDetl.html
@@ -16,22 +16,22 @@
<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="loc_no" placeholder="库位号" autocomplete="off">
            <input class="layui-input" type="text" name="loc_no" placeholder="库位号" data-i18n-placeholder="location_no" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="zpallet" placeholder="托盘码" autocomplete="off">
            <input class="layui-input" type="text" name="zpallet" placeholder="托盘码" data-i18n-placeholder="pallet_barcode" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="matnr" placeholder="商品编号" autocomplete="off">
            <input class="layui-input" type="text" name="matnr" placeholder="商品编号" data-i18n-placeholder="product_code" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="specs" placeholder="规格" autocomplete="off">
            <input class="layui-input" type="text" name="specs" placeholder="规格" data-i18n-placeholder="spec" autocomplete="off">
        </div>
    </div>
<!--    <div class="layui-inline">-->
@@ -41,15 +41,15 @@
<!--    </div>-->
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
            <input class="layui-input" type="text" name="condition" placeholder="请输入" data-i18n-placeholder="input_placeholder" autocomplete="off">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
<!--        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">查看异常数据</button>-->
    </div>
@@ -61,29 +61,23 @@
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">导出</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail" data-i18n="detail">详情</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/locDetl/locDetl.js" charset="utf-8"></script>
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/locDetl/locDetl1.html
@@ -49,7 +49,7 @@
                    <!-- 树工具栏 -->
                    <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">
                            <input id="condition" onkeyup="findData(this)" type="text" class="layui-input" placeholder="请输入关键字" data-i18n-placeholder="input_placeholder" autocomplete="off">
                        </div>
                        <div class="layui-inline">
                            <button class="layui-btn icon-btn  layui-btn-sm" id="treeReset" style="padding: 0 10px;">
@@ -69,29 +69,29 @@
                    <!-- 表格工具栏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>
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px" data-i18n="location_no">货位:</label>
                            <div class="layui-input-inline">
                                <input name="loc_no" class="layui-input" placeholder="输入货位"/>
                                <input name="loc_no" class="layui-input" placeholder="输入货位" data-i18n-placeholder="input_placeholder"/>
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">商品编号:</label>
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px" data-i18n="product_code">商品编号:</label>
                            <div class="layui-input-inline">
                                <input name="matnr" class="layui-input" placeholder="输入商品编号"/>
                                <input name="matnr" class="layui-input" placeholder="输入商品编号" data-i18n-placeholder="input_placeholder"/>
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">商品名称:</label>
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px" data-i18n="product_name">商品名称:</label>
                            <div class="layui-input-inline">
                                <input name="maktx" class="layui-input" placeholder="输入商品名称"/>
                                <input name="maktx" class="layui-input" placeholder="输入商品名称" data-i18n-placeholder="input_placeholder"/>
                            </div>
                        </div>
                        <div class="layui-inline">&emsp;
                            <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                                <i class="layui-icon">&#xe615;</i>搜索
                                <i class="layui-icon">&#xe615;</i><span data-i18n="search">搜索</span>
                            </button>
                            <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                                <i class="layui-icon">&#xe666;</i>重置
                                <i class="layui-icon">&#xe666;</i><span data-i18n="reset">重置</span>
                            </button>
                        </div>
                    </div>
@@ -105,15 +105,15 @@
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>-->
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right;margin-right: -10px">导出</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData" data-i18n="delete">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right;margin-right: -10px" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="locNoTpl">
    <span name="locNo" class="layui-badge layui-badge-gray">{{d.locNo}}</span>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail" data-i18n="detail">详情</a>
    <!--    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">编辑</a>-->
</script>
@@ -126,12 +126,6 @@
<script type="text/javascript" src="../../static/js/nodeTree.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script src="../../static/js/i18n/i18n-helper.js"></script>
</html>
src/main/webapp/views/locDetl/locDetl_detail.html
@@ -27,7 +27,7 @@
            <label class="layui-form-label"><span class="not-null">*</span>库 位 号:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="locNo" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')" lay-verify="required"  style="display: none">
                <input id="locNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="locNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="locMastQueryBylocNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="locMastQueryBylocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -36,82 +36,82 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>物  料:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="product_code">物  料</span>:</label>
            <div class="layui-input-inline">
                <input id="matnr" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')" lay-verify="required" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">仓 库 号:</label>
            <label class="layui-form-label"><span data-i18n="warehouse_no">仓 库 号</span>:</label>
            <div class="layui-input-inline">
                <input id="lgnum" class="layui-input" type="text" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label" style="font-size: x-small">转储请求编号:</label>
            <label class="layui-form-label" style="font-size: x-small"><span data-i18n="transfer_req_no">转储请求编号</span>:</label>
            <div class="layui-input-inline">
                <input id="tbnum" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">行 项 目:</label>
            <label class="layui-form-label"><span data-i18n="item_no">行 项 目</span>:</label>
            <div class="layui-input-inline">
                <input id="tbpos" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label" style="font-size: x-small">物料标签ID:</label>
            <label class="layui-form-label" style="font-size: x-small"><span data-i18n="material_label_id">物料标签ID</span>:</label>
            <div class="layui-input-inline">
                <input id="zmatid" class="layui-input" type="text" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">物料描述:</label>
            <label class="layui-form-label"><span data-i18n="material_desc">物料描述</span>:</label>
            <div class="layui-input-inline">
                <input id="maktx" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">工  厂:</label>
            <label class="layui-form-label"><span data-i18n="factory"></span>工  厂</span>:</label>
            <div class="layui-input-inline">
                <input id="werks" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">数  量:</label>
            <label class="layui-form-label"><span data-i18n="quantity">数  量</span>:</label>
            <div class="layui-input-inline">
                <input id="anfme" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">单  位:</label>
            <label class="layui-form-label"><span data-i18n="unit">单  位</span>:</label>
            <div class="layui-input-inline">
                <input id="altme" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">托盘条码:</label>
            <label class="layui-form-label"><span data-i18n="pallet_barcode">托盘条码</span>:</label>
            <div class="layui-input-inline">
                <input id="zpallet" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">用户ID:</label>
            <label class="layui-form-label"><span data-i18n="user_id">用户ID</span>:</label>
            <div class="layui-input-inline">
                <input id="bname" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">备  注:</label>
            <label class="layui-form-label"><span data-i18n="remark">备  注</span>:</label>
            <div class="layui-input-inline">
                <input id="memo" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">修改人员:</label>
            <label class="layui-form-label"><span data-i18n="modifier">修改人员</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="modiUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -120,16 +120,16 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">修改时间:</label>
            <label class="layui-form-label"><span data-i18n="modify_time">修改时间</span>:</label>
            <div class="layui-input-inline">
                <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">创 建 者:</label>
            <label class="layui-form-label"><span data-i18n="creator">创 建 者</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="appeUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -138,7 +138,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">添加时间:</label>
            <label class="layui-form-label"><span data-i18n="add_time">添加时间</span>:</label>
            <div class="layui-input-inline">
                <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
            </div>
@@ -148,13 +148,13 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="modify">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
@@ -164,12 +164,6 @@
<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/locDetl/locDetl.js" charset="utf-8"></script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/i18n-helper.js"></script>
</html>
src/main/webapp/views/locDetlStatis/locDetlStatis.html
@@ -55,12 +55,6 @@
<script type="text/javascript" src="../../static/js/locDetlStatis/locDetlStatis.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/locMast/locMast.html
@@ -26,13 +26,13 @@
<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="loc_no" placeholder="库位号" autocomplete="off">
            <input class="layui-input" type="text" name="loc_no" data-i18n-placeholder="location_no" placeholder="库位号" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline cool-auto-complete">
            <input id="locSts" name="loc_sts" class="layui-input" type="text"  style="display: none">
            <input id="locSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="库位状态" onfocus=this.blur()>
            <input id="locSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" data-i18n-placeholder="location_status" placeholder="库位状态" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
                <input class="cool-auto-complete-window-input" data-key="basLocStsQueryBylocSts" onkeyup="autoLoad2(this.getAttribute('data-key'))">
                <select class="cool-auto-complete-window-select" data-key="basLocStsQueryBylocStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -43,7 +43,7 @@
    <div class="layui-inline">
        <div class="layui-input-inline cool-auto-complete">
            <input id="whsType" name="whs_type" class="layui-input" type="text"  style="display: none">
            <input id="whsType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="库位类型" onfocus=this.blur()>
            <input id="whsType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" data-i18n-placeholder="location_type" placeholder="库位类型" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
                <input class="cool-auto-complete-window-input" data-key="basWhsQueryBywhsType" onkeyup="autoLoad2(this.getAttribute('data-key'))">
                <select class="cool-auto-complete-window-select" data-key="basWhsQueryBywhsTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -53,38 +53,38 @@
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <select name="loc_type1" id="loc_type1" class="layui-input" type="text" placeholder="库位类型" autocomplete="off">
            <select name="loc_type1" id="loc_type1" class="layui-input" type="text" data-i18n-placeholder="location_type" placeholder="库位类型" autocomplete="off">
                <!--                    <option style="display: none"></option>-->
                <option value=""></option>
                <option value="1">低库位</option>
                <option value="2">高库位</option>
                <option value="1" data-i18n="low_location">低库位</option>
                <option value="2" data-i18n="high_location">高库位</option>
            </select>
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="crn_no" placeholder="堆垛机号" autocomplete="off">
            <input class="layui-input" type="text" name="crn_no" data-i18n-placeholder="crane_no" placeholder="堆垛机号" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="row1" placeholder="排" autocomplete="off">
            <input class="layui-input" type="text" name="row1" data-i18n="[placeholder]row" placeholder="排" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="bay1" placeholder="列" autocomplete="off">
            <input class="layui-input" type="text" name="bay1" data-i18n="[placeholder]bay" placeholder="列" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="lev1" placeholder="层" autocomplete="off">
            <input class="layui-input" type="text" name="lev1" data-i18n-placeholder="level" placeholder="层" autocomplete="off">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -94,23 +94,24 @@
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary" id="btn-init" lay-event="init">初始化</button>
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData" data-i18n="add">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData" data-i18n="delete">删除</button>
        <button class="layui-btn layui-btn-primary" id="btn-init" lay-event="init" data-i18n="init">初始化</button>
<!--        <button class="layui-btn layui-btn-sm" id="btn-convertSize" lay-event="convertSize">大小库位转换</button>-->
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
<!--    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>-->
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit" data-i18n="edit">编辑</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script>
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
@@ -119,9 +120,9 @@
    <div class="layui-form layui-form-pane">
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">删除库位</label>
                <label class="layui-form-label" data-i18n="delete_location">删除库位</label>
                <div class="layui-input-inline" style="width: 100px;">
                    <input type="checkbox" name="enable" lay-skin="switch" value="1" lay-text="删除|保留">
                    <input type="checkbox" name="enable" lay-skin="switch" value="1" data-i18n="[lay-text]delete_keep" lay-text="删除|保留">
                </div>
            </div>
        </div>
@@ -143,23 +144,23 @@
        */
        -->
        <div class="layui-form-item">
            <label class="layui-form-label">库位类型:</label>
            <label class="layui-form-label" data-i18n="location_type">库位类型:</label>
            <div class="layui-input-inline">
                <select name="identifying">
<!--                    <option style="display: none"></option>-->
<!--                    <option value="0">未知</option>-->
                    <option value="1" style="display: none">标准堆垛机库</option>
                    <option value="2">平库</option>
                    <option value="3">穿梭板</option>
                    <option value="4">四向车</option>
                    <option value="5">AGV</option>
                    <option value="1" style="display: none" data-i18n="standard_crane_whs">标准堆垛机库</option>
                    <option value="2" data-i18n="flat_whs">平库</option>
                    <option value="3" data-i18n="shuttle_board">穿梭板</option>
                    <option value="4" data-i18n="four_way_vehicle">四向车</option>
                    <option value="5" data-i18n="agv">AGV</option>
                </select>
            </div>
        </div>
        <!-- 排 -->
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">起止排</label>
                <label class="layui-form-label" data-i18n="start_end_row">起止排</label>
                <div class="layui-input-inline" style="width: 100px;">
                    <input type="text" name="startRow" autocomplete="off" class="layui-input" lay-verify="required|number">
                </div>
@@ -172,7 +173,7 @@
        <!-- 列 -->
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">起止列</label>
                <label class="layui-form-label" data-i18n="start_end_bay">起止列</label>
                <div class="layui-input-inline" style="width: 100px;">
                    <input type="text" name="startBay" autocomplete="off" class="layui-input" lay-verify="required|number">
                </div>
@@ -185,7 +186,7 @@
        <!-- 层 -->
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">起止层</label>
                <label class="layui-form-label" data-i18n="start_end_level">起止层</label>
                <div class="layui-input-inline" style="width: 100px;">
                    <input type="text" name="startLev" autocomplete="off" class="layui-input" lay-verify="required|number">
                </div>
@@ -196,14 +197,14 @@
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">堆垛机数量</label>
            <label class="layui-form-label" data-i18n="crane_amount">堆垛机数量</label>
            <div class="layui-input-inline">
                <input type="text" name="crnAmount" lay-verify="required|number" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">起始堆垛机</label>
                <label class="layui-form-label" data-i18n="start_crane">起始堆垛机</label>
                <div class="layui-input-inline" >
                    <input type="text" name="staCrn" autocomplete="off" class="layui-input" lay-verify="number">
                </div>
@@ -211,36 +212,36 @@
        </div>
        <!-- 库位类型 -->
        <div class="layui-form-item">
            <label class="layui-form-label">高低类型</label>
            <label class="layui-form-label" data-i18n="high_low_type">高低类型</label>
            <div class="layui-input-inline">
                <select name="locType1">
                    <option style="display: none"></option>
                    <option value="0">未知</option>
                    <option value="1">低库位</option>
                    <option value="2">高库位</option>
                    <option value="3">中库位</option>
                    <option value="0" data-i18n="unknown">未知</option>
                    <option value="1" data-i18n="low_location">低库位</option>
                    <option value="2" data-i18n="high_location">高库位</option>
                    <option value="3" data-i18n="middle_location">中库位</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">宽窄类型</label>
            <label class="layui-form-label" data-i18n="width_type">宽窄类型</label>
            <div class="layui-input-inline">
                <select name="locType2">
                    <option style="display: none"></option>
                    <option value="0">未知</option>
                    <option value="1">窄库位</option>
                    <option value="2">宽库位</option>
                    <option value="0" data-i18n="unknown">未知</option>
                    <option value="1" data-i18n="narrow_location">窄库位</option>
                    <option value="2" data-i18n="wide_location">宽库位</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">轻重类型</label>
            <label class="layui-form-label" data-i18n="weight_type">轻重类型</label>
            <div class="layui-input-inline">
                <select name="locType3">
                    <option style="display: none"></option>
                    <option value="0">未知</option>
                    <option value="1">轻库位</option>
                    <option value="2">重库位</option>
                    <option value="0" data-i18n="unknown">未知</option>
                    <option value="1" data-i18n="light_location">轻库位</option>
                    <option value="2" data-i18n="heavy_location">重库位</option>
                </select>
            </div>
        </div>
@@ -249,17 +250,9 @@
<!--        </div>-->
        <!-- 按钮 -->
        <div style="text-align: center; margin-top: 20px">
            <button class="layui-btn layui-btn-radius layui-btn-normal" id="initDo" lay-submit lay-filter="initDo">确定</button>
            <button class="layui-btn layui-btn-radius layui-btn-normal" id="initDo" lay-submit lay-filter="initDo" data-i18n="confirm">确定</button>
        </div>
    </div>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
</html>
src/main/webapp/views/locMast/locMast_detail.html
@@ -9,6 +9,17 @@
    <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">
    <style>
        .layui-form-label {
            width: 10px !important;
            margin-right: 10px !important;
        }
        .layui-input-inline {
            width: 170px !important;
            margin-left: 120px !important;
        }
    </style>
</head>
<body>
@@ -24,7 +35,7 @@
        </div>
    -->
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label"><span class="not-null">*</span>库 位 号:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="location_no">库 位 号</span>:</label>
            <div class="layui-input-inline">
                <input id="locNo" class="layui-input" type="text" onkeyup="check(this.id, 'locMast')">
            </div>
@@ -36,7 +47,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:80%">
            <label class="layui-form-label"><span class="not-null">*</span>库位类型:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="location_type">库位类型</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="whsType" class="layui-input" type="text" style="display: none">
                <input id="whsType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur() disabled="disabled">
@@ -60,7 +71,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label"><span class="not-null">*</span>库位状态:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="location_status">库位状态</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="locSts" class="layui-input" type="text" style="display: none">
                <input id="locSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()>
@@ -78,37 +89,37 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label">堆垛机号:</label>
            <label class="layui-form-label"><span data-i18n="crane_no">堆垛机号</span>:</label>
            <div class="layui-input-inline">
                <input id="crnNo" class="layui-input" type="text" autocomplete="off" disabled="disabled">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label">排:</label>
            <label class="layui-form-label"><span data-i18n="row">排</span>:</label>
            <div class="layui-input-inline">
                <input id="row1" class="layui-input" type="text" autocomplete="off" disabled="disabled">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label">列:</label>
            <label class="layui-form-label"><span data-i18n="bay">列</span>:</label>
            <div class="layui-input-inline">
                <input id="bay1" class="layui-input" type="text" autocomplete="off" disabled="disabled">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label">层:</label>
            <label class="layui-form-label"><span data-i18n="level">层</span>:</label>
            <div class="layui-input-inline">
                <input id="lev1" class="layui-input" type="text" autocomplete="off" disabled="disabled">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label">组:</label>
            <label class="layui-form-label"><span data-i18n="group">组</span>:</label>
            <div class="layui-input-inline">
                <input id="gro1" class="layui-input" type="text" autocomplete="off" disabled="disabled">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;display: none">
            <label class="layui-form-label">满  板:</label>
            <label class="layui-form-label"><span data-i18n="full_pallet">满  板</span>:</label>
            <div class="layui-input-inline" style="text-align: left">
                <input id="fullPlt" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
            </div>
@@ -132,7 +143,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">修改人员:</label>
            <label class="layui-form-label"><span data-i18n="modifier">修改人员</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="modiUser" class="layui-input" type="text" style="display: none">
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -144,13 +155,13 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">修改时间:</label>
            <label class="layui-form-label"><span data-i18n="modify_time">修改时间</span>:</label>
            <div class="layui-input-inline">
                <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">创 建 者:</label>
            <label class="layui-form-label"><span data-i18n="creator">创 建 者</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="appeUser" class="layui-input" type="text" style="display: none">
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -162,7 +173,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">添加时间:</label>
            <label class="layui-form-label"><span data-i18n="add_time">添加时间</span>:</label>
            <div class="layui-input-inline">
                <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
            </div>
@@ -224,28 +235,36 @@
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="modify">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt" style="text-indent: 30px;">
            <span class="not-null">温馨提示:修改为空库位时会清除库存明细</span>
            <span class="not-null" data-i18n="warm_prompt_clear_inventory">温馨提示:修改为空库位时会清除库存明细</span>
        </div>
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script src="../../static/js/i18n/i18n-helper.js"></script>
<script>
    // 定义枚举翻译映射,供 cool.js 使用
    window.i18nEnumMap = {
        'basWhsQueryBywhsType': {
            '1': 'standard_crane_whs',
            '2': 'flat_whs',
            '3': 'shuttle_board',
            '4': 'four_way_vehicle',
            '5': 'agv'
        },
        'basLocStsQueryBylocSts': function(id) {
            return 'loc_status_' + id;
        }
    };
</script>
<script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script>
</html>
</html>
src/main/webapp/views/manLocDetl/manLocDetl.html
@@ -126,12 +126,6 @@
<script type="text/javascript" src="../../static/js/nodeTree.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/mat/mat.html
@@ -66,7 +66,7 @@
                    <!-- 树工具栏 -->
                    <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">
                            <input id="condition" onkeyup="findData(this)" type="text" class="layui-input" placeholder="请输入关键字" data-i18n="input_placeholder" autocomplete="off">
                        </div>
                        <div class="layui-inline">
                            <button class="layui-btn icon-btn layui-btn-sm" id="treeReset" style="padding: 0 10px">
@@ -86,29 +86,29 @@
                    <!-- 表格工具栏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>
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px" data-i18n="item_no">商品编号:</label>
                            <div class="layui-input-inline">
                                <input name="matnr" class="layui-input" placeholder="输入商品编号"/>
                                <input name="matnr" class="layui-input" placeholder="输入商品编号" data-i18n="please_input_item_no"/>
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">商品名称:</label>
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px" data-i18n="item_name">商品名称:</label>
                            <div class="layui-input-inline">
                                <input name="maktx" class="layui-input" placeholder="输入商品名称"/>
                                <input name="maktx" class="layui-input" placeholder="输入商品名称" data-i18n="please_input_item_name"/>
                            </div>
                        </div>
                        <div class="layui-inline">
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">商品规格:</label>
                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px" data-i18n="item_spec">商品规格:</label>
                            <div class="layui-input-inline">
                                <input name="specs" class="layui-input" placeholder="输入商品规格"/>
                                <input name="specs" class="layui-input" placeholder="输入商品规格" data-i18n="please_input_item_spec"/>
                            </div>
                        </div>
                        <div class="layui-inline">&emsp;
                            <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                                <i class="layui-icon">&#xe615;</i>搜索
                                <i class="layui-icon">&#xe615;</i><span data-i18n="search">搜索</span>
                            </button>
                            <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                                <i class="layui-icon">&#xe666;</i>重置
                                <i class="layui-icon">&#xe666;</i><span data-i18n="reset">重置</span>
                            </button>
                        </div>
                    </div>
@@ -129,21 +129,21 @@
<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>
        <button class="layui-btn layui-btn-sm" id="btn-print-batch" lay-event="btnPrintBatch" data-i18n="batch_print">批量打印</button>
        <button class="layui-btn layui-btn-sm layui-btn-normal" id="btn-add" lay-event="addData" data-i18n="add">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData" data-i18n="delete">删除</button>
        <!-- 商品/物料 数据中心 -->
        <div class="dropdown-menu" style="float: right">
            <button class="layui-btn layui-btn-primary layui-border-black icon-btn layui-btn-sm">&nbsp;数据同步 <i class="layui-icon layui-icon-drop"></i></button>
            <button class="layui-btn layui-btn-primary layui-border-black icon-btn layui-btn-sm">&nbsp;<span data-i18n="data_sync">数据同步</span> <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><a onclick="excelMouldDownload()" style="font-size: 12px"><i class="layui-icon layui-icon-template-1"></i><span data-i18n="template_download">模板下载</span></a></li>
                <li><a onclick="importExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-upload"></i><span data-i18n="import_excel">导入 Excel</span></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>
                <li><a onclick="exportExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-export"></i><span data-i18n="export_excel">导出 Excel</span></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>-->
@@ -151,14 +151,15 @@
</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>
    <a class="layui-btn layui-btn-xs btn-edit layui-btn-primary" lay-event="edit" data-i18n="edit">修改</a>
    <button class="layui-btn layui-btn-xs btn-print" lay-event="btnPrint" data-i18n="print">打印</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/i18n/i18n-helper.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/mat.js" charset="utf-8"></script>
@@ -189,16 +190,16 @@
            <div class="layui-col-md6">
                <div class="layui-form-item">
                    <label class="layui-form-label">分类</label>
                    <label class="layui-form-label" data-i18n="category">分类</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>
                    <label class="layui-form-label layui-form-required" data-i18n="item_name">商品名称</label>
                    <div class="layui-input-block">
                        <input name="maktx" placeholder="请输入商品名称" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                        <input name="maktx" placeholder="请输入商品名称" class="layui-input" lay-vertype="tips" lay-verify="required" required="" data-i18n="[placeholder]please_input_item_name">
                    </div>
                </div>
@@ -210,16 +211,16 @@
<!--                </div>-->
                <div class="layui-form-item">
                    <label class="layui-form-label">单箱净重</label>
                    <label class="layui-form-label" data-i18n="net_weight_box">单箱净重</label>
                    <div class="layui-input-block">
                        <input name="weight" placeholder="请输入单箱净重格" class="layui-input">
                        <input name="weight" placeholder="请输入单箱净重" class="layui-input" data-i18n="[placeholder]please_input_net_weight_box">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单箱毛重</label>
                    <label class="layui-form-label" data-i18n="gross_weight_box">单箱毛重</label>
                    <div class="layui-input-block">
                        <input name="length" placeholder="请输入单箱毛重" class="layui-input">
                        <input name="length" placeholder="请输入单箱毛重" class="layui-input" data-i18n="[placeholder]please_input_gross_weight_box">
                    </div>
                </div>
@@ -227,29 +228,29 @@
            <div class="layui-col-md6">
                <div class="layui-form-item">
                    <label class="layui-form-label">区域</label>
                    <label class="layui-form-label" data-i18n="area">区域</label>
                    <div class="layui-input-block">
                        <div id="areaSel" class="ew-xmselect-tree"></div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">商品编号</label>
                    <label class="layui-form-label layui-form-required" data-i18n="item_no">商品编号</label>
                    <div class="layui-input-block">
                        <input id="matnr" name="matnr" placeholder="请输入商品编号" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                        <input id="matnr" name="matnr" placeholder="请输入商品编号" class="layui-input" lay-vertype="tips" lay-verify="required" required="" data-i18n="[placeholder]please_input_item_no">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">规格</label>
                    <label class="layui-form-label" data-i18n="spec">规格</label>
                    <div class="layui-input-block">
                        <input name="specs" placeholder="请输入代码" class="layui-input">
                        <input name="specs" placeholder="请输入代码" class="layui-input" data-i18n="[placeholder]please_input_code">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">备注</label>
                    <label class="layui-form-label" data-i18n="remark">备注</label>
                    <div class="layui-input-block">
                        <input name="memo" placeholder="请输入备注" class="layui-input">
                        <input name="memo" placeholder="请输入备注" class="layui-input" data-i18n="[placeholder]please_input_remark">
                    </div>
                </div>
@@ -265,8 +266,8 @@
        </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>
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="" data-i18n="save">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog" data-i18n="cancel">取消</button>
        </div>
    </form>
</script>
@@ -277,19 +278,19 @@
        <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">
            <input type="radio" name="selectTemplate" value="1" title="模板一"  lay-filter="selectTemplateRadio" checked="" data-i18n="[title]template_1">
            <input type="radio" name="selectTemplate" value="2" title="模板二" lay-filter="selectTemplateRadio" data-i18n="[title]template_2">
            <input type="radio" name="selectTemplate" value="3" title="模板三" lay-filter="selectTemplateRadio" data-i18n="[title]template_3">
        </div>
        <fieldset class="layui-elem-field site-demo-button" style="margin-top: 30px;text-align: left;">
            <legend>打印预览</legend>
            <legend data-i18n="print_preview">打印预览</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 colspan="3" align="center" scope="col" data-i18n="item_code">商品编码</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;">
@@ -298,9 +299,9 @@
                            </td>
                        </tr>
                        <tr style="height: 74px">
                            <td align="center" colspan="3">商品</td>
                            <td align="center" colspan="3" data-i18n="item">商品</td>
                            <td align="center" colspan="5">xxxxxx-xx/xx</td>
                            <td align="center" colspan="2">备注</td>
                            <td align="center" colspan="2" data-i18n="remark">备注</td>
                            <td align="center" colspan="2">xx</td>
                        </tr>
                    </table>
@@ -310,11 +311,11 @@
                <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="20%" data-i18n="item">商品</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="20%" data-i18n="remark">备注</td>
                            <td align="center" width="80%">xxxxxxxx</td>
                        </tr>
                        <tr style="height: 75px;">
@@ -332,7 +333,7 @@
                <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" data-i18n="item">商品</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%">
@@ -342,7 +343,7 @@
                            </td>
                        </tr>
                        <tr style="height: 74px">
                            <td align="center" colspan="1">备注</td>
                            <td align="center" colspan="1" data-i18n="remark">备注</td>
                            <td align="center" colspan="1" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">xxxxxxx</td>
                        </tr>
                    </table>
@@ -350,7 +351,7 @@
            </div>
        </fieldset>
        <button class="layui-btn" id="doPrint" lay-submit lay-filter="doPrint" style="margin-top: 20px">确定</button>
        <button class="layui-btn" id="doPrint" lay-submit lay-filter="doPrint" style="margin-top: 20px" data-i18n="confirm">确定</button>
    </div>
</div>
@@ -368,7 +369,7 @@
    {{#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" colspan="3" scope="col" data-i18n="item_code">商品编码</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">
@@ -377,9 +378,9 @@
            </td>
        </tr>
        <tr style="height: 74px">
            <td align="center" colspan="3">商品</td>
            <td align="center" colspan="3" data-i18n="item">商品</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" data-i18n="remark">备注</td>
            <td align="center" colspan="2">{{this.memo}}</td>
        </tr>
    </table>
@@ -390,11 +391,11 @@
    {{#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="20%" data-i18n="item">商品</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="20%" data-i18n="remark">备注</td>
            <td align="center" width="80%">{{this.memo}}</td>
        </tr>
        <tr style="height: 79px;">
@@ -413,7 +414,7 @@
    {{#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" data-i18n="item">商品</td>
            <td align="center" scope="col" colspan="1" style="
                display: inline-block;
                line-height: 20px;
@@ -436,7 +437,7 @@
            </td>
        </tr>
        <tr style="height: 74px">
            <td align="center" colspan="1">备注</td>
            <td align="center" colspan="1" data-i18n="remark">备注</td>
            <td align="center" colspan="1" style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">{{this.memo}}</td>
        </tr>
    </table>
@@ -444,12 +445,5 @@
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/matTurn/matTurn.html
@@ -127,12 +127,6 @@
    {{/each}}
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/matTurn/turnOverQuery.html
@@ -174,12 +174,6 @@
        });
    }
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/node/node.html
@@ -427,12 +427,6 @@
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/operateLog/operateLog.html
@@ -66,12 +66,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/operateLog/operateLog_detail.html
@@ -78,13 +78,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/order/order.html
@@ -316,12 +316,6 @@
    {{/each}}
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/order/out.html
@@ -309,12 +309,6 @@
    <option value="{{this}}">{{this}}</option>
    {{/each}}
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/orderDetl/orderDetl.html
@@ -221,12 +221,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/orderSettle/orderSettle.html
@@ -91,12 +91,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pack/pack.html
@@ -136,12 +136,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/emptyIn.html
@@ -72,12 +72,6 @@
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/emptyOut.html
@@ -142,12 +142,6 @@
    {{/each}}
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/locCheckOut.html
@@ -128,12 +128,6 @@
<script type="text/javascript" src="../../static/js/pakStore/locCheckOut.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/locDetlCheckQuery.html
@@ -234,12 +234,6 @@
    }
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/locDetlQuery.html
@@ -204,12 +204,6 @@
        });
    }
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/locMove.html
@@ -127,11 +127,5 @@
    </div>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/matQuery.html
@@ -169,12 +169,6 @@
    }
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/pakStore.html
@@ -129,12 +129,6 @@
    {{/each}}
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/stockAdjust.html
@@ -129,12 +129,6 @@
<script type="text/javascript" src="../../static/js/pakStore/stockAdjust.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/pakStore/stockOut.html
@@ -127,12 +127,6 @@
    {{/each}}
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/password.html
@@ -143,11 +143,5 @@
        parent.layer.closeAll();
    });
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/permission/permission.html
@@ -62,12 +62,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/permission/permission_detail.html
@@ -70,13 +70,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/report/locDetl.html
@@ -89,12 +89,6 @@
        });
    });
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/report/viewInOut.html
@@ -43,13 +43,7 @@
<script type="text/html" id="operate">
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/report/viewLocMap.html
@@ -82,11 +82,11 @@
<!-- 搜索栏 -->
<div id="search-box" class="layui-form layui-card-header">
    <div class="layui-inline" style="margin-left: 10px">
        <label class="layui-form-label" style="width:80px">显示模式</label>
        <div class="layui-input-inline" style="width:120px;">
        <label class="layui-form-label" style="width: auto; min-width: 80px;" data-i18n="display_mode">显示模式</label>
        <div class="layui-input-inline" style="width: 150px;">
            <select id="viewMode" name="viewMode" lay-filter="viewMode">
                <option value="byRow">按排显示</option>
                <option value="byLayer">按层显示</option>
                <option value="byRow" data-i18n="view_by_row">按排显示</option>
                <option value="byLayer" data-i18n="view_by_layer">按层显示</option>
            </select>
        </div>
    </div>
@@ -110,8 +110,8 @@
    </div>
    <div class="layui-inline" style="margin-left: 20px;">
        <button class="layui-btn layui-btn-normal" id="btnSelectMode">开启框选</button>
        <button class="layui-btn layui-btn-warm" id="btnAssignZone" style="display:none;">分配库区</button>
        <button class="layui-btn layui-btn-normal" id="btnSelectMode" data-i18n="enable_selection">开启框选</button>
        <button class="layui-btn" id="btnAssignZone" style="display:none; margin-left:10px;" data-i18n="assign_zone">分配库区</button>
    </div>
</div>
<div id="areaLegend" style="padding: 5px 15px; background: #fff; border-bottom: 1px solid #eee; display:none;">
@@ -152,6 +152,7 @@
<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/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/report/locMap.js" charset="utf-8"></script>
</body>
<script type="text/template" id="locMastRowTemplate">
@@ -159,12 +160,6 @@
    <option value="{{this}}">{{this}}</option>
    {{/each}}
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/report/viewStayTime.html
@@ -48,12 +48,6 @@
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/stayTime.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/report/viewStockUse.html
@@ -38,12 +38,6 @@
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/reportStockUse.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/report/viewWorkCountIn.html
@@ -59,12 +59,6 @@
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workCountIn.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/report/viewWorkCountOut.html
@@ -60,12 +60,6 @@
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workCountOut.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/report/viewWorkIn.html
@@ -77,12 +77,6 @@
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workIn.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/report/viewWorkOut.html
@@ -77,12 +77,6 @@
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/report/workOut.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/resource/resource.html
@@ -305,12 +305,6 @@
    });
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/role/role.html
@@ -56,12 +56,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/role/role_detail.html
@@ -73,13 +73,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/role/role_power_detail.html
@@ -29,13 +29,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js"></script>
src/main/webapp/views/rowLastno/rowLastno.html
@@ -41,12 +41,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/rowLastno/rowLastno_detail.html
@@ -141,13 +141,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/rowLastnoType/rowLastnoType.html
@@ -150,12 +150,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/saas/locDetl.html
@@ -73,12 +73,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/saas/locMove.html
@@ -127,11 +127,5 @@
    </div>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/saas/matQuery.html
@@ -190,12 +190,6 @@
            .removeAttr('selected');
    }
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/saas/stockAdjust.html
@@ -129,12 +129,6 @@
<script type="text/javascript" src="../../static/js/saas/stockAdjust.js" charset="utf-8"></script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/saasLog/saasLog.html
@@ -109,12 +109,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/staDesc/staDesc.html
@@ -195,12 +195,6 @@
    </div>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/staDesc/staDesc_detail.html
@@ -147,13 +147,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/stkPlcm/stkPlcm.html
@@ -79,12 +79,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/stkPlcm/stkPlcm_detail.html
@@ -151,13 +151,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/stoMan/stoQue.html
@@ -107,13 +107,7 @@
    <table class="layui-hide" id="locDetlByMap" lay-filter="locDetlByMap"></table>
</div>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/tag/tag.html
@@ -31,8 +31,8 @@
</div>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-del" lay-event="del">删除</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit" data-i18n="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-del" lay-event="del" data-i18n="delete">删除</a>
</script>
<!-- 表单弹窗 -->
@@ -55,26 +55,26 @@
            <div class="layui-col-md6">
                <div class="layui-form-item">
                    <label class="layui-form-label">上级菜单</label>
                    <label class="layui-form-label" data-i18n="parent_menu">Parent Menu</label>
                    <div class="layui-input-block">
                        <div id="tagParentSel" class="ew-xmselect-tree"></div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">类型</label>
                <!-- <div class="layui-form-item">
                    <label class="layui-form-label" data-i18n="type">类型</label>
                    <div class="layui-input-block">
                        <select name="type" lay-vertype="tips">
                            <option value="">请选择类型</option>
                            <option value="0">其他</option>
                            <option value="" data-i18n="please_select_type">请选择类型</option>
                            <option value="0" data-i18n="other">其他</option>
                        </select>
                    </div>
                </div>
                </div> -->
                <div class="layui-form-item">
                    <label class="layui-form-label">负责人</label>
                    <label class="layui-form-label" data-i18n="responsible_person">Owner</label>
                    <div class="layui-input-block">
                        <input name="leading" placeholder="请输入负责人" class="layui-input">
                        <input name="leading" placeholder="请输入负责人" class="layui-input" data-i18n="please_enter_responsible_person">
                    </div>
                </div>
@@ -83,23 +83,23 @@
            <div class="layui-col-md6">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">归类名称</label>
                    <label class="layui-form-label layui-form-required" data-i18n="classification_name">Category Name</label>
                    <div class="layui-input-block">
                        <input name="name" placeholder="请输入归类名称" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                        <input name="name" placeholder="请输入归类名称" class="layui-input" lay-vertype="tips" lay-verify="required" required="" data-i18n="please_enter_classification_name">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">排序</label>
                    <label class="layui-form-label" data-i18n="sort">sort</label>
                    <div class="layui-input-block">
                        <input name="sort" placeholder="请输入排序" class="layui-input">
                        <input name="sort" placeholder="请输入排序" class="layui-input" data-i18n="please_enter_sort">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">备注</label>
                    <label class="layui-form-label" data-i18n="memo">memo</label>
                    <div class="layui-input-block">
                        <input name="memo" placeholder="请输入备注" class="layui-input">
                        <input name="memo" placeholder="请输入备注" class="layui-input" data-i18n="please_enter_memo">
                    </div>
                </div>
@@ -107,13 +107,14 @@
        </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>
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="" data-i18n="save">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog" data-i18n="cancel">取消</button>
        </div>
    </form>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script src="../../static/js/i18n/i18n-helper.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>
@@ -130,14 +131,39 @@
        var xmSelect = layui.xmSelect;
        var tbDataList = [];
        var getCols = function() {
            return [[
                {type: 'checkbox'}
                ,{type: 'numbers'}
                ,{field: 'name', align: 'left',title: I18n.t('name'), minWidth: 150}
                // ,{field: 'uuid', align: 'center',title: '编号'}
                // ,{field: 'type$', align: 'center',title: I18n.t('type')}
                ,{field: 'leading', align: 'center',title: I18n.t('responsible_person')}
                ,{field: 'img', align: 'center',title: I18n.t('image'), hide: true}
                // ,{field: 'brief', align: 'center',title: '简要描述'}
                // ,{field: 'count', align: 'center',title: '数量'}
                ,{field: 'sort', align: 'center',title: I18n.t('sort')}
                ,{field: 'status', align: 'center',title: I18n.t('status'), templet: function(d) {
                    if (d.status === 1) return '<span class="layui-badge layui-bg-green">' + I18n.t('normal') + '</span>';
                    if (d.status === 0) return '<span class="layui-badge layui-bg-gray">' + I18n.t('status_disabled') + '</span>';
                    return '';
                }}
                ,{field: 'updateTime$', align: 'center',title: I18n.t('modify_time')}
                ,{field: 'updateBy$', align: 'center',title: I18n.t('modifier'), hide: true}
                ,{field: 'memo', align: 'center',title: I18n.t('memo'), hide: true}
                ,{fixed: 'right', title: I18n.t('operation'), align: 'center', toolbar: '#operate', width:150}
            ]];
        };
        var insTb = treeTable.render({
            elem: '#tag',
            url: baseUrl+'/tag/list/auth',
            headers: {token: localStorage.getItem('token')},
            height: 'full-200',
            toolbar: ['<p>',
                '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn"><i class="layui-icon">&#xe654;</i>添加</button>&nbsp;',
                '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon">&#xe640;</i>删除</button>',
                '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn" data-i18n="add"><i class="layui-icon">&#xe654;</i>添加</button>&nbsp;',
                '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn" data-i18n="delete"><i class="layui-icon">&#xe640;</i>删除</button>',
                '</p>'].join(''),
            tree: {
                iconIndex: 2,           // 折叠图标显示在第几列
@@ -145,29 +171,29 @@
                idName: 'id',           // id字段名称
                pidName: 'parentId'     // pid字段名称
            },
            cols: [[
                {type: 'checkbox'}
                ,{type: 'numbers'}
                ,{field: 'name', align: 'left',title: '名称', minWidth: 150}
                // ,{field: 'uuid', align: 'center',title: '编号'}
                ,{field: 'type$', align: 'center',title: '类型'}
                ,{field: 'leading', align: 'center',title: '负责人'}
                ,{field: 'img', align: 'center',title: '图片', hide: true}
                // ,{field: 'brief', align: 'center',title: '简要描述'}
                // ,{field: 'count', align: 'center',title: '数量'}
                ,{field: 'sort', align: 'center',title: '排序'}
                ,{field: 'status$', align: 'center',title: '状态'}
                ,{field: 'updateTime$', align: 'center',title: '修改时间'}
                ,{field: 'updateBy$', align: 'center',title: '修改人员', hide: true}
                ,{field: 'memo', align: 'center',title: '备注', hide: true}
                ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150}
            ]],
            cols: getCols(),
            done: function (data) {
                $('.ew-tree-table-box').css('height', '100%');
                insTb.expandAll();
                tbDataList = data;
                if (typeof I18n !== 'undefined') {
                    I18n.updatePage();
                }
            }
        });
        $(document).on('i18n:languageChanged', function() {
            insTb.reload({
                cols: getCols(),
                done: function (data) {
                    $('.ew-tree-table-box').css('height', '100%');
                    insTb.expandAll();
                    tbDataList = data;
                    if (typeof I18n !== 'undefined') {
                        I18n.updatePage();
                    }
                }
            });
        });
        /* 表格头工具栏点击事件 */
@@ -177,7 +203,7 @@
            } else if (obj.event === 'del') { // 删除
                var checkRows = insTb.checkStatus();
                if (checkRows.length === 0) {
                    layer.msg('请选择要删除的数据', {icon: 2});
                    layer.msg(I18n.t('please_select_data'), {icon: 2});
                    return;
                }
                var ids = checkRows.map(function (d) {
@@ -205,7 +231,7 @@
            admin.open({
                type: 1,
                area: '600px',
                title: (mData ? '修改' : '添加') + '归类',
                title: (mData ? I18n.t('edit') : I18n.t('add')) + ' ' + I18n.t('classification'),
                content: $('#editDialog').html(),
                success: function (layero, dIndex) {
                    // 回显表单数据
@@ -257,13 +283,18 @@
                    // 弹窗不出现滚动条
                    $(layero).children('.layui-layer-content').css('overflow', 'visible');
                    layui.form.render('select');
                    if (typeof I18n !== 'undefined') {
                        setTimeout(function() {
                            I18n.updatePage($(layero));
                        }, 50);
                    }
                }
            });
        }
        /* 删除 */
        function doDel(obj) {
            layer.confirm('确定要删除选中数据吗?', {
            layer.confirm(I18n.t('confirm_delete_selected_data'), {
                skin: 'layui-layer-admin',
                shade: .1
            }, function (i) {
@@ -299,12 +330,6 @@
    });
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/tpl/alarm-detl.html
@@ -50,10 +50,4 @@
    });
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
src/main/webapp/views/tpl/tpl-note.html
@@ -204,10 +204,3 @@
        display: inline-block;
    }
</style>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
src/main/webapp/views/tpl/tpl-theme.html
@@ -142,13 +142,7 @@
        form.render('checkbox', 'more-set-form');
    });
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<style>
    /* theme */
src/main/webapp/views/trayCode/trayCode.html
@@ -143,12 +143,6 @@
    </div>
    {{/each}}
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/trayCode/trayCode_detail.html
@@ -105,13 +105,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/user/user.html
@@ -173,12 +173,6 @@
    </form>
</script>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/user/user_detail.html
@@ -16,9 +16,9 @@
<div id="data-detail" class="layer_self_wrap">
    <form id="detail" class="layui-form" style="text-align: center">
        <div class="layui-inline"  style="display: none">
            <label class="layui-form-label"><span class="not-null">*</span>编  号:</label>
            <label class="layui-form-label" data-i18n="id"><span class="not-null">*</span>编  号:</label>
            <div class="layui-input-inline">
                <input id="id" class="layui-input" type="text" placeholder="编号">
                <input id="id" class="layui-input" type="text" placeholder="编号" data-i18n-placeholder="id">
            </div>
        </div>
<!--        <div class="layui-inline"  style="width:31%;display: none">-->
@@ -34,28 +34,28 @@
<!--            </div>-->
<!--        </div>-->
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label"><span class="not-null">*</span>帐  号:</label>
            <label class="layui-form-label" data-i18n="account"><span class="not-null">*</span>帐  号:</label>
            <div class="layui-input-inline">
                <input id="mobile" class="layui-input" type="text" placeholder="账号" lay-verify="required" autocomplete="off">
                <input id="mobile" class="layui-input" type="text" placeholder="账号" data-i18n-placeholder="account" lay-verify="required" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label"><span class="not-null">*</span>名  称:</label>
            <label class="layui-form-label" data-i18n="username"><span class="not-null">*</span>名  称:</label>
            <div class="layui-input-inline">
                <input id="username" class="layui-input" type="text" placeholder="名称" lay-verify="required"  autocomplete="off">
                <input id="username" class="layui-input" type="text" placeholder="名称" data-i18n-placeholder="username" lay-verify="required"  autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label">密  码:</label>
            <label class="layui-form-label" data-i18n="password">密  码:</label>
            <div class="layui-input-inline">
                <input id="password" class="layui-input" type="text" placeholder="密码" autocomplete="off">
                <input id="password" class="layui-input" type="text" placeholder="密码" data-i18n-placeholder="password" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:80%;">
            <label class="layui-form-label"><span class="not-null">*</span>角  色:</label>
            <label class="layui-form-label" data-i18n="role"><span class="not-null">*</span>角  色:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="roleId" class="layui-input" type="text" placeholder="角色" lay-verify="required"  style="display: none">
                <input id="roleName" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="角色" onfocus=this.blur()>
                <input id="roleName" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="角色" data-i18n-placeholder="role" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="roleQuery" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="roleQuerySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -67,24 +67,18 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">保存</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="save">保存</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.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>
src/main/webapp/views/userLogin/userLogin.html
@@ -57,12 +57,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/userLogin/userLogin_detail.html
@@ -60,13 +60,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/waitPakin/waitPakin.html
@@ -16,24 +16,24 @@
<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="zpallet" placeholder="托盘条码" autocomplete="off">
            <input class="layui-input" type="text" name="zpallet" placeholder="托盘条码" data-i18n-placeholder="pallet_barcode" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="matnr" placeholder="商品编号" autocomplete="off">
            <input class="layui-input" type="text" name="matnr" placeholder="商品编号" data-i18n-placeholder="product_code" 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">
            <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="起始时间 - 终止时间" data-i18n-placeholder="start_end_time" autocomplete="off" style="width: 300px">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -44,32 +44,26 @@
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
<!--        <button class="layui-btn layui-btn-sm" id="btn-wrk" lay-event="addWrk">生成任务</button>-->
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="">导出</button>
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData" data-i18n="add">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData" data-i18n="delete">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail" data-i18n="detail">详情</a>
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit" data-i18n="edit">编辑</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/waitPakin/waitPakin.js" charset="utf-8"></script>
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/waitPakin/waitPakin_detail.html
@@ -24,61 +24,61 @@
        </div>
    -->
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>编  号:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="id">编  号</span>:</label>
            <div class="layui-input-inline">
                <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'waitPakin')" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">托 盘 码:</label>
            <label class="layui-form-label"><span data-i18n="pallet_barcode">托 盘 码</span>:</label>
            <div class="layui-input-inline">
                <input id="barcode" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">商品编号:</label>
            <label class="layui-form-label"><span data-i18n="product_code">商品编号</span>:</label>
            <div class="layui-input-inline">
                <input id="matnr" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">物料描述:</label>
            <label class="layui-form-label"><span data-i18n="material_desc">物料描述</span>:</label>
            <div class="layui-input-inline">
                <input id="maktx" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">数  量:</label>
            <label class="layui-form-label"><span data-i18n="quantity">数  量</span>:</label>
            <div class="layui-input-inline">
                <input id="anfme" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">单  位:</label>
            <label class="layui-form-label"><span data-i18n="unit">单  位</span>:</label>
            <div class="layui-input-inline">
                <input id="unit" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">状  态:</label>
            <label class="layui-form-label"><span data-i18n="status">状  态</span>:</label>
            <div class="layui-input-inline">
                <input id="status" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">备  注:</label>
            <label class="layui-form-label"><span data-i18n="remark">备  注</span>:</label>
            <div class="layui-input-inline">
                <input id="memo" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">修改时间:</label>
            <label class="layui-form-label"><span data-i18n="modify_time">修改时间</span>:</label>
            <div class="layui-input-inline">
                <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">修改人员:</label>
            <label class="layui-form-label"><span data-i18n="modifier">修改人员</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="modiUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -90,13 +90,13 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">添加时间:</label>
            <label class="layui-form-label"><span data-i18n="add_time">添加时间</span>:</label>
            <div class="layui-input-inline">
                <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">创 建 者:</label>
            <label class="layui-form-label"><span data-i18n="creator">创 建 者</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="appeUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -112,26 +112,20 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="modify">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</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-3.3.1.min.js"></script>
    <script type="text/javascript" src="../../static/js/i18n/i18n-helper.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/waitPakin/waitPakin.js" charset="utf-8"></script>
src/main/webapp/views/waitPakinLog/waitPakinLog.html
@@ -16,19 +16,19 @@
<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="zpallet" placeholder="托盘条码" autocomplete="off">
            <input class="layui-input" type="text" name="zpallet" placeholder="托盘条码" data-i18n-placeholder="pallet_barcode" 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">
            <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="起始时间 - 终止时间" data-i18n-placeholder="start_end_time" autocomplete="off" style="width: 300px">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -38,7 +38,7 @@
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">导出</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px" data-i18n="export">导出</button>
    </div>
</script>
@@ -48,18 +48,12 @@
<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/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/waitPakinLog/waitPakinLog.js" charset="utf-8"></script>
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/waitPakinLog/waitPakinLog_detail.html
@@ -24,70 +24,70 @@
        </div>
    -->
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>编  号:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="id">编  号</span>:</label>
            <div class="layui-input-inline">
                <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'waitPakinLog')" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">入库通知号:</label>
            <label class="layui-form-label" data-i18n="inbound_notice_no">入库通知号:</label>
            <div class="layui-input-inline">
                <input id="pakinId" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">托 盘 码:</label>
            <label class="layui-form-label" data-i18n="pallet_code">托 盘 码:</label>
            <div class="layui-input-inline">
                <input id="barcode" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">商品编号:</label>
            <label class="layui-form-label" data-i18n="product_code">商品编号:</label>
            <div class="layui-input-inline">
                <input id="matnr" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">物料描述:</label>
            <label class="layui-form-label" data-i18n="material_desc">物料描述:</label>
            <div class="layui-input-inline">
                <input id="maktx" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">数  量:</label>
            <label class="layui-form-label" data-i18n="quantity">数  量:</label>
            <div class="layui-input-inline">
                <input id="anfme" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">单  位:</label>
            <label class="layui-form-label" data-i18n="unit">单  位:</label>
            <div class="layui-input-inline">
                <input id="unit" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">状  态:</label>
            <label class="layui-form-label" data-i18n="status">状  态:</label>
            <div class="layui-input-inline">
                <input id="status" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">备  注:</label>
            <label class="layui-form-label" data-i18n="remark">备  注:</label>
            <div class="layui-input-inline">
                <input id="memo" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">修改时间:</label>
            <label class="layui-form-label" data-i18n="modify_time">修改时间:</label>
            <div class="layui-input-inline">
                <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">修改人员:</label>
            <label class="layui-form-label" data-i18n="modifier">修改人员:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="modiUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -96,16 +96,16 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">添加时间:</label>
            <label class="layui-form-label" data-i18n="add_time">添加时间:</label>
            <div class="layui-input-inline">
                <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">创 建 者:</label>
            <label class="layui-form-label" data-i18n="creator">创 建 者:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="appeUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -118,28 +118,21 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/waitPakinLog/waitPakinLog.js" charset="utf-8"></script>
</html>
src/main/webapp/views/wrkDetl/wrkDetl.html
@@ -21,24 +21,24 @@
<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="wrk_no" placeholder="工作号" autocomplete="off">
            <input class="layui-input" type="text" name="wrk_no" placeholder="工作号" data-i18n-placeholder="work_no" autocomplete="off">
        </div>
    </div>
    <!-- 日期范围 -->
    <div class="layui-inline" style="width: 300px">
        <div class="layui-input-inline">
            <input class="layui-input layui-laydate-range" name="io_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
            <input class="layui-input layui-laydate-range" name="io_time" type="text" placeholder="起始时间 - 终止时间" data-i18n-placeholder="start_end_time" autocomplete="off" style="width: 300px">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
            <input class="layui-input" type="text" name="condition" placeholder="请输入" data-i18n-placeholder="input_placeholder" autocomplete="off">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -48,15 +48,16 @@
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail" data-i18n="detail">详情</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.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>
@@ -65,12 +66,5 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkDetl/wrkDetl_detail.html
@@ -16,85 +16,85 @@
<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>
            <label class="layui-form-label" data-i18n="work_no"><span class="not-null">*</span>工 作 号:</label>
            <div class="layui-input-inline">
                <input id="wrkNo" class="layui-input" type="text" lay-verify="required|number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">工作时间:</label>
            <label class="layui-form-label" data-i18n="work_time">工作时间:</label>
            <div class="layui-input-inline">
                <input id="ioTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>物  料:</label>
            <label class="layui-form-label" data-i18n="material"><span class="not-null">*</span>物  料:</label>
            <div class="layui-input-inline">
                <input id="matnr" class="layui-input" type="text" lay-verify="required" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>仓 库 号:</label>
            <label class="layui-form-label" data-i18n="warehouse_no"><span class="not-null">*</span>仓 库 号:</label>
            <div class="layui-input-inline">
                <input id="lgnum" class="layui-input" type="text" lay-verify="required" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span>转储请求编号:</label>
            <label class="layui-form-label" style="font-size: x-small" data-i18n="transfer_req_no"><span class="not-null">*</span>转储请求编号:</label>
            <div class="layui-input-inline">
                <input id="tbnum" class="layui-input" type="text" lay-verify="required|number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>行 项 目:</label>
            <label class="layui-form-label" data-i18n="item_no"><span class="not-null">*</span>行 项 目:</label>
            <div class="layui-input-inline">
                <input id="tbpos" class="layui-input" type="text" lay-verify="required|number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span>物料标签ID:</label>
            <label class="layui-form-label" style="font-size: x-small" data-i18n="material_label_id"><span class="not-null">*</span>物料标签ID:</label>
            <div class="layui-input-inline">
                <input id="zmatid" class="layui-input" type="text" lay-verify="required" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">物料描述:</label>
            <label class="layui-form-label" data-i18n="material_desc">物料描述:</label>
            <div class="layui-input-inline">
                <input id="maktx" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">工  厂:</label>
            <label class="layui-form-label" data-i18n="factory">工  厂:</label>
            <div class="layui-input-inline">
                <input id="werks" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">数  量:</label>
            <label class="layui-form-label" data-i18n="quantity">数  量:</label>
            <div class="layui-input-inline">
                <input id="anfme" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">单  位:</label>
            <label class="layui-form-label" data-i18n="unit">单  位:</label>
            <div class="layui-input-inline">
                <input id="altme" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">托盘条码:</label>
            <label class="layui-form-label" data-i18n="pallet_barcode">托盘条码:</label>
            <div class="layui-input-inline">
                <input id="zpallet" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">用户ID:</label>
            <label class="layui-form-label" data-i18n="user_id">用户ID:</label>
            <div class="layui-input-inline">
                <input id="bname" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">备  注:</label>
            <label class="layui-form-label" data-i18n="remark">备  注:</label>
            <div class="layui-input-inline">
                <input id="memo" class="layui-input" type="text">
            </div>
@@ -110,25 +110,19 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="modify">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.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>
src/main/webapp/views/wrkDetlLog/wrkDetlLog.html
@@ -16,48 +16,48 @@
<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="wrk_no" placeholder="工作号" autocomplete="off">
            <input class="layui-input" type="text" name="wrk_no" placeholder="工作号" data-i18n-placeholder="work_no" 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">
            <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="起始时间 - 终止时间" data-i18n-placeholder="start_end_time" autocomplete="off" style="width: 300px">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="order_no" placeholder="订单编号" autocomplete="off">
            <input class="layui-input" type="text" name="order_no" placeholder="订单编号" data-i18n-placeholder="order_no" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="matnr" placeholder="品号" autocomplete="off">
            <input class="layui-input" type="text" name="matnr" placeholder="品号" data-i18n-placeholder="item_no" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="specs" placeholder="规格" autocomplete="off">
            <input class="layui-input" type="text" name="specs" placeholder="规格" data-i18n-placeholder="spec" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="zpallet" placeholder="托盘码" autocomplete="off">
            <input class="layui-input" type="text" name="zpallet" placeholder="托盘码" data-i18n-placeholder="pallet_code" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off">
            <input class="layui-input" type="text" name="batch" placeholder="批号" data-i18n-placeholder="batch_no" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="anfme" placeholder="数量" autocomplete="off">
            <input class="layui-input" type="text" name="anfme" placeholder="数量" data-i18n-placeholder="quantity" autocomplete="off">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -67,13 +67,13 @@
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">导出</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail" data-i18n="detail">详情</a>
    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit" data-i18n="edit">编辑</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
@@ -85,12 +85,13 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
<!--<script src="../../static/js/translate.js"></script>-->
<!--<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</script>-->
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
</html>
src/main/webapp/views/wrkDetlLog/wrkDetlLog_detail.html
@@ -24,94 +24,94 @@
        </div>
    -->
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>工 作 号:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="work_no">工 作 号</span>:</label>
            <div class="layui-input-inline">
                <input id="wrkNo" class="layui-input" type="text" lay-verify="required|number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">工作时间:</label>
            <label class="layui-form-label"><span data-i18n="work_time">工作时间</span>:</label>
            <div class="layui-input-inline">
                <input id="ioTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>物料编号:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="material">物料编号</span>:</label>
            <div class="layui-input-inline">
                <input id="matnr" class="layui-input" type="text" lay-verify="required" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>仓 库 号:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="warehouse_no">仓 库 号</span>:</label>
            <div class="layui-input-inline">
                <input id="lgnum" class="layui-input" type="text" lay-verify="required" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span>转储请求编号:</label>
            <label class="layui-form-label" style="font-size: x-small"><span class="not-null">*</span><span data-i18n="transfer_req_no">转储请求编号</span>:</label>
            <div class="layui-input-inline">
                <input id="tbnum" class="layui-input" type="text" lay-verify="required|number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>行 项 目:</label>
            <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="item_no">行 项 目</span>:</label>
            <div class="layui-input-inline">
                <input id="tbpos" class="layui-input" type="text" lay-verify="required|number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label" style="font-size: x-small">物料标签ID:</label>
            <label class="layui-form-label" style="font-size: x-small"><span data-i18n="material_label_id">物料标签ID</span>:</label>
            <div class="layui-input-inline">
                <input id="zmatid" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">物料描述:</label>
            <label class="layui-form-label"><span data-i18n="material_desc">物料描述</span>:</label>
            <div class="layui-input-inline">
                <input id="maktx" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">工  厂:</label>
            <label class="layui-form-label"><span data-i18n="factory">工  厂</span>:</label>
            <div class="layui-input-inline">
                <input id="werks" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">数  量:</label>
            <label class="layui-form-label"><span data-i18n="quantity">数  量</span>:</label>
            <div class="layui-input-inline">
                <input id="anfme" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">单  位:</label>
            <label class="layui-form-label"><span data-i18n="unit">单  位</span>:</label>
            <div class="layui-input-inline">
                <input id="altme" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">托盘条码:</label>
            <label class="layui-form-label"><span data-i18n="pallet_barcode">托盘条码</span>:</label>
            <div class="layui-input-inline">
                <input id="zpallet" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">用户ID:</label>
            <label class="layui-form-label"><span data-i18n="user_id">用户ID</span>:</label>
            <div class="layui-input-inline">
                <input id="bname" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">备  注:</label>
            <label class="layui-form-label"><span data-i18n="remark">备  注</span>:</label>
            <div class="layui-input-inline">
                <input id="memo" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">修改人员:</label>
            <label class="layui-form-label"><span data-i18n="modifier">修改人员</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="modiUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -120,16 +120,16 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">修改时间:</label>
            <label class="layui-form-label"><span data-i18n="modify_time">修改时间</span>:</label>
            <div class="layui-input-inline">
                <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">创 建 者:</label>
            <label class="layui-form-label"><span data-i18n="creator">创 建 者</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="appeUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -138,7 +138,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">添加时间:</label>
            <label class="layui-form-label"><span data-i18n="add_time">添加时间</span>:</label>
            <div class="layui-input-inline">
                <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
            </div>
@@ -154,24 +154,25 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
<!--<script src="../../static/js/translate.js"></script>-->
<!--<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</script>-->
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/wrkLastno/wrkLastno.html
@@ -54,12 +54,6 @@
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkLastno/wrkLastno_detail.html
@@ -69,13 +69,7 @@
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/wrkMast/wrkDetl.html
@@ -14,7 +14,7 @@
</head>
<body>
<div class="layui-inline"  style="width:31%;margin-top: 20px">
    <label class="layui-form-label">工 作 号:</label>
    <label class="layui-form-label"><span data-i18n="work_no">工 作 号</span>:</label>
    <div class="layui-input-inline">
        <input id="wrkNo" class="layui-input" type="text" disabled="disabled">
    </div>
@@ -22,6 +22,7 @@
<table class="layui-hide" id="wrkDetlByMast" lay-filter="wrkDetlByMast"></table>
</body>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script src="../../static/js/i18n/i18n-helper.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>
@@ -30,16 +31,44 @@
    var pageCur;
    function getCol() {
        var cols = [
            {field: 'wrkNo', align: 'center',title: '工作号'}
            ,{field: 'ioTime$', align: 'center',title: '工作时间'}
            {field: 'wrkNo', align: 'center',title: I18n.t('work_no')}
            ,{field: 'ioTime$', align: 'center',title: I18n.t('work_time')}
        ];
        cols.push.apply(cols, detlCols);
        if (typeof getDetlCols === 'function') {
            cols.push.apply(cols, getDetlCols());
        } else {
            cols.push.apply(cols, detlCols);
        }
        return cols;
    }
    layui.use(['table','laydate', 'form'], function() {
        table = layui.table;
        var $ = layui.jquery;
        var form = layui.form;
        $(document).on('i18n:languageChanged', function() {
            table.reload('wrkDetlByMast', {
                cols: [getCol()],
                done: function(res, curr, count) {
                    if (res.code === 403) {
                        top.location.href = baseUrl+"/";
                    }
                    pageCur=curr;
                    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';
                        }
                    });
                    if (typeof I18n !== 'undefined') {
                        I18n.updatePage();
                        I18n.updateLayuiPagination();
                    }
                }
            });
        });
        $('#wrkNo').val(parent.wrkNo);
        // 数据渲染
@@ -83,16 +112,14 @@
                        res.data[_index][data.value] = 'N';
                    }
                });
                if (typeof I18n !== 'undefined') {
                    I18n.updatePage();
                    I18n.updateLayuiPagination();
                }
            }
        });
    });
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkMast/wrkMast.html
@@ -54,13 +54,13 @@
<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="wrk_no" placeholder="工作号" autocomplete="off">
            <input class="layui-input" type="text" name="wrk_no" placeholder="工作号" data-i18n-placeholder="work_no" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline cool-auto-complete">
            <input id="wrkSts" class="layui-input" name="wrk_sts" type="text" placeholder="请输入" autocomplete="off" style="display: none">
            <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="工作状态" onfocus=this.blur()>
            <input id="wrkSts" class="layui-input" name="wrk_sts" type="text" placeholder="请输入" data-i18n-placeholder="input_placeholder" autocomplete="off" style="display: none">
            <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="工作状态" data-i18n-placeholder="work_status" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
                <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
                <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -70,24 +70,24 @@
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="crn_no" placeholder="堆垛机号" autocomplete="off">
            <input class="layui-input" type="text" name="crn_no" placeholder="堆垛机号" data-i18n-placeholder="crane_no" autocomplete="off">
        </div>
    </div>
    <!-- 日期范围 -->
    <div class="layui-inline" style="width: 300px">
        <div class="layui-input-inline">
            <input class="layui-input layui-laydate-range" name="io_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
            <input class="layui-input layui-laydate-range" name="io_time" type="text" placeholder="起始时间 - 终止时间" data-i18n-placeholder="start_end_time" autocomplete="off" style="width: 300px">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
            <input class="layui-input" type="text" name="condition" placeholder="请输入" data-i18n-placeholder="input_placeholder" autocomplete="off">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -97,16 +97,16 @@
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-normal" id="btn-pri-add" lay-event="priAdd"><i class="layui-icon">&#xe624;</i>增加优先级</button>
        <button class="layui-btn layui-btn-normal" id="btn-pri-red" lay-event="priRed"><i class="layui-icon">&#xe67e;</i>降低优先级</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
        <button class="layui-btn layui-btn-normal" id="btn-pri-add" lay-event="priAdd"><i class="layui-icon">&#xe624;</i><span data-i18n="increase_priority">增加优先级</span></button>
        <button class="layui-btn layui-btn-normal" id="btn-pri-red" lay-event="priRed"><i class="layui-icon">&#xe67e;</i><span data-i18n="decrease_priority">降低优先级</span></button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" data-i18n="export">导出</button>
    </div>
</script>
<!--明细表-->
<div id="detlTable" style="display: none">
    <div class="layui-inline"  style="width:90%;margin-top: 10px;margin-left: 20px">
        <span style=" color: indianred">以下为当前工作流的物料明细</span>
        <span style=" color: indianred" data-i18n="current_workflow_detail">以下为当前工作流的物料明细</span>
    </div>
    <table class="layui-hide" id="wrkDetlByMap" lay-filter="wrkDetlByMap"></table>
@@ -114,37 +114,29 @@
<script type="text/html" id="operate">
    {{#if (d.preHave === 'Y' && d.wrkSts === 3) { }}
    <a class="layui-btn layui-btn-primary layui-border-red layui-btn-xs btn-error" lay-event="preHave">先入品</a>
    <a class="layui-btn layui-btn-primary layui-border-red layui-btn-xs btn-error" lay-event="preHave" data-i18n="pre_existing">先入品</a>
    {{# } }}
    {{#if (d.takeNone === 'Y' && d.wrkSts === 12) { }}
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-error" lay-event="takeNone">空操作</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-error" lay-event="takeNone" data-i18n="empty_op">空操作</a>
    {{# } }}
    <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detlShow">明细</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-complete" lay-event="complete">完成</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-cancel" lay-event="cancel">取消</a>
    <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detlShow" data-i18n="detail">明细</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-complete" lay-event="complete" data-i18n="complete">完成</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-cancel" lay-event="cancel" data-i18n="cancel">取消</a>
    {{#if (d.ioType === 103) { }}
        <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick">拣</a>
        <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick" data-i18n="pick">拣</a>
    {{# } }}
    {{#if (d.ioType === 107) { }}
    <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick">盘</a>
    <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick" data-i18n="count">盘</a>
    {{# } }}
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/wrkMast/wrkMast.js" charset="utf-8"></script>
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkMast/wrkMast_detail.html
@@ -16,13 +16,13 @@
<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>
            <label class="layui-form-label"><span class="not-null">*</span> <span data-i18n="work_no">工 作 号</span>:</label>
            <div class="layui-input-inline">
                <input id="wrkNo" class="layui-input" type="text" onkeyup="check(this.id, 'wrkMast')">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">工作状态:</label>
            <label class="layui-form-label"><span data-i18n="work_status">工作状态</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="wrkSts" class="layui-input" type="text" style="display: none">
                <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -34,7 +34,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">入出库类型:</label>
            <label class="layui-form-label"><span data-i18n="transaction_type">入出库类型</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="ioType" class="layui-input" type="text" style="display: none">
                <input id="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -46,7 +46,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">堆 垛 机:</label>
            <label class="layui-form-label"><span data-i18n="crane">堆 垛 机</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="crnNo" class="layui-input" type="text" style="display: none">
                <input id="crnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -58,13 +58,13 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">优 先 级:</label>
            <label class="layui-form-label"><span data-i18n="priority">优 先 级</span>:</label>
            <div class="layui-input-inline">
                <input id="ioPri" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">目标库位:</label>
            <label class="layui-form-label"><span data-i18n="target_location">目标库位</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="locNo" class="layui-input" type="text" style="display: none">
                <input id="locNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -76,7 +76,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">目 标 站:</label>
            <label class="layui-form-label"><span data-i18n="target_station">目 标 站</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="staNo" class="layui-input" type="text" style="display: none">
                <input id="staNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -88,7 +88,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">源  站:</label>
            <label class="layui-form-label"><span data-i18n="source_station">源  站</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="sourceStaNo" class="layui-input" type="text" style="display: none">
                <input id="sourceStaNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -100,7 +100,7 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">源 库 位:</label>
            <label class="layui-form-label"><span data-i18n="source_location">源 库 位</span>:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="sourceLocNo" class="layui-input" type="text" style="display: none">
                <input id="sourceLocNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
@@ -112,61 +112,61 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">拣  料:</label>
            <label class="layui-form-label"><span data-i18n="picking">拣  料</span>:</label>
            <div class="layui-input-inline">
                <input id="picking" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">退  出:</label>
            <label class="layui-form-label"><span data-i18n="exit">退  出</span>:</label>
            <div class="layui-input-inline">
                <input id="exitMk" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">空  板:</label>
            <label class="layui-form-label"><span data-i18n="empty_pallet">空  板</span>:</label>
            <div class="layui-input-inline">
                <input id="emptyMk" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">工作时间:</label>
            <label class="layui-form-label"><span data-i18n="work_time">工作时间</span>:</label>
            <div class="layui-input-inline">
                <input id="ioTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label" style="font-size: x-small">堆垛机启动时间:</label>
            <label class="layui-form-label" style="font-size: x-small"><span data-i18n="crane_start_time">堆垛机启动时间</span>:</label>
            <div class="layui-input-inline">
                <input id="crnStrTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label" style="font-size: x-small">堆垛机停止时间:</label>
            <label class="layui-form-label" style="font-size: x-small"><span data-i18n="crane_end_time">堆垛机停止时间</span>:</label>
            <div class="layui-input-inline">
                <input id="crnEndTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">拣料时间:</label>
            <label class="layui-form-label"><span data-i18n="picking_time">拣料时间</span>:</label>
            <div class="layui-input-inline">
                <input id="refIotime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">备  注:</label>
            <label class="layui-form-label"><span data-i18n="remark">备  注</span>:</label>
            <div class="layui-input-inline">
                <input id="memo" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">条  码:</label>
            <label class="layui-form-label"><span data-i18n="barcode">条  码</span>:</label>
            <div class="layui-input-inline">
                <input id="barcode" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">满  板:</label>
            <label class="layui-form-label"><span data-i18n="full_pallet">满  板</span>:</label>
            <div class="layui-input-inline">
                <input id="fullPlt" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
            </div>
@@ -176,25 +176,19 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="modify">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script src="../../static/js/i18n/i18n-helper.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>
src/main/webapp/views/wrkMastExecute/wrkMastExecute.html
@@ -202,12 +202,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkMastExecuteLog/wrkMastExecuteLog.html
@@ -202,12 +202,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkMastFourWarVehicle/wrkMastFourWarVehicle.html
@@ -160,12 +160,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkMastFourWarVehicleLog/wrkMastFourWarVehicleLog.html
@@ -160,12 +160,6 @@
        </div>
    </form>
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkMastLog/wrkDetlLog.html
@@ -14,13 +14,13 @@
</head>
<body>
<div class="layui-inline"  style="width:20%;margin-top: 20px">
    <label class="layui-form-label">工 作 号:</label>
    <label class="layui-form-label"><span data-i18n="work_no">工 作 号:</span></label>
    <div class="layui-input-inline">
        <input id="wrkNo" class="layui-input" type="text" disabled="disabled">
    </div>
</div>
<div class="layui-inline"  style="width:20%;margin-top: 20px">
    <label class="layui-form-label">工作时间:</label>
    <label class="layui-form-label"><span data-i18n="work_time">工作时间:</span></label>
    <div class="layui-input-inline">
        <input id="ioTime" class="layui-input" type="text" disabled="disabled">
    </div>
@@ -32,75 +32,89 @@
<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/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script>
<script type="text/javascript">
    var pageCur;
    function getCol() {
        let cols = [
            {field: 'wrkNo', align: 'center',title: '工作号'}
            ,{field: 'ioTime$', align: 'center',title: '工作时间',width:160}
            {field: 'wrkNo', align: 'center',title: I18n.t('work_no')}
            ,{field: 'ioTime$', align: 'center',title: I18n.t('work_time'),width:160}
        ];
        cols.push.apply(cols, detlCols);
        // Use getDetlCols() to ensure fresh I18n values
        cols.push.apply(cols, getDetlCols());
        return cols;
    }
    layui.use(['table','laydate', 'form'], function() {
        table = layui.table;
        var $ = layui.jquery;
        var form = layui.form;
        $('#wrkNo').val(parent.wrkNo);
        $('#ioTime').val(top.dateToStr(parent.ioTime, true));
        // 数据渲染
        tableIns1 = table.render({
            elem: '#wrkDetlLogByMast',
            headers: {token: localStorage.getItem('token')},
            url: baseUrl+'/wrkDetlLogByMast/list/auth',
            where: {wrk_no: parent.wrkNo,ioTime: top.dateToStr(parent.ioTime, true)},
            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+"/";
                }
                pageCur=curr;
                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';
    function initTable() {
        layui.use(['table','laydate', 'form'], function() {
            table = layui.table;
            var $ = layui.jquery;
            var form = layui.form;
            $('#wrkNo').val(parent.wrkNo);
            $('#ioTime').val(top.dateToStr(parent.ioTime, true));
            // 数据渲染
            tableIns1 = table.render({
                elem: '#wrkDetlLogByMast',
                headers: {token: localStorage.getItem('token')},
                url: baseUrl+'/wrkDetlLogByMast/list/auth',
                where: {wrk_no: parent.wrkNo,ioTime: top.dateToStr(parent.ioTime, true)},
                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+"/";
                    }
                    pageCur=curr;
                    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';
                        }
                    });
                    if (typeof I18n !== 'undefined') {
                        I18n.updatePage();
                        I18n.updateLayuiPagination();
                    }
                }
            });
        });
    }
    if (typeof I18n !== 'undefined' && I18n.isReady()) {
        initTable();
    } else {
        $(document).on('i18n:ready', function() {
            initTable();
        });
    }
    $(document).on('i18n:languageChanged', function() {
        initTable();
    });
</script>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkMastLog/wrkMastLog.html
@@ -15,13 +15,13 @@
<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="wrk_no" placeholder="工作号" autocomplete="off">
            <input class="layui-input" type="text" name="wrk_no" placeholder="工作号" data-i18n-placeholder="work_no" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline cool-auto-complete">
            <input id="wrkSts" class="layui-input" name="wrk_sts" type="text" placeholder="请输入" autocomplete="off" style="display: none">
            <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="工作状态" onfocus=this.blur()>
            <input id="wrkSts" class="layui-input" name="wrk_sts" type="text" placeholder="请输入" data-i18n-placeholder="please_enter" autocomplete="off" style="display: none">
            <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="工作状态" data-i18n-placeholder="work_status" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
                <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
                <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -31,8 +31,8 @@
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline cool-auto-complete">
            <input id="ioType" class="layui-input" name="io_type" type="text" placeholder="请输入" autocomplete="off" style="display: none">
            <input id="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="入出库类型" onfocus=this.blur()>
            <input id="ioType" class="layui-input" name="io_type" type="text" placeholder="请输入" data-i18n-placeholder="please_enter" autocomplete="off" style="display: none">
            <input id="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="入出库类型" data-i18n-placeholder="transaction_type" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
                <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
                <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -42,8 +42,8 @@
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline cool-auto-complete">
            <input id="crnNo" class="layui-input" name="crn_no" 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()>
            <input id="crnNo" class="layui-input" name="crn_no" type="text" placeholder="请输入" data-i18n-placeholder="please_enter" autocomplete="off" style="display: none">
            <input id="crnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="堆垛机号" data-i18n-placeholder="crane_no" 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">
@@ -54,19 +54,19 @@
    <!-- 日期范围 -->
    <div class="layui-inline" style="width: 300px">
        <div class="layui-input-inline">
            <input class="layui-input layui-laydate-range" name="io_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
            <input class="layui-input layui-laydate-range" name="io_time" type="text" placeholder="起始时间 - 终止时间" data-i18n-placeholder="start_end_time" autocomplete="off" style="width: 300px">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
            <input class="layui-input" type="text" name="condition" placeholder="请输入" data-i18n-placeholder="input_placeholder" autocomplete="off">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset" data-i18n="reset">重置</button>
    </div>
</div>
@@ -76,12 +76,12 @@
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">导出</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px" data-i18n="export">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detlShow">明细</a>
    <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detlShow" data-i18n="detail">明细</a>
<!--    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>-->
</script>
@@ -89,17 +89,11 @@
<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/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/wrkMastLog/wrkMastLog.js" charset="utf-8"></script>
<iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe>
</body>
<script src="../../static/js/translate.js"></script>
<script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</html>
src/main/webapp/views/wrkMastLog/wrkMastLog_detail.html
@@ -16,23 +16,23 @@
<div id="data-detail" class="layer_self_wrap">
    <form id="detail" class="layui-form">
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label"><span class="not-null">*</span>编  号:</label>
            <div class="layui-input-inline">
                <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'wrkMastLog')" lay-verify="number" >
            </div>
        <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="id">编  号:</span></label>
        <div class="layui-input-inline">
            <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'wrkMastLog')" lay-verify="number" >
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>工 作 号:</label>
            <div class="layui-input-inline">
                <input id="wrkNo" class="layui-input" type="text" onkeyup="check(this.id, 'wrkMastLog')" lay-verify="required|number" >
            </div>
    </div>
    <div class="layui-inline"  style="width:31%;">
        <label class="layui-form-label"><span class="not-null">*</span><span data-i18n="work_no">工 作 号:</span></label>
        <div class="layui-input-inline">
            <input id="wrkNo" class="layui-input" type="text" onkeyup="check(this.id, 'wrkMastLog')" lay-verify="required|number" >
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">工作状态:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="wrkSts" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <div class="cool-auto-complete-window">
    </div>
    <div class="layui-inline"  style="width:31%;">
        <label class="layui-form-label"><span data-i18n="work_status">工作状态:</span></label>
        <div class="layui-input-inline cool-auto-complete">
            <input id="wrkSts" class="layui-input" type="text" lay-verify="number"  style="display: none">
            <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                    </select>
@@ -40,23 +40,23 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">入出库类型:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="ioType" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="ioType$" 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="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                    </select>
                </div>
        <label class="layui-form-label"><span data-i18n="transaction_type">入出库类型:</span></label>
        <div class="layui-input-inline cool-auto-complete">
            <input id="ioType" class="layui-input" type="text" lay-verify="number"  style="display: none">
            <input id="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
                <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))">
                <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                </select>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">堆垛机号:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="crnNo" class="layui-input" type="text" lay-verify="number"  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">
    </div>
    <div class="layui-inline"  style="width:31%;">
        <label class="layui-form-label"><span data-i18n="crane_no">堆垛机号:</span></label>
        <div class="layui-input-inline cool-auto-complete">
            <input id="crnNo" class="layui-input" type="text" lay-verify="number"  style="display: none">
            <input id="crnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_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>
@@ -64,29 +64,29 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">优 先 级:</label>
            <div class="layui-input-inline">
                <input id="ioPri" class="layui-input" type="text" lay-verify="number" >
        <label class="layui-form-label"><span data-i18n="priority">优 先 级:</span></label>
        <div class="layui-input-inline">
            <input id="ioPri" class="layui-input" type="text" lay-verify="number" >
        </div>
    </div>
    <div class="layui-inline"  style="width:31%;">
        <label class="layui-form-label"><span data-i18n="target_location">目标库位:</span></label>
        <div class="layui-input-inline cool-auto-complete">
            <input id="locNo" class="layui-input" type="text" style="display: none">
            <input id="locNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
                <input class="cool-auto-complete-window-input" data-key="locMastQueryBylocNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                <select class="cool-auto-complete-window-select" data-key="locMastQueryBylocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                </select>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">目标库位:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="locNo" class="layui-input" type="text" style="display: none">
                <input id="locNo$" 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="locMastQueryBylocNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="locMastQueryBylocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                    </select>
                </div>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">目 标 站:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="staNo" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="staNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <div class="cool-auto-complete-window">
    </div>
    <div class="layui-inline"  style="width:31%;">
        <label class="layui-form-label"><span data-i18n="target_station">目 标 站:</span></label>
        <div class="layui-input-inline cool-auto-complete">
            <input id="staNo" class="layui-input" type="text" lay-verify="number"  style="display: none">
            <input id="staNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="basDevpQueryBystaNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="basDevpQueryBystaNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                    </select>
@@ -94,10 +94,10 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">源  站:</label>
            <label class="layui-form-label"><span data-i18n="source_station">源  站:</span></label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="sourceStaNo" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="sourceStaNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="sourceStaNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="basDevpQueryBysourceStaNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="basDevpQueryBysourceStaNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -106,10 +106,10 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">源 库 位:</label>
            <label class="layui-form-label"><span data-i18n="source_location">源 库 位:</span></label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="sourceLocNo" class="layui-input" type="text" style="display: none">
                <input id="sourceLocNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <input id="sourceLocNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." data-i18n-placeholder="input_placeholder" onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="locMastQueryBysourceLocNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="locMastQueryBysourceLocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -118,55 +118,55 @@
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">拣  料:</label>
            <label class="layui-form-label"><span data-i18n="picking">拣  料:</span></label>
            <div class="layui-input-inline">
                <input id="picking" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">退  出:</label>
            <label class="layui-form-label"><span data-i18n="exit">退  出:</span></label>
            <div class="layui-input-inline">
                <input id="exitMk" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">空  板:</label>
            <label class="layui-form-label"><span data-i18n="empty_pallet">空  板:</span></label>
            <div class="layui-input-inline">
                <input id="emptyMk" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">工作时间:</label>
            <label class="layui-form-label"><span data-i18n="work_time">工作时间:</span></label>
            <div class="layui-input-inline">
                <input id="ioTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label" style="font-size: x-small">堆垛机启动时间:</label>
            <label class="layui-form-label" style="font-size: x-small"><span data-i18n="crane_start_time">堆垛机启动时间:</span></label>
            <div class="layui-input-inline">
                <input id="crnStrTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label" style="font-size: x-small">堆垛机停止时间:</label>
            <label class="layui-form-label" style="font-size: x-small"><span data-i18n="crane_end_time">堆垛机停止时间:</span></label>
            <div class="layui-input-inline">
                <input id="crnEndTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">拣料时间:</label>
            <label class="layui-form-label"><span data-i18n="picking_time">拣料时间:</span></label>
            <div class="layui-input-inline">
                <input id="plcStrTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">条  码:</label>
            <label class="layui-form-label"><span data-i18n="barcode">条  码:</span></label>
            <div class="layui-input-inline">
                <input id="barcode" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">满  板:</label>
            <label class="layui-form-label"><span data-i18n="full_pallet">满  板:</span></label>
            <div class="layui-input-inline">
                <input id="fullPlt" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'>
            </div>
@@ -176,28 +176,29 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save" data-i18n="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit" data-i18n="modify">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close" data-i18n="close">关闭</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            <span data-i18n="warm_prompt_prefix">温馨提示:请仔细填写相关信息,</span><span class="extrude"><span class="not-null">*</span> <span data-i18n="warm_prompt_suffix">为必填选项。</span></span>
        </div>
    </form>
</div>
</body>
<script src="../../static/js/translate.js"></script>
<script>
<!-- <script src="../../static/js/translate.js"></script> -->
<!-- <script>
    translate.selectLanguageTag.show = false; //不出现的select的选择语言
    translate.service.use('client.edge'); //设置翻译服务
    translate.listener.start(); //开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
    translate.execute();
</script>
</script> -->
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
<script type="text/javascript" src="../../static/js/wrkMastLog/wrkMastLog.js" charset="utf-8"></script>
</html>