EasyUI Tabs全攻略

目錄(?)[+]

完全的實例,主要涉及EasyUi DataGrid和tabs兩大功能,其中涉及多種知識點:根據頁面地址獲取參數,datagrid內部傳參和列顯示,tabs選項卡的添加和初始化,格式化列,字符的截取以及循環,按鈕的多條件禁用啓用,json字符串的拼接及解析,ajax等功能細節。

如需詳細的EasyUi DataGrid請參考推薦文章



前端JS:

[javascript] view plain copy
  1. <script type="text/javascript">  
  2.     $(function(){  
  3.         var url = window.location;//獲取上一jsp頁面的傳值  
  4.         function getUrlParam(url,name){  
  5.             var pattern = new RegExp("[?&]" + name +"\=([^&]+)","g");//name的值  
  6.             var matcher = pattern.exec(url);  
  7.             var items = null;  
  8.             if(matcher != null){  
  9.                 try{  
  10.                     items = decodeURIComponent(decodeURIComponent(matcher[1]));     
  11.                 }catch(e){  
  12.                     try{  
  13.                         items = decodeURIComponent(matcher[1]);  
  14.                     }catch(e){  
  15.                         items = matcher[1];  
  16.                     }  
  17.                 }  
  18.             }  
  19.             return items;  
  20.         }  
  21.         var batch_name = getUrlParam(url,'name');  
  22.         $("#batch_name").val(batch_name);  
  23.         //加載訂單庫存信息  
  24.         $("#dgStock").datagrid({  
  25.             url:"/portal/listGskOrderDetailAction.do",  
  26.             loadMsg:'加載中...',  
  27.             singleSelect:true,  
  28.             queryParams: {  
  29.                 type: 'stock',  
  30.                 batch_name: batch_name  
  31.             },  
  32.             columns:[[  
  33.                 {field:'goods_opcode',title:'品種',width:80},      
  34.                 {field:'goods_name',title:'名稱',width:155},      
  35.                 {field:'qty',title:'訂單',width:50},                
  36.                 {field:'stock_qty',title:'庫存',width:50}                   
  37.             ]]  
  38.         });   
  39.         //查詢選項卡  
  40.         $.ajax({  
  41.             method : 'post',  
  42.             url : '/portal/listGskOrderDetailAction.do',  
  43.             data:{   
  44.                 type: 'order',  
  45.                 batch_name: batch_name  
  46.             },   
  47.             async : false,  
  48.             dataType : 'json',  
  49.             success : function(data) {  
  50.                 if(data){  
  51.                     $.each(data,function(index,item){  
  52.                         //添加選項卡  
  53.                         addTabs(item.orderno,item.client,index);  
  54.                     });  
  55.                 }else{  
  56.                     $.messager.alert('提示',"訂單信息加載失敗!");  
  57.                 }  
  58.             },  
  59.             error : function() {  
  60.                 $.messager.alert('異常','訂單信息加載異常!');  
  61.             }  
  62.         });   
  63.           
  64.         function addTabs(orderno,client,index){  
  65.             $("#tt").tabs('add',{      
  66.                 title:orderno+":"+client,      
  67.                 //content:'<table id="dg'+index+'" ><input id="in'+index+'" type="hidden" value="'+orderno+'"/></table>',   
  68.                 content:'<table id="dg'+orderno+'" ></table>',//添加表格用於<span style="font-family: Arial, Helvetica, sans-serif;">datagrid</span><span style="font-family: Arial, Helvetica, sans-serif;">實時加載</span>  
  69.                 scrollIncrement:300,  
  70.                 fit: true,  
  71.                 closable:false     
  72.             });  
  73.         }  
  74.         var valid=true;//是否可以發送訂單(按鈕狀態)  
  75.         //初始化點擊事件  
  76.         $('#tt').tabs({      
  77.             border:false,      
  78.             onSelect:function(title,index){  
  79.                 var orderno = title.split(":")[0];  
  80.                 $("#title_tb").val(title);  
  81.                 //加載該選項卡訂單信息  
  82.                 $("#dg"+orderno).datagrid({  
  83.                     url:"/portal/listGskOrderDetailAction.do",  
  84.                     loadMsg:'加載中...',  
  85.                     singleSelect:true,  
  86.                     toolbar: [{//在頁面創建的話會出現問題(關閉選項卡後菜單也會關閉)  
  87.                         text: '創建銷售訂單(TO_GSK)訂單',  
  88.                         handler: function(){createSaleOrders();}  
  89.                     }],  
  90.                     fit: true,  
  91.                     queryParams: {  
  92.                         type: 'info',  
  93.                         orderno: orderno,  
  94.                         batch_name: batch_name  
  95.                     },  
  96.                     columns:[[  
  97.                         {field:'szedct',title:'類型',width:50,  
  98.                             formatter: function(value,row,index){//格式化列  
  99.                                 if (value=='SO'){  
  100.                                     return '銷售';  
  101.                                 }   
  102.                                 if (value=='SC'){  
  103.                                     return '退貨';  
  104.                                 }  
  105.                                 if (value=='SZ'){  
  106.                                     return '贈樣';  
  107.                                 }  
  108.                             }     
  109.                         },   
  110.                         {field:'field1',title:'GSK文件_客戶名稱',width:150},                
  111.                         {field:'szdate',title:'日期',width:80},                 
  112.                         {field:'szvr01',title:'客戶訂單號',width:80},      
  113.                         {field:'szlitm',title:'GSK的SKU號',width:100},    
  114.                         {field:'szdsc1',title:'GSK的SKU描述',width:200},  
  115.                         {field:'szuorg',title:'數量',width:60},  
  116.                         {field:'szlotn',title:'批號',width:60},  
  117.                         {field:'client_opcode',title:'客戶碼',width:100},  
  118.                         {field:'goods_ids',title:'商品碼集合',width:200,hidden: true},  
  119.                         {field:'goods_opcode',title:'商品碼',width:200,  
  120.                             formatter: function(value,row,index){  
  121.                                 //多個商品碼  
  122.                                 var ids = row.goods_ids;  
  123.                                 if(ids != ''){  
  124.                                     var array = ids.split(",");//後臺數據(以,分割成數組)  
  125.                                     var str="";  
  126.                                     for (i in array){//循環取出數據,添加單選按鈕並默認  
  127.                                         if(array[i] == value){  
  128.                                             str += "<input type='radio' name='"+row.id+"' οnclick='checkStock("+row.szuorg+","+array[i]+","+row.id+","+row.client_id+",\""+row.szvr01+"\");' value='"+array[i]+"' checked='checked' />"+array[i];  
  129.                                         }else{  
  130.                                             str += "<input type='radio' name='"+row.id+"' οnclick='checkStock("+row.szuorg+","+array[i]+","+row.id+","+row.client_id+",\""+row.szvr01+"\");' value='"+array[i]+"' />"+array[i];  
  131.                                         }  
  132.                                     }  
  133.                                     return str;  
  134.                                 }else{//給按鈕狀態賦值  
  135.                                     valid=false;  
  136.                                     return value;  
  137.                                 }  
  138.                             }  
  139.                         },  
  140.                         {field:'sale_valid',title:'銷售關係',width:60,  
  141.                             formatter: function(value,row,index){  
  142.                                 //判斷關係並添加ID爲多商品碼查詢用  
  143.                                 if (value=='0'){  
  144.                                     valid=false;  
  145.                                     return '<span id="sale_valid'+row.id+'"><img src="/portal/images/X5.gif" alt="" /><input name="sale_vlid" type="hidden" value="0" /></span>';  
  146.                                 }   
  147.                                 if (value=='1'){  
  148.                                     return '<span id="sale_valid'+row.id+'"><img src="/portal/images/X3.gif" alt="" /><input name="sale_vlid" type="hidden" value="1" /></span>';  
  149.                                 }  
  150.                             }  
  151.                         },  
  152.                         {field:'goods_stock',title:'庫存',width:60,  
  153.                             formatter: function(value,row,index){  
  154.                                 var szuorg = row.szuorg;  
  155.                                 //判斷庫存信息並添加ID爲多商品碼查詢用  
  156.                                 if(value>=szuorg){  
  157.                                     return "<span id='stock"+row.id+"'><font color='black'>"+value+"</font></span>";  
  158.                                 }else{  
  159.                                     valid=false;  
  160.                                     return "<span id='stock"+row.id+"'><font color='red' >"+value+"</font></span>";  
  161.                                 }  
  162.                                 //取其他列進行判斷  
  163.                                 /* var rows = $('#dg'+indexMain).datagrid('getRows'); 
  164.                                 var total = 0; 
  165.                                 for (var i = 0; i < rows.length; i++) { 
  166.                                     total = rows[i]['szuorg']; 
  167.                                     if(value>=total){ 
  168.                                         return "<font color='black'>"+value+"</font>"; 
  169.                                     }else{ 
  170.                                         valid=false; 
  171.                                         return "<font color='red' >"+value+"</font>"; 
  172.                                     } 
  173.                                 }  */  
  174.                             }  
  175.                         }  
  176.                     ]],onLoadSuccess : function(){  
  177.                         if(valid){//禁用啓用按鈕  
  178.                             $("#tba").linkbutton("enable");//enable  
  179.                         }else{  
  180.                             $("#tba").linkbutton("disable");  
  181.                         }  
  182.                     }  
  183.                 });   
  184.                   
  185.             }    
  186.         });  
  187.           
  188.           
  189.           
  190.           
  191.           
  192.           
  193.     });  
  194.     //單選按鈕檢查庫存和關係  
  195.     function checkStock(szuorg,opcode,id,client,order){  
  196.         $.ajax({  
  197.             url:"/portal/listGskOrderStockDetailAction.do",  
  198.             type:'post',  
  199.             data:{goods_opcode:opcode,client_id:client},  
  200.             dataType:"json",  
  201.             success:function(data){  
  202.                 var s = parseInt(data.stack);  
  203.                  if(s >= szuorg){  
  204.                     $("#stock"+id).html("<font color='black' name='stock_color'>"+data.stack+"</font>");  
  205.                 }else{  
  206.                     $("#stock"+id).html("<font color='red' name='stock_color'>"+data.stack+"</font>");  
  207.                 }  
  208.                 if(data.sale_valid > 0){  
  209.                     $("#sale_valid"+id).html("<img src='/portal/images/X3.gif' /><input name='sale_valid' type='hidden' value='1' />");  
  210.                 }else{  
  211.                     $("#sale_valid"+id).html("<img src='/portal/images/X5.gif' /><input name='sale_valid' type='hidden' value='0' />");  
  212.                 }  
  213.                 //檢查庫存和關係是否啓用按鈕  
  214.                 checkError();   
  215.             },  
  216.             error:function(){  
  217.                 alert("操作失敗,請重試!");  
  218.             }  
  219.         });  
  220.     }  
  221.       
  222.     function checkError(){  
  223.         var plan = true;  
  224.          $("input[name='sale_valid']").each(function(index,item){//驗證關係  
  225.             if($(this).val()!=1){  
  226.                 plan = false;  
  227.             }  
  228.         });  
  229.         $("font[name='stock_color']").each(function(index,item){//驗證庫存  
  230.             var color = ($(this).attr("color"));  
  231.             if(color == "red"){  
  232.                 plan = false;  
  233.             }  
  234.         });  
  235.         if(plan){  
  236.             $("#tba").linkbutton("enable");  
  237.         }else{  
  238.             $("#tba").linkbutton("disable");  
  239.         }   
  240.     }  
  241.       
  242.     function createSaleOrders(){  
  243.         var title = $("#title_tb").val();  
  244.         var orderno = title.split(":")[0];//以:分割的第1個參數  
  245.         if(confirm('將 ,     '+title+'      訂單發送給GSK確認!')){  
  246.             var values='[';  
  247.             var checked = $("input:checked");//檢查單選框並拼接爲json格式  
  248.             if(checked.length<1){  
  249.                 values='';  
  250.             }else{  
  251.                 for(var i=0;i<checked.length;i++){  
  252.                     values+='{code:"'+checked[i].value+'",id:"'+checked[i].name+'"},';  
  253.                 }  
  254.                 values=values.substring(0,values.length-1);   
  255.                 values+=']';  
  256.             }  
  257.             var batch_name = $("#batch_name").val();  
  258.             $.ajax({  
  259.                 method : 'post',  
  260.                 url : '/portal/createGskOrderAction.do',  
  261.                 data:{   
  262.                     goods: values,  
  263.                     orderno: orderno,  
  264.                     batch_name : batch_name  
  265.                 },   
  266.                 //async : false,  
  267.                 dataType : 'json',  
  268.                 success : function(data) {  
  269.                     if(data){  
  270.                         $.messager.alert('提示',"創建銷售訂單成功!");   
  271.                         $('#tt').tabs('close',title);  
  272.                         $("#tba_span").css("display",true);  
  273.                     }else{  
  274.                         $.messager.alert('提示',"創建銷售訂單失敗!");  
  275.                     }  
  276.                 },  
  277.                 error : function() {  
  278.                     $.messager.alert('異常','創建銷售訂單異常!');  
  279.                 }  
  280.             });   
  281.         }   
  282.     }  
  283.       
  284.       
  285. </script>  

JSP:

[html] view plain copy
  1. <body >  
  2.     <div id="cc" class="easyui-layout" data-options="fit:true">  
  3.         <input type="hidden" id="batch_name" />   
  4.         <input type="hidden" id="title_tb" />   
  5.         <div data-options="region:'west',title:'訂單商品庫存',split:true" style="width:350px;">  
  6.             <table id="dgStock"></table>  
  7.         </div>     
  8.         <div data-options="region:'center',title:'訂單詳細'" style="padding:5px;background:#eee;">  
  9.             <div id="tt" class="easyui-tabs" fit="true"></div>  
  10.         </div>     
  11.     </div>   
  12. </body>   

STRUTS:

[html] view plain copy
  1. <span style="white-space:pre">    </span>    <action path="/listGskOrderAction" scope="request" type="portal.sysweb.gsk2.action.ListGskOrderAction" validate="false">  
  2.           <forward name="" path="" />         
  3.         </action>  
  4.         <action path="/listGskOrderDetailAction" scope="request" type="portal.sysweb.gsk2.action.ListGskOrderDetailAction" validate="false">  
  5.           <forward name="" path="" />  
  6.         </action>  
  7.         <action path="/listGskOrderStockDetailAction" scope="request" type="portal.sysweb.gsk2.action.ListGskOrderStockDetailAction" validate="false">  
  8.           <forward name="" path="" />  
  9.         </action>  
  10.         <action path="/createGskOrderAction" scope="request" type="portal.sysweb.gsk2.action.CreateGskOrderAction" validate="false">  
  11.           <forward name="" path="" />  
  12.         </action>  

Action:

[java] view plain copy
  1. public class ListGskOrderAction extends Action {  
  2.       
  3.     @Override  
  4.     public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)  
  5.             throws Exception {  
  6.         ActionForm_UserInfo userInfo = (ActionForm_UserInfo) request  
  7.                 .getSession().getAttribute("UserInfo");  
  8.         int page = Integer.parseInt(request.getParameter("page"));  
  9.         int rows = Integer.parseInt(request.getParameter("rows"));  
  10.         Gsk2Dao dao = new Gsk2Dao();          
  11.         Pagination pagination = dao.listUploadGskOrder(page,rows,userInfo.getUserid(),userInfo.getCompany_id());  
  12.         JSONObject json = new JSONObject();  
  13.         json.put("total", pagination.getMaxElements());  
  14.         json.put("rows", pagination.getPaginationList());  
  15.         json = JSONObject.fromObject(json);  
  16.         response.setCharacterEncoding("utf-8");  
  17.         response.getWriter().write(json.toString());  
  18.         response.getWriter().flush();  
  19.         response.getWriter().close();  
  20.         return null;  
  21.     }  
  22.   
  23. }  
  24.   
  25. public class ListGskOrderDetailAction extends Action{  
  26.     @Override  
  27.     public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)  
  28.             throws Exception {  
  29.         ActionForm_UserInfo userInfo = (ActionForm_UserInfo) request  
  30.                 .getSession().getAttribute("UserInfo");  
  31.         List<Hashtable> list = null;  
  32.         Gsk2Dao dao = new Gsk2Dao();          
  33.         String batch_name = request.getParameter("batch_name");  
  34.         String type = request.getParameter("type");  
  35.         if("1".equals(request.getParameter("update_flag")))  
  36.         new InterfaceFactory().dealUploadGSKInterface(null,null,batch_name,null);  
  37.         if(type.equals("stock"))  
  38.             list = dao.listGskOrderCheckStock(batch_name);    
  39.         if(type.equals("order"))  
  40.             list = dao.listUploadGskOrderDetail(userInfo.getUserid(), userInfo.getCompany_id(),batch_name);   
  41.         if(type.equals("info")){  
  42.             String orderno = request.getParameter("orderno");  
  43.             list = dao.listUploadGskOrderInfo(userInfo.getUserid(), userInfo.getCompany_id(),batch_name,orderno);  
  44.         }  
  45.         JSONArray arr = JSONArray.fromObject(list);  
  46.         response.setCharacterEncoding("utf-8");  
  47.         response.getWriter().write(arr.toString());  
  48.         response.getWriter().flush();  
  49.         response.getWriter().close();  
  50.         return null;  
  51.     }  
  52. }  
  53.   
  54. public class ListGskOrderStockDetailAction extends Action{  
  55.     @Override  
  56.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  57.             HttpServletRequest request, HttpServletResponse response)  
  58.             throws Exception {  
  59.         String goods_opcode = request.getParameter("goods_opcode");  
  60.         String client_id = request.getParameter("client_id");  
  61.         Gsk2Dao dao = new Gsk2Dao();  
  62.         ActionForm_UserInfo actionForm_UserInfo = (ActionForm_UserInfo) request  
  63.                 .getSession().getAttribute("UserInfo");  
  64.         String company_id = actionForm_UserInfo.getCompany_id();  
  65.         //String stack = dao.queryGoodsStackByCompanyId(goods_opcode,company_id);  
  66.         String stack = dao.queryGoodsStackByCompanyId(goods_opcode);  
  67.         int sale_valid = dao.queryGoodsCompanyRefByCompanyId(client_id, company_id, goods_opcode);  
  68.         StringBuffer strb = new StringBuffer();  
  69.         strb.append("{")  
  70.         .append("\"stack\":").append("\""+stack+"\"")  
  71.         .append(",\"sale_valid\":").append("\""+sale_valid+"\"")  
  72.         .append("}");  
  73.         response.getWriter().write(strb.toString());  
  74.         response.getWriter().flush();  
  75.         response.getWriter().close();  
  76.         return null;  
  77.     }  
  78. }  
  79.   
  80. public class CreateGskOrderAction extends Action {  
  81.       
  82.     @Override  
  83.     public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)  
  84.             throws Exception {  
  85.         ActionForm_UserInfo actionForm_UserInfo = (ActionForm_UserInfo) request  
  86.                 .getSession().getAttribute("UserInfo");  
  87.         String msg = "false";  
  88.         Gsk2Dao dao = new Gsk2Dao();  
  89.         try {  
  90.             String order_no = request.getParameter("orderno");  
  91.             String batch_name = request.getParameter("batch_name");  
  92.             String jsonStr = request.getParameter("goods");  
  93.             if(null != jsonStr && !"".equals(jsonStr)){  
  94.                 JSONArray jsonArray = JSONArray.fromObject(jsonStr);  
  95.                 for(int i=0;i<jsonArray.size(); i++){  
  96.                     JSONObject jsonJ = jsonArray.getJSONObject(i);  
  97.                     String goods_opcode = jsonJ.getString("code");  
  98.                     int id = jsonJ.getInt("id");  
  99.                     int goods_id = dao.queryGoodsIdByCode(goods_opcode);  
  100.                     boolean flag = dao.updateGskOrderCodeAndGoodIdById(goods_id, goods_opcode, id);  
  101.                 }  
  102.             }  
  103.             dao.createGskOrder(order_no, batch_name);  
  104.             msg="true";  
  105.         } catch (Exception ex1) {  
  106.             ex1.printStackTrace();  
  107.         }  
  108.         response.setCharacterEncoding("utf-8");  
  109.         response.getWriter().write(msg.toString());  
  110.         response.getWriter().flush();  
  111.         response.getWriter().close();  
  112.         return null;  
  113.     }  
  114.   
  115. }  


Dao:

[java] view plain copy
  1. public List listUploadGskOrderInfo(String user_id, String sys_provide_id,  
  2.             String batch_name,String orderid) {  
  3.         String sql = " select * " + " from v_gsk_order t "  
  4.                 + " where t.USER_ID = '" + user_id + "' "  
  5.                 + " and t.COMPANY_ID = '" + sys_provide_id + "' "  
  6.                 + " and t.EXEC_FLAG = 'UPLOAD' " + " and t.BATCH_NAME = '"  
  7.                 + batch_name + "' and t.SZVR01 = '"+orderid+"' order by t.SZVR01,t.SZEDCT,t.ID";  
  8.         //System.out.println("listUploadGskOrderInfo:"+sql);  
  9.         List list = null;  
  10.         try {  
  11.             DataManage db = new DataManage();  
  12.             list = db.executeQuerys(sql);  
  13.         } catch (Exception ex) {  
  14.             ex.printStackTrace();  
  15.         }  
  16.         return list;  
  17.     }  
  18.   
  19. public boolean updateGskOrderCodeAndGoodIdById(int goods_id,String goods_opcode,int id){  
  20.         String strSql = "update gsk_order gor set "  
  21.                 + "gor.szlitm='"+goods_opcode+"',gor.goods_id='"+goods_id+"',gor.goods_opcode='"+goods_opcode+"'"  
  22.                 + " where gor.id='"+id+"'";  
  23.         try {  
  24.             DataManage db = new DataManage();  
  25.             System.out.println("updateGskOrderCodeAndGoodIdById:"+strSql);  
  26.             db.exeUpdate(strSql);  
  27.             return true;  
  28.         } catch (Exception ex) {  
  29.             ex.printStackTrace();  
  30.         }  
  31.         return false;  
  32.     }  
  33.   
  34. public int queryGoodsCompanyRefByCompanyId(String client_id,String company_id,String goods_opcode){  
  35.         String sql = "select count(*) from  goods_company_ref gcr "  
  36.                 + "where  gcr.client_id = "+client_id+" "  
  37.                 + "and gcr.provide_id = "+company_id+" "  
  38.                 + "and gcr.goods_id = (select cg.goods_id  "  
  39.                 + "from com_goods cg "  
  40.                 + "where cg.goods_opcode = '"+goods_opcode+"' "  
  41.                 + "and cg.org_id =1001) ";  
  42.         int num = 0;  
  43.         DataManage db = null;  
  44.         Connection conn = null;  
  45.         Statement stmt = null;  
  46.         ResultSet rs = null;  
  47.         try {  
  48.             db = new DataManage();  
  49.             //System.out.println("queryGoodsCompanyRefByCompanyId:"+sql);  
  50.             conn = db.getConnection();  
  51.             conn.setAutoCommit(false);  
  52.             stmt = conn.createStatement();  
  53.             rs = stmt.executeQuery(sql);  
  54.             if (rs.next()) {  
  55.                 num = rs.getInt(1);  
  56.             }  
  57.         } catch (Exception e) {  
  58.             e.printStackTrace();  
  59.         }finally{  
  60.             try {  
  61.                 conn.close();  
  62.             } catch (SQLException e) {  
  63.                 // TODO Auto-generated catch block  
  64.                 e.printStackTrace();  
  65.             }  
  66.         }  
  67.         return num;  
  68.     }  
發佈了35 篇原創文章 · 獲贊 16 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章