Commit e4b1e93e sunke

物料维护界面导出所有数据

运行统计界面报警删除
已在库位中提示信息添加线别
条码设置,出库策略移入系统菜单
MiniStock时间可在系统设置页面进行配置
轻工单页面出库后不需要再次选择线体
操作界面出库流程修改:选择单个物料后弹出输入工号框进行验证

单独出库增加线别和在库时间展示,去除供应商
保存产品后自动进入下一个新增产品页面
出库授权码只允许使用当前登陆用户
1 个父辈 90a52008
正在显示 22 个修改的文件 包含 490 行增加451 行删除
2020-12-23 13:36:09 INFO [BarcodeRule.java:394] - 准备发送到ministock 2021-03-03 09:09:50 INFO [BarcodeRule.java:52] - 开始解析二维码规则:1@2@3@PN@5@6@7@8@9@10@xxPRODATEyyyyMMdd@xxxEXPDATEyyyyMMdd@13@14@15@16@17@RI@xQTYxxxxxx@20@21@22@23
2020-12-23 13:37:26 INFO [BarcodeRule.java:394] - 准备发送到ministock 2021-03-03 09:09:50 INFO [BarcodeRule.java:77] - 分割符为:@长度为:23
2021-03-03 09:09:50 INFO [BarcodeRule.java:81] - partNumber: 为{name='PN', index=3, prefix='', suffix=''}
2021-03-03 09:09:50 INFO [BarcodeRule.java:94] - produceDate: 为{name='PRODATE', index=10, prefix='xx', suffix='yyyyMMdd'}
2021-03-03 09:09:50 INFO [BarcodeRule.java:96] - expireDate: 为{name='EXPDATE', index=11, prefix='xxx', suffix='yyyyMMdd'}
2021-03-03 09:09:50 INFO [BarcodeRule.java:83] - reelId: 为{name='RI', index=17, prefix='', suffix=''}
2021-03-03 09:09:50 INFO [BarcodeRule.java:88] - quantity: 为{name='QTY', index=18, prefix='x', suffix='xxxxxx'}
2021-03-03 09:09:50 INFO [BarcodeRule.java:220] - 开始解析条码[[)>@06@12S0002@P1267370498@1PGCM31CR71E475KA51K@31PGCM31CR71E475KA51K@12V690588124@10VJPN-IA@2P@20P@6D20210114@14D20220714@30PY@Z1@K0@16K0@V97294419@3SS2871011499X9@Q6000NAR000@20T1@1TIA1107LX5@2T@1Z@@]
...@@ -132,7 +132,7 @@ public class Settings extends BaseMongoBean { ...@@ -132,7 +132,7 @@ public class Settings extends BaseMongoBean {
/** /**
* 备份周期 * 备份周期
*/ */
private int backupHours = 0; private int backupHours = 10;
/** /**
* 维护周期 * 维护周期
......
...@@ -71,8 +71,18 @@ public class ComponentManagerImpl implements IComponentManager { ...@@ -71,8 +71,18 @@ public class ComponentManagerImpl implements IComponentManager {
{ {
log.debug("Search components with Query " + query.toString()); log.debug("Search components with Query " + query.toString());
pageList.setList(componentDao.findByQuery(query, pageList.getPageNumber(), pageList.getObjectsPerPage()));
pageList.setFullListSize(componentDao.countByQuery(query)); int sizePerPage = pageList.getObjectsPerPage();
int totalSize = componentDao.countByQuery(query);
pageList.setFullListSize(totalSize);
int pageNumber = pageList.getPageNumber();
if(pageNumber == -1){
sizePerPage = totalSize;
pageNumber = 1;
}
pageList.setList(componentDao.findByQuery(query, pageNumber, sizePerPage));
log.debug("Search returns " + pageList.getFullListSize() + " components"); log.debug("Search returns " + pageList.getFullListSize() + " components");
return pageList; return pageList;
} }
......
...@@ -18,7 +18,7 @@ import javax.validation.Valid; ...@@ -18,7 +18,7 @@ import javax.validation.Valid;
@Controller @Controller
@RequestMapping("/barcode/barcodeSettings.html") @RequestMapping("/system/barcodeSettings.html")
public class BarcodeSettingsController extends SettingsController { public class BarcodeSettingsController extends SettingsController {
......
...@@ -7,6 +7,7 @@ import com.myproject.bean.search.PageList; ...@@ -7,6 +7,7 @@ import com.myproject.bean.search.PageList;
import com.myproject.manager.IComponentManager; import com.myproject.manager.IComponentManager;
import com.myproject.util.StorageConstants; import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.FileUpload; import com.myproject.webapp.controller.FileUpload;
import org.displaytag.tags.TableTagParameters;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
...@@ -89,8 +90,13 @@ public class ComponentSearchController extends BaseSearchController { ...@@ -89,8 +90,13 @@ public class ComponentSearchController extends BaseSearchController {
request.setAttribute("type", componentType); request.setAttribute("type", componentType);
} }
PageList pageList = searchCriteria.getPageList();
if (request.getParameter(TableTagParameters.PARAMETER_EXPORTING) != null){
pageList.setPageNumber(-1);
}
query.with(new Sort(Sort.Direction.DESC, "updateDate")); query.with(new Sort(Sort.Direction.DESC, "updateDate"));
searchCriteria.setPageList(componentmanager.findByQuery(query, searchCriteria.getPageList())); searchCriteria.setPageList(componentmanager.findByQuery(query, pageList));
//model.addAttribute("searchResult", searchCriteria.getPageList()); //model.addAttribute("searchResult", searchCriteria.getPageList());
// return new ModelAndView(getSuccessView(), model.asMap()); // return new ModelAndView(getSuccessView(), model.asMap());
......
...@@ -28,6 +28,7 @@ import org.springframework.web.multipart.commons.CommonsMultipartResolver; ...@@ -28,6 +28,7 @@ import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
...@@ -91,7 +92,7 @@ public class ComponentUpdateController extends BaseUpdateController{ ...@@ -91,7 +92,7 @@ public class ComponentUpdateController extends BaseUpdateController{
@RequestMapping(method = RequestMethod.POST) @RequestMapping(method = RequestMethod.POST)
public String submit(@Valid Component component, BindingResult result, public String submit(@Valid Component component, BindingResult result,
HttpServletRequest request) throws Exception { HttpServletRequest request, HttpServletResponse response) throws Exception {
if(result.hasErrors()) { if(result.hasErrors()) {
return getSuccessView(); return getSuccessView();
} else { } else {
...@@ -149,7 +150,11 @@ public class ComponentUpdateController extends BaseUpdateController{ ...@@ -149,7 +150,11 @@ public class ComponentUpdateController extends BaseUpdateController{
} }
} }
saveMessage(request, getText("component.saveSuccess", request.getLocale())); saveMessage(request, getText("component.saveSuccess", request.getLocale()));
break; //return "/component/componentSearch.html";
//break;
response.sendRedirect(request.getContextPath() + "/component/componentUpdate.html");
//return StorageConstants.COMPONENT_SEARCH_VIEW;
return null;
case StorageConstants.DELETE: case StorageConstants.DELETE:
componentmanager.delete(component); componentmanager.delete(component);
saveMessage(request, getText("component.deleteSuccess", request.getLocale())); saveMessage(request, getText("component.deleteSuccess", request.getLocale()));
......
...@@ -32,7 +32,6 @@ import java.util.concurrent.Executors; ...@@ -32,7 +32,6 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@Controller @Controller
...@@ -135,7 +134,8 @@ public class SzShelfController extends BaseController { ...@@ -135,7 +134,8 @@ public class SzShelfController extends BaseController {
private void sendToMiniStock(){ private void sendToMiniStock(){
try{ try{
//2个小时还在库中的,发送到MiniStock //2个小时还在库中的,发送到MiniStock
List<StoragePos> posListToSend = storagePosManager.findBeforePutinTime(10); int miniStockHours = dataCache.getSettings().getBackupHours();
List<StoragePos> posListToSend = storagePosManager.findBeforePutinTime(miniStockHours);
sendToMiniStock(posListToSend); sendToMiniStock(posListToSend);
}catch (Exception e){ }catch (Exception e){
log.error("发送到MiniStock出错",e); log.error("发送到MiniStock出错",e);
...@@ -492,30 +492,30 @@ public class SzShelfController extends BaseController { ...@@ -492,30 +492,30 @@ public class SzShelfController extends BaseController {
@ResponseBody @ResponseBody
public String outFromShelf(HttpServletRequest request){ public String outFromShelf(HttpServletRequest request){
final String cid = request.getParameter("cid"); final String cid = request.getParameter("cid");
String partnumber = request.getParameter("pn"); String outPosId = request.getParameter("outPosId");
String opUser = request.getParameter("opUser"); String authCode = request.getParameter("opUser");
if(Strings.isNullOrEmpty(opUser)){ if(Strings.isNullOrEmpty(authCode)){
return getText("shelf.msg.emptyEmployeeNo",request.getLocale(),"请输入工号"); return getText("shelf.msg.emptyEmployeeNo",request.getLocale(),"请输入工号");
} }
User user = userManager.findByAuthCode(opUser); User user = StorageDataController.getLoginUser();
if(user == null){ if(user == null){
return getText("shelf.msg.noPermission",request.getLocale(),"无权执行此操作"); return getText("shelf.msg.noPermission",request.getLocale(),"无权执行此操作,请重新登陆");
} }else{
if(partnumber != null){ if(!user.getAuthCode().equals(authCode)){
partnumber = partnumber.trim(); return getText("shelf.msg.authCodeError",request.getLocale(),"授权码错误");
} }
Storage storage = dataCache.getStorage(cid);
if(storage == null){
String msg = getText("shelf.msg.notFound",request.getLocale(),"未找到料架");
return msg;
} }
String storageId = storage.getId();
String areaId = storage.getAreaId();
StorageConstants.CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType(); StoragePos pos = storagePosManager.get(outPosId);
Collection<String> excludePosIds = taskService.excludePosIds(areaId);
StoragePos pos = storagePosManager.findPartNumberPos(storageId,partnumber,excludePosIds, checkoutType);
if(pos != null){ if(pos != null){
Storage storage = dataCache.getStorage(cid);
if(storage == null){
String msg = getText("shelf.msg.notFound",request.getLocale(),"未找到料架");
return msg;
}else if(!storage.getId().equals(pos.getStorageId())){
return getText("shelf.msg.noPermission",request.getLocale(),"无权执行此操作,该物料不属于该料架");
}
log.info(pos.getBarcode().getBarcode() + " 从["+pos.getPosName()+"]手动出库,点亮对应库位"); log.info(pos.getBarcode().getBarcode() + " 从["+pos.getPosName()+"]手动出库,点亮对应库位");
int delayCloseTime = 10000; int delayCloseTime = 10000;
...@@ -527,7 +527,7 @@ public class SzShelfController extends BaseController { ...@@ -527,7 +527,7 @@ public class SzShelfController extends BaseController {
} }
openAndCloseLights(storage,posNames,delayCloseTime,color); openAndCloseLights(storage,posNames,delayCloseTime,color);
taskService.addTaskToFinished(pos,null,opUser); taskService.addTaskToFinished(pos,null,authCode);
return "OK"+getText("shelf.msg.outOk",new String[]{pos.getShortPosName()},request.getLocale(),"操作成功,请从库位["+pos.getPosName()+"]中取出物料"); return "OK"+getText("shelf.msg.outOk",new String[]{pos.getShortPosName()},request.getLocale(),"操作成功,请从库位["+pos.getPosName()+"]中取出物料");
}else{ }else{
...@@ -649,7 +649,9 @@ public class SzShelfController extends BaseController { ...@@ -649,7 +649,9 @@ public class SzShelfController extends BaseController {
} }
posName = posName.substring(1); posName = posName.substring(1);
} }
return getText("shelf.msg.alreadyInPos",new String[]{inPos.getShortPosName()},request.getLocale(),"该物料已在库位["+posName+"]中"); String lineName = inPos.getBarcode().getLineInfoStr();
String inName = lineName +"(" + inPos.getShortPosName() + ")";
return getText("shelf.msg.alreadyInPos",new String[]{inName},request.getLocale(),"该物料已在["+posName+"]中");
} }
String putInColor = "red"; String putInColor = "red";
...@@ -676,7 +678,7 @@ public class SzShelfController extends BaseController { ...@@ -676,7 +678,7 @@ public class SzShelfController extends BaseController {
//线别信息不一致 //线别信息不一致
if(Strings.isNullOrEmpty(lineInfoStr)){ if(Strings.isNullOrEmpty(lineInfoStr)){
log.error("["+packageId+"]线别信息与配置不一致"); log.error("["+packageId+"]线别信息与配置不一致");
return "n"+getText("shelf.msg.erroLine",new String[]{ecall.getSmtLineNo()}, request.getLocale(),"该物料是"+ecall.getSmtLineNo()+"物料,如确认入库请选择对应线别"); return "n"+getText("shelf.msg.erroLine",new String[]{ecall.getSmtLineNo()}, request.getLocale(),"该物料是"+ecall.getSmtLineNo()+"线物料,如确认入库请选择对应线别");
} }
} }
}else{ }else{
...@@ -787,6 +789,14 @@ public class SzShelfController extends BaseController { ...@@ -787,6 +789,14 @@ public class SzShelfController extends BaseController {
} }
} }
@RequestMapping("/service/store/shelfInventory")
@ResponseBody
public List<StoragePos> shelfInventory(HttpServletRequest request) {
String cid = request.getParameter("cid");
String storageId = dataCache.getStorage(cid).getId();
return storagePosManager.findNotEmptyByStorageId(storageId);
}
@RequestMapping("/service/store/testNet") @RequestMapping("/service/store/testNet")
@ResponseBody @ResponseBody
public String testNet(HttpServletRequest request) { public String testNet(HttpServletRequest request) {
......
...@@ -8,6 +8,7 @@ import com.myproject.dao.mongo.IDataLogDao; ...@@ -8,6 +8,7 @@ import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.util.StorageConstants; import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.storage.BaseSearchController; import com.myproject.webapp.controller.storage.BaseSearchController;
import org.displaytag.properties.SortOrderEnum; import org.displaytag.properties.SortOrderEnum;
import org.displaytag.tags.TableTagParameters;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
...@@ -70,15 +71,20 @@ public class DataLogSearchController extends BaseSearchController { ...@@ -70,15 +71,20 @@ public class DataLogSearchController extends BaseSearchController {
criteria.and("partNumber").regex(pattern); criteria.and("partNumber").regex(pattern);
} }
query.addCriteria(criteria); query.addCriteria(criteria);
PageList pageList = searchCriteria.getPageList(); PageList pageList = searchCriteria.getPageList();
if(pageList.getSortCriterion().equals("id")){ if(pageList.getSortCriterion().equals("id")){
pageList.setSortCriterion("updateDate"); pageList.setSortCriterion("updateDate");
pageList.setSortDirection(SortOrderEnum.DESCENDING); pageList.setSortDirection(SortOrderEnum.DESCENDING);
searchCriteria.setPageList(pageList);
} }
searchCriteria.setPageList(dataLogDao.findByQuery(query, searchCriteria.getPageList())); if (request.getParameter(TableTagParameters.PARAMETER_EXPORTING) != null){
pageList.setPageNumber(-1);
}
searchCriteria.setPageList(dataLogDao.findByQuery(query, pageList));
return SUCCESS_VIEW; return SUCCESS_VIEW;
} }
......
...@@ -15,7 +15,7 @@ import javax.validation.Valid; ...@@ -15,7 +15,7 @@ import javax.validation.Valid;
@Controller @Controller
@RequestMapping("/workOrder/checkOutSettings.html") @RequestMapping("/system/checkOutSettings.html")
public class CheckOutSettingsController extends SettingsController { public class CheckOutSettingsController extends SettingsController {
......
...@@ -304,6 +304,7 @@ settings.pcbEmail.everyday=Everyday ...@@ -304,6 +304,7 @@ settings.pcbEmail.everyday=Everyday
settings.pcbEmail.reminder=Remind settings.pcbEmail.reminder=Remind
settings.pcbEmail.reminderDay=Before Due settings.pcbEmail.reminderDay=Before Due
settings.remind.deadday=days dead metiral remind settings.remind.deadday=days dead metiral remind
settings.miniStock.hours=hours to MiniStock
settings.pcbEmail.expire=PCB expiration settings.pcbEmail.expire=PCB expiration
settings.pcbEmail.adress=Emails (seperated by ;) settings.pcbEmail.adress=Emails (seperated by ;)
barCodeSettings.rule=Barcode Rules barCodeSettings.rule=Barcode Rules
......
...@@ -409,4 +409,5 @@ settings.restore.warning=Warning\: This operation cannot be undone. \!\!\! ...@@ -409,4 +409,5 @@ settings.restore.warning=Warning\: This operation cannot be undone. \!\!\!
settings.restore.confirm=Would you like to proceed? settings.restore.confirm=Would you like to proceed?
settings.restore.success=Operation succeeded settings.restore.success=Operation succeeded
checkout.sucess=Add task list successn checkout.sucess=Add task list successn
settings.remind.deadday=days dead metiral remind
\ No newline at end of file \ No newline at end of file
settings.remind.deadday=days dead metiral remind
settings.miniStock.hours=hours to MiniStock
\ No newline at end of file \ No newline at end of file
...@@ -366,4 +366,5 @@ settings.restore.warning=\u8B66\u544A\:\u8FD8\u539F\u540E,\u7CFB\u7EDF\u5C06\u8F ...@@ -366,4 +366,5 @@ settings.restore.warning=\u8B66\u544A\:\u8FD8\u539F\u540E,\u7CFB\u7EDF\u5C06\u8F
settings.restore.confirm=\u786E\u5B9A\u8981\u8FD8\u539F\u5230\u6B64\u7248\u672C settings.restore.confirm=\u786E\u5B9A\u8981\u8FD8\u539F\u5230\u6B64\u7248\u672C
settings.restore.success=\u64CD\u4F5C\u6210\u529F settings.restore.success=\u64CD\u4F5C\u6210\u529F
checkout.sucess=\u52A0\u5165\u51FA\u5E93\u4EFB\u52A1\u5217\u8868\u6210\u529F checkout.sucess=\u52A0\u5165\u51FA\u5E93\u4EFB\u52A1\u5217\u8868\u6210\u529F
settings.remind.deadday=\u5929\u524D\u5446\u6EDE\u7269\u6599\u63D0\u9192
\ No newline at end of file \ No newline at end of file
settings.remind.deadday=\u5929\u524D\u5446\u6EDE\u7269\u6599\u63D0\u9192
settings.miniStock.hours=\u5C0F\u65F6\u524D\u7269\u6599\u53D1\u9001\u5230MiniStock
\ No newline at end of file \ No newline at end of file
...@@ -361,11 +361,12 @@ shelf.employeeNo=Employee No. ...@@ -361,11 +361,12 @@ shelf.employeeNo=Employee No.
shelf.msg.opSucess=Operation complete shelf.msg.opSucess=Operation complete
shelf.msg.notFound=Shelf not found. shelf.msg.notFound=Shelf not found.
shelf.msg.emptyEmployeeNo=Employee No. is required. shelf.msg.emptyEmployeeNo=Employee No. is required.
shelf.msg.noPermission=No permission to operate. shelf.msg.noPermission=No permission to operate, please relogin.
shelf.msg.authCodeError=The auth code is error.
shelf.msg.outOk=Please take out the material from the location [{0}] shelf.msg.outOk=Please take out the material from the location [{0}]
shelf.msg.outError=No material is found. shelf.msg.outError=No material is found.
shelf.msg.noLine=The line information is not found, please select the line if confirmed. shelf.msg.noLine=The line information is not found, please select the line if confirmed.
shelf.msg.erroLine=The material is for {0}, please select the line if confirmed. shelf.msg.erroLine=The material is for Line {0}, please select the line if confirmed.
shelf.msg.alreadyInPos=The material is already exists in [{0}] shelf.msg.alreadyInPos=The material is already exists in [{0}]
shelf.msg.inOk=Please put the material in the location [{0}] shelf.msg.inOk=Please put the material in the location [{0}]
shelf.msg.inMergeOk=Please merge the location [{0}], then put in the material. shelf.msg.inMergeOk=Please merge the location [{0}], then put in the material.
......
...@@ -360,11 +360,12 @@ shelf.employeeNo=Employee No. ...@@ -360,11 +360,12 @@ shelf.employeeNo=Employee No.
shelf.msg.opSucess=Operation complete shelf.msg.opSucess=Operation complete
shelf.msg.notFound=Shelf not found. shelf.msg.notFound=Shelf not found.
shelf.msg.emptyEmployeeNo=Employee No. is required. shelf.msg.emptyEmployeeNo=Employee No. is required.
shelf.msg.noPermission=No permission to operate. shelf.msg.noPermission=No permission to operate, please relogin.
shelf.msg.authCodeError=The auth code is error.
shelf.msg.outOk=Please take out the material from the location [{0}] shelf.msg.outOk=Please take out the material from the location [{0}]
shelf.msg.outError=No material is found. shelf.msg.outError=No material is found.
shelf.msg.noLine=The line information is not found, please select the line if confirmed. shelf.msg.noLine=The line information is not found, please select the line if confirmed.
shelf.msg.erroLine=The material is for {0}, please select the line if confirmed. shelf.msg.erroLine=The material is for Line {0}, please select the line if confirmed.
shelf.msg.alreadyInPos=The material is already exists in [{0}] shelf.msg.alreadyInPos=The material is already exists in [{0}]
shelf.msg.inOk=Please put the material in the location [{0}] shelf.msg.inOk=Please put the material in the location [{0}]
shelf.msg.inMergeOk=Please merge the location [{0}], then put in the material. shelf.msg.inMergeOk=Please merge the location [{0}], then put in the material.
......
...@@ -360,11 +360,12 @@ shelf.employeeNo=\u5458\u5DE5\u5DE5\u53F7 ...@@ -360,11 +360,12 @@ shelf.employeeNo=\u5458\u5DE5\u5DE5\u53F7
shelf.msg.opSucess=\u64CD\u4F5C\u5B8C\u6210 shelf.msg.opSucess=\u64CD\u4F5C\u5B8C\u6210
shelf.msg.notFound=\u672A\u627E\u5230\u6599\u67B6 shelf.msg.notFound=\u672A\u627E\u5230\u6599\u67B6
shelf.msg.emptyEmployeeNo=\u8BF7\u8F93\u5165\u5DE5\u53F7 shelf.msg.emptyEmployeeNo=\u8BF7\u8F93\u5165\u5DE5\u53F7
shelf.msg.noPermission=\u65E0\u6743\u6267\u884C\u6B64\u64CD\u4F5C shelf.msg.noPermission=\u65E0\u6743\u6267\u884C\u6B64\u64CD\u4F5C,\u8BF7\u91CD\u65B0\u767B\u9646
shelf.msg.authCodeError=\u6388\u6743\u7801\u9519\u8BEF
shelf.msg.outOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u4ECE\u5E93\u4F4D[{0}]\u4E2D\u53D6\u51FA\u7269\u6599 shelf.msg.outOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u4ECE\u5E93\u4F4D[{0}]\u4E2D\u53D6\u51FA\u7269\u6599
shelf.msg.outError=\u64CD\u4F5C\u5931\u8D25,\u672A\u627E\u5230\u53EF\u4EE5\u51FA\u5E93\u7684\u7269\u6599 shelf.msg.outError=\u64CD\u4F5C\u5931\u8D25,\u672A\u627E\u5230\u53EF\u4EE5\u51FA\u5E93\u7684\u7269\u6599
shelf.msg.noLine=\u672A\u67E5\u5230\u8BE5\u7269\u6599\u7684\u7EBF\u522B\u4FE1\u606F,\u5982\u786E\u8BA4\u5165\u5E93\u8BF7\u9009\u62E9\u5BF9\u5E94\u7EBF\u522B shelf.msg.noLine=\u672A\u67E5\u5230\u8BE5\u7269\u6599\u7684\u7EBF\u522B\u4FE1\u606F,\u5982\u786E\u8BA4\u5165\u5E93\u8BF7\u9009\u62E9\u5BF9\u5E94\u7EBF\u522B
shelf.msg.erroLine=\u8BE5\u7269\u6599\u662F{0}\u7269\u6599,\u5982\u786E\u8BA4\u5165\u5E93\u8BF7\u9009\u62E9\u5BF9\u5E94\u7EBF\u522B shelf.msg.erroLine=\u8BE5\u7269\u6599\u662F{0}\u7EBF\u7269\u6599,\u5982\u786E\u8BA4\u5165\u5E93\u8BF7\u9009\u62E9\u5BF9\u5E94\u7EBF\u522B
shelf.msg.alreadyInPos=\u8BE5\u7269\u6599\u5DF2\u5728\u5E93\u4F4D[{0}]\u4E2D shelf.msg.alreadyInPos=\u8BE5\u7269\u6599\u5DF2\u5728\u5E93\u4F4D[{0}]\u4E2D
shelf.msg.inOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u653E\u5165\u5E93\u4F4D[{0}] shelf.msg.inOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u653E\u5165\u5E93\u4F4D[{0}]
shelf.msg.inMergeOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u5408\u5E76\u5E93\u4F4D[{0}]\u5E76\u653E\u5165\u6599\u76D8 shelf.msg.inMergeOk=\u64CD\u4F5C\u6210\u529F,\u8BF7\u5408\u5E76\u5E93\u4F4D[{0}]\u5E76\u653E\u5165\u6599\u76D8
......
...@@ -94,11 +94,15 @@ ...@@ -94,11 +94,15 @@
<div class="table-scrollable"> <div class="table-scrollable">
<display:table name="searchCriteria.pageList" cellspacing="0" cellpadding="0" requestURI="componentSearch.html?type=${type}" <display:table name="searchCriteria.pageList" cellspacing="0" cellpadding="0" requestURI="componentSearch.html?type=${type}"
sort="external" sort="external"
defaultsort="1" class="table table-striped table-bordered table-hover" export="false" id="component"> defaultsort="1" class="table table-striped table-bordered table-hover" export="true" id="component">
<%--<display:column property="name" titleKey="component.name"/>--%> <%--<display:column property="name" titleKey="component.name"/>--%>
<display:column titleKey="component.partNumber"> <display:setProperty name="export.csv.filename" value="components.csv" />
<display:column titleKey="component.partNumber" media="html">
<a href="${ctx}/component/componentUpdate.html?type=${component.type}&id=${component.id}">${component.partNumber}</a> <a href="${ctx}/component/componentUpdate.html?type=${component.type}&id=${component.id}">${component.partNumber}</a>
</display:column> </display:column>
<display:column titleKey="component.partNumber" media="csv">
${component.partNumber}
</display:column>
<display:column property="provider" titleKey="component.provider"/> <display:column property="provider" titleKey="component.provider"/>
<display:column titleKey="component.plate.size"> <display:column titleKey="component.plate.size">
${component.plateSize} x ${component.height} ${component.plateSize} x ${component.height}
......
...@@ -287,7 +287,8 @@ ...@@ -287,7 +287,8 @@
$("#btn"+ids[i]).parent().parent().attr("class","hide"); $("#btn"+ids[i]).parent().parent().attr("class","hide");
} }
$.post("${ctx}/service/store/clearInactionPos", {pids: posId}, function (data) { $.post("${ctx}/service/store/clearInactionPos", {pids: posId}, function (data) {
window.location.href=""; //window.location.href="";
$("#btn"+ids[i]).parent().parent().attr("class","hide");
}); });
} }
......
...@@ -71,17 +71,6 @@ ...@@ -71,17 +71,6 @@
<a href="#" onclick="cancelTask('${dataLog.id}')"><fmt:message key="button.cancel"/></a> <a href="#" onclick="cancelTask('${dataLog.id}')"><fmt:message key="button.cancel"/></a>
</c:if> </c:if>
</display:column> </display:column>
<display:column titleKey="dataLog.orderSource" sortable="true" sortProperty="sourceName" media="html">
${dataLog.sourceStr}
</display:column>
<display:column titleKey="dataLog.batch" sortable="true" sortProperty="batchInfo" property="batchInfo" media="html"/>
<%--<display:column titleKey="产品工程"></display:column>--%>
<%--<display:column titleKey="产品代号"></display:column>--%>
<%--<display:column titleKey="产品印制板代号"></display:column>--%>
<%--<display:column titleKey="印制板编号"></display:column>--%>
<%--<display:column titleKey="代料名称"></display:column>--%>
<%--<display:column titleKey="代料型号"></display:column>--%>
<%--<display:column titleKey="代料单"></display:column>--%>
<display:column property="operator" titleKey="操作人" sortable="true" sortProperty="operator"/> <display:column property="operator" titleKey="操作人" sortable="true" sortProperty="operator"/>
<display:column titleKey="dataLog.date" sortable="true" sortProperty="updateDate"> <display:column titleKey="dataLog.date" sortable="true" sortProperty="updateDate">
<fmt:formatDate value="${dataLog.updateDate}" pattern="yyyy-MM-dd HH:mm"/> <fmt:formatDate value="${dataLog.updateDate}" pattern="yyyy-MM-dd HH:mm"/>
......
...@@ -34,6 +34,17 @@ ...@@ -34,6 +34,17 @@
background-color: #00FF00 !important; background-color: #00FF00 !important;
} }
.modal-body {
position: relative;
padding: 15px;
height: 360px;
overflow-y: scroll;
}
.td-item{
display: block;
}
</style> </style>
<link href="${ctx}/scripts/lobibox/css/lobibox.min.css?id=2" rel="stylesheet" type="text/css"/> <link href="${ctx}/scripts/lobibox/css/lobibox.min.css?id=2" rel="stylesheet" type="text/css"/>
...@@ -64,7 +75,7 @@ ...@@ -64,7 +75,7 @@
<%--<fmt:message key="shelf.btn.ministock"/>--%> <%--<fmt:message key="shelf.btn.ministock"/>--%>
<%--</button>--%> <%--</button>--%>
<button type="button" class="btn btn-fit-height yellow" onclick="showPartNumbers();"> <button type="button" class="btn btn-fit-height yellow" onclick="showInventory();">
<i class="fa fa-sign-out"></i><fmt:message key="button.checkout"/> <i class="fa fa-sign-out"></i><fmt:message key="button.checkout"/>
</button> </button>
</div> </div>
...@@ -106,7 +117,7 @@ ...@@ -106,7 +117,7 @@
<th><fmt:message key="shelf.cabinet"/></th> <th><fmt:message key="shelf.cabinet"/></th>
</tr> </tr>
</thead> </thead>
<tbody class="dataTable"> <tbody class="taskTable">
</tbody> </tbody>
</table> </table>
...@@ -138,7 +149,7 @@ ...@@ -138,7 +149,7 @@
<th><fmt:message key="shelf.cabinet"/></th> <th><fmt:message key="shelf.cabinet"/></th>
</tr> </tr>
</thead> </thead>
<tbody class="dataTable"> <tbody class="taskTable">
</tbody> </tbody>
</table> </table>
</div> </div>
...@@ -148,32 +159,47 @@ ...@@ -148,32 +159,47 @@
</div> </div>
</div> </div>
<div id="allPartNumbers" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false"> <div id="shelfInventory" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog" style="margin-top: 10%;width:80%;margin-left:10%;"> <div class="modal-dialog" style="margin-top: 10%;width:80%;margin-left:10%;">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
<h4 class="modal-title" id="modal-title" style="font-weight: 500;"><fmt:message key="button.checkout"/></h4> <h4 class="modal-title" style="margin:10px;">
<span id="detailTitle">&nbsp<fmt:message key="button.checkout"/></span>
</h4>
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control" id="searchPn" /> <input type="text" class="form-control filterInput" id="filterInput"/>
</div> </div>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="row" id="partNumberItems"> <table class="table table-striped table-hover" id="itemsTable">
<div class="col-lg-3 col-md-3 col-sm-6 col-xs-12"> <thead>
<div class="bg-blue-madison partnumber-box">xxx</div> <tr>
</div> <th>
</div> <fmt:message key="barcode.barcode"/>
</th>
<th>
<fmt:message key="barcode.partNumber"/>
</th>
<th>
<fmt:message key="Line"/>
</th>
<th>
<fmt:message key="barcode.inStoreRemainTime"/>
</th>
<th>
<fmt:message key="checkOut.pos"/>
</th>
<th>
<fmt:message key="checkOut.operate"/>
</th>
</tr>
</thead>
<tbody class="theItems">
</tbody>
</table>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<div id="footerBtn">
<%--<a href="" class="btn yellow left" id="findAndOut"><i class="fa fa-sign-out"></i><fmt:message key="allBoxView.findAndOut"/></a>--%>
<button type="button" class="btn green" onclick="lastPage()" id="lastPage">
<fmt:message key="allBoxView.lastPage"/></button>
<button type="button" class="btn green" onclick="nextPage()" id="nextPage">
<fmt:message key="allBoxView.nextPage"/></button>
</div>
<%--<button type="button" data-dismiss="modal" class="btn default" id="cancelAuthBtn">取消</button>--%> <%--<button type="button" data-dismiss="modal" class="btn default" id="cancelAuthBtn">取消</button>--%>
</div> </div>
</div> </div>
...@@ -203,17 +229,22 @@ ...@@ -203,17 +229,22 @@
</div> </div>
<div id="opUserConfirm" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false"> <div id="opUserConfirm" class="modal fade" tabindex="-1" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog" style="margin-top: 10%;width:80%;margin-left:10%;"> <div class="modal-dialog" style="margin-top: 10%;width:50%;margin-left:25%;">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" style="font-weight: 500;"><fmt:message key="shelf.employeeNo"/><span id="authErrorMsg" style="font-weight: 500;color:red;"></span></h4> <h4 class="modal-title" style="font-weight: 500;"><fmt:message key="shelf.employeeNo"/></h4>
</div> </div>
<div class="modal-body"> <div class="modal-body" style="height:80px;overflow-y:hidden;">
<div class="row"> <div class="row">
<div class="input-group"> <div class="input-group">
<input type="hidden" id="outPosId" value=""/>
<input type="text" class="form-control" id="opUser" /> <input type="text" class="form-control" id="opUser" />
</div> </div>
<h4>
<span id="authErrorMsg" style="font-weight: 500;color:red;"></span>
</h4>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
...@@ -246,6 +277,9 @@ ...@@ -246,6 +277,9 @@
<fmt:message key="network.error.failed" var="networkFailed"/> <fmt:message key="network.error.failed" var="networkFailed"/>
<fmt:message key="runStatus.minutes" var="minuteLabel"/>
<fmt:message key="solder.hour" var="hourLabel"/>
<c:set var="scripts" scope="request"> <c:set var="scripts" scope="request">
<script type="text/javascript"> <script type="text/javascript">
...@@ -299,22 +333,86 @@ ...@@ -299,22 +333,86 @@
}).error(function(){showMsg("put in error");}); }).error(function(){showMsg("put in error");});
setInterval(function(){ showInventory = function(){
if($('#allPartNumbers').is(':visible')) { $("#opUser").val("");
$("#opUserConfirm").modal("hide"); $("#authErrorMsg").text("");
if($("#searchPn_keyboard").is(':visible')){
$("#searchPn_keyboard input").focus(); $(".filterInput").val("");
$("#theItems").html("");
$.post("${ctx}/service/store/shelfInventory", {cid: '${show}'}, function (posList) {
var table = $('#itemsTable').DataTable();
table.clear();
for(var i in posList){
//var index = parseInt(i) + 1;
var pos = posList[i];
var reelId = "<span class='td-item'>"+pos.barcode.barcode+"</span>";
var line = pos.barcode.lineInfoStr;
if(pos.barcode.lockId != null){
line = line + "("+pos.barcode.lockId+")";
}
var inStoreTime = "";
if(pos.inStoreHour >= 1){
inStoreTime = pos.inStoreHour + "${hourLabel}";
}
if(pos.inStoreMiniute != 0){
inStoreTime = inStoreTime + pos.inStoreMiniute + "${minuteLabel}";
}
var pn = "<span class='td-item'>"+pos.barcode.partNumber+"</span>";
var posName = pos.shortPosName;
var btn = '<button class="btn yellow " id="btn'+pos.id+'" onclick="checkoutPos(\''+pos.id+'\');">' +
'<i class="fa fa-sign-out"></i><fmt:message key="button.checkout"/></button>';
table.row.add( [ reelId,pn,line,inStoreTime,posName, btn] );
}
table.order( [ 0, 'asc' ] ).draw();
});
$("#shelfInventory").modal("show");
}
$('#itemsTable').dataTable( {
"searching": false,
"info": false,
paging: false,
"order": [[ 1, "asc" ]]
} );
filterItems = function(searchStr){
$(".theItems").children().each(function(){
if(!searchStr || $(this).text().indexOf(searchStr) >= 0){
$(this).show();
}else{ }else{
$("#searchPn").focus(); $(this).hide();
FilterPnItems();
} }
}else if($("#opUserConfirm").is(':visible')){ });
};
checkoutPos = function(posId){
$("#outPosId").val(posId);
$("#authErrorMsg").text("");
$("#opUser").val("");
$("#opUserConfirm").modal("show");
}
setInterval(function(){
if($("#opUserConfirm").is(':visible')){
if($("#opUser_keyboard").is(':visible')){ if($("#opUser_keyboard").is(':visible')){
$("#opUser_keyboard input.ui-keyboard-preview").focus(); $("#opUser_keyboard input.ui-keyboard-preview").focus();
}else{ }else{
$("#opUser").focus(); $("#opUser").focus();
} }
}else{ }else if($('#shelfInventory').is(':visible')) {
if($("#filterInput_keyboard").is(':visible')){
$("#filterInput_keyboard input").focus();
searchStr = $("#filterInput_keyboard input").val();
filterItems(searchStr);
}else{
$("#filterInput").focus();
var searchStr = $("#filterInput").val();
filterItems(searchStr);
}
}
else{
if($("#scan-code_keyboard").is(':visible')){ if($("#scan-code_keyboard").is(':visible')){
$("#scan-code_keyboard input").focus(); $("#scan-code_keyboard input").focus();
}else{ }else{
...@@ -325,126 +423,22 @@ ...@@ -325,126 +423,22 @@
//页码从0开始
var pageIndex = 0;
var partNumberItems = [];
var itemPerPage = 12;
var bgColors = ["bg-blue-madison","bg-green-haze","bg-purple-plum","bg-red-intense","bg-green","bg-yellow","bg-blue","bg-red","bg-purple","bg-blue-ebonyclay","bg-red-sunglo","bg-yellow-crusta"];
showPartNumbers = function(){
$("#opUser").val("");
$("#authErrorMsg").text("");
$("#opUserConfirm").modal("show");
<%--var findAndOutHref = '${ctx}/component/storagePosFind.html';--%>
<%--$("#findAndOut").attr("href",findAndOutHref);--%>
}
opUserOk = function(type){ opUserOk = function(type){
var opUser = $("#opUser").val(); var opUser = $("#opUser").val();
if(opUser != ""){ var outPosId = $("#outPosId").val();
$.post("${ctx}/service/store/accshelf/checkAuthCode", {opUser: opUser}, function (data) { $.post("${ctx}/service/store/accshelf/checkOut", {cid:'${show}', opUser: opUser, outPosId: outPosId}, function (data) {
if(data == ""){ if(data.indexOf("OK") == 0){
$("#opUserConfirm").attr("style","z-index:100000"); $("#opUserConfirm").attr("style","z-index:100000");
$("#opUserConfirm").modal("hide"); $("#opUserConfirm").modal("hide");
$("#opUserConfirm").attr("style",""); $("#opUserConfirm").attr("style","");
$("#searchPn").val(""); showMsg(data);
$.post("${ctx}/service/store/storageTypeInventory", {type: type, cid: '${show}'}, function (data) { }else{
pageIndex = -1; $("#authErrorMsg").text(data);
partNumberItems = data; }
nextPage();
}).error(function(){showMsg("request inventory error");});
}else{
$("#authErrorMsg").text(data);
}
}).error(function(){showMsg("request check user error");});
}
}
nextPage=function(){
pageIndex ++ ;
pageShow();
}
lastPage = function(){
pageIndex -- ;
pageShow();
}
disableBtn = function(){
$("#lastPage").show();
$("#nextPage").show();
$("#footerBtn").show();
//上一页不可用
if(pageIndex <= 0){
$("#lastPage").addClass("disabled");
}else{
$("#lastPage").removeClass("disabled");
}
var totalPage = Math.ceil(partNumberItems.length/itemPerPage);
if(pageIndex + 1 >= totalPage - 1){
$("#nextPage").addClass("disabled");
}else{
$("#nextPage").removeClass("disabled");
}
if(totalPage <= 1){
$("#lastPage").hide();
$("#nextPage").hide();
}
}
pageShow = function(){
var itemStr = "";
var endIndex = itemPerPage * (pageIndex+1);
if(endIndex > partNumberItems.length){
endIndex = partNumberItems.length;
}
for(var index = itemPerPage * pageIndex;index<endIndex;index++){
var pn = partNumberItems[index].partNumber;
itemStr = itemStr + "<div class='col-lg-3 col-md-3 col-sm-6 col-xs-12' onclick='checkoutByPartNumber(\""+pn+"\");'> " +
"<div class='"+bgColors[index%itemPerPage]+" partnumber-box'>"+pn+"</div></div>";
}
if(itemStr == ""){
itemStr = "<div style='font-size: 20px;text-align: center;'>${noReel_label}</div>";
}
$("#partNumberItems").html(itemStr);
disableBtn();
//$("#opUserConfirm").modal("hide"); }).error(function(){showMsg("request check out error");});
$("#allPartNumbers").modal("show");
} }
$("#searchPn").on('input propertychange',function(){
FilterPnItems();
});
function FilterPnItems(){
$("#lastPage").hide();
$("#nextPage").hide();
var itemStr = "";
var pnForSearch = $("#searchPn").val();
if(pnForSearch == ""){
pageShow();
return;
}
for(var index in partNumberItems){
var pn = partNumberItems[index].partNumber;
if(pn.indexOf(pnForSearch) >= 0){
itemStr = itemStr + "<div class='col-lg-3 col-md-3 col-sm-6 col-xs-12' onclick='checkoutByPartNumber(\""+pn+"\");'> " +
"<div class='"+bgColors[index%itemPerPage]+" partnumber-box'>"+pn+"</div></div>";
}
}
if(itemStr == ""){
itemStr = "<div style='font-size: 20px;text-align: center;'>${noReel_label}</div>";
}
$("#partNumberItems").html(itemStr);
}
closeAllLights = function(){ closeAllLights = function(){
$.post("${ctx}/service/store/accshelf/op", {opKey: 'closeAll', opValue:'true', cid: '${show}'}, function (data) { $.post("${ctx}/service/store/accshelf/op", {opKey: 'closeAll', opValue:'true', cid: '${show}'}, function (data) {
...@@ -470,14 +464,7 @@ ...@@ -470,14 +464,7 @@
} }
checkoutByPartNumber = function(partnumber) { $(".taskTable").html("");
var opUser = $("#opUser").val();
$.post("${ctx}/service/store/accshelf/checkOut", {pn: partnumber, cid: '${show}',opUser:opUser}, function (data) {
$("#allPartNumbers").modal("hide");
showMsg(data);
}).error(function(){showMsg("check out request error");});
}
$(".dataTable").html("");
closeVolume = function(guid){ closeVolume = function(guid){
...@@ -496,7 +483,7 @@ ...@@ -496,7 +483,7 @@
showMsg(""); showMsg("");
} }
$(".dataTable").html(""); $(".taskTable").html("");
var newRows = []; var newRows = [];
//data = [{"key":"12-160023-0-8909000864","tableNo":2,"lineNo":12,"colorClass":"red","shelfLoc":"1-1-2","status":1,"guid":"ABCDEF"}]; //data = [{"key":"12-160023-0-8909000864","tableNo":2,"lineNo":12,"colorClass":"red","shelfLoc":"1-1-2","status":1,"guid":"ABCDEF"}];
for(var item in data) { for(var item in data) {
...@@ -590,7 +577,7 @@ ...@@ -590,7 +577,7 @@
trLine.attr("style","color:"+trColor); trLine.attr("style","color:"+trColor);
}else{ }else{
var trStr = "<tr id='"+key+"' style='background-color:"+trColor+"'>" + tdStr +"</tr>"; var trStr = "<tr id='"+key+"' style='background-color:"+trColor+"'>" + tdStr +"</tr>";
lineBox.find(".dataTable").append(trStr); lineBox.find(".taskTable").append(trStr);
} }
} }
......
...@@ -57,39 +57,39 @@ ...@@ -57,39 +57,39 @@
</div> </div>
<div class="row"> <%--<div class="row">--%>
<div class="col-md-12"> <%--<div class="col-md-12">--%>
<!-- BEGIN CHART PORTLET--> <%--<!-- BEGIN CHART PORTLET-->--%>
<div class="portlet light bordered"> <%--<div class="portlet light bordered">--%>
<div class="portlet-title"> <%--<div class="portlet-title">--%>
<div class="caption"> <%--<div class="caption">--%>
<i class="icon-bar-chart font-green-haze"></i> <%--<i class="icon-bar-chart font-green-haze"></i>--%>
<span class="caption-subject bold uppercase font-green-haze"><fmt:message key="runStatus.alarmInfo"/></span> <%--<span class="caption-subject bold uppercase font-green-haze"><fmt:message key="runStatus.alarmInfo"/></span>--%>
</div> <%--</div>--%>
<div class="tools"> <%--<div class="tools">--%>
</div> <%--</div>--%>
</div> <%--</div>--%>
<div class="portlet-body"> <%--<div class="portlet-body">--%>
<div class="row"> <%--<div class="row">--%>
<div class="col-md-12"> <%--<div class="col-md-12">--%>
<div id="alarmChart" class="chart" style="height: 350px; overflow: hidden;"> <%--<div id="alarmChart" class="chart" style="height: 350px; overflow: hidden;">--%>
</div> <%--</div>--%>
</div> <%--</div>--%>
<div class="col-md-6"> <%--<div class="col-md-6">--%>
<div id="alarmTypeChart" class="chart col-md-6" style="height: 250px; overflow: hidden;"> <%--<div id="alarmTypeChart" class="chart col-md-6" style="height: 250px; overflow: hidden;">--%>
</div> <%--</div>--%>
</div> <%--</div>--%>
<div class="col-md-6"> <%--<div class="col-md-6">--%>
<div id="alarmBoxChart" class="chart col-md-6" style="height: 250px; overflow: hidden;"> <%--<div id="alarmBoxChart" class="chart col-md-6" style="height: 250px; overflow: hidden;">--%>
</div> <%--</div>--%>
</div> <%--</div>--%>
</div> <%--</div>--%>
</div> <%--</div>--%>
</div> <%--</div>--%>
<!-- END CHART PORTLET--> <%--<!-- END CHART PORTLET-->--%>
</div> <%--</div>--%>
</div> <%--</div>--%>
<fmt:message key="runStatus.throughput" var="label_throughput"/> <fmt:message key="runStatus.throughput" var="label_throughput"/>
<fmt:message key="runStatus.alarmTimes" var="label_alarmTimes"/> <fmt:message key="runStatus.alarmTimes" var="label_alarmTimes"/>
...@@ -191,202 +191,202 @@ ...@@ -191,202 +191,202 @@
}; };
inOutChart.setOption(inOutOption); inOutChart.setOption(inOutOption);
alarmOption = { <%--alarmOption = {--%>
tooltip: { <%--tooltip: {--%>
trigger: 'axis', <%--trigger: 'axis',--%>
axisPointer: { <%--axisPointer: {--%>
type: 'shadow', <%--type: 'shadow',--%>
crossStyle: { <%--crossStyle: {--%>
color: '#999' <%--color: '#999'--%>
} <%--}--%>
} <%--}--%>
}, <%--},--%>
legend: { <%--legend: {--%>
data:['${label_alarmTimes}','${label_alarmLastTime}'] <%--data:['${label_alarmTimes}','${label_alarmLastTime}']--%>
}, <%--},--%>
grid: { <%--grid: {--%>
left: '3%', <%--left: '3%',--%>
right: '4%', <%--right: '4%',--%>
bottom: '3%', <%--bottom: '3%',--%>
containLabel: true <%--containLabel: true--%>
}, <%--},--%>
xAxis: [ <%--xAxis: [--%>
{ <%--{--%>
type: 'category', <%--type: 'category',--%>
data: days, <%--data: days,--%>
axisPointer: { <%--axisPointer: {--%>
type: 'shadow' <%--type: 'shadow'--%>
} <%--}--%>
} <%--}--%>
], <%--],--%>
yAxis: [ <%--yAxis: [--%>
{ <%--{--%>
type: 'value', <%--type: 'value',--%>
name: '${label_alarmTimes}', <%--name: '${label_alarmTimes}',--%>
min: 0, <%--min: 0,--%>
max: 500, <%--max: 500,--%>
//interval: 5, <%--//interval: 5,--%>
minInterval: 1, <%--minInterval: 1,--%>
axisLabel: { <%--axisLabel: {--%>
formatter: '{value} ${label_times}' <%--formatter: '{value} ${label_times}'--%>
} <%--}--%>
}, <%--},--%>
{ <%--{--%>
type: 'value', <%--type: 'value',--%>
name: '${label_alarmLastTime}(${label_minutes})', <%--name: '${label_alarmLastTime}(${label_minutes})',--%>
min: 0, <%--min: 0,--%>
max: 1000, <%--max: 1000,--%>
//interval: 50, <%--//interval: 50,--%>
minInterval: 1, <%--minInterval: 1,--%>
axisLabel: { <%--axisLabel: {--%>
formatter: '{value} ${label_minutes}' <%--formatter: '{value} ${label_minutes}'--%>
} <%--}--%>
} <%--}--%>
], <%--],--%>
series: [ <%--series: [--%>
{ <%--{--%>
name:'${label_alarmTimes}', <%--name:'${label_alarmTimes}',--%>
type:'line', <%--type:'line',--%>
symbol: 'emptyCircle', <%--symbol: 'emptyCircle',--%>
symbolSize: 10, <%--symbolSize: 10,--%>
itemStyle:{ <%--itemStyle:{--%>
normal: { <%--normal: {--%>
color: '#F3565D' <%--color: '#F3565D'--%>
} <%--}--%>
}, <%--},--%>
data:alarms <%--data:alarms--%>
} <%--}--%>
, <%--,--%>
{ <%--{--%>
name:'${label_alarmLastTime}', <%--name:'${label_alarmLastTime}',--%>
type:'line', <%--type:'line',--%>
symbol: 'emptyCircle', <%--symbol: 'emptyCircle',--%>
stack: '总量', <%--stack: '总量',--%>
symbolSize: 10, <%--symbolSize: 10,--%>
itemStyle:{ <%--itemStyle:{--%>
normal: { <%--normal: {--%>
color: '#4b77be' <%--color: '#4b77be'--%>
} <%--}--%>
}, <%--},--%>
areaStyle: {normal: {}}, <%--areaStyle: {normal: {}},--%>
smooth:true, <%--smooth:true,--%>
symbol: 'none', <%--symbol: 'none',--%>
sampling: 'average', <%--sampling: 'average',--%>
yAxisIndex: 1, <%--yAxisIndex: 1,--%>
data:lastTimes <%--data:lastTimes--%>
} <%--}--%>
] <%--]--%>
}; <%--};--%>
var alarmChart = echarts.init(document.getElementById("alarmChart")); <%--var alarmChart = echarts.init(document.getElementById("alarmChart"));--%>
alarmChart.setOption(alarmOption); <%--alarmChart.setOption(alarmOption);--%>
//报警类型 <%--//报警类型--%>
var types = new Array(); <%--var types = new Array();--%>
var typeCount = new Array(); <%--var typeCount = new Array();--%>
var typeLastTimes = new Array(); <%--var typeLastTimes = new Array();--%>
<c:forEach items="${alarmTypeData}" var="alarmTypeItem"> <%--<c:forEach items="${alarmTypeData}" var="alarmTypeItem">--%>
types.push("${alarmTypeItem.label}"); <%--types.push("${alarmTypeItem.label}");--%>
typeCount.push({name:"${alarmTypeItem.label}",value:${alarmTypeItem.value}}); <%--typeCount.push({name:"${alarmTypeItem.label}",value:${alarmTypeItem.value}});--%>
typeLastTimes.push({name:"${alarmTypeItem.label}",value:${alarmTypeItem.value2}}); <%--typeLastTimes.push({name:"${alarmTypeItem.label}",value:${alarmTypeItem.value2}});--%>
</c:forEach> <%--</c:forEach>--%>
alarmTypeOption = { <%--alarmTypeOption = {--%>
tooltip: { <%--tooltip: {--%>
trigger: 'item', <%--trigger: 'item',--%>
formatter: "{b} <br/>{a}: {c} ({d}%)" <%--formatter: "{b} <br/>{a}: {c} ({d}%)"--%>
}, <%--},--%>
legend: { <%--legend: {--%>
orient: 'vertical', <%--orient: 'vertical',--%>
x: 'left', <%--x: 'left',--%>
data:types <%--data:types--%>
}, <%--},--%>
color: ['#4b8df8','#4da74d','#edc240','#cb4b4b', '#afd8f8','#9440ed','#36d7b7','#b074ff','#749f83','#91c7ae','#d48265','#61a0a8', '#2f4554', '#c23531'], <%--color: ['#4b8df8','#4da74d','#edc240','#cb4b4b', '#afd8f8','#9440ed','#36d7b7','#b074ff','#749f83','#91c7ae','#d48265','#61a0a8', '#2f4554', '#c23531'],--%>
series: [ <%--series: [--%>
{ <%--{--%>
name:'报警次数', <%--name:'报警次数',--%>
type:'pie', <%--type:'pie',--%>
selectedMode: 'single', <%--selectedMode: 'single',--%>
radius: [0, '40%'], <%--radius: [0, '40%'],--%>
label: { <%--label: {--%>
normal: { <%--normal: {--%>
show: false <%--show: false--%>
} <%--}--%>
}, <%--},--%>
data:typeCount <%--data:typeCount--%>
}, <%--},--%>
{ <%--{--%>
name:'报警持续时间', <%--name:'报警持续时间',--%>
type:'pie', <%--type:'pie',--%>
radius: ['55%', '75%'], <%--radius: ['55%', '75%'],--%>
label: { <%--label: {--%>
normal: { <%--normal: {--%>
show: false <%--show: false--%>
} <%--}--%>
}, <%--},--%>
data:typeLastTimes <%--data:typeLastTimes--%>
} <%--}--%>
] <%--]--%>
}; <%--};--%>
var alarmTypeChart = echarts.init(document.getElementById("alarmTypeChart")); <%--var alarmTypeChart = echarts.init(document.getElementById("alarmTypeChart"));--%>
alarmTypeChart.setOption(alarmTypeOption); <%--alarmTypeChart.setOption(alarmTypeOption);--%>
//报警BOX //报警BOX
var boxs = new Array(); <%--var boxs = new Array();--%>
var boxCount = new Array(); <%--var boxCount = new Array();--%>
var boxLastTimes = new Array(); <%--var boxLastTimes = new Array();--%>
<c:forEach items="${alarmBoxData}" var="alarmBoxItem"> <%--<c:forEach items="${alarmBoxData}" var="alarmBoxItem">--%>
boxs.push("${alarmBoxItem.label}"); <%--boxs.push("${alarmBoxItem.label}");--%>
boxCount.push({name:"${alarmBoxItem.label}",value:${alarmBoxItem.value}}); <%--boxCount.push({name:"${alarmBoxItem.label}",value:${alarmBoxItem.value}});--%>
boxLastTimes.push({name:"${alarmBoxItem.label}",value:${alarmBoxItem.value2}}); <%--boxLastTimes.push({name:"${alarmBoxItem.label}",value:${alarmBoxItem.value2}});--%>
</c:forEach> <%--</c:forEach>--%>
alarmBoxOption = { <%--alarmBoxOption = {--%>
tooltip: { <%--tooltip: {--%>
trigger: 'item', <%--trigger: 'item',--%>
formatter: "{b} <br/>{a}: {c} ({d}%)" <%--formatter: "{b} <br/>{a}: {c} ({d}%)"--%>
}, <%--},--%>
legend: { <%--legend: {--%>
orient: 'vertical', <%--orient: 'vertical',--%>
x: 'left', <%--x: 'left',--%>
data:boxs <%--data:boxs--%>
}, <%--},--%>
series: [ <%--series: [--%>
{ <%--{--%>
name:'报警次数', <%--name:'报警次数',--%>
type:'pie', <%--type:'pie',--%>
selectedMode: 'single', <%--selectedMode: 'single',--%>
radius: [0, '40%'], <%--radius: [0, '40%'],--%>
label: { <%--label: {--%>
normal: { <%--normal: {--%>
show: false <%--show: false--%>
} <%--}--%>
}, <%--},--%>
data:boxCount <%--data:boxCount--%>
}, <%--},--%>
{ <%--{--%>
name:'报警持续时间', <%--name:'报警持续时间',--%>
type:'pie', <%--type:'pie',--%>
radius: ['55%', '75%'], <%--radius: ['55%', '75%'],--%>
label: { <%--label: {--%>
normal: { <%--normal: {--%>
show: false <%--show: false--%>
} <%--}--%>
}, <%--},--%>
data:boxLastTimes <%--data:boxLastTimes--%>
} <%--}--%>
] <%--]--%>
}; <%--};--%>
var alarmBoxChart = echarts.init(document.getElementById("alarmBoxChart")); <%--var alarmBoxChart = echarts.init(document.getElementById("alarmBoxChart"));--%>
alarmBoxChart.setOption(alarmBoxOption); <%--alarmBoxChart.setOption(alarmBoxOption);--%>
......
...@@ -39,6 +39,12 @@ ...@@ -39,6 +39,12 @@
<span class="input-group-addon"><fmt:message key="settings.remind.deadday"/></span> <span class="input-group-addon"><fmt:message key="settings.remind.deadday"/></span>
</div> </div>
</div> </div>
<div class="form-group form-inline">
<div class="input-group margin-top-10">
<form:input path="backupHours" cssClass="form-control input-small"/>
<span class="input-group-addon"><fmt:message key="settings.miniStock.hours"/></span>
</div>
</div>
</div> </div>
<div class="portlet-title"> <div class="portlet-title">
......
...@@ -52,11 +52,7 @@ ...@@ -52,11 +52,7 @@
<%--</a>--%> <%--</a>--%>
<%--</li>--%> <%--</li>--%>
<li class="classic-menu-dropdown">
<a href="${ctx}/workOrder/checkOutSettings.html" name="workOrder">
<fmt:message key="menu.outRule"/><span class="selected"></span>
</a>
</li>
</security:authorize> </security:authorize>
</ul> </ul>
</security:authorize> </security:authorize>
...@@ -89,12 +85,6 @@ ...@@ -89,12 +85,6 @@
<fmt:message key="menu.barCode.search"/><span class="selected"></span> <fmt:message key="menu.barCode.search"/><span class="selected"></span>
</a> </a>
</li> </li>
<li class="classic-menu-dropdown">
<a href="${ctx}/barcode/barcodeSettings.html" name="barcode">
<fmt:message key="menu.barCode.settings"/><span class="selected"></span>
</a>
</li>
</ul> </ul>
</security:authorize> </security:authorize>
...@@ -151,6 +141,17 @@ ...@@ -151,6 +141,17 @@
</security:authorize> </security:authorize>
<li class="classic-menu-dropdown">
<a href="${ctx}/system/barcodeSettings.html" name="system">
<fmt:message key="menu.barCode.settings"/><span class="selected"></span>
</a>
</li>
<li class="classic-menu-dropdown">
<a href="${ctx}/system/checkOutSettings.html" name="system">
<fmt:message key="menu.outRule"/><span class="selected"></span>
</a>
</li>
<security:authorize ifAnyGranted="ROLE_MANAGE_ROLE,ROLE_MANAGE_USER"> <security:authorize ifAnyGranted="ROLE_MANAGE_ROLE,ROLE_MANAGE_USER">
<li class="classic-menu-dropdown"> <li class="classic-menu-dropdown">
<a href="${ctx}/system/storageSearch.html" name="system"> <a href="${ctx}/system/storageSearch.html" name="system">
...@@ -158,6 +159,8 @@ ...@@ -158,6 +159,8 @@
</a> </a>
</li> </li>
</security:authorize> </security:authorize>
</ul> </ul>
</div> </div>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!