EXTjs的案例(二)

来源:互联网 发布:淘宝官方充值平台 编辑:程序博客网 时间:2024/05/21 10:46

这个例子比较经典,常用的一些操作基本都包括在内了。

<script type="text/javascript">var win=null;function showPanel(){win.show(); };(function(){Ext.onReady(function(){  Ext.Ajax.timeout = 900000;  var devRecord = Ext.data.Record.create([                {name: 'usercode',mapping:'usercode'},            {name: 'username',mapping:'username'}                           ]); var codeRecord = Ext.data.Record.create([                {name: 'codevalue',mapping:'codevalue'},            {name: 'codename',mapping:'codename'}                           ]); var envRecord = Ext.data.Record.create([                {name: 'envcode',mapping:'envcode'},            {name: 'envname',mapping:'envname'}                           ]);        var spclStore = new Ext.data.Store({    //设定读取的地址autoLoad :true,proxy: new Ext.data.HttpProxy({url: 'getComboxValues.action?type=spclconf'}),    //设定读取的格式    reader: new Ext.data.JsonReader({    id:"codevalue",totalProperty:'results',root:'items',successProperty :'success'}, codeRecord),    remoteSort: true,            listeners: {                load: function() {                var spclConfCombo = Ext.getCmp('spclConfCombo');                    spclConfCombo.setValue(spclConfCombo.getValue());                }            }   });//-----------var spclStore2 = new Ext.data.Store({    //设定读取的地址autoLoad :true,proxy: new Ext.data.HttpProxy({url: 'getTake.action?type=takelink'}),    //设定读取的格式    reader: new Ext.data.JsonReader({    id:"codevalue",totalProperty:'results',root:'items',successProperty :'success'}, codeRecord),    remoteSort: true,            listeners: {                load: function() {                //var spclConfCombo = Ext.getCmp('spclConfCombo');                    //spclConfCombo.setValue(spclConfCombo.getValue());                }            }   });        var envStore = new Ext.data.Store({    //设定读取的地址//autoLoad :true,proxy: new Ext.data.HttpProxy({url: 'getComboxValues.action?flag=prdenv'}),    //设定读取的格式    reader: new Ext.data.JsonReader({    id:"envcode",totalProperty:'results',root:'items',successProperty :'success'}, envRecord),    remoteSort: true});    var devStore=new Ext.data.Store({                //设定读取的地址            proxy: new Ext.data.HttpProxy({url: 'getUserList.action?flag=all&role=dev'}),                //设定读取的格式                reader: new Ext.data.JsonReader({                    id:"usercode",totalProperty:'results',root:'items',successProperty :'success'            }, devRecord),                remoteSort: true,            listeners: {                load: function() {                    devCombo.setValue(devCombo.getValue());                }            }           });var devCombo = new Ext.form.ComboBox({            selectOnFocus:true,            valueField:'usercode',            hiddenName:'devCombo',            displayField:'username',            editable:false,            forceSelection:true,            triggerAction:'all',            allowBlank:true,            store:devStore,            typeAhead: true,            width:90});var streamRecord = Ext.data.Record.create([            {name: 'brhcode',mapping:'brhcode'},            {name: 'brhname',mapping:'brhname'}                ]);     var streamStore=new Ext.data.Store({                //设定读取的地址            proxy: new Ext.data.HttpProxy({url: 'getStreamList.action?flag=all&brhtype=dev'}),                //设定读取的格式                reader: new Ext.data.JsonReader({                    id:"brhcode",totalProperty:'results',root:'items',successProperty :'success'            }, streamRecord),                remoteSort: true,            listeners: {                load: function() {                    streamCombo.setValue(streamCombo.getValue());                }            }        });var streamCombo = new Ext.form.ComboBox({            selectOnFocus:true,            valueField:'brhcode',            hiddenName:'streamCombo',            displayField:'brhname',            editable:false,            //disabled:true,            triggerAction:'all',            allowBlank:true,            store:streamStore,            typeAhead: true,            //mode:'local',            width:200            });var envCombo = new Ext.form.ComboBox({            selectOnFocus:true,            valueField:'envcode',            hiddenName:'envCombo',            displayField:'envname',            editable:false,            triggerAction:'all',            allowBlank:true,            store:envStore,            typeAhead: true,            width:120,            listWidth:120,            listeners:{            }            });//expand //创建工具栏组件var toolbar = new Ext.Toolbar(['-','生境:',envCombo,'-','开发流:',streamCombo,'-','员:',devCombo,'-','活动号:',new Ext.form.TextField({                id: 'actquery'            })]);var toolbar2 = new Ext.Toolbar(['-',{text : '发,iconCls:'complete',handler:deployToPrdAfter},'-']);var toolbar3 = new Ext.Toolbar(['-','   ',{text : '查,iconCls:'query',handler:queryToDeploy},'    ','-']);var toolbar4 = new Ext.Toolbar(['-','   ',{text : '申布',iconCls:'query',handler:deployToPrdBefore},'    ','-']);//定义数据集对象var actStore = new Ext.data.GroupingStore({autoLoad :false,groupField:'envname',sortInfo:{field: 'makedate', direction: "ASC"},reader: new Ext.data.JsonReader({                    id:"taskid",totalProperty:'results',root:'items',successProperty :'success'},Ext.data.Record.create([{name: 'actid',mapping:'actid'},{name: 'proposername',mapping:'proposername'},{name: 'handdeploy',mapping:'handdeploy'},{name: 'testorder',mapping:'testorder'}])),proxy : new Ext.data.HttpProxy({url : 'QueryDeployPrdBefore.action'}),listeners : {        'load' : function() {  actGrid. getSelectionModel(). selectAll();        }    }})//add by zj  startvar actStore2 = new Ext.data.GroupingStore({//actStore2.insert(0,records);autoLoad :false,groupField:'envname',sortInfo:{field: 'makedate', direction: "ASC"},reader: new Ext.data.JsonReader({                    id:"taskid",totalProperty:'results',root:'items',successProperty :'success'},Ext.data.Record.create([{name: 'actid',mapping:'actid'},{name: 'brhcode',mapping:'brhcode'},{name: 'brhname',mapping:'brhname'},{name: 'upactno',mapping:'upactno'},{name: 'islink',mapping:'islink'},{name: 'linkoperate',mapping:'linkoperate'}])),proxy : new Ext.data.HttpProxy({//url : 'QueryDeployPrdAfter.action'}),listeners : {        'load' : function() {  actGrid. getSelectionModel(). selectAll();        }    }})//弹出框数据集var actStore3 = new Ext.data.GroupingStore({autoLoad :false,groupField:'envname',sortInfo:{field: 'makedate', direction: "ASC"},reader: new Ext.data.JsonReader({                    id:"taskid",totalProperty:'results',root:'items',successProperty :'success'},Ext.data.Record.create([{name: 'actno',mapping:'actno'},{name: 'content',mapping:'content'}])),proxy : new Ext.data.HttpProxy({//url : 'QueryDeployPrdBefore.action'}),listeners : {        'load' : function() {  actGrid3. getSelectionModel(). selectAll();        }    }})//add by zj  end//创建Grid表格组件var cb = new Ext.grid.CheckboxSelectionModel()var actGrid = new Ext.grid.EditorGridPanel({applyTo : 'grid-div2',//renderTo: 'grid-div',id:'actGrid',frame:true,tbar : toolbar,bbar : toolbar4,store: actStore,clicksToEdit:1,height: 480,width:1200,stripeRows : true,autoScroll : true,hideGroupedColumn:true,viewConfig : {autoFill : true},sm : cb,columns: [//配置表格列new Ext.grid.RowNumberer({header : '行号',width : 40}),//表格行号组件cb,{header: "测", width: 60, dataIndex: 'testname', sortable: true},{header: "紧", width: 60, dataIndex: 'urgeflagname', sortable: true,renderer : function(value, cellmeta, record) {return (value=="是")?('<span style="color:red;">'+value+'</span>'):value;}},{header: "描", width: 80, dataIndex: 'content', sortable: true,<%--editor:new Ext.form.TextField({allowBlank : false}),--%>renderer:showDetail},{header: "备", width: 80, dataIndex: 'remark', sortable: true,editor:new Ext.form.TextField({allowBlank : true}),renderer:showDetail},{header: "特", width: 70, dataIndex: 'spclconf', sortable: true,editor: new Ext.form.ComboBox({id:'spclConfCombo',            selectOnFocus:true,            valueField:'codevalue',            hiddenName:'spclCombo',            displayField:'codename',            editable:false,            forceSelection:false,            triggerAction:'all',            store:spclStore,            typeAhead: true,            width:80,            listWidth:100}),renderer : function(value, cellmeta, record) { var index = spclStore.find(Ext.getCmp('spclConfCombo').valueField, value); var recordspcl = spclStore.getAt(index); var displayText = ""; if (recordspcl == null) { displayText = value; }else { displayText = recordspcl.data.codename; } if(displayText != null && displayText !=""){ displayText = '<span style="color:red;">' + displayText + '</span>'; } return displayText;}},{header: "活", width: 180, dataIndex: 'actid', sortable: true,renderer:showDetail}],        view: new Ext.grid.GroupingView({            //forceFit:true,            hideGroupedColumn : true,            groupByText:'使用当前字段进行分组',            showGroupsText:'表格分组',            groupTextTpl: '{text} ({[values.rs.length]} {["个活动待更新"]})'        })               ,listeners: {                   'render': function () {                    toolbar3.render(this.tbar); //add one tbar                   }                            } })//add by zj startvar cb2 = new Ext.grid.CheckboxSelectionModel()var actGrid2= new Ext.grid.EditorGridPanel({applyTo : 'grid-div2',//renderTo: 'grid-div2',id:'actGrid2',frame:true,tbar : toolbar,bbar : toolbar2,store: actStore2,clicksToEdit:1,height: 480,width:1200,stripeRows : true,autoScroll : true,hideGroupedColumn:true,viewConfig : {autoFill : true},sm : cb2,columns: [//配置表格列new Ext.grid.RowNumberer({header : '行号',width : 40}),//表格行号组件cb2,{header: "布", width: 60, dataIndex: 'urgeflagname', sortable: true,renderer : function(value, cellmeta, record) {return (value=="是")?('<span style="color:red;">'+value+'</span>'):value;}},{header: "描ds", width: 80, dataIndex: 'content', sortable: true,<%--editor:new Ext.form.TextField({allowBlank : false}),--%>renderer:showDetail},{header: "备d", width: 80, dataIndex: 'remark', sortable: true,editor:new Ext.form.TextField({allowBlank : true}),renderer:showDetail},{header: "sdfsdf", width: 70, dataIndex: 'spclconf', sortable: true,editor: new Ext.form.ComboBox({id:'spclConfCombo',            selectOnFocus:true,            valueField:'codevalue',            hiddenName:'spclCombo',            displayField:'codename',            editable:false,            forceSelection:false,            triggerAction:'all',            store:spclStore,            typeAhead: true,            width:80,            listWidth:100}),renderer : function(value, cellmeta, record) { var index = spclStore.find(Ext.getCmp('spclConfCombo').valueField, value); var recordspcl = spclStore.getAt(index); var displayText = ""; if (recordspcl == null) { displayText = value; }else { displayText = recordspcl.data.codename; } if(displayText != null && displayText !=""){ displayText = '<span style="color:red;" >' + displayText + '</span>'; } return displayText;}},{header: "aaa", width: 60, dataIndex: 'actid', sortable: true,renderer:showDetail},{header: "aa是否有关联", width: 70, dataIndex: 'islink',renderer : function(value, cellmeta, record, rowIndex, columnIndex, store){        var actid=record.get('actid');var envcode=record.get('envcode');getInfo(actid,envcode);if(value=='0'){return '无';}else{    return '<a href="#" onclick="showPanel();">有</a>';}}},{header: "关联ddd操作", width: 70, dataIndex: 'linkoperate', sortable: true,editor:new Ext.form.ComboBox({id:'spclConfCombo2',            selectOnFocus:true,            valueField:'codevalue',//            hiddenName:'spclCombo',            displayField:'codename',            editable:false,            forceSelection:false,            triggerAction:'all',            store:spclStore2,            typeAhead: true,            width:80,            listWidth:100})}],        view: new Ext.grid.GroupingView({            //forceFit:true,            hideGroupedColumn : true,            groupByText:'使用当前字段进行分组',            showGroupsText:'表格分组',            groupTextTpl: '{text} ({[values.rs.length]} {["个活动待更新"]})'        })               ,listeners: {                   'render': function () {                    toolbar3.render(this.tbar); //add one tbar                   }                            } })//add by zj  end//创建新增或修改书籍信息的form表单Ext.QuickTips.init();Ext.form.Field.prototype.msgTarget = 'side';//统一指定错误信息提示方式function showDetail(value, meta, rec, rowIdx, colIdx, ds){return '<div ext:qtitle="" ext:qtip="' + value + '">'+ value +'</div>';}//查询数据库字段方法function queryToDeploy(){var devPerson = devCombo.getValue();var devStream = streamCombo.getValue();var envQuery = envCombo.getValue();var actQuery = Ext.get('actquery').dom.value;var msgTip = Ext.MessageBox.show({title:'提示',width : 250,msg:'正在查询活动信息......',progress:true,wait:true,waitConfig:{                     interval:1000                }});actStore.load({params:{UserCode:devPerson, BrhCode:devStream,envCode:envQuery,actQuery:actQuery},callback:function afterQuery(response,options, success){msgTip.hide();              if(!success)              {                  Ext.MessageBox.alert("提示","没有待发布的活动!");                  actStore.removeAll();              }     }    });}//申请发布的函数function deployToPrdBefore(){var acts = actGrid.getSelectionModel().getSelections();//actStore.load();if(acts.length == 0){Ext.MessageBox.alert("提示","请选择待提交的活动!");return;}var changed = actStore.modified;var missed = false;        Ext.each(changed, function(record) {         var flag = true;         Ext.each(acts, function(item) {         if(record.data.actid == item.data.actid){         flag = false;         }         });         if(flag){         missed = true;         }        });if(missed){Ext.MessageBox.confirm('提示','有些记录您做了修改,但没有选择提交,是否继续?',function(id){if(id == 'yes'){deployActsBefore();}});}else{deployActsBefore();}}//add by zj start  function deployToPrdAfter(){var acts = actGrid2.getSelectionModel().getSelections();if(acts.length == 0){Ext.MessageBox.alert("提示","请选择待提交的活动!");return;}//验证是否选择下拉框var fl=null;Ext.each(acts, function(record) {if(record.data.linkoperate==null){Ext.MessageBox.alert("提示","请选择下拉框关联操作!");//测试fl=true;return;}         });if(fl){return;}var changed = actStore.modified;var missed = false;        Ext.each(changed, function(record) {         var flag = true;         Ext.each(acts, function(item) {         if(record.data.actid == item.data.actid){         flag = false;         }         });         if(flag){         missed = true;         }        });if(missed){Ext.MessageBox.confirm('提示','有些记录您做了修改,但没有选择提交,是否继续?',function(id){if(id == 'yes'){deployActsAfter();}});}else{deployActsAfter();}}//add by zj end var msgTip=null;var deployReturn=false;function hideDeployProgress(){deployReturn=true;msgTip.hide();}//################################################################################function getInfo(actid, envcode){Ext.Ajax.request({url : 'queryActivityOther.action',//+'?actid='+actid+'&envcode='+envcode,params : {'actid':actid,'envcode':envcode},method : 'POST',success : function(response,options){var result = Ext.util.JSON.decode(response.responseText);//json->objectvar Record = actStore3.recordType;for(var i=0;i<result.items.length;i++){if(result.items[i]!=null){var r = new Record(result.items[i]);//转成RecordactStore3.insert(0,r); };};}});};function showDeployProgress(jsonData,first,url){if(first){ msgTip = Ext.MessageBox.show({title:'提示',width : 250,msg:'正在发布......',progress:true,wait:true,waitConfig:{                     interval:1000                } }); deployReturn=false; setTimeout(function(){showDeployProgress(jsonData)},1000) return ;}Ext.Ajax.request({url : url,params : {jsonData:jsonData},method : 'POST',success : function(response,options){var result = Ext.util.JSON.decode(response.responseText);if(deployReturn){}else if(result.busy){Ext.MessageBox.updateText(result.msg);setTimeout(function(){showDeployProgress(jsonData)},1000)}else{setTimeout(function(){showDeployProgress(jsonData)},1000);}}});}function deployActsBefore(){var acts = actGrid.getSelectionModel().getSelections();        var jsonData = "[";         /*Ext.each(acts, function(record) {jsonData +=Ext.encode(record.data)+",";//record.data.indexNo = this.indexOf(record);         });        jsonData=Ext.util.Format.substr(jsonData,0, jsonData.length-1);        */        var appendRecordStrFn = function(record) {               record.data.indexNo = this.indexOf(record);               jsonData += Ext.encode(record.data) + ",";           };           Ext.each(acts , appendRecordStrFn, actStore);           jsonData += "]";Ext.Ajax.request({url : 'QueryActivityViewToApplyRel.action',params : {jsonData:jsonData},timeout: 300000,method : 'POST',success : function(response,options){hideDeployProgress();var result = Ext.util.JSON.decode(response.responseText);alert(result);Ext.Msg.alert('提示',result.msg);for(var i = 0 ; i < acts.length ; i++){actStore.remove(acts[i]);}var Record = actStore2.recordType;for(var i=0;i<result.items.length;i++){var r = new Record(result.items[i]); //转成RecordactStore2.insert(0,r); };actStore.modified = [];//actStore2.load();},failure : function(response,options){hideDeployProgress();Ext.Msg.alert('提示','发布失败或超时,请联系管理员!');}});//actStore.load();showDeployProgress(jsonData,true,"QueryActivityViewToApplyRel.action");}//add by zj startfunction deployActsAfter(){var acts = actGrid2.getSelectionModel().getSelections();        var jsonData = "[";         var appendRecordStrFn = function(record) {               record.data.indexNo = this.indexOf(record);               jsonData += Ext.encode(record.data) + ",";           };           Ext.each(acts , appendRecordStrFn, actStore);           jsonData += "]";Ext.Ajax.request({url : 'deployActs2.action',params : {jsonData:jsonData},timeout: 300000,method : 'POST',success : function(response,options){hideDeployProgress();var result = Ext.util.JSON.decode(response.responseText);Ext.Msg.alert('提示',result.msg);for(var i = 0 ; i < acts.length ; i++){actStore2.remove(acts[i]);}actStore2.modified = [];},failure : function(response,options){hideDeployProgress();Ext.Msg.alert('提示','发布失败或超时,请联系管理员!');}});showDeployProgress(jsonData,true,"deployActs2.action");}//add by zj end  var mainpanel=new  Ext.grid.GridPanel({//renderTo : 'grid-div2',region:"north",resizable:false,    id:'mainpanel',      autoWidth:true,    frame:true,    store: actStore3,   height: 400,//Ext.get("grid-div2").getHeight()-10,    width: Ext.get("grid-div2").getWidth(),    columns: [//配置表格列new Ext.grid.RowNumberer({header : '行号',width : 40}),{header: "有的补", width: 60,  sortable: true, dataIndex:'relateact'},{header: "关丁开发人", width: 60, sortable: true, dataIndex:'username'},{header: "补", width: 60,  sortable: true, dataIndex:'content'}]});var bottom= new Ext.Panel({id: 'bottomLogo', height: 10, region:"center",//frame:true, buttonAlign: 'center',buttons: [  { text: '关闭',  handler : hiddenwindow} ]});var panel2=new Ext.Panel({resizable:false,layout:"border",     id:'panel2',      autoWidth:true,      frame:true,      height: Ext.get("grid-div2").getHeight(),width: Ext.get("grid-div2").getWidth(),    labelAlign : 'center',    //region:'south',      items:[mainpanel,bottom]}); win = new Ext.Window({id:'win',resizable:false, height: Ext.get("grid-div2").getHeight(),    width: Ext.get("grid-div2").getWidth(), //frame:true,        closable: false, modal:true,items: panel2,layout: 'fit'});//Ext.getCmp('mainpanel').hide(); //Ext.getCmp('windowt').show(); //win.show();//win.hide();function hiddenwindow(){win.hide();};});})();

下面是一些常用操作的总结:

//把一个json对象转换成一个model(record):response.responseText={item:xxxx,success:xxxx}var result = Ext.util.JSON.decode(response.responseText);var Record = actStore2.recordType;for(var i=0;i<result.items.length;i++){var r = new Record(result.items[i]); //转成RecordactStore2.insert(0,r); };//把一个model(record)对象转换成一个json对象:var acts = actGrid.getSelectionModel().getSelections();        var jsonData = "[";         Ext.each(acts, function(record) {jsonData +=Ext.encode(record.data)+",";         });        jsonData=Ext.util.Format.substr(jsonData,0, jsonData.length-1);        jsonData += "]";//删除选中的数据:前台删除:/*for(var i = 0 ; i < acts.length ; i++){actStore.remove(acts[i]);}*///ajax与后台交互:var actids='?';Ext.each(acts, function(item) {actids=actids+'actid='+item.data.actid+'&';}); Ext.each(acts, function(item) {actids=actids+'envcode='+item.data.envcode+'&';}); actids=Ext.util.Format.substr(actids,0, actids.length-1);Ext.Ajax.request({url : 'QueryActivityViewToApplyRel.action'+actids,method : 'POST',success : function(response,options){var result = Ext.util.JSON.decode(response.responseText);//json->objectvar Record = actStore2.recordType;for(var i=0;i<result.items.length;i++){var r = new Record(result.items[i]); //转成RecordactStore2.insert(0,r); };}});//后台的一般格式为:public class QuerAction {private String actid;private String envcode;private String msg;private long results;private List items;private boolean success;public String execute() throws Exception {QueryDqs = new QueryDe();try{items = qs.seleco(actid,envcode);    results = items.size();if(results < 1){success=false;return this.ERROR;}elsesuccess=true;} catch (Exception e) {e.printStackTrace();success=false;return this.ERROR;}return this.SUCCESS;}//后台的json解析:    public static List json2List(String jsonString, Class pojoClass){    List list = new ArrayList();    try {        JSONArray jsonArray = JSONArray.fromObject(jsonString);        JSONObject jsonObject;        Object pojoValue;        for ( int i = 0 ; i<jsonArray.size(); i++){            jsonObject = jsonArray.getJSONObject(i);            pojoValue = JSONObject.toBean(jsonObject,pojoClass);            list.add(pojoValue);        }    }catch(Exception e){    e.printStackTrace();    }        return list;    }//刷新:actStore.load({params:{UserCode:devPerson, BrhCode:devStream,envCode:envQuery,actQuery:actQuery},callback:function afterQuery(response,options, success){msgTip.hide();              if(!success)              {                  Ext.MessageBox.alert("提示","没有待发布的活动!");                  actStore.removeAll();              }     }});//获取一个组建id为textF的值(文本域)var actQuery = Ext.get('textF').dom.value;//出发时间的时候刷新URLactStore.load({params:{UserCode:devPerson, BrhCode:devStream,envCode:envQuery,actQuery:actQuery},callback:function afterQuery(response,options, success){msgTip.hide();              if(!success)              {                  Ext.MessageBox.alert("提示","没有待发布的活动!");                  actStore.removeAll();              }     }    });//菜单加载和后边数据页面显示:function buildTree(node){var tn = new Ext.tree.TreeNode({text : node.name,url : node.url,leaf : node.nodeList.length==0,expanded : true//默认展开根节点});for(var i=0;i<node.nodeList.length;i++){tn.appendChild(buildTree(node.nodeList[i]));}return tn;}function getTreeRoot2(){    Ext.MessageBox.show({                  title:'请稍候',                  msg:'正在加载菜单,请耐心等待...',                   progress:true           });  var root=null;var conn = Ext.lib.Ajax.getConnectionObject().conn; conn.open("GET", 'ree.action?r='+Math.random(),false); conn.send(null);var json = Ext.util.JSON.decode(conn.responseText);root=buildTree(json.node);Ext.MessageBox.hide();   return root;}Ext.onReady(function(){Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif';var username = '<%=tUsername%>';var role = '<%=tRole%>';var root = getTreeRoot2();var menu = new Ext.tree.TreePanel({border : false,root : root,hrefTarget : 'mainContent',listeners : {click : function(node,e){mainPanel.load({url:node.attributes.url,callback : function(){mainPanel.setTitle('<新版本>'+node.text+node.attributes.url);},scripts: true});}}});new Ext.Viewport({title : 'Ext.Viewport示例',layout:'border',//表格布局items: [{title : '用户:'+username,items : menu,split:true,autoScroll:true,collapsible: true,region:'west',//指定子面板所在区域为westwidth: 150},{title: '首页',contentEl : 'aboutDiv',collapsible: true,autoScroll:true,id : 'mainContent',region:'center'//指定子面板所在区域为center}]});var mainPanel = Ext.getCmp('mainContent');});



 

0 0
原创粉丝点击