UnitDuty.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. MWF.xApplication.Selector = MWF.xApplication.Selector || {};
  2. MWF.xDesktop.requireApp("Selector", "Identity", null, false);
  3. MWF.xApplication.Selector.UnitDuty = new Class({
  4. Extends: MWF.xApplication.Selector.Identity,
  5. options: {
  6. "units": [],
  7. "values": [],
  8. "dutys": [],
  9. },
  10. setInitTitle: function(){
  11. this.setOptions({"title": MWF.xApplication.Selector.LP.selectDuty});
  12. },
  13. _init : function(){
  14. this.selectType = "duty";
  15. this.className = "UnitDuty";
  16. },
  17. loadSelectItems : function(){
  18. if (this.options.units.length){
  19. var unitList = this.options.units.map(function (unit) {
  20. return typeOf( unit ) === "string" ? unit : (unit.distinguishedName || unit.unique || unit.levelName || unit.id)
  21. });
  22. this._loadSelectItems( unitList );
  23. }else{
  24. this.orgAction.listTopUnit(function(json){
  25. var unitList = json.data.map(function (unit) {
  26. return unit.distinguishedName;
  27. });
  28. this._loadSelectItems( unitList );
  29. }.bind(this));
  30. }
  31. },
  32. _loadSelectItems: function( unitList ){
  33. if( !unitList || !unitList.length )return;
  34. o2.Actions.load("x_organization_assemble_express").UnitAction.listObject( {"unitList" : unitList} , function (json) {
  35. if (json.data.length){
  36. json.data.each( function(data){
  37. var category = this._newItemCategory("ItemCategory", data, this, this.itemAreaNode );
  38. this.subCategorys.push(category);
  39. this.subCategoryMap[data.levelName] = category;
  40. }.bind(this));
  41. }
  42. }.bind(this) );
  43. },
  44. _scrollEvent: function(y){
  45. return true;
  46. },
  47. _getChildrenItemIds: function(){
  48. return null;
  49. },
  50. _newItemCategory: function(type, data, selector, item, level, category, delay, notActive){
  51. return new MWF.xApplication.Selector.UnitDuty[type](data, selector, item, level, category, delay, notActive)
  52. },
  53. _listItem : function( callback, failure, key ){
  54. var units = ( this.options.units || [] ).map(function(u){
  55. return typeOf(u)==="string" ? u : u.distinguishedName;
  56. }).clean();
  57. var keyObj = units.length ? { "key": key, "unitList": units } : { "key": key };
  58. o2.Actions.load("x_organization_assemble_control").UnitDutyAction.listLike( keyObj, function (json) {
  59. if( json.data.length === 0 ){
  60. if (callback) callback.apply(this, []);
  61. return;
  62. }
  63. var unitIdList = json.data.map(function ( d ) { return d.unit; }).unique();
  64. o2.Actions.load("x_organization_assemble_express").UnitAction.listObject( {unitList: unitIdList}, function (unitJson) {
  65. var unitObjectMap = {};
  66. unitJson.data.each(function (u) {
  67. unitObjectMap[u.matchKey] = u;
  68. });
  69. json.data.each(function (d) {
  70. var u = unitObjectMap[d.unit];
  71. if( u ){
  72. d.unitLevelName = u.levelName;
  73. d.woUnit = u;
  74. }
  75. });
  76. if (callback) callback.apply(this, [json]);
  77. })
  78. }, failure );
  79. },
  80. _listItemByKey: function(callback, failure, key){
  81. this._listItem( callback, failure, key );
  82. },
  83. _getItem: function(callback, failure, id, async){
  84. this.orgAction.getIdentity(function(json){
  85. if (callback) callback.apply(this, [json]);
  86. }.bind(this), failure, ((typeOf(id)==="string") ? id : id.distinguishedName), async);
  87. },
  88. _newItemSelected: function(data, selector, item, selectedNode, delay){
  89. return new MWF.xApplication.Selector.UnitDuty.ItemSelected(data, selector, item, selectedNode, delay)
  90. },
  91. _listItemByPinyin: function(callback, failure, key){
  92. this._listItem( callback, failure, key );
  93. },
  94. _newItem: function(data, selector, container, level, category, delay){
  95. return new MWF.xApplication.Selector.UnitDuty.Item(data, selector, container, level, category, delay);
  96. },
  97. _newItemSearch: function(data, selector, container, level){
  98. return new MWF.xApplication.Selector.UnitDuty.SearchItem(data, selector, container, level);
  99. }
  100. });
  101. MWF.xApplication.Selector.UnitDuty.Item = new Class({
  102. Extends: MWF.xApplication.Selector.Identity.Item,
  103. _getShowName: function(){
  104. return this.data.name;
  105. },
  106. _getTtiteText: function(){
  107. debugger;
  108. return this.data.name+((this.data.unitLevelName) ? "("+this.data.unitLevelName+")" : "");
  109. },
  110. _setIcon: function(){
  111. var style = this.selector.options.style;
  112. this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/"+style+"/icon/duty.png)");
  113. },
  114. getData: function(callback, isWait){
  115. if( this.data.levelName ){
  116. if (callback) callback();
  117. }else if ( this.data.woUnit ) {
  118. this.data.unitLevelName = this.data.woUnit.levelName;
  119. if (callback) callback();
  120. }else if (this.data.unit){
  121. this.selector.orgAction.getUnit(function(json){
  122. this.data.woUnit = json.data;
  123. this.data.unitLevelName = this.data.woUnit.levelName;
  124. if (isWait && callback) callback();
  125. }.bind(this), function(xhr, text, error){
  126. return true;
  127. }.bind(this), this.data.unit)
  128. }else{
  129. if (callback) callback();
  130. }
  131. }
  132. });
  133. MWF.xApplication.Selector.UnitDuty.SearchItem = new Class({
  134. Extends: MWF.xApplication.Selector.UnitDuty.Item,
  135. _getShowName: function(){
  136. return this.data.name+((this.data.unitLevelName) ? "("+this.data.unitLevelName+")" : "");
  137. }
  138. });
  139. MWF.xApplication.Selector.UnitDuty.ItemSelected = new Class({
  140. Extends: MWF.xApplication.Selector.Identity.ItemSelected,
  141. getData: function(callback, isWait){
  142. if( this.data.levelName ){
  143. if (callback) callback();
  144. }else if ( this.data.woUnit ) {
  145. this.data.unitLevelName = this.data.woUnit.levelName;
  146. if (callback) callback();
  147. }else if (this.data.unit){
  148. this.selector.orgAction.getUnit(function(json){
  149. this.data.woUnit = json.data;
  150. this.data.unitLevelName = this.data.woUnit.levelName;
  151. if (isWait && callback) callback();
  152. }.bind(this), function(xhr, text, error){
  153. return true;
  154. }.bind(this), this.data.unit)
  155. }else{
  156. if (callback) callback();
  157. }
  158. },
  159. _getShowName: function(){
  160. return this.data.name+((this.data.unitLevelName) ? "("+this.data.unitLevelName+")" : "");
  161. },
  162. _getTtiteText: function(){
  163. return this.data.name+((this.data.unitLevelName) ? "("+this.data.unitLevelName+")" : "");
  164. },
  165. _setIcon: function(){
  166. var style = this.selector.options.style;
  167. this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/"+style+"/icon/duty.png)");
  168. }
  169. });
  170. MWF.xApplication.Selector.UnitDuty.ItemCategory = new Class({
  171. Extends: MWF.xApplication.Selector.Identity.ItemCategory,
  172. createNode: function(){
  173. this.node = new Element("div", {
  174. "styles": this.selector.css.selectorItemCategory_department,
  175. "title" : this._getTtiteText()
  176. }).inject(this.container);
  177. },
  178. _getShowName: function(){
  179. // if( this._getTotalCount && this._getSelectedCount ){
  180. // return "" + this._getTotalCount() + "-" + this._getSelectedCount() + "-" + this.data.name ;
  181. // }else{
  182. return this.data.name;
  183. // }
  184. },
  185. _setIcon: function(){
  186. var style = this.selector.options.style;
  187. this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/"+style+"/icon/companyicon.png)");
  188. },
  189. _loadSub: function(callback, notActive){
  190. if(notActive)this.subNotActive = true;
  191. if (!this.loaded){
  192. var loadSubUnit = function () {
  193. if( !this.categoryLoaded ){
  194. o2.Actions.load("x_organization_assemble_express").UnitAction.listWithUnitSubDirectObject({
  195. unitList: [this.data.distinguishedName],
  196. countSubDirectUnit: true,
  197. countSubDirectDuty: true
  198. },
  199. function(json){
  200. json.data.each(function(subData){
  201. if( !this.selector.isExcluded( subData ) ) {
  202. if( subData && this.data.parentLevelName)subData.parentLevelName = this.data.parentLevelName +"/" + subData.name;
  203. var category = this.selector._newItemCategory("ItemCategory", subData, this.selector, this.children, this.level + 1, this, false, notActive);
  204. this.subCategorys.push( category );
  205. this.subCategoryMap[subData.parentLevelName || subData.levelName] = category;
  206. }
  207. }.bind(this));
  208. this.loaded = true;
  209. if (callback) callback( true );
  210. }.bind(this)
  211. );
  212. }else{
  213. this.loaded = true;
  214. if (callback) callback( true );
  215. }
  216. }.bind(this);
  217. if( !this.itemLoaded ){
  218. o2.Actions.load("x_organization_assemble_control").UnitDutyAction.listWithUnit(function(idJson){
  219. idJson.data.each(function(idSubData){
  220. idSubData.unitLevelName = this.data.levelName;
  221. idSubData.woUnit = this.data;
  222. if( !this.selector.isExcluded( idSubData ) ) {
  223. var item = this.selector._newItem(idSubData, this.selector, this.children, this.level + 1, this, notActive);
  224. this.selector.items.push(item);
  225. if(this.subItems)this.subItems.push( item );
  226. }
  227. }.bind(this));
  228. loadSubUnit();
  229. }.bind(this), null, this.data.distinguishedName);
  230. }else{
  231. loadSubUnit();
  232. }
  233. // }
  234. }else{
  235. if (callback) callback();
  236. }
  237. },
  238. _hasChild: function(){
  239. var uCount = (this.data.subDirectUnitCount) ? this.data.subDirectUnitCount : 0;
  240. var iCount = (this.data.subDirectDutyCount) ? this.data.subDirectDutyCount : 0;
  241. return uCount + iCount;
  242. },
  243. _hasChildCategory: function(){
  244. return (this.data.subDirectUnitCount) ? this.data.subDirectUnitCount : 0;
  245. },
  246. _hasChildItem: function(){
  247. return (this.data.subDirectDutyCount) ? this.data.subDirectDutyCount : 0;
  248. },
  249. afterLoad: function(){
  250. if (this.level===1) this.clickItem();
  251. }
  252. });