You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

125 lines
4.2 KiB

  1. /*
  2. * 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园(http://www.learun.cn)
  3. * Copyright (c) 2013-2018 北京泉江科技有限公司
  4. * 创建人:陈彬彬
  5. * 日 期:2017.03.22
  6. * 描 述:learunISearch 输入搜索框,支持input输入框,数据异步加载,本地查询
  7. */
  8. (function ($, learun) {
  9. "use strict";
  10. $.lrcustmerquery = {
  11. init: function ($self) {
  12. var dfop = $self[0]._lrcustmerquery.dfop;
  13. $self.parent().append('<div class="learun-isearch-panel" style="max-height:' + dfop.maxHeight + 'px;" ><ul id="learunisearch_' + dfop.id + '" ></ul></div>');
  14. },
  15. bind: function ($self) {
  16. $self.on('input propertychange', function () {
  17. var $this = $(this);
  18. $.learunisearch.triggerSearch($self);
  19. });
  20. },
  21. triggerSearch: function ($self) {
  22. var dfop = $self[0]._lrcustmerquery.dfop;
  23. var $showPanel = $('#learunisearch_' + dfop.id);
  24. $showPanel.parent().hide();
  25. var _value = $self.val();
  26. if (_value) {
  27. if (!dfop._isload) {
  28. dfop._isSearchneed = true;
  29. }
  30. else {
  31. dfop._first = true;
  32. dfop._value = _value;
  33. dfop._begin = 0;
  34. dfop._end = 100 > dfop.data.length ? dfop.data.length : 100;
  35. if (dfop._isSearched) {
  36. dfop._isSearched = false;
  37. setTimeout(function () {
  38. $.learunisearch.search($self);
  39. });
  40. }
  41. }
  42. }
  43. else {
  44. dfop._isSearchneed = false;
  45. $showPanel.html("");
  46. }
  47. },
  48. search: function ($self) {// 每次搜索100条
  49. var dfop = $self[0]._lrcustmerquery.dfop;
  50. var value = dfop._value;
  51. var begin = dfop._begin;
  52. var end = dfop._end;
  53. var data = dfop.data;
  54. for (var i = begin; i < end; i++) {
  55. var _item = data[i];
  56. if (item[dfop.text].indexOf(value) != -1) {
  57. $.learunisearch.renderNone($self, item[dfop.text]);
  58. }
  59. }
  60. if (end < data.length) {
  61. dfop._begin = end;
  62. dfop._end = end + 100;
  63. if (dfop._end > data.length) {
  64. dfop._end = data.length;
  65. }
  66. setTimeout(function () {
  67. $.learunisearch.search($self);
  68. });
  69. }
  70. else {
  71. dfop._isSearched = true;
  72. }
  73. },
  74. renderNone: function ($self, text) {// 刷新一条数据
  75. var dfop = $self[0]._lrcustmerquery.dfop;
  76. var $showPanel = $('#learunisearch_' + dfop.id);
  77. if (dfop._first) {
  78. dfop._first = false;
  79. $showPanel.html("");
  80. $showPanel.parent().show();
  81. }
  82. $showPanel.append('<li>' + text + '</li>');
  83. }
  84. };
  85. $.fn.lrcustmerquery = function (op) {
  86. var dfop = {
  87. // 默认查询条件项;[{fields:[{name:'',value:'',condition:''}],Formula:'',name:''}]
  88. dfData: [],
  89. // 字段列表[{name:'',value:''}]
  90. Fields: [],
  91. // 所属功能地址url
  92. moduleUrl: '',
  93. // 加载自定义查询地址
  94. url: top.$.rootUrl + '/LR_SystemModule/CustmerQuery/GetList',
  95. // 自定义查询数据
  96. data: [],
  97. // 标记性参数
  98. _isload:false
  99. };
  100. $.extend(dfop, op || {});
  101. var $self = $(this);
  102. dfop.id = $self.attr('id');
  103. if (!dfop.id) {
  104. return false;
  105. }
  106. $self[0]._lrcustmerquery = { "dfop": dfop };
  107. $.lrcustmerquery.init($self);
  108. //加载数据
  109. if (!!dfop.url) {
  110. learun.httpAsync('GET', dfop.url, dfop.param, function (data) {
  111. $self[0]._lrcustmerquery.dfop.data = data || [];
  112. dfop._isload = true;
  113. });
  114. }
  115. return $self;
  116. };
  117. })(jQuery, top.learun);