ExtJs中OA管理中组织和用户关系左右选择组件的运用

简介: 原文 http://www.cnblogs.com/shijiewutonghua/archive/2013/03/29/2989236.html 我完成的效果是: 这里点击左边的树是联动右边itemselector 组件中的用户,并且带有用户搜索 一:废话不多,贴上js代码:   ...

原文 http://www.cnblogs.com/shijiewutonghua/archive/2013/03/29/2989236.html

我完成的效果是:

这里点击左边的树是联动右边itemselector 组件中的用户,并且带有用户搜索

一:废话不多,贴上js代码:

  

?
var addUsersWin,addUsersFun = function (data) {
             userSelectStore.load();
             userSelectStoreOwn.load();
             addUsersWin = new Ext.Window({
                 title: "添加员工" ,
                 width:780,
                 height:480,
                 buttonAlign: 'center' ,
                 modal: true ,
                 items:[
                     {
                         xtype: 'form' ,
                         plain: true ,
                         url: 'system/addOrganizationUser.json' ,
                         labelWidth:80,
                         baseCls: "x-plain" ,
                         bodyStyle: "padding:8px" ,
                         labelAlign: 'right' ,
                         frame: true ,
                         items: [{
                             layout: 'column' ,
                             height:50,
                             border : false ,
                             bodyCssClass  : "queryForm" ,
                             defaults : {
                                 layout : 'form' ,
                                 border : false ,
                                 bodyCssClass: "queryForm" ,
                                 defaults : {
                                     anchor : '95%' ,
                                     xtype : "textfield"
                                 }
                             },
                             items:[
                                 {
                                     columnWidth:0.7,
                                     //layout: 'form',
                                     items: [{
                                         xtype: 'textfield' ,
                                         name: "filter['name']" ,
                                         id: 'userName' ,
                                         fieldLabel: '用户姓名'
                                     }]
                                 },
                                 {
                                     columnWidth:0.08,
                                     //layout: 'form',
                                     items: [
                                         {
                                             xtype: 'button' ,
                                             text: '查询' ,
                                             iconCls: 'findItem' ,
                                             handler: function(){
                                                 var un= Ext.getCmp( 'userName' ).getValue();
                                                 userSelectStore.baseParams={
                                                     name:un
                                                 };
                                                 userSelectStore.load();
                                             }
                                         }
                                     ]
                                 }
                             ]
                         },{
                             layout: 'column' ,
                             height:300,
                             items:[
                                 {
                                     columnWidth:0.3,
                                     layout: 'form' ,
                                     items: [{
                                         xtype: 'treepanel' ,
                                         region: 'west' ,
                                         split: true ,
                                         width: 200,
                                         height: 300,
                                         margins: '0 4 0 0' ,
                                         enableDD: true ,
                                         containerScroll: true ,
                                         border: false ,
                                         rootVisible: false ,
                                         autoScroll: true ,
                                         root: {
                                             nodeType: 'async'
                                         },
                                         loader: new Ext.tree.TreeLoader({
                                             dataUrl: 'system/organization/resourceTree.json?type=1' ,
                                             baseAttrs: {uiProvider: Ext.ux.TreeCheckNodeUI}
                                         }),
                                         listeners: {
                                             checkchange: function(node, checked ){
                                                 node.expand();
                                                 node.attributes. checked = checked ;
                                                 node.eachChild(function(child) {
                                                     child.ui.toggleCheck( checked );
                                                     child.attributes. checked = checked ;
                                                     child.fireEvent( 'checkchange' , child, checked );
                                                 })
                                             },
                                             afterRender: function (t) {
                                                 treeP = t;
                                                 treeP.root.expand( true );
                                             },
                                            click:function(node){
                                                 if (node.id!= 'root' ){
                                                     userSelectStore.baseParams={
                                                         id:node.id
                                                     };
                                                     userSelectStore.load();
                                                 }
                                            }
                                         }
 
                                     }]
                                 },
                                 {
                                     columnWidth:0.7,
                                     layout: 'form' ,
                                     items: [
                                         {
                                             xtype: 'itemselector' ,
                                             name: 'userIds' ,
                                             imagePath: 'images/ext/ux/images/' ,
                                             availableTitle: '可选用户' ,
                                             selectedTitle: '已选用户' ,
                                             multiselects:[
                                                 {
                                                     width:200,
                                                     height:300,
                                                     store:userSelectStore,
                                                     displayField: 'name' ,
                                                     valueField: 'id'
                                                 },
                                                 {
                                                     width:200,
                                                     height:300,
                                                     displayField: 'name' ,
                                                     valueField: 'id' ,
                                                     store:userSelectStoreOwn
                                                 }
                                             ]
                                         }
                                     ]
                                 }
                             ]
                         }
                         ]
                     }
                 ],
                 buttons:[
                     {
                         text: '确定' ,
                         handler:function () {
                             var fromPanel = addUsersWin. get (0);
                             if (!fromPanel.getForm().isValid()) {
                                 Ext.Msg.alert( "提示" , "请按相关提示正确填写" );
                                 return ;
                             }
                             fromPanel.form.submit({
                                 params :{id:data.id},
                                 waitMsg: '正在处理中...' ,
                                 failure:function (form, action) {
                                     Ext.Msg.alert( '错误消息' , "修改失败,请联系技术人员!" );
                                 },
                                 success:function (form, action) {
                                         Ext.MessageBox.alert( '消息提示' , '添加成功!' );
                                         frameworkGridStore.reload();
                                         addUsersWin.destroy();
                                 }
                             });
                         }
                     },
                     {
                         text: '取消' ,
                         handler:function () {
                             addUsersWin.destroy();
                         }
                     }
                 ]
             });
             addUsersWin.show();
         }

  

二:这里我们先看表单中, xtype:'itemselector',组件,要用到,需要引入两个js: ItemSelector.js 和 MultiSelect.js

这样 itemselector组件就可以用了,其中左边加载的数据:可选用户:userSelectStore

 

?
var userSelectStore = new Ext.data.JsonStore({
             url: 'system/getAllUserList.json' ,
             idProperty: 'id' ,
             fields:[ 'id' , 'name' ],
             root: 'userList' ,
             paramNames : {
                 id: '' ,
                 name: ''
             }
         });

  

 

右边部分加载的数据:已选用户:userSelectStoreOwn

 

?
var userSelectStoreOwn = new Ext.data.JsonStore({
             url: 'system/getOrganizationUserList.json' ,
             idProperty: 'id' ,
             fields:[ 'id' , 'name' ],
             root: 'userList'
         });

  

 

三:接着我们来看一下整个window弹出窗中,左边treePanel的绑定的事件:

 

?
click:function(node){
                                                 if (node.id!= 'root' ){
                                                     userSelectStore.baseParams={
                                                         id:node.id
                                                     };
                                                     userSelectStore.load();
                                                 }
                                            }

  

 

通过 click事件,我们可以根据树节点的 id去加载 itemselector组件左边,可选用户的数据.

四:最后,我们在做搜索的时候:

 

?
xtype: 'button' ,
                                            text: '查询' ,
                                            iconCls: 'findItem' ,
                                            handler: function(){
                                                var un= Ext.getCmp( 'userName' ).getValue();
                                                userSelectStore.baseParams={
                                                    name:un
                                                };
                                                userSelectStore.load();
                                            }

  

 

我们是把输入框input中的值作为itemselector左边可选用户的数据加载的参数,去加载可选用户。

五:最后说一下itemselector这个组件,在表单中是通过name:'userIds',把多个的id的字符串传给java后台的,处理时候,只要切割逗号的字符串,就行了。这个组件的js目前只封装好了,传valueField的值过去,

如果想要显示值是displayField,要在源码中自己仿照getValue()方法写获得displayField的方法。

目录
相关文章
|
2天前
点晴免费OA系统助理企业高效管理
随着信息时代的发展,企业管理正迎来一场数字化变革的风暴。点晴OA系统作为真正免费OA办公系统,成为企业构建免费OA办公系统的青睐。
25 2
|
2天前
免费OA办公系统实现企业智能办公管理
随着互联网技术的快速发展,企业纷纷加入信息平台建设的大军。免费OA系统的实施不仅能加强高效的流程管理体系和层次沟通合作,还能有效提高完善的组织管理体系和执行力。
46 1
|
5月前
|
JSON 小程序 前端开发
小程序之自定义组件 结合案例(会议OA的会议/投票管理及个人中心的搭建)详解 (4)
小程序之自定义组件 结合案例(会议OA的会议/投票管理及个人中心的搭建)详解 (4)
|
6月前
|
SQL 存储 JavaScript
会议OA系统会议管理模块开发思路(layui搭建)
会议OA系统会议管理模块开发思路(layui搭建)
|
7月前
|
JSON 小程序 JavaScript
会议OA小程序【会议管理,个人中心页面布局】
会议OA小程序【会议管理,个人中心页面布局】
|
8月前
|
JSON 前端开发 Java
Layui实现OA会议系统之会议管理模块总合
Layui实现OA会议系统之会议管理模块总合
65 0
|
10月前
免费OA系统为企业整体提升组织效能
随着不断发展,企业在适应市场竞争中,通过运用免费OA办公系统,实现企业信息化管理,带来管理模式的提升。
48 0
|
供应链
免费OA系统为中小企业提供一站式管理方案
随着数字化时代的发展,OA系统被越来越多的企业所重视。免费OA系统能够更加高效优质的处理办公事务以及进行企业管理业务,实现对资源的高效利用,进而达到提高生产力,提升管理水平的目的。那么,点晴免费OA系统都具备怎样的功能?
88 0
|
存储 项目管理
免费OA实现企业智能办公管理
免费OA系统的实施能够为企事业单位所带来的不仅是高效的流程化管理体系及层级沟通协作的强化,以及完善的组织管理制度和执行力的有效提升,同时也是企业实现智能办公管理的有效“助推器”。
192 0
|
前端开发 Java 应用服务中间件
SSM+JSP实现企业管理系统(OA管理系统源码+数据库+文档+PPT)
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
142 0
SSM+JSP实现企业管理系统(OA管理系统源码+数据库+文档+PPT)