wms-select.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814
  1. /*
  2. * 描 述:Select(普通,多选,树形数据,gird,搜索,输入框选择器)-渲染数据在点击的时候触发,
  3. * 考虑到在一个表单上有超级多的下拉框的绑定情况
  4. * (这里需要考虑赋值的特殊性)
  5. */
  6. (function ($, learun) {
  7. "use strict";
  8. var tree = '';
  9. var option= '';
  10. $(function () {
  11. $(document).click(function (e) {
  12. e = e || Window.event;
  13. var et = e.target || e.srcElement;
  14. if (et.tagName != 'BODY') {
  15. $('.lr-select-option').slideUp(150);
  16. $('.lr-select').removeClass('lr-select-focus');
  17. }
  18. });
  19. });
  20. $.lrselect = {
  21. htmlToData: function ($self) {
  22. var dfop = $self[0]._lrselect.dfop;
  23. var $ul = $self.find('ul');
  24. dfop.data = [];
  25. $ul.find('li').each(function () {
  26. var $li = $(this);
  27. var point = { id: $li.attr('data-value'), text: $li.html() };
  28. dfop.data.push(point);
  29. });
  30. $ul.remove();
  31. $ul = null;
  32. dfop = null;
  33. },
  34. calc: function ($this, op) { // 计算高度和方向
  35. var bodyHeight = 0;
  36. var top = 0;
  37. bodyHeight = $('body').height();
  38. top = $this.offset().top;
  39. var topH = top - 1;
  40. var bottomH = bodyHeight - top - 30;
  41. var selctH = 2;
  42. // 计算选择框的高度
  43. if (op.allowSearch) {
  44. selctH += 30;
  45. }
  46. selctH += op.data.length * 26;
  47. if (op.placeholder) {
  48. selctH += 25;
  49. }
  50. if ((op.type === 'tree' || op.type === 'treemultiple') && op.data.length > 1) {
  51. selctH = 200;
  52. }
  53. selctH = op.height || selctH;
  54. var res = {
  55. type: 0, // 0 向下 1 向上
  56. height: 0
  57. };
  58. if (bottomH > 130 || bottomH > topH || bottomH > selctH) { // 如果能够显示四条数据和搜索框就采用下拉方式
  59. res.height = bottomH > selctH ? selctH : bottomH;
  60. } else {
  61. res.type = 1;
  62. res.height = topH > selctH ? selctH : topH;
  63. }
  64. return res;
  65. },
  66. initRender: function (dfop, $self) {
  67. $('#learun_select_option_' + dfop.id).remove();
  68. var $option = $('<div class="lr-select-option" id="learun_select_option_' + dfop.id + '"></div>');
  69. var $optionContent = $('<div class="lr-select-option-content"></div>');
  70. var $ul = $('<ul id="learun_select_option_content' + dfop.id + '"></ul>');
  71. //$optionContent.css('max-height', dfop.maxHeight + 'px');
  72. $option.hide();
  73. $optionContent.html($ul);
  74. $option.prepend($optionContent);
  75. if (dfop.allowSearch) {
  76. var $search = $('<div class="lr-select-option-search"><input type="text" placeholder="搜索关键字(按回车键)"><span class="input-query" title="查询"><i class="fa fa-search"></i></span></div>');
  77. $option.append($search);
  78. $option.css('padding-bottom', '25px');
  79. $search.on('click', function () { return false; });
  80. $search.find('input').on("keypress", function (e) {
  81. e = e || window.event;
  82. if (e.keyCode === 13) {
  83. var $this = $(this);
  84. var keyword = $this.val();
  85. var $option = $this.parents('.lr-select-option');
  86. var dfop = $option[0].dfop;
  87. if (dfop.type === "tree" || dfop.type === "treemultiple") {
  88. var $optionContent = $this.parent().prev();
  89. $optionContent.lrtreeSet('search', { keyword: keyword });
  90. }
  91. else if (dfop.type === "default" || dfop.type === "multiple") {
  92. for (var i = 0, l = dfop.data.length; i < l; i++) {
  93. var _item = dfop.data[i];
  94. if (!keyword || _item[dfop.text].indexOf(keyword) != -1) {
  95. _item._lrhide = false;
  96. }
  97. else {
  98. _item._lrhide = true;
  99. }
  100. }
  101. $.lrselect.render(dfop);
  102. }
  103. $option = null;
  104. }
  105. });
  106. }
  107. $('body').append($option);
  108. $option.on('click', $.lrselect.itemClick);
  109. $option[0].dfop = dfop;
  110. $self.append('<div class="lr-select-placeholder" >==' + dfop.placeholder + '==</div>');
  111. $self.attr('type', 'lrselect').addClass('lr-select');
  112. if (dfop.type != 'tree') {
  113. $optionContent.lrscroll();
  114. }
  115. },
  116. render: function (dfop) {
  117. switch (dfop.type) {
  118. case 'default':
  119. $.lrselect.defaultRender(dfop);
  120. break;
  121. case 'tree':
  122. case 'treemultiple':
  123. $.lrselect.treeRender(dfop);
  124. break;
  125. case 'gird':
  126. break;
  127. case 'multiple':
  128. $.lrselect.multipleRender(dfop);
  129. break;
  130. default:
  131. break;
  132. }
  133. dfop.isrender = true;
  134. },
  135. defaultRender: function (dfop) {
  136. var $ul = $('#learun_select_option_content' + dfop.id);
  137. $ul.html("");
  138. if (dfop.placeholder) {
  139. $ul.append('<li data-value="-1" class="lr-selectitem-li" >==' + dfop.placeholder + '==</li>');
  140. }
  141. for (var i = 0, l = dfop.data.length; i < l; i++) {
  142. var item = dfop.data[i];
  143. if (!item._lrhide) {
  144. var $li = $('<li data-value="' + i + '" class="lr-selectitem-li" title="' + item[dfop.text] +'">' + item[dfop.text] + '</li>');
  145. $ul.append($li);
  146. }
  147. }
  148. },
  149. multipleRender: function (dfop) {
  150. var $ul = $('#learun_select_option_content' + dfop.id);
  151. $ul.html("");
  152. if (dfop.placeholder) {
  153. $ul.append('<li data-value="-1" class="lr-selectitem-li" >==' + dfop.placeholder + '==</li>');
  154. }
  155. for (var i = 0, l = dfop.data.length; i < l; i++) {
  156. var item = dfop.data[i];
  157. if (!item._lrhide) {
  158. if (!!dfop.multipleMapValue && dfop.multipleMapValue[i] != undefined) {
  159. var $li = $('<li data-value="' + i + '" class="lr-selectitem-li" ><img class="lr-select-node-cb" src="/wwwroot/Content/images/learuntree/checkbox_1.png">' + item[dfop.text] + '</li>');
  160. $ul.append($li);
  161. }
  162. else {
  163. var $li = $('<li data-value="' + i + '" class="lr-selectitem-li" ><img class="lr-select-node-cb" src="/wwwroot/Content/images/learuntree/checkbox_0.png">' + item[dfop.text] + '</li>');
  164. $ul.append($li);
  165. }
  166. }
  167. }
  168. },
  169. treeRender: function (dfop) {
  170. var $option = $('#learun_select_option_' + dfop.id);
  171. $option.find('.lr-select-option-content').remove();
  172. var $optionContent = $('<div class="lr-select-option-content"></div>');
  173. $option.prepend($optionContent);
  174. //$optionContent.css('max-height', dfop.maxHeight + 'px');
  175. dfop.data.unshift({
  176. "id": "-1",
  177. "text": '==' + dfop.placeholder + '==',
  178. "value": "-1",
  179. "icon": "-1",
  180. "parentnodes": "0",
  181. "showcheck": false,
  182. "isexpand": false,
  183. "complete": true,
  184. "hasChildren": false,
  185. "ChildNodes": []
  186. });
  187. var treeop = {
  188. data: dfop.data,
  189. nodeClick: $.lrselect.treeNodeClick
  190. };
  191. if (dfop.type === 'treemultiple') {
  192. treeop.nodeClick = $.lrselect.treeNodeClick2;
  193. treeop.nodeCheck = $.lrselect.treeNodeCheck;
  194. }
  195. $optionContent.lrtree(treeop);
  196. },
  197. bindEvent: function ($self) {
  198. $self.unbind('click');
  199. $self.on('click', $.lrselect.click);
  200. },
  201. click: function (e) {
  202. var $this = $(this);
  203. if ($this.attr('readonly') == 'readonly' || $this.attr('disabled') == 'disabled') {
  204. return false;
  205. }
  206. var dfop = $this[0]._lrselect.dfop;
  207. if (!dfop.isload) {
  208. return false;
  209. }
  210. if (!dfop.isrender) {
  211. $.lrselect.render(dfop);
  212. }
  213. // 选中下拉框的某一项
  214. e = e || Window.event;
  215. var et = e.target || e.srcElement;
  216. var $et = $(et);
  217. var $option = $('#learun_select_option_' + dfop.id);
  218. if ($option.is(":hidden")) {
  219. $('.lr-select').removeClass('lr-select-focus');
  220. $('.lr-select-option').slideUp(150);
  221. $this.addClass('lr-select-focus');
  222. var width = dfop.width || $this.parent().width();//+ (dfop.diffWidth || 0);
  223. var height = $this.innerHeight();
  224. var top = $this.offset().top;
  225. var left = $this.offset().left;
  226. var res = $.lrselect.calc($this, dfop);
  227. if (res.type == 0) {
  228. $option.css({ 'width': width, 'top': top + height + 2, 'left': left, 'height': res.height }).show();
  229. }
  230. else {
  231. $option.css({ 'width': width, 'top': top - res.height - 2, 'left': left, 'height': res.height }).show();
  232. }
  233. $option.find('.lr-select-option-search').find('input').select();
  234. if (dfop.type != 'multiple') {
  235. $option.find('.selected').removeClass('selected');
  236. if (dfop._index != -1) {
  237. $option.find('.lr-selectitem-li[data-value="' + dfop._index + '"]').addClass('selected');
  238. }
  239. }
  240. }
  241. else {
  242. $option.slideUp(150);
  243. $this.removeClass('lr-select-focus');
  244. }
  245. dfop = null;
  246. e.stopPropagation();
  247. },
  248. itemClick: function (e) {
  249. // 选中下拉框的某一项
  250. e = e || Window.event;
  251. var et = e.target || e.srcElement;
  252. var $et = $(et);
  253. var $option = $(this);
  254. var dfop = $option[0].dfop;
  255. var $this = $('#' + dfop.id);
  256. if (dfop.type != 'multiple') {
  257. if ($et.hasClass('lr-selectitem-li')) {
  258. var _index = $et.attr('data-value');
  259. $option.find('.selected').removeClass('selected');
  260. $et.addClass('selected');
  261. if (dfop._index != _index) {
  262. var $inputText = $this.find('.lr-select-placeholder');
  263. if (_index == -1) {
  264. $inputText.css('color', '#999');
  265. $inputText.html('==' + dfop.placeholder + '==');
  266. }
  267. else {
  268. $inputText.css('color', '#000');
  269. $inputText.html(dfop.data[_index][dfop.text]);
  270. }
  271. dfop._index = _index;
  272. $this.trigger("change");
  273. if (dfop.select) {
  274. dfop.select(dfop.data[_index]);
  275. }
  276. }
  277. $option.slideUp(150);
  278. $this.removeClass('lr-select-focus');
  279. }
  280. }
  281. else {
  282. if ($et.hasClass('lr-selectitem-li') || $et.hasClass('lr-select-node-cb')) {
  283. var $inputText = $this.find('.lr-select-placeholder');
  284. var $cbobj = $et.find('.lr-select-node-cb');
  285. var _index = $et.attr('data-value');
  286. if ($et.hasClass('lr-select-node-cb')) {
  287. $cbobj = $et;
  288. _index = $et.parent().attr('data-value');
  289. }
  290. dfop.multipleMapValue = dfop.multipleMapValue || {};
  291. dfop.multipleValue = dfop.multipleValue || [];
  292. dfop.multipleText = dfop.multipleText || [];
  293. if (_index == -1) {
  294. $inputText.css('color', '#999');
  295. $inputText.html('==' + dfop.placeholder + '==');
  296. dfop.multipleMapValue = {};
  297. dfop.multipleValue = [];
  298. dfop.multipleText = [];
  299. $option.find('.lr-select-node-cb[src$="checkbox_1.png"]').attr('src', '/Content/images/learuntree/checkbox_0.png');
  300. $option.slideUp(150);
  301. $this.removeClass('lr-select-focus');
  302. }
  303. else {
  304. var selected = true;
  305. if (dfop.multipleMapValue[_index] == undefined) {
  306. $inputText.css('color', '#000');
  307. dfop.multipleValue.push(dfop.data[_index][dfop.value]);
  308. dfop.multipleText.push(dfop.data[_index][dfop.text]);
  309. dfop.multipleMapValue[_index] = dfop.data[_index];
  310. $inputText.html(String(dfop.multipleText));
  311. $cbobj.attr('src', '/Content/images/learuntree/checkbox_1.png');
  312. }
  313. else {
  314. dfop.multipleValue = [];
  315. dfop.multipleText = [];
  316. delete dfop.multipleMapValue[_index];
  317. $.each(dfop.multipleMapValue, function (_id, _item) {
  318. dfop.multipleValue.push(_item[dfop.value]);
  319. dfop.multipleText.push(_item[dfop.text]);
  320. });
  321. if (dfop.multipleText.length == 0) {
  322. $inputText.css('color', '#999');
  323. $inputText.html('==' + dfop.placeholder + '==');
  324. }
  325. else {
  326. $inputText.html(String(dfop.multipleText));
  327. }
  328. selected = false;
  329. $cbobj.attr('src', '/Content/images/learuntree/checkbox_0.png');
  330. }
  331. $this.trigger("change");
  332. if (dfop.select) {
  333. dfop.select(dfop.data[_index], selected, $this);
  334. }
  335. }
  336. }
  337. }
  338. e.stopPropagation();
  339. },
  340. treeNodeClick: function (item, $item) {
  341. var $option = $item.parents('.lr-select-option');
  342. var dfop = $option[0].dfop;
  343. $option.slideUp(150);
  344. var $select = $('#' + dfop.id);
  345. $select.removeClass('lr-select-focus');
  346. dfop.currtentItem = item;
  347. var $inputText = $select.find('.lr-select-placeholder');
  348. $inputText.html(dfop.currtentItem.text);
  349. if (item.value == '-1') {
  350. $inputText.css('color', '#999');
  351. }
  352. else {
  353. $inputText.css('color', '#000');
  354. }
  355. $select.trigger("change");
  356. if (dfop.select) {
  357. dfop.select(dfop.currtentItem);
  358. }
  359. $option = null;
  360. $select = null;
  361. },
  362. treeNodeClick2: function (item, $item) {
  363. var $tree = $item.parents('.lr-select-option-content');
  364. var $option = $item.parents('.lr-select-option');
  365. var dfop = $option[0].dfop;
  366. var $select = $('#' + dfop.id);
  367. $select.removeClass('lr-select-focus');
  368. dfop.currtentItems = [];
  369. if (item.value == '-1') {
  370. $item.parents('.lr-select-option').slideUp(150);
  371. $tree.lrtreeSet('allNoCheck');
  372. var $inputText = $select.find('.lr-select-placeholder');
  373. $inputText.html(item.text);
  374. $inputText.css('color', '#999');
  375. $select.trigger("change");
  376. if (dfop.select) {
  377. dfop.select([]);
  378. }
  379. }
  380. $tree = null;
  381. $option = null;
  382. $select = null;
  383. },
  384. treeNodeCheck: function (item, $item) {
  385. var $tree = $item.parents('.lr-select-option-content');
  386. tree = $tree;
  387. var $option = $item.parents('.lr-select-option');
  388. option = $option;
  389. var dfop = $option[0].dfop;
  390. var $select = $('#' + dfop.id);
  391. var $inputText = $select.find('.lr-select-placeholder');
  392. $select.removeClass('lr-select-focus');
  393. var data = $tree.lrtreeSet('getCheckNodesEx');
  394. dfop.currtentItems = data;
  395. var text = "";
  396. for (var i = 0, l = data.length; i < l; i++) {
  397. var one = data[i];
  398. if (text != "") {
  399. text += ",";
  400. }
  401. text += one.text;
  402. }
  403. if (text == "") {
  404. $inputText.html("==" + dfop.placeholder + "==");
  405. $inputText.css('color', '#999');
  406. }
  407. else {
  408. $inputText.text(text);
  409. $inputText.css('color', '#000');
  410. }
  411. $select.trigger("change");
  412. if (dfop.select) {
  413. dfop.select(dfop.currtentItems);
  414. }
  415. $tree = null;
  416. $option = null;
  417. $select = null;
  418. $inputText = null;
  419. },
  420. defaultValue: function ($self, type) {
  421. var dfop = $self[0]._lrselect.dfop;
  422. dfop.currtentItem = null;
  423. dfop._index = -1;
  424. var $inputText = $self.find('.lr-select-placeholder');
  425. $inputText.css('color', '#999');
  426. $inputText.html('==' + dfop.placeholder + '==');
  427. $('#' + dfop.id + ' .lr-select-option .selected').removeClass('selected');
  428. dfop.select && dfop.select(null, type);
  429. $self.trigger("change");
  430. if (dfop.type == "treemultiple" && tree != 'null' && tree != '' && $.isEmptyObject(tree) == false && $.isEmptyObject(option) == false) {
  431. var dfop = option[0].dfop;
  432. var $select = $('#' + dfop.id);
  433. $select.removeClass('lr-select-focus');
  434. dfop.currtentItems = [];
  435. tree.lrtreeSet('allNoCheck');
  436. var $inputText = $select.find('.lr-select-placeholder');
  437. //$inputText.html(item.text);
  438. //$inputText.css('color', '#999');
  439. $select.trigger("change");
  440. if (dfop.select) {
  441. dfop.select([]);
  442. }
  443. tree = null;
  444. option = null;
  445. $select = null;
  446. }
  447. }
  448. };
  449. $.fn.lrselect = function (op) {
  450. var dfop = {
  451. // 请选择
  452. placeholder: "请选择",
  453. // 类型
  454. type: 'default',// default,tree,treemultiple,gird,multiple
  455. // 字段
  456. value: "id",
  457. text: "text",
  458. title: "title",
  459. // 宽度
  460. width: false,
  461. // 是否允许搜索
  462. allowSearch: false,
  463. // 访问数据接口地址
  464. url: false,
  465. data: false,
  466. // 访问数据接口参数
  467. param: null,
  468. // 接口请求的方法
  469. method: "GET",
  470. //选择事件
  471. select: false,
  472. isload: false, // 数据是否加载完成
  473. isrender: false// 选项是否渲染完成
  474. };
  475. $.extend(dfop, op || {});
  476. var $self = $(this);
  477. if ($self.length == 0) {
  478. return $self;
  479. }
  480. dfop.id = $self.attr('id');
  481. if (!dfop.id) {
  482. return false;
  483. }
  484. if ($self[0]._lrselect) {
  485. return $self;
  486. }
  487. $self[0]._lrselect = { dfop: dfop };
  488. // 基础信息渲染
  489. $.lrselect.bindEvent($self);
  490. // 数据获取方式有三种:url,data,html
  491. // url优先级最高
  492. if (dfop.url) {
  493. learun.httpAsync(dfop.method, dfop.url, dfop.param, function (res) {
  494. if (!!res && res.code > 0) {
  495. $self[0]._lrselect.dfop.data = res.data || [];
  496. $self[0]._lrselect.dfop.backdata = res.data || [];
  497. dfop.isload = true;
  498. }
  499. });
  500. }
  501. else if (dfop.data) {
  502. dfop.isload = true;
  503. dfop.backdata = dfop.data;
  504. }
  505. else {// 最后是html方式获取(只适合数据比较少的情况)
  506. $.lrselect.htmlToData($self);
  507. dfop.isload = true;
  508. dfop.backdata = dfop.data;
  509. }
  510. $.lrselect.initRender(dfop, $self);
  511. return $self;
  512. };
  513. $.fn.lrselectRefresh = function (op) {
  514. var $self = $(this);
  515. if ($self.length == 0) {
  516. return $self;
  517. }
  518. if (!$self[0]._lrselect) {
  519. return false;
  520. }
  521. var dfop = $self[0]._lrselect.dfop;
  522. if (!dfop) {
  523. return false;
  524. }
  525. $.extend(dfop, op || {});
  526. dfop.isload = false;
  527. dfop.isrender = false;
  528. if (dfop.url) {
  529. learun.httpAsync(dfop.method, dfop.url, dfop.param, function (res) {
  530. $self[0]._lrselect.dfop.data = res.data || [];
  531. $self[0]._lrselect.dfop.backdata = res.data || [];
  532. dfop.isload = true;
  533. });
  534. }
  535. else if (dfop.data) {
  536. dfop.isload = true;
  537. dfop.backdata = dfop.data;
  538. }
  539. if (dfop._setValue != null && dfop._setValue != undefined) {
  540. $self.lrselectSet(dfop._setValue);
  541. }
  542. else {
  543. $.lrselect.defaultValue($self, 'refresh');
  544. }
  545. return $self;
  546. };
  547. $.fn.lrselectGet = function () {
  548. var $this = $(this);
  549. if ($this.length == 0) {
  550. return $this;
  551. }
  552. var dfop = $this[0]._lrselect.dfop;
  553. var value = '';
  554. switch (dfop.type) {
  555. case 'default':
  556. if (dfop.data[dfop._index]) {
  557. value = dfop.data[dfop._index][dfop.value];
  558. }
  559. break;
  560. case 'tree':
  561. if (dfop.currtentItem) {
  562. value = dfop.currtentItem[dfop.value];
  563. }
  564. break;
  565. case 'treemultiple':
  566. if (dfop.currtentItems) {
  567. for (var i = 0, l = dfop.currtentItems.length; i < l; i++) {
  568. if (value != "") {
  569. value += ",";
  570. }
  571. value += dfop.currtentItems[i][dfop.value];
  572. }
  573. }
  574. break;
  575. case 'gird':
  576. break;
  577. case 'multiple':
  578. dfop.multipleValue = dfop.multipleValue || [];
  579. return String(dfop.multipleValue);
  580. default:
  581. break;
  582. }
  583. return value;
  584. };
  585. $.fn.lrselectSet = function (value) {
  586. // 设置数据的值
  587. var $this = $(this);
  588. if ($this.length == 0) {
  589. return $this;
  590. }
  591. if (!$this[0]._lrselect) {
  592. return $this;
  593. }
  594. value = value + '';
  595. if (value == '' || value == 'undefined' || value == 'null') {
  596. $.lrselect.defaultValue($this, 'refresh');
  597. return $this;
  598. }
  599. var dfop = $this[0]._lrselect.dfop;
  600. dfop._setValue = null;
  601. if (!dfop) {
  602. return $this;
  603. }
  604. $('#' + dfop.id + ' .lr-select-option .selected').removeClass('selected');
  605. function _fn(dfop) {
  606. if (dfop.isload == false) {
  607. setTimeout(function () {
  608. _fn(dfop);
  609. }, 100);
  610. }
  611. else if (dfop.isload == true) {
  612. var _currtentItem;
  613. switch (dfop.type) {
  614. case 'default':
  615. for (var i = 0, l = dfop.data.length; i < l; i++) {
  616. if (dfop.data[i][dfop.value] == value) {
  617. dfop._index = i;
  618. _currtentItem = dfop.data[i];
  619. break;
  620. }
  621. }
  622. break;
  623. case 'tree':
  624. _currtentItem = $.lrtree.findItem(dfop.data, dfop.value, value);
  625. dfop.currtentItem = _currtentItem;
  626. break;
  627. case 'treemultiple':
  628. $.lrselect.render(dfop);
  629. $this.find('.lr-select-option-content').lrtreeSet('setCheck', value.split(','));
  630. return false;
  631. case 'gird':
  632. break;
  633. case 'multiple':
  634. dfop.multipleMapValue = {};
  635. dfop.multipleValue = [];
  636. dfop.multipleText = [];
  637. if (dfop.isrender) {
  638. $this.find('.lr-select-node-cb[src$="checkbox_1.png"]').attr('src', '/Content/images/learuntree/checkbox_0.png');
  639. }
  640. var _valuellist = value.split(',');
  641. for (var i = 0, l = dfop.data.length; i < l; i++) {
  642. var _arrayIndex = $.inArray(dfop.data[i][dfop.value] + '', _valuellist);
  643. if (_arrayIndex != -1) {
  644. dfop.multipleMapValue[i] = dfop.data[i];
  645. dfop.multipleValue.push(dfop.data[i][dfop.value]);
  646. dfop.multipleText.push(dfop.data[i][dfop.text]);
  647. if (dfop.isrender) {
  648. $this.find('[data-value="' + i + '"] .lr-select-node-cb').attr('src', '/Content/images/learuntree/checkbox_1.png');
  649. }
  650. if (dfop.select) {
  651. dfop.select(dfop.data[i], true, $this);
  652. }
  653. }
  654. }
  655. if (dfop.multipleText.length > 0) {
  656. _currtentItem = dfop.multipleText;
  657. }
  658. break;
  659. default:
  660. break;
  661. }
  662. if (_currtentItem) {
  663. if (dfop.type == 'multiple') {
  664. var $inputText = $this.find('.lr-select-placeholder');
  665. if (dfop.multipleText.length > 0) {
  666. $inputText.css('color', '#000');
  667. }
  668. else {
  669. $inputText.css('color', '#999');
  670. }
  671. $inputText.html(String(dfop.multipleText));
  672. $this.trigger("change");
  673. } else {
  674. var $inputText = $this.find('.lr-select-placeholder');
  675. $inputText.html(_currtentItem[dfop.text]);
  676. $inputText.css('color', '#000');
  677. $this.trigger("change");
  678. if (dfop.select) {
  679. dfop.select(_currtentItem);
  680. }
  681. }
  682. }
  683. else {
  684. dfop._setValue = value;
  685. }
  686. }
  687. }
  688. _fn(dfop);
  689. return $this;
  690. };
  691. $.fn.lrselectGetEx = function () {
  692. var $this = $(this);
  693. if ($this.length == 0) {
  694. return $this;
  695. }
  696. var dfop = $this[0]._lrselect.dfop;
  697. var item = null;
  698. switch (dfop.type) {
  699. case 'default':
  700. if (dfop.data[dfop._index]) {
  701. item = dfop.data[dfop._index];
  702. }
  703. break;
  704. case 'tree':
  705. if (dfop.currtentItem) {
  706. item = dfop.currtentItem;
  707. }
  708. break;
  709. case 'treemultiple':
  710. if (dfop.currtentItems) {
  711. item = dfop.currtentItems;
  712. }
  713. break;
  714. case 'gird':
  715. break;
  716. case 'multiple':
  717. item = dfop.multipleValue || [];
  718. break;
  719. default:
  720. break;
  721. }
  722. return item;
  723. };
  724. $.fn.lrselectRefresh1 = function () {
  725. var $self = $(this);
  726. if ($self.length == 0) {
  727. return $self;
  728. }
  729. if (!$self[0]._lrselect) {
  730. return false;
  731. }
  732. var dfop = $self[0]._lrselect.dfop;
  733. //if (!dfop) {
  734. // return false;
  735. //}
  736. //$.extend(dfop, op || {});
  737. dfop.isload = false;
  738. dfop.isrender = false;
  739. if (dfop.url) {
  740. learun.httpAsync(dfop.method, dfop.url, dfop.param, function (data) {
  741. $self[0]._lrselect.dfop.data = data || [];
  742. $self[0]._lrselect.dfop.backdata = data || [];
  743. dfop.isload = true;
  744. });
  745. }
  746. else if (dfop.data) {
  747. dfop.isload = true;
  748. dfop.backdata = dfop.data;
  749. }
  750. if (dfop._setValue != null && dfop._setValue != undefined) {
  751. $self.lrselectSet(dfop._setValue);
  752. }
  753. else {
  754. $.lrselect.defaultValue($self, 'refresh');
  755. }
  756. return $self;
  757. };
  758. })(jQuery, top.learun);