方法1:此方法適用於Extjs按鈕handler處理,一般在最前面說明
function changeMsgBoxFocus(buttonIdx) { function exmyth() { Ext.MessageBox.getDialog().buttons[buttonIdx].focus(); } exmyth.defer(100, this); } Ext.MessageBox.getDialog().addListener('show', changeMsgBoxFocus.createCallback(2));
Ext.MessageBox.buttonText.yes = 'Remove'; Ext.MessageBox.buttonText.no = 'Do nothing'; Ext.MessageBox.getDialog().on( { show: function() { Ext.MessageBox.getDialog().buttons[2].focus(); }, single:true //,delay:50 // maybe needed }); Ext.MessageBox.show( { title : 'Please confirm', msg : 'Do your really want to delete node \'' + this.curNode.text + '\'?', buttons : Ext.MessageBox.YESNO, fn : this.removeNodeConfirmHandleMsgBox, scope: this, animEl : this.tree, icon : Ext.MessageBox.QUESTION });
方法2:此方法適用於頁面全局,一般在頁面return的init方法中指定
Ext.MessageBox.getDialog().defaultButton = 2;
附上我項目模塊的代碼
1.Smsd.widget.AddressGroupBtn.js
Ext.ns("Smsd.widget"); var mgrAddrGroupForm; var mgrAddrGroupWin; var type; var groupTree; var root; var loader; /** * 管理組 * @author zhongmm * @class Smsd.widget.AddressGroupBtn * @extends Ext.Button */ Smsd.widget.AddressGroupBtn =Ext.extend(Ext.Button,{ text: "管理組", width: 50, back: function (){}, handler: function (btn) { function changeMsgBoxFocus(buttonIdx){ function exmyth() { Ext.MessageBox.getDialog().buttons[buttonIdx].focus(); } exmyth.defer(100, this); } Ext.MessageBox.getDialog().addListener('show', changeMsgBoxFocus.createCallback(2)); root = new Ext.tree.AsyncTreeNode( { // href : '', // hrefTarget : '_blank', // iconCls : "me-iconCls", id : "0", text : "個性化通訊錄", leaf:false }); loader = new Ext.tree.TreeLoader( { dataUrl:Ext.sysd.getWithToken('/addressGroup/listAddressGroup.do'), method : 'POST' }); groupTree = new Ext.tree.TreePanel( { id : 'groupId', name : 'groupName', root : root, animate : false, containerScroll : true, autoScroll : true, loader:loader, width: 325, height: 200, line: true, border : true }); root.expand(false, true); //默認展開一級 var topBtn = new Ext.Toolbar({ autoHeight : true, items : [{xtype : 'tbseparator'}, {text : '新增',iconCls : 'silk_page_add',handler :function(){mgrAddrGroup(0);}}, {xtype : 'tbseparator'}, {text : '編輯',iconCls : 'silk_page_edit',handler :function(){ var selNode = groupTree.getSelectionModel().getSelectedNode(); if(!selNode) { Ext.Msg.alert(Sysd.Msg.AlertTitle,"請選擇一條組信息!"); } else if(selNode.id == groupTree.getRootNode().id) { Ext.Msg.alert(Sysd.Msg.AlertTitle,"無法編輯根節點!"); } else { mgrAddrGroup(1); Ext.getCmp("groupId").setValue(selNode.id); Ext.getCmp("groupName").setValue(selNode.text); } }}, {xtype : 'tbseparator'}, {text : '刪除',iconCls : 'silk_page_delete', handler :function(){ var selNode = groupTree.getSelectionModel().getSelectedNode(); if(!selNode) { Ext.Msg.alert(Sysd.Msg.AlertTitle,"請選擇一條組信息!"); } else if(selNode.id == groupTree.getRootNode().id) { Ext.Msg.alert(Sysd.Msg.AlertTitle,"無法刪除根節點!"); } else { countAddressGroup(selNode.id); } }}, {xtype : 'tbseparator'}, {text : '返回',iconCls : 'silk_application_home',handler :function(){win.close();btn.back()}}, {xtype : 'tbseparator'}, '->', new Ext.sysd.Helper({ moduleCode : '100600' }) ] }); //組管理主窗口 var win=new Ext.Window({ tbar:topBtn, title:'管理組', width:340, height:258, closable:false, layout:'column', modal : true, resizable:false, // draggable:false, closable:true, items:[groupTree]}); win.show(); //數據檢驗 function confirmGroupName() { var groupName = Ext.getCmp("groupName").getValue(); if("" == groupName) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "請輸入組名!"); return false; } else if(20 < groupName.length) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "組名過長,不能大於20個字符,請重新輸入!"); return false; } return true; } //新增,編輯組信息,成功刷新組管理樹 function saveUpdateGroupName(type) { var groupId = Ext.getCmp("groupId").getValue(); var groupName = Ext.getCmp("groupName").getValue(); if(0 == type) { Ext.Ajax.request({ url : Ext.sysd.getWithToken('/addressGroup/saveAddressGroup.do'), method : 'post', params : { groupName:groupName }, success : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "保存成功!"); loader.load(root,function(){ root.expand(false, true); }); Ext.getCmp("mgrAddrGroupWin").close(); }, failure : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "保存失敗!"); } }); } else if(1 == type) { Ext.Ajax.request({ url : Ext.sysd.getWithToken('/addressGroup/updateAddressGroup.do'), method : 'post', params : { groupId : groupId, groupName:groupName }, success : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "編輯成功!"); loader.load(root,function(){ root.expand(false, true); }); Ext.getCmp("mgrAddrGroupWin").close(); }, failure : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "編輯失敗!"); } }); } } //新增,編輯組信息彈出窗口 function mgrAddrGroup(type) { mgrAddrGroupForm = new Ext.form.FormPanel({ width:200, height:100, frame:true, labelWidth:50, labelAlign:"right", defaultType:"textfield", items:[ {id:"groupId", name:"groupId",fieldLabel:"",hidden:true,hideLabel:true}, {id:"groupName", name:"groupName",fieldLabel:"組名",width:100,allowBlank:false}], buttons:[{text:"確認",iconCls : 'silk_tick',handler:function(){ var groupName = Ext.getCmp("groupName").getValue(); var selNode = groupTree.getSelectionModel().getSelectedNode(); if(1 == type && groupName == selNode.text) { mgrAddrGroupWin.hide(); } else { countAddressGroupByName(groupName,type); } }},{text:"取消",iconCls:'silk_cancel',handler:function(){ var groupName = Ext.getCmp("groupName").getValue(); var selNode = groupTree.getSelectionModel().getSelectedNode(); if(0 == type && "" != groupName) { //組名未保存,確定取消? Ext.Msg.confirm(Sysd.Msg.AlertTitle,"是否確定要取消,取消將不保存數據?",function(btn) { if('yes' == btn) { mgrAddrGroupWin.hide(); return true; } else { return false; } }); } else if(1 == type && "" != groupName && groupName != selNode.text) { //組名已修改,確定取消? Ext.Msg.confirm(Sysd.Msg.AlertTitle,"是否確定要取消,取消將不保存數據?",function(btn) { if('yes' == btn) { mgrAddrGroupWin.hide(); return true; } else { return false; } }); } else if(1 == type && groupName == selNode.text) { mgrAddrGroupWin.hide(); } else { mgrAddrGroupWin.hide(); } }}] }) mgrAddrGroupWin = new Ext.Window( { id:"mgrAddrGroupWin", title:0 == type?"新增組信息":"編輯組信息", width:210, height:150, frame:true, labelWidth:60, labelAlign:"right", defaultType:"textfield", autoHeight: true, resizable:false, closable:false, // draggable:false, modal:true, items:[mgrAddrGroupForm] }); mgrAddrGroupWin.on("hide",function(){mgrAddrGroupWin.destroy()}); mgrAddrGroupWin.show(); } //統計組中聯系人信息 function countAddressGroup(groupId) { Ext.Ajax.request ({ url : Ext.sysd.getWithToken('/addressGroup/countAddressGroup.do'), method : 'post', params : { groupId:groupId }, failure : function(){ Ext.Msg.alert(Sysd.Msg.AlertTitle,"獲取數據失敗!"); return false; }, success : function(response){ var count = Ext.decode(response.responseText); if(count>0) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "該組有聯系人信息,不能刪除!"); return false; } else { comfirmDelete(); return true; } } }); return true; } //統計同名組數 function countAddressGroupByName(groupName,type) { Ext.Ajax.request ({ url : Ext.sysd.getWithToken('/addressGroup/countAddressGroupByName.do'), method : 'post', params : { groupName:groupName }, failure : function(){ Ext.Msg.alert(Sysd.Msg.AlertTitle,"獲取數據失敗!"); return false; }, success : function(response){ var count = Ext.decode(response.responseText); if(count>0) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "已經存在此組名,請重新輸入!"); return false; } else { if(confirmGroupName()) { saveUpdateGroupName(type); } } } }); return true; } function comfirmDelete() { var selNode = groupTree.getSelectionModel().getSelectedNode(); Ext.Msg.confirm(Sysd.Msg.AlertTitle,"是否刪除該組信息?",function(btn) { if('yes' == btn) { deleteAddressGroup(selNode.id); return true; } else { return false; } }); } //刪除組信息 function deleteAddressGroup(groupId) { Ext.Ajax.request({ url : Ext.sysd.getWithToken('/addressGroup/deleteAddressGroup.do'), method : 'post', params : { groupId:groupId }, success : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "刪除成功!"); loader.load(root,function(){ root.expand(false, true); }); }, failure : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "刪除成功!"); } }); } } }); Ext.reg('addressGroupBtn', Smsd.widget.AddressGroupBtn);//管理組
2.sms.appSetup.js
Ext.ns("sms.appSetup"); var editLevelForm; var gridDirect; var formDirect; var winDirect; var editLevelWin; var gridMain; var storeMain; var timeBlock; var editTimeForm; var editTimeWin; var seqNum = 0; //序號遞增初始值 var idArr; //業務代碼 var timeStartArr; //已選擇記錄的起始時間數組 var timeEndArr //已選擇記錄的截止時間數組 var count; //已選擇記錄的時間段數 var iniCount; /** * 業務應用設置 * @author zhongmm */ sms.appSetup.main = function(){ var storeMain = new Ext.data.JsonStore({ url : Ext.sysd.getWithToken("/smsAppSetup/listAppSetup.do"), root : '', totalProperty : 'totalCount', autoLoad : false, fields : [{name:'SEQ_CODE',type:'string'}, {name:'BUSINESS_NAME',type:'string'}, {name:'SMS_LEVEL',type:'string'}, {name:'SMS_LEVEL_BAK',type:'string'}, {name:'TIME_START',type:'string'}, {name:'TIME_END',type:'string'}, {name:'BUSINESS_CODE',type:'string'}, {name:'BUSINESS_NAME_BAK',type:'string'} ] }); function setCenter(v) { return "<span style='width:100%;text-align:center;'>" + v + "</span>"; } var tb = new Ext.Toolbar({ autoHeight : true, items : ['-', { text : '級別編輯', iconCls : 'silk_page_edit', handler : function() { if(hasSelected()) { editLevel(); var businessCode = String(gridMain.getSelectionModel().getSelected().get("BUSINESS_CODE")); var businessName = String(gridMain.getSelectionModel().getSelected().get("BUSINESS_NAME_BAK")); var smsLevel = String(gridMain.getSelectionModel().getSelected().get("SMS_LEVEL_BAK")); Ext.getCmp("businessCode").setValue(businessCode); Ext.getCmp("businessName").setValue(businessName); Ext.getCmp("smsLevel").setValue(smsLevel); } } }, { xtype : 'tbseparator' }, { text : '發送時間編輯', iconCls : 'silk_page_edit', handler : function() { if(hasSelected()) { var timeBusinessCode = String(gridMain.getSelectionModel().getSelected().get("BUSINESS_CODE")); var timeBusinessName = String(gridMain.getSelectionModel().getSelected().get("BUSINESS_NAME_BAK")); var recordCount = gridMain.getStore().getCount(); timeStartArr=new Array(); timeEndArr=new Array(); for(var i = 0; i < recordCount; i++) { var id = gridMain.getStore().getAt(i).get("BUSINESS_CODE"); if(timeBusinessCode == id) { var timeStartValue = gridMain.getStore().getAt(i).get("TIME_START"); var timeEndValue = gridMain.getStore().getAt(i).get("TIME_END"); timeStartArr.push(timeStartValue); timeEndArr.push(timeEndValue); } } count = timeStartArr.length > timeEndArr.length ? timeStartArr.length :timeEndArr.length; iniCount = count; editTime(); for(var i = 0; i < count; i++) { Ext.getCmp("timeStart" + i ).setValue(timeStartArr[i]); Ext.getCmp("timeEnd" + i ).setValue(timeEndArr[i]); } Ext.getCmp("timeBusinessCode").setValue(timeBusinessCode); Ext.getCmp("timeBusinessName").setValue(timeBusinessName); } } },{ xtype : 'tbseparator' },{ text : '級別說明', iconCls : 'silk_application_view_detail', handler : function() { directLevel(); } },{ xtype : 'tbseparator' }, '->', new Ext.sysd.Update({ moduleCode : '500100' }), '-', new Ext.sysd.Suggest({ moduleCode : '500100' }), '-', new Ext.sysd.Helper({ moduleCode : '500100' }) ] }); gridMain=new Ext.grid.GridPanel({ title:"業務應用設置", tbar:tb, region:'center', height:240, store:storeMain, stripeRows : true, autoScroll : true, enableHdMenu:false, columns:[ { header : setCenter('序號'), align:'center', dataIndex : 'SEQ_CODE', width : 60, sortable : false },{ header : setCenter('業務應用'), dataIndex : 'BUSINESS_NAME', align:'center', width : 100, sortable : false },{ header : setCenter('短信級別'), dataIndex : 'SMS_LEVEL', align:'center', width : 100, sortable : false },{ header : setCenter('允許發送起始時間'), dataIndex : 'TIME_START', align:'center', width : 100, sortable : false },{ header : setCenter('允許發送截止時間'), align:'center', dataIndex : 'TIME_END', width : 100, sortable : false }], loadMask:{msg:"請稍等..."}, viewConfig : { forceFit : true } }); //合並單元格 gridMain.store.on("load",function(){ initSeq(); gridSpan(gridMain,"row","[SEQ_CODE],[BUSINESS_NAME],[SMS_LEVEL]","BUSINESS_NAME"); }); function createWindow(){ var mainWin = new Ext.Viewport({ title : '業務應用設置', layout : 'border', defauls : { column : 1 }, closable : false, draggable : false, resizable : false, items : [gridMain] }); mainWin.show(); } return { init : function() { Ext.MessageBox.getDialog().defaultButton = 2; createWindow(); gridMain.getStore().reload( /*{ params: { //默認顯示第一頁記錄 start:0, limit:Ext.sysd.getPageSize() } }*/); } } }(); //選擇記錄判斷 function hasSelected() { var selectModel = gridMain.getSelectionModel(); var selected = selectModel.hasSelection(); if(!selected) { Ext.Msg.alert(Sysd.Msg.AlertTitle,'請先選擇一條記錄再編輯!'); return false; } return true; } //數據檢驗 function confirmBusinessName() { var groupName = Ext.getCmp("groupName").getValue(); if("" == groupName) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "請輸入組名!"); return false; } return true; } function setCenter(v) { return "<span style='width:100%;text-align:center;'>" + v + "</span>"; } function editLevel() { //發送狀態 1成功 0 失敗(根據回執判斷是否失敗) var arrData = [['0','0'], ['1','1'], ['2', '2'], ['3', '3'], ['4', '4']]; editLevelForm = new Ext.form.FormPanel({ width:200, height:100, frame:true, labelWidth:60, labelAlign:"right", buttonAlign:'center', defaultType:"textfield", items:[ {id:"businessName", name:"businessName",fieldLabel:"業務應用",width:100,disabled:true}, {fieldWith:60,fieldLabel : "級別",arrData:arrData,xtype:"arrayComboBox", id : 'smsLevel',name : 'smsLevel',width : 100}, {id:"businessCode", name:"businessCode",hideLabel:true,hidden:true}], buttons:[{text:"確認",iconCls : 'silk_tick',handler:function(){ updateLevel(); }}, {text:"取消",iconCls:'silk_cancel',handler:function(){editLevelWin.hide()}}] }); editLevelWin = new Ext.Window( { id:"editLevelWin", title:"編輯優先級別", width:210, height:132, // autoHeight: true, resizable:false, modal:true, items:[editLevelForm] }); editLevelWin.on("hide",function(){editLevelWin.destroy()}); editLevelWin.show(); } function updateLevel() { var businessCode = Ext.getCmp("businessCode").getValue(); var smsLevel = Ext.getCmp("smsLevel").getValue(); Ext.Ajax.request({ url : Ext.sysd.getWithToken('/smsAppSetup/updateAppSetup.do'), method : 'post', params : { businessCode:businessCode, smsLevel:smsLevel }, success : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "保存成功!"); // seqNum = 0; gridMain.getStore().reload( /*{ params: { //默認顯示第一頁記錄 start:0, limit:Ext.sysd.getPageSize() } }*/); Ext.getCmp("editLevelWin").close(); }, failure : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "保存失敗!"); } }); } //時間交錯判斷 function comfirmTimePeriod() { var timePeriodStartStr=""; var timePeriodEndStr=""; for(var i = 0; i < count; i++) { var timeStartCtrl = editTimeForm.getForm().findField("timeStart" + i); var timeEndCtrl = editTimeForm.getForm().findField("timeEnd" + i); if(timeStartCtrl) { timePeriodStartStr += timeStartCtrl.getValue()+","; timePeriodEndStr += timeEndCtrl.getValue()+","; } } timePeriodStartStr=timePeriodStartStr.substr(0,timePeriodStartStr.length-1); timePeriodEndStr=timePeriodEndStr.substr(0,timePeriodEndStr.length-1); var timePeriodStartArr = timePeriodStartStr.split(','); var timePeriodEndArr = timePeriodEndStr.split(','); var periodFlag = false;//默認不存在時間交錯情況 for(var i = 0; i< timePeriodStartArr.length; i++) { for(var j = 0; j< timePeriodEndArr.length; j++) { if(i == j) { continue; } else { if((timePeriodStartArr[j] < timePeriodStartArr[i])&&(timePeriodStartArr[i]<timePeriodEndArr[j])) { periodFlag = true; break; } else if((timePeriodStartArr[j] < timePeriodEndArr[i])&&(timePeriodEndArr[i]<timePeriodEndArr[j])) { periodFlag = true; break; } } } } return periodFlag; } //時間段交錯判斷 function comfirmTimePeriodEqual() { var timePeriodStartStr=""; var timePeriodEndStr=""; for(var i = 0; i < count; i++) { var timeStartCtrl = editTimeForm.getForm().findField("timeStart" + i); var timeEndCtrl = editTimeForm.getForm().findField("timeEnd" + i); if(timeStartCtrl) { timePeriodStartStr += timeStartCtrl.getValue()+","; timePeriodEndStr += timeEndCtrl.getValue()+","; } } timePeriodStartStr=timePeriodStartStr.substr(0,timePeriodStartStr.length-1); timePeriodEndStr=timePeriodEndStr.substr(0,timePeriodEndStr.length-1); var timePeriodStartArr = timePeriodStartStr.split(','); var timePeriodEndArr = timePeriodEndStr.split(','); var periodFlag = false;//默認不存在時間段重復情況 for(var i = 0; i< timePeriodStartArr.length; i++) { for(var j = 0; j< timePeriodEndArr.length; j++) { if(i == j) { continue; } else { if((timePeriodStartArr[i] == timePeriodStartArr[j])&&(timePeriodEndArr[i]==timePeriodEndArr[j])) { periodFlag = true; break; } } } } return periodFlag; } //是否修改判斷 function confirmModify() { var timePeriodStartStr=""; var timePeriodEndStr=""; for(var i = 0; i < count; i++) { var timeStartCtrl = editTimeForm.getForm().findField("timeStart" + i); var timeEndCtrl = editTimeForm.getForm().findField("timeEnd" + i); if(timeStartCtrl) { timePeriodStartStr += timeStartCtrl.getValue()+","; timePeriodEndStr += timeEndCtrl.getValue()+","; } } timePeriodStartStr=timePeriodStartStr.substr(0,timePeriodStartStr.length-1); timePeriodEndStr=timePeriodEndStr.substr(0,timePeriodEndStr.length-1); var timePeriodStartArr = timePeriodStartStr.split(','); var timePeriodEndArr = timePeriodEndStr.split(','); var flag = false;//默認未修改 if(timePeriodStartArr.length != iniCount || timePeriodEndArr.length != iniCount) { flag = true; } else { for(i = 0; i < count; i++) { if(-1 == timeStartArr.indexOf(timePeriodStartArr[i])) { flag = true; break; } if(-1 == timeEndArr.indexOf(timePeriodEndArr[i])) { flag = true; break; } var index = timeStartArr.indexOf(timePeriodStartArr[i]); if(timeEndArr[index] != timePeriodEndArr[i]) { flag = true; break; } } } return flag; } function updateTime() { var timeStartStr = ""; var timeEndStr = ""; var submitFlag = true;//是否提交標志 for(var i = 0; i < count; i++) { var timeStartCtrl = editTimeForm.getForm().findField("timeStart" + i); var timeEndCtrl = editTimeForm.getForm().findField("timeEnd" + i); if(timeStartCtrl) { if("" == timeEndCtrl.getValue()||"" == timeStartCtrl.getValue()) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "時間不能為空,請重新輸入!"); submitFlag = false; break; } else if(timeEndCtrl.getValue() <= timeStartCtrl.getValue()) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "截止時間必須大於起始時間,請重新輸入!"); submitFlag = false; break; } else if(comfirmTimePeriodEqual()) { Ext.Msg.alert(Sysd.Msg.AlertTitle,"時間段重復,請重新檢查輸入!"); submitFlag = false; break; } /* else if(comfirmTimePeriod())//前兩個判斷已經排除一些非法情況,所以comfirmTimePeriod()不需再判斷 { Ext.Msg.alert(Sysd.Msg.AlertTitle,"時間段交錯,請重新檢查輸入!"); submitFlag = false; break; } */ else { timeStartStr += timeStartCtrl.getValue()+","; timeEndStr += timeEndCtrl.getValue()+","; } } } if(submitFlag&&!confirmModify()) { submitFlag = false; editTimeWin.close(); } if(submitFlag) { timeEndStr=timeEndStr.substring(0,timeEndStr.lastIndexOf(",")); timeStartStr=timeStartStr.substring(0,timeStartStr.lastIndexOf(",")); timeBusinessCode = Ext.getCmp("timeBusinessCode").getValue(); timeBusinessName = Ext.getCmp("timeBusinessName").getValue(); Ext.Ajax.request({ url : Ext.sysd.getWithToken('/smsAppSetup/updateTimeAppSetup.do'), method : 'post', params : { businessCode:timeBusinessCode, businessName:timeBusinessName, timeStartStr:timeStartStr, timeEndStr:timeEndStr }, success : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "修改成功!"); // seqNum = 0; gridMain.getStore().reload( /*{ params: { //默認顯示第一頁記錄 start:0, limit:Ext.sysd.getPageSize() } }*/); Ext.getCmp("editTimeWin").close(); }, failure : function(response) { Ext.Msg.alert(Sysd.Msg.AlertTitle, "修改失敗!"); } }); } } function addTimeControl(id) { var timeStartId = "timeStart" + id; var timeEndId = "timeEnd" + id; var timeStartField = new Ext.form.TimeField({id:timeStartId, name:timeStartId, fieldLabel:"起始時間",width:90,format:"H:i:s",increment:30,editable : false,allowBlank:false}); var timeEndField = new Ext.form.TimeField({id:timeEndId, name:timeEndId, fieldLabel:"截止時間",width:90,format:"H:i:s",increment:30,editable : false,allowBlank:false}); var removeTimeBtn = {id:"removeTimeBtn"+id,xtype:"button", style:"padding-left:3px", text:"",iconCls:"silk_page_delete", handler:function(event){ var timeSetId = (event.id).replace("removeTimeBtn","editTimeFieldSet"); var timeSet = Ext.getCmp(timeSetId); if("" == timeStartField.getValue() && "" == timeEndField.getValue()) { confirmShowAddControl(); editTimeForm.remove(timeSet,true); } else { Ext.Msg.confirm(Sysd.Msg.AlertTitle,"是否刪除該時間段?",function(btn) { if('yes' == btn) { confirmShowAddControl(); editTimeForm.remove(timeSet,true); return true; } else { return false; } }); } }}; var addTimeBtn = {id:"addTimeBtn"+id,xtype:"button",text:"",iconCls:"silk_page_add", handler:function(event){ addTimeControl(count++); } }; var block = { layout:"column", items:[ {layout:"form",width:168,labelWidth:60,items:[timeStartField]}, {layout:"form",width:168,labelWidth:60,items:[timeEndField]}, {layout:"form",width:30,items:[removeTimeBtn]}, {layout:"form",width:30,items:[addTimeBtn]} ] }; var editTimeFieldSet = new Ext.Panel({ id:"editTimeFieldSet"+id, layout:'form', border:false, items:[block] }); editTimeForm.add(editTimeFieldSet); editTimeForm.doLayout(); } function confirmShowAddControl() { if(2 == editTimeForm.items.length) { Ext.getCmp("showAddControl").show(); } } function editTime() { editTimeForm = new Ext.form.FormPanel({ width:420, // autoWidth:true, height:213, frame:true, labelWidth:60, layout:"form", forceFit:true, autoScroll:"auto", bodyStyle : 'overflow-x:hidden; overflow-y:auto; padding:3px', labelAlign:"right", buttonAlign:"center", buttons:[{text:"確認",iconCls : 'silk_tick',handler:function(){ updateTime(); }}, {text:"取消",iconCls:'silk_cancel',handler:function(){ Ext.Msg.confirm(Sysd.Msg.AlertTitle,"是否確定要取消,取消將不保存數據?",function(btn) { if('yes' == btn) { editTimeWin.close(); return true; } else { return false; } }); }}] }); var bussiness = { layout:"column", items:[ {layout:"form",items:[{id:"timeBusinessName",xtype:"textfield",width:150,name:"timeBusinessName",fieldLabel:"業務應用",disabled:true}]}, {layout:"form",items:[{id:"timeBusinessCode", xtype:"textfield",name:"timeBusinessCode",hideLabel:true, hidden:true}]}, {layout:"form",bodyStyle: 'padding-left:100px', items:[{id:"showAddControl", xtype:"button",text:"增加一行", hidden:true, width:75, iconCls : 'silk_page_add',handler:function(){ Ext.getCmp("showAddControl").hide(); addTimeControl(count++); }}]}] } var businessSet = new Ext.Panel({ id:"businessSet", border:false, items:[bussiness] }); editTimeForm.add(businessSet); for(var i = 0; i < count; i++) { var timeStartId = "timeStart" + i; var timeEndId = "timeEnd" + i; var timeStartField = new Ext.form.TimeField({id:timeStartId, name:timeStartId, fieldLabel:"起始時間",width:90,format:"H:i:s",increment:30,editable : false, allowBlank:false}); var timeEndField = new Ext.form.TimeField({id:timeEndId, name:timeEndId, fieldLabel:"截止時間",width:90,format:"H:i:s",increment:30,editable : false, allowBlank:false}); var addTimeBtn = {id:"addTimeBtn"+i,xtype:"button",text:"",iconCls:"silk_page_add", handler:function(event){ addTimeControl(count++); } }; var removeTimeBtn = {id:"removeTimeBtn"+i, style:"padding-left:3px", xtype:"button",text:"",iconCls:"silk_page_delete", handler:function(event){ var id = (event.id).replace("removeTimeBtn","editTimeFieldSet"); var timeSet = Ext.getCmp(id); Ext.Msg.confirm(Sysd.Msg.AlertTitle,"是否刪除該時間段?",function(btn) { if('yes' == btn) { confirmShowAddControl(); editTimeForm.remove(timeSet,true); return true; } else { return false; } }); }}; var block = { layout:"column", items:[ {layout:"form",width:168,items:[timeStartField]}, {layout:"form",width:168,items:[timeEndField]}, {layout:"form",width:30,items:[removeTimeBtn]}, {layout:"form",width:30,items:[addTimeBtn]} ] }; var editTimeFieldSet = new Ext.Panel({ id:"editTimeFieldSet"+i, layout:'form', border:false, items:[block] }); editTimeForm.add(editTimeFieldSet); editTimeForm.doLayout(); } editTimeWin = new Ext.Window( { id:"editTimeWin", title:"編輯發送時間", width:434, height:245, resizable:false, modal:true, items:[editTimeForm] }); editTimeWin.on("close",function(){ timeStartArr=[]; timeEndArr=[]; count = 0; }); editTimeWin.show(); } function directLevel() { var direct = [ ["0","0說明"], ["1","1說明"], ["2","2說明"], ["3","3說明"], ["4","4說明"]] var proxy = new Ext.data.MemoryProxy(direct); var reader = new Ext.data.ArrayReader({}, [ {name: "did", type: "string", mapping: 0}, {name: "dname", type: "string", mapping: 1} ]); var storeDirect = new Ext.data.Store({ proxy: proxy, reader: reader, autoLoad: true //即時加載數據 }); //級別說明 gridDirect= new Ext.grid.GridPanel({ height:130, store:storeDirect, stripeRows:true, loadMask:{msg:"請稍等..."}, viewConfig : { forceFit : true }, columns:[ { header:setCenter('級別'), dataIndex:'did', align:'center', width:20, sortable:true }, { header:setCenter('級別說明'), dataIndex:'dname', align:'left', width:100, sortable:false }] }); formDirect = new Ext.form.FormPanel( { layout:'fit', buttonAlign:'center', autoHeight:true, autoWidth:true, frame:true, buttons:[{text:"返回",iconCls : 'silk_application_home',handler:function(){ Ext.getCmp("winDirect").close(); }}], items:[gridDirect] }); //說明彈出窗口 winDirect = new Ext.Window( { id:"winDirect", title:"級別說明", width:450, height:205, resizable:false, draggable:false, modal:true, items:[formDirect] }); winDirect.show(); } function initSeq() { seqNum = 0; var recordCount = gridMain.getStore().getCount(); idArr=new Array(); for(var i = 0; i < recordCount; i++) { var seqCode = gridMain.getStore().getAt(i).get("SEQ_CODE"); if(-1 == idArr.indexOf(seqCode)) { idArr.push(seqCode); gridMain.getStore().getAt(i).set("SEQ_CODE",String(++seqNum)); } else { gridMain.getStore().getAt(i).set("SEQ_CODE",String(seqNum)); } } } function gridSpan(grid, rowOrCol, cols, sepCol) { var array1 = new Array(); var arraySep = new Array(); var count1 = 0; var count2 = 0; var index1 = 0; var index2 = 0; var aRow = undefined; var preValue = undefined; var firstSameCell = 0; var allRecs = grid.getStore().getRange(); if (rowOrCol == "row") { count1 = grid.getColumnModel().getColumnCount(); count2 = grid.getStore().getCount(); } else { count1 = grid.getStore().getCount(); count2 = grid.getColumnModel().getColumnCount(); } for (i = 0; i < count1; i++) { if (rowOrCol == "row") { var curColName = grid.getColumnModel().getDataIndex(i); var curCol = "[" + curColName + "]"; if (cols.indexOf(curCol) < 0) continue; } preValue = undefined; firstSameCell = 0; array1[i] = new Array(); for (j = 0; j < count2; j++) { if (rowOrCol == "row") { index1 = j; index2 = i; } else { index1 = i; index2 = j; } var colName = grid.getColumnModel().getDataIndex(index2); if (sepCol && colName == sepCol) arraySep[index1] = allRecs[index1].get(sepCol); var seqOldValue = seqCurValue = "1"; if (sepCol && index1 > 0) { seqOldValue = arraySep[index1 - 1]; seqCurValue = arraySep[index1]; } if (allRecs[index1].get(colName) == preValue && (colName == sepCol || seqOldValue == seqCurValue)) { //alert(colName + "======" + seqOldValue + "======" + seqCurValue); allRecs[index1].set(colName, " "); array1[i].push(j); if (j == count2 - 1) { //var index = firstSameCell + Math.round((j + 1 - firstSameCell) / 2 - 1); var index = firstSameCell;//首行顯示數值 if (rowOrCol == "row") { allRecs[index].set(colName, preValue); } else { allRecs[index1].set(grid.getColumnModel().getColumnId(index), preValue); } } } else { if (j != 0) { //var index = firstSameCell + Math.round((j + 1 - firstSameCell) / 2 - 1); var index = firstSameCell;//首行顯示數值 if (rowOrCol == "row") { allRecs[index].set(colName, preValue); } else { allRecs[index1].set(grid.getColumnModel().getColumnId(index), preValue); } } firstSameCell = j; preValue = allRecs[index1].get(colName); allRecs[index1].set(colName, " "); if (j == count2 - 1) { allRecs[index1].set(colName, preValue); } } } } grid.getStore().commitChanges(); //添加所有分隔線 var rCount = grid.getStore().getCount(); for (i = 0; i < rCount; i ++) { for (j = 0; j < grid.getColumnModel().getColumnCount(); j ++) { aRow = grid.getView().getCell(i,j); if (i == 0) { aRow.style.borderTop = "none"; aRow.style.borderLeft = "1px solid #ccc"; } else if (i == rCount - 1) { aRow.style.borderTop = "1px solid #ccc"; aRow.style.borderLeft = "1px solid #ccc"; aRow.style.borderBottom = "1px solid #ccc"; } else { aRow.style.borderTop = "1px solid #ccc"; aRow.style.borderLeft = "1px solid #ccc"; } if(j == grid.getColumnModel().getColumnCount()-1) aRow.style.borderRight = "1px solid #ccc"; if(i == rCount-1) aRow.style.borderBottom = "1px solid #ccc"; //aRow.style.borderBottom = "1px solid #ccc"; } } //去除合並的單元格的分隔線 for (i = 0; i < array1.length; i++) { for (j = 0; j < array1[i].length; j++) { if (rowOrCol == "row") { aRow = grid.getView().getCell(array1[i][j],i); aRow.style.borderTop = "none"; } else { aRow = grid.getView().getCell(i, array1[i][j]); aRow.style.borderLeft = "none"; } } } } Ext.onReady(sms.appSetup.main.init,sms.appSetup.main);