Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierView.jsp =================================================================== diff -u -r17150 -r20837 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierView.jsp (.../supplierView.jsp) (revision 17150) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierView.jsp (.../supplierView.jsp) (revision 20837) @@ -1,6 +1,7 @@ <%@page import="com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier"%> <%@ page contentType="text/html; charset=UTF-8"%> <%@ include file="/common/taglibs.jsp"%> +<%@page import="com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile"%> @@ -15,8 +16,10 @@ + + Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/action/RegistrationCertificationAction.java =================================================================== diff -u -r20824 -r20837 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/action/RegistrationCertificationAction.java (.../RegistrationCertificationAction.java) (revision 20824) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/action/RegistrationCertificationAction.java (.../RegistrationCertificationAction.java) (revision 20837) @@ -46,16 +46,17 @@ @Action(value = "SupplierRegistrationCertificateAction") public class RegistrationCertificationAction implements ModelDriven, Preparable { - private RegistrationCertification supplierRegistrationCertificate; + private RegistrationCertification registrationCertification; - private RegistrationCertificationManager supplierRegistrationCertificateManager; + private RegistrationCertificationManager registrationCertificationManager; private String spell; - public void setSupplierRegistrationCertificateManager( - RegistrationCertificationManager supplierRegistrationCertificateManager) { - this.supplierRegistrationCertificateManager = supplierRegistrationCertificateManager; + public void setRegistrationCertificationManager( + RegistrationCertificationManager registrationCertificationManager) { + this.registrationCertificationManager = registrationCertificationManager; } + public void setSpell(String spell) { this.spell = spell; } @@ -77,7 +78,7 @@ e1.printStackTrace(); } try { - jsonStr = supplierRegistrationCertificateManager + jsonStr = registrationCertificationManager .searchSupplierRegistrationCertificate(spell).toString(); } catch (Exception e) { e.printStackTrace(); @@ -89,16 +90,16 @@ public void prepare() throws Exception { String id = StrutsParamUtils.getPraramValue("id", ""); if (StringUtils.isNotBlank(id) && !id.equals("0")) { - supplierRegistrationCertificate = supplierRegistrationCertificateManager.getById(id); + registrationCertification = registrationCertificationManager.getById(id); } else { - supplierRegistrationCertificate = new RegistrationCertification(); + registrationCertification = new RegistrationCertification(); } } @Override public RegistrationCertification getModel() { - return supplierRegistrationCertificate; + return registrationCertification; } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/RegistrationCertificationManagerImpl.java =================================================================== diff -u -r20824 -r20837 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/RegistrationCertificationManagerImpl.java (.../RegistrationCertificationManagerImpl.java) (revision 20824) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/RegistrationCertificationManagerImpl.java (.../RegistrationCertificationManagerImpl.java) (revision 20837) @@ -1,12 +1,17 @@ package com.forgon.disinfectsystem.basedatamanager.supplier.service; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang.StringUtils; + import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -87,29 +92,47 @@ registrationsConfigResult = registrationsConfigResult.replace("\\\"", "\""); } List reCertificates = new ArrayList(); + List registrationCertifications = supplier.getRegistrationCertificate(); JSONArray jsonArray = JSONArray.fromObject(registrationsConfigResult); + List list = new ArrayList(); //判断前台有没有进行删除注册证设的List集合 + String id = null ; + Date date = null; //初始化date for (int i = 0; i < jsonArray.size(); i++) { JSONObject obj = jsonArray.getJSONObject(i); - String registrationNumber = obj.optString("registrationNumber"); + String certification = obj.optString("certification"); String validityTime = obj.optString("validityTime"); -// String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(validityTime); -// @SuppressWarnings("deprecation") -// Date date=new Date(time); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); +// String times = (validityTime.substring(83,86)+ 1990)+ "-" +((validityTime.substring(47,50)+ 1990)+ "-" +(validityTime.substring(47,30)+ 1990); + if(!validityTime.equals("null") && !validityTime.equals(" ") ){ + String time=validityTime.substring(0,10); + try { + date = sdf.parse(time); + } catch (Exception e) { + e.printStackTrace(); + } + } String type = obj.optString("type"); - String id = obj.optString("id"); + id = obj.optString("id"); + list.add(Long.parseLong(id)); RegistrationCertification registration; - if(id != null ){ - registration = getById(id); + if(Long.parseLong(id) == 0){ + registration = new RegistrationCertification(); }else{ - registration = new RegistrationCertification(); + registration = getById(id); } - registration.setCertification(registrationNumber); + registration.setCertification(certification); registration.setType(type); - registration.setValidityTime(null); + registration.setValidityTime(date); registration.setSupplier(supplier); objectDao.saveOrUpdate(registration); reCertificates.add(registration); } + for(RegistrationCertification registrationCertification : registrationCertifications){ + //原有的注册证和前台传过来的值比较少了就执行删除操作 + if(!list.contains(registrationCertification.getId()) && Long.parseLong(id) != 0 ){ + objectDao.deleteById(RegistrationCertification.class.getSimpleName(), registrationCertification.getId().toString());; + } + } return reCertificates; } } Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierForm.js =================================================================== diff -u -r14417 -r20837 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierForm.js (.../supplierForm.js) (revision 14417) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierForm.js (.../supplierForm.js) (revision 20837) @@ -1,14 +1,260 @@ var id; var formObj; var supplierWin; +var registrationPanel; +var registrationConfig; function addAndEditSupplier(id) { this.id = id; var isDeposableStore = new Ext.data.SimpleStore( { fields : [ 'value' ], - data : [ [ renttousse ], [ madeCompany ],[ supplier ] ] + data : [ [ renttousse ], [ madeCompany ],[ supplier ],[expensivegoodssupplier] ] }); + + configStore = new top.Ext.data.Store({ + }); + + function newRow(){ + var n = top.Ext.getCmp('configGrid').getStore().getCount();// 获得总行数 + var p = new registrationCertificateConfig({ + id : 0, + certification : '', + validityTime : '', + type : '一类' + }); + top.Ext.getCmp('configGrid').stopEditing();// 停止编辑 + configStore.add(p);// 插入到最后一行 + top.Ext.getCmp('configGrid').startEditing(n, 0);// 开始编辑0单元格 + } + + var registrationCm = new top.Ext.grid.ColumnModel([{ + id : 'certification', + header : "注册证号", + dataIndex : 'certification', + width : 100 , + editor : new top.Ext.form.NumberField({ + allowBlank : false, + minValue:1, + listeners : { + change : function(numberField, newValue, oldValue) { + var rowIndex = top.Ext.getCmp('configGrid').getStore().getCount();//grid的行数 + var configStore = top.Ext.getCmp('configGrid').getStore(); + var judge = []; + for(var i =0 ;i < rowIndex ; i++ ){ + var electRecord = configStore.getAt(i); + var a = configStore.getAt(i).data.certification; + if(judge.contains(newValue)){ + showResult('已包含注册证:'+ newValue +',不可重复添加!'); + judge.splice(0,judge.length); //数组清空 + numberField.setValue(oldValue); + return false; + }else{ + judge.push(electRecord.get('certification')); + } + } + }, + specialKey : function(field,event){ + if(event.getKey()==13 ){ + if(isLastRow){//是最后一行,新增空白行 + newRow(); + } + }2017-11-15 + } + } + }) + }, { + id : 'validityTime', + header : "失效期", + width : 100, + dataIndex : 'validityTime', + renderer: function(v,p,record){ + v = v||{}; + if(v.format){ + return v.format('Y-m-d'); + }else if(v.year && v.month && v.date){ + return (v.year + 1900) + "-" + (v.month+1) + "-" + v.date; + } + return ""; + }, + editor : new top.Ext.form.DateExtensiableField( { + readOnly : false, + minWidth:177, + altFormats : 'Y-m-d|Y-n-j|y-n-j|y-m-j|y-m-d|y-n-d|Y-n-d|Y-m-j|Ymd|Ynj|ynj|ymj|ymd|ynd|Ynd|Ymj|Y/m/d|Y/n/j|y/n/j|y/m/j|y/m/d|y/n/d|Y/n/d|Y/m/j', + format : 'Y-m-d', + editable : false, + allowBlank : false + }) + }, { + id:'type', + header:"类别", + width : 30, + dataIndex:'type', + editor : new top.Ext.form.ComboBox({ + xtype : 'combo', + valueField : 'type', + displayField : 'type', + store : new Ext.data.SimpleStore({ + data:[['一类'],['二类'],['三类']], + fields:['type'] + }), + mode : 'local', + forceSelection : true, + editable : false, + triggerAction : 'all', + listeners : { + specialKey : function(field,event){ + if(event.getKey()==13 ){ + if(isLastRow){//是最后一行,新增空白行 + newRow(); + } + } + } + } + }) + }]); + registrationPanel = new top.Ext.grid.EditorGridPanel({ + id : 'configGrid', + name : 'configGrid', + store : configStore, + cm : registrationCm, + height:250, + frame : false, + bodyStyle : 'border:1px solid #afd7af', + autoExpandColumn : 'count', + viewConfig: {forceFit:true}, + clicksToEdit : 1,//设置点击几次才可编辑 + selModel : new top.Ext.grid.RowSelectionModel({ + singleSelect : false + }), + tbar : [{ + text : '新增注册证', + width : 70 , + iconCls : 'btn_ext_add', + handler : function() { + newRow(); + } + }, { + text : '删除注册证', + iconCls : 'btn_remove', + handler : function() { + var rows = top.Ext.getCmp('configGrid').getSelectionModel().getSelections();// 返回值为 Record 数组 + if (rows.length == 0) { + showResult('最少选择一条信息,进行删除!'); + } else { + top.Ext.MessageBox.confirm('提示框', '您确定要进行该操作?', function(btn) { + if (btn == 'yes') { + if (rows) { + for ( var i = 0; i < rows.length; i++) { + configStore.remove(rows[i]); + } + } + } + }); + } + } + }], + listeners: { + beforeedit: function(obj){ + eventEdit = obj; + }, + afteredit:function(grid){ + eventEdit = null; + } + } + }); + + var page = 1; + var totalPage = 0; + var toolbarPage = new top.Ext.Toolbar.TextItem({ + text : '第1页' + }); + var toolbarTotalPage = new top.Ext.Toolbar.TextItem({ + text : '共0页' + }); + + + + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/baseData/supplierAction!getSupplierUploadPicTotalPage.do', + params : { + id : id + }, + success : function(result){ + var pageStr = result.responseText; + totalPage = parseInt(pageStr); + var element = top.Ext.get(toolbarTotalPage.el); + element.update('共' + totalPage + '页'); + }, + failure : function(){ + + } + }); + + var imagePanel = new top.Ext.Panel({ + id : 'imagePanel', + layout : 'fit', + height : 270, + items : [{ + xtype : 'box', + id : 'browseImage', + fieldLabel : "预览图片", + autoEl : { + id : 'imageBrowse', + tag : 'img', + autoHeight:true, + src : WWWROOT + '/ext/resources/images/default/s.gif', + style : 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);', + complete : 'off' + } + }] + }); + + var showTousseImage = new top.Ext.Panel({ + items : [{ + xtype : 'panel', + id : 'pageToolbar', + bbar : ['->',{ + xtype : 'button', + text : '<<', + tooltip :"上一页", + handler : function(){ + if (page - 1 <= 0) { + showResult('已是第一页'); + return; + } + page = page - 1; + var url = WWWROOT + '/disinfectSystem/baseData/supplierAction!getSupplierPic.do?id=' + id + '&page=' + page +'&time='+new Date();; + var imageBrowse = top.Ext.get('imageBrowse'); + var image = imageBrowse.dom; + image.src = url;// 覆盖原来的图片 + var element = top.Ext.get(toolbarPage.el); + element.update('第' + page + '页'); + } + }, + toolbarPage, + toolbarTotalPage,{ + xtype : 'button', + text : '>>', + tooltip :"下一页", + handler : function() { + if (page + 1 > totalPage) { + showResult('已是最后一页'); + return; + } + page = page + 1; + var url = WWWROOT + '/disinfectSystem/baseData/supplierAction!getSupplierPic.do?id=' + id + '&page=' + page +'&time='+new Date(); + var imageBrowse = top.Ext.get('imageBrowse'); + var image = imageBrowse.dom; + image.src = url;// 覆盖原来的图片 + var element = top.Ext.get(toolbarPage.el); + element.update('第' + page + '页'); + } + }] + },imagePanel] + }); + + formObj = new top.Ext.FormPanel( { id : 'supplierForm', frame : true, @@ -108,6 +354,22 @@ triggerAction : 'all', anchor : '95%' }] + }, { + layout : 'form', + columnWidth : 0.5, + labelWidth : 70, + items : [ + registrationPanel + ] + }, { + layout : 'form', + columnWidth : 0.5, + bodyStyle : 'border:1px solid #afd7af', + height:250, + labelWidth : 60, + items : [ + showTousseImage + ] }] } ], buttons : [ { @@ -118,14 +380,21 @@ text : '取消', id : 'saveAndNewBtn', handler : cancel + }, { + text : '注册证图片管理', + id : 'uploadFile', + hidden:id == 0?true:false, + handler : function(){ + uploadToussePackingImageFile(imageTypeSupplier,id); + } } ] }); supplierWin = new top.Ext.Window( { id : 'supplierWin', layout : 'fit', title : '供应商信息', - width : 600, + width : 800, border : false, modal : true, autoHeight : true, @@ -139,19 +408,56 @@ url : WWWROOT + '/disinfectSystem/baseData/supplierAction!loadSupplier.do', method : 'GET', waitMsg : '正在加载数据,请稍候', + params : { + id : id + }, success : function(form, action) { - if(id==0) { + configStore.removeAll(); //清空上次器械包注册信息 + var supplier = action.result.data; + //初始化供应商包含的注册证 + for(var i = 0 ;i < supplier.registrationCertificate.length;i++){ + var supplierRegistrationCertificate = supplier.registrationCertificate[i]; + var supplierRegistrationCertificates = new registrationCertificateConfig({ + id : supplierRegistrationCertificate.id, + certification : supplierRegistrationCertificate.certification, + validityTime : supplierRegistrationCertificate.validityTime, + type : supplierRegistrationCertificate.type + }); + configStore.add(supplierRegistrationCertificates); } }, failure : function(form, action) { - }, - params : { - id : id } }); + } +var registrationCertificateConfig = Ext.data.Record.create([ + {name : 'id'}, + {name : 'certification'}, + {name : 'validityTime'}, + {name : 'type'} +]); + function validateAndSubmit(){ + //供应商相关注册证信息 + var registrations = []; + var configStore = top.Ext.getCmp('configGrid').getStore(); + var rowIndex = top.Ext.getCmp('configGrid').getStore().getCount();//grid的行数 + for(var i =0 ;i < rowIndex ; i++ ){ + var record = configStore.getAt(i); + var id = configStore.getAt(i).data.id; + var certification = record.get('certification'); + var validityTime = record.get('validityTime'); + var type = record.get('type'); + var registration = { + id : id, + certification: certification, + validityTime: validityTime, + type: type + } + registrations.push(registration); + } Ext.Ajax.request({ url : WWWROOT + '/disinfectSystem/baseData/supplierAction!validate.do', params : {validateId : top.Ext.getCmp('id').getValue(),valifateName:top.Ext.getCmp('companyName').getValue(), valifateType:top.Ext.getCmp('rentTousse').getValue()}, //多传一个供应商类型(陈家儒改) @@ -163,6 +469,7 @@ method : 'POST', waitMsg : '正在保存数据,请稍候', waitTitle : '提交表单', + params : {registrationsConfigResult : JSON.stringify(registrations)}, success : function(form, action) { supplierWin.close(); showResult('保存成功'); @@ -192,6 +499,21 @@ this.enable(); return false; } + var certificationCount = configStore.getCount(); + if (certificationCount <= 0 ){ + showResult('注册证不能为空!'); + this.enable(); + return false; + } + + for(var i = 0 ;i < certificationCount;i++){ + var certification = top.Ext.getCmp('configGrid').getView().getCell(i,0).firstChild.innerText; + if(certification == '' || certification == null || certification == ' '){ + showResult('请填写注册证号!'); + this.enable(); + return false; + } + } validateAndSubmit(); }