htCatCombo.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /**
  2. * 分类下拉框。
  3. * 1.catKey:
  4. * 对应SYS_TYPE_KEY 表中的typeKey字段。
  5. * 2.catComBo:
  6. * 分类的key值。
  7. * 3.valueField
  8. * 分类对应的字段(为隐藏字段)。
  9. * 4.isMultiSelect
  10. * 是否允许多选。
  11. * 5.value
  12. * 分类名称。
  13. * 6.typeId:分类id。
  14. * 7.treeLeafOnly
  15. * 如果是树形下拉框,只选择叶子节点。
  16. * 8.height 下拉框的高度。
  17. * <input class="catComBo" catKey="xueli" valueField="" name="BoxMultiName" isMultiSelect="true" width="200" typeId='分类值' value="博士"/>
  18. */
  19. $(function() {
  20. var ctx = __ctx;
  21. /**
  22. * 读取配置信息。
  23. */
  24. function readCatProp(dicCombo) {
  25. //读取配置信息
  26. var prop = {
  27. //分类对应的分类key。
  28. catKey : $(dicCombo).attr("catKey"),
  29. width : $(dicCombo).attr("width"),
  30. height : $(dicCombo).attr("height"),
  31. //允许多选
  32. isMultiSelect : $(dicCombo).attr("isMultiSelect"),
  33. //只选择页节点
  34. treeLeafOnly : $(dicCombo).attr("treeLeafOnly"),
  35. value : $(dicCombo).attr("value"),
  36. //选中的值。
  37. catValue:$(dicCombo).attr("catValue"),
  38. name : $(dicCombo).attr("name"),
  39. valueField:$(dicCombo).attr("valueField"),
  40. isNodeKey : $(dicCombo).attr("isNodeKey"),
  41. onSelected:$(dicCombo).attr("onSelected")
  42. };
  43. //catKey 是必须的。
  44. if (isValueNull(prop.catKey)) {
  45. $.ligerMsg.warn('分类控件,catKey属性必须有!');
  46. return;
  47. }
  48. //宽度
  49. if (isValueNull(prop.width)) {
  50. prop.width = $(dicCombo).width();
  51. }
  52. //高度
  53. if (isValueNull(prop.height)){
  54. prop.height = 150;
  55. }
  56. //是否多选
  57. if (isValueNull(prop.isMultiSelect)){
  58. prop.isMultiSelect = false;
  59. }
  60. //树形多选的配置。
  61. if (prop.isMultiSelect) {
  62. prop.check = {
  63. enable : true,
  64. chkboxType : {"Y" : "s","N" : "s"}
  65. };
  66. }
  67. //页节点选中
  68. if (isValueNull(prop.treeLeafOnly)){
  69. prop.treeLeafOnly = false;
  70. }
  71. return prop;
  72. }
  73. //判断是否为空。
  74. function isValueNull(obj){
  75. if(obj == 'undefined' || obj == null || obj == '')
  76. return true;
  77. return false;
  78. }
  79. //从服务端加载数据。
  80. function processCat(catComBo, prop) {
  81. var url=ctx + "/platform/system/globalType/getByCatKey.ht";
  82. //值
  83. var catValue=prop.catValue;
  84. if(catValue=="0") catValue="";
  85. var params={catKey:prop.catKey,hasRoot:0};
  86. $.post(url,params,function(rtnData){
  87. //没有这个可以选择tree。
  88. var nameKey="typeId";
  89. if(!isValueNull(prop.isNodeKey)){
  90. nameKey="nodeKey";
  91. }
  92. $.each(rtnData, function(i, d) {
  93. if(!isValueNull(prop.isNodeKey)){
  94. d.id = d.nodeKey;
  95. }
  96. else{
  97. d.id=d.typeId;
  98. }
  99. d.text = d.typeName;
  100. });
  101. // 树形
  102. var comboBox=$(catComBo).ligerComboBox({
  103. valueFieldID:prop.valueField,
  104. width : prop.width,
  105. treeLeafOnly : prop.treeLeafOnly,
  106. tree : {
  107. nameKey:nameKey,
  108. data : {simpleData : {enable: true,idKey: 'typeId',pIdKey : "parentId"},
  109. key : {name : "typeName"},
  110. data : rtnData
  111. },
  112. selectValue:catValue,
  113. view : { selectedMulti : prop.isMultiSelect},
  114. check : prop.check
  115. },
  116. selectBoxWidth : prop.width,
  117. selectBoxHeight : prop.height,
  118. onSelected:function(newval){
  119. if(this._toggleSelectBox){
  120. this._toggleSelectBox(true);
  121. }
  122. else if(comboBox && comboBox._toggleSelectBox){
  123. comboBox._toggleSelectBox(true);
  124. }
  125. if(prop.onSelected){
  126. eval(prop.onSelected+'.call(this,newval)');
  127. }
  128. }
  129. });
  130. comboBox.ztree.expandAll(false);
  131. //判断是否有值字段
  132. if(!isValueNull(prop.valueField)){
  133. var hidCatField=$("#" + prop.valueField);
  134. //设置隐藏域的分类id
  135. if(hidCatField.length>0){
  136. hidCatField.val(catValue);
  137. }
  138. }
  139. });
  140. }
  141. // htCatCombo
  142. $.fn.htCatCombo = function(option) {
  143. $(this).each(function() {
  144. var prop = readCatProp(this);
  145. processCat(this, prop);
  146. });
  147. };
  148. function initCatComboBox(){
  149. $('.catComBo').each(function() {
  150. $(this).htCatCombo();
  151. });
  152. }
  153. $.extend({initCatComboBox:initCatComboBox});
  154. $.initCatComboBox();
  155. });