idealDic.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. /*----------------------------------------------------------------------------\
  2. | IdealDic |
  3. |-----------------------------------------------------------------------------|
  4. | Created by dongping_li |
  5. |-----------------------------------------------------------------------------|
  6. | 缓存系统字典项的处理文件 |
  7. | 系统如果字典项目特别多,可以使用此处提供的功能,在系统登录后将字典项缓存到页面内, |
  8. | 在具体页面,直接调用此处提供的功能取得需要的字典即可. |
  9. |-----------------------------------------------------------------------------|
  10. | 2007-01-19 | Original Version Posted. |
  11. |-----------------------------------------------------------------------------|
  12. | Created 2007-01-19 | All changes are in the log above. | Updated 2008-07-09 |
  13. \----------------------------------------------------------------------------*/
  14. /**
  15. * 页面字典项的容器
  16. */
  17. var dicContainer={
  18. //初始化方法
  19. init:function(){
  20. if(dicInit.length==0) return;
  21. for(var i=0;i<dicInit.length;i++)
  22. {
  23. var dic=dicInit[i];
  24. var dicObj=new IdealDic(dic.id,dic.name);
  25. if(dic.child.length==0) return;
  26. for(var j=0;j<dic.child.length;j++){
  27. var dicItemObj=dic.child[j];
  28. dicObj.add(new dicItem(dicItemObj[0],dicItemObj[1]),dic.child);
  29. }
  30. }
  31. },
  32. //得到某一字典中字典项的名称
  33. getDicItemName:function(dicCode,itemCode){
  34. var dicObj=dicContainer[dicCode].children;
  35. for(var i=0;i<dicObj.length;i++){
  36. var itemObj=dicObj[i];
  37. if(itemObj.code==itemCode){
  38. return itemObj.name;
  39. }
  40. }
  41. },
  42. //将字典项渲染为checkobx
  43. renderToCheckBox:function(dicCode,checkBoxName,objRenderIds,objRenderNmaes){
  44. var dicObj=dicContainer[dicCode].children;
  45. var str="";//html
  46. var ids="";
  47. var names="";
  48. if(dicObj.length==0) return;
  49. for(var i=0;i<dicObj.length;i++){
  50. var dicItemObj=dicObj[i];
  51. str+="<li><label id=\"lab"+i+"\" ><input name=\""+checkBoxName+"\" id=\"checkboxid"+i+"\"onclick=\"reRender('"+objRenderIds+"','"+objRenderNmaes+"','"+checkBoxName+"','"+dicCode+"')\" type=\"checkbox\" value=\"" + dicItemObj.code +"\" title=\""+dicItemObj.name+"\"";
  52. str+="/>"+ dicItemObj.name+"</label></li>";
  53. }
  54. return str;
  55. },
  56. //将字典项渲染为checkobx
  57. checkToCheckBox:function(dicCode,checkBoxName,objRenderIds,objRenderNames,valueArray){
  58. if(valueArray.length==0) return;
  59. var arr_rybs=new Array();
  60. arr_rybs=valueArray.split(",");
  61. var dicObj=dicContainer[dicCode].children;
  62. var str="";//html
  63. var ids="";
  64. var names="";
  65. if(dicObj.length==0) return;
  66. for(var j=0;j<arr_rybs.length;j++){
  67. var checkbox = document.getElementsByName(checkBoxName);
  68. for(var i = 0; i < checkbox.length; i++){
  69. if(checkbox[i].value==arr_rybs[j]){
  70. checkbox[i].checked=true;
  71. checkbox[i].parentNode.style.color="blue";//选中变色
  72. }
  73. }
  74. }
  75. document.getElementById(objRenderNames).value=renderValue(arr_rybs,dicCode);
  76. }
  77. };
  78. function reRender(renderIds,renderNames,checkBoxName,dicCode){
  79. var checkbox = document.getElementsByName(checkBoxName);
  80. var code = new Array();
  81. var value = new Array();
  82. for(var i = 0; i < checkbox.length; i++){
  83. checkbox[i].parentNode.style.color="#333";//取消所有颜色
  84. if(checkbox[i].checked){
  85. code.push(checkbox[i].value);
  86. checkbox[i].parentNode.style.color="blue";//选中变色
  87. }
  88. }
  89. document.getElementById(renderIds).value=code;
  90. document.getElementById(renderNames).value=renderValue(code,dicCode);
  91. }
  92. function renderValue(array,dicCode){
  93. var arr=new Array();
  94. arr=array;
  95. var arr_text=new Array();
  96. for(var j=0;j<arr.length;j++){
  97. var dicObj=dicContainer[dicCode].children;
  98. for(var i=0;i<dicObj.length;i++){
  99. var itemObj=dicObj[i];
  100. if(itemObj.code==arr[j]){
  101. arr_text.push(itemObj.name);
  102. }
  103. }
  104. }
  105. return arr_text;
  106. }
  107. /*
  108. * 存储字典项目键值对的容器
  109. */
  110. var dicNameContainer={};
  111. /**
  112. * 字典初始化数据
  113. */
  114. var dicInit=dicConfig.dicInitData;
  115. /**
  116. * 字典类
  117. * @param:id 数据库字典表中的内码
  118. * @param:name 字典名称
  119. */
  120. function IdealDic(id,name,selectedCode)
  121. {
  122. this.id=id;
  123. this.name=name;
  124. this.selectedCode=selectedCode;
  125. this.children=[];
  126. this.childrenJson=null;
  127. dicContainer[this.id]=this;
  128. }
  129. /**
  130. * 增加一个字典项目
  131. * @param:item 字典项目实例
  132. */
  133. IdealDic.prototype.add=function(item,itemJson)
  134. {
  135. item.parentNode=this;
  136. this.children[this.children.length]=item;
  137. this.childrenJson=itemJson;
  138. }
  139. /**
  140. * 设置选中字典项
  141. * @param selectedCode 选中字典项的code
  142. */
  143. IdealDic.prototype.setSelected=function(selectedCode)
  144. {
  145. this.selectedCode=selectedCode;
  146. }
  147. /**
  148. * 输出字典项目
  149. *
  150. */
  151. IdealDic.prototype.toString=function(selectName)
  152. {
  153. var str="";
  154. if(this.children.length > 0)
  155. {
  156. var sb=[];
  157. for(var i=0;i<this.children.length;i++)
  158. {
  159. sb[i]=this.children[i].toString(selectName);
  160. }
  161. return sb.join("");
  162. }else{
  163. //update by hongxin_ma 如果该字典存在上级编码,但是没有下级数据,默认加一个option
  164. return "<option value=\"-999\">无类别</option>";
  165. }
  166. }
  167. /**
  168. * 输出字典项目
  169. *
  170. */
  171. IdealDic.prototype.toQueryString=function(selectName)
  172. {
  173. var str="";
  174. if(this.children.length > 0)
  175. {
  176. var sb=[];
  177. var queryAll="<option value=\"\">全部</option>";
  178. for(var i=0;i<this.children.length;i++)
  179. {
  180. sb[i]=this.children[i].toString(selectName);
  181. }
  182. return queryAll+sb.join("");
  183. }else{
  184. //update by hongxin_ma 如果该字典存在上级编码,但是没有下级数据,默认加一个option
  185. return "<option value=\"-999\">无类别</option>";
  186. }
  187. }
  188. /**
  189. * 字典项目类
  190. * @param:code 字典项目代码
  191. * @param:name 字典项目名称
  192. */
  193. function dicItem(code,name)
  194. {
  195. dicNameContainer[code]=name;
  196. this.code=code;
  197. this.name=name;
  198. }
  199. dicItem.prototype.toString=function(selectName)
  200. {
  201. var str="<option value=\"" + this.code +"\" ";
  202. if(this.parentNode.selectedCode!=null||this.name==selectName)
  203. {
  204. if(this.code==this.parentNode.selectedCode||this.name==selectName)
  205. {
  206. str+="selected=\"true\" ";
  207. }
  208. }
  209. str+=">"+ this.name +"</option>";
  210. return str;
  211. }
  212. /**
  213. * 显示复选框
  214. */
  215. //dicItem.prototype.toString=function(selectName)
  216. //{
  217. // var str="<li><label><input type=\"checkbox\" value=\"" + this.code +"\" ";
  218. // if(this.parentNode.selectedCode!=null||this.name==selectName)
  219. // {
  220. // if(this.code==this.parentNode.selectedCode||this.name==selectName)
  221. // {
  222. // str+="checked=\"true\" ";
  223. // }
  224. // }
  225. // str+="/>"+ this.name+"</label></li>";
  226. // return str;
  227. //}