wms-formselect.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. /*
  2. * 描 述:弹层选择控件
  3. */
  4. (function ($, learun) {
  5. "use strict";
  6. $.lrformselect = {
  7. init: function ($self) {
  8. var dfop = $self[0]._lrformselect.dfop;
  9. $self.addClass('lr-formselect');
  10. $self.attr('type', 'formselect');
  11. var $input = $('<span>' + dfop.placeholder + '</span><i class="fa ' + dfop.icon + '"></i><div class="clear-btn" >清空</div>');
  12. $self.on('click', $.lrformselect.click);
  13. $self.html($input);
  14. },
  15. click: function (e) {
  16. var $self = $(this);
  17. var dfop = $self[0]._lrformselect.dfop;
  18. var et = e.target || e.srcElement;
  19. var $et = $(et);
  20. if ($et.hasClass('clear-btn')) {
  21. dfop._itemValue = { value: "", text: dfop.placeholder };
  22. $self.removeClass('selected');
  23. $self.find('span').text(dfop._itemValue.text);
  24. if (!!dfop.select) {
  25. dfop.select(dfop._itemValue);
  26. }
  27. }
  28. else {
  29. var value = dfop._itemValue ? dfop._itemValue.value : "";
  30. var _url = dfop.layerUrl;
  31. if (_url.indexOf('?') != -1) {
  32. _url += '&dfopid=' + dfop.id;
  33. }
  34. else {
  35. _url += '?dfopid=' + dfop.id;
  36. }
  37. _url += '&selectValue=' + value;
  38. _url += '&selectText=' + encodeURI(encodeURI($self.find('span').text()));
  39. learun.layerForm({
  40. id: dfop.id,
  41. title: dfop.placeholder,
  42. url: _url,
  43. width: dfop.layerUrlW,
  44. height: dfop.layerUrlH,
  45. maxmin: true,
  46. callBack: function (id) {
  47. return top[id].acceptClick($.lrformselect.callback);
  48. }
  49. });
  50. }
  51. },
  52. callback: function (item, id, obj) {
  53. var $self = $('#' + id);
  54. var dfop = $self[0]._lrformselect.dfop;
  55. top['lr_selectform_' + id] = { _obj: obj };
  56. dfop._itemValue = dfop._itemValue || {};
  57. if (dfop._itemValue.value != item.value) {
  58. if (!!dfop.select) {
  59. dfop.select(item);
  60. }
  61. $self.trigger('change');
  62. }
  63. if (item.value == "") {
  64. item.text = dfop.placeholder;
  65. }
  66. else {
  67. $self.addClass('selected');
  68. }
  69. $self.find('span').text(item.text);
  70. dfop._itemValue = item;
  71. }
  72. };
  73. $.fn.lrformselect = function (op) {
  74. var dfop = {
  75. placeholder: "请选择",
  76. icon: 'fa-plus',
  77. layerUrl: false, // 弹层地址
  78. layerParam: false,
  79. layerUrlW: 600,
  80. layerUrlH: 400,
  81. dataUrl: null, // 获取数据地址
  82. select: false, // 选择事件
  83. };
  84. $.extend(dfop, op || {});
  85. var $self = $(this);
  86. dfop.id = $self.attr('id');
  87. if (!dfop.id) {
  88. return false;
  89. }
  90. if (!!$self[0]._lrformselect) {
  91. return $self;
  92. }
  93. $self[0]._lrformselect = { dfop: dfop };
  94. $.lrformselect.init($self);
  95. return $self;
  96. };
  97. $.fn.lrformselectRefresh = function (op) {
  98. var $self = $(this);
  99. var dfop = $self[0]._lrformselect.dfop;
  100. $.extend(dfop, op || {});
  101. dfop._itemValue = null;
  102. $self.find('span').text(dfop.placeholder);
  103. };
  104. $.fn.lrformselectGet = function () {
  105. var $self = $(this);
  106. var dfop = $self[0]._lrformselect.dfop;
  107. return dfop._itemValue ? dfop._itemValue.value : "";
  108. };
  109. $.fn.lrformselectSet = function (value) {
  110. var $self = $(this);
  111. var dfop = $self[0]._lrformselect.dfop;
  112. if (value == '') {
  113. dfop._itemValue = { value: '', text: '' };
  114. $self.removeClass('selected');
  115. $self.find('span').text(dfop.placeholder);
  116. return false;
  117. }
  118. dfop._itemValue = { value: value };
  119. learun.httpAsync('GET', dfop.dataUrl, { keyValue: value }, function (data) {
  120. if (!!data && data !="") {
  121. dfop._itemValue.text = data;
  122. $self.addClass('selected');
  123. $self.find('span').text(data);
  124. }
  125. });
  126. };
  127. // 弹层列表选择
  128. $.lrGirdSelect = {
  129. init: function ($self) {
  130. var dfop = $self[0]._lrGirdSelect.dfop;
  131. $self.addClass('lr-formselect');
  132. $self.attr('type', 'lrGirdSelect');
  133. var $input = $('<span>' + dfop.placeholder + '</span><i class="fa ' + dfop.icon + '"></i><div class="clear-btn" >清空</div>');
  134. $self.on('click', $.lrGirdSelect.click);
  135. $self.html($input);
  136. // 异步加载数据
  137. learun.httpAsync('GET', dfop.url, dfop.param, function (data) {
  138. dfop._loaded = true;
  139. dfop._data = data || [];
  140. });
  141. top.lrGirdSelect = top.lrGirdSelect || {};
  142. top.lrGirdSelect[dfop.id] = dfop;
  143. },
  144. click: function (e) {
  145. var $self = $(this);
  146. var dfop = $self[0]._lrGirdSelect.dfop;
  147. var et = e.target || e.srcElement;
  148. var $et = $(et);
  149. if ($et.hasClass('clear-btn')) {
  150. dfop._itemValue = { value: "", text: dfop.placeholder };
  151. $self.removeClass('selected');
  152. $self.find('span').text(dfop._itemValue.text);
  153. if (!!dfop.select) {
  154. dfop.select(dfop._itemValue);
  155. }
  156. }
  157. else {
  158. var value = dfop._itemValue ? dfop._itemValue.value : "";
  159. learun.layerForm({
  160. id: dfop.id,
  161. title: dfop.placeholder,
  162. url: top.$.rootUrl + '/Utility/GirdSelectIndex?dfopid=' + dfop.id,
  163. width: dfop.width,
  164. height: dfop.height,
  165. maxmin: true,
  166. callBack: function (id) {
  167. return top[id].acceptClick($.lrGirdSelect.callback);
  168. }
  169. });
  170. }
  171. },
  172. callback: function (item, id) {
  173. var $self = $('#' + id);
  174. var dfop = $self[0]._lrGirdSelect.dfop;
  175. dfop._itemValue = dfop._itemValue || {};
  176. if (dfop._itemValue[dfop.value] != item[dfop.value]) {
  177. if (!!dfop.select) {
  178. dfop.select(item);
  179. }
  180. $self.trigger('change');
  181. }
  182. if (!item) {
  183. item.text = dfop.placeholder;
  184. }
  185. else {
  186. $self.addClass('selected');
  187. }
  188. $self.find('span').text(item[dfop.text]);
  189. dfop._itemValue = item;
  190. }
  191. }
  192. $.fn.lrGirdSelect = function (op) {
  193. var dfop = {
  194. placeholder: "请选择",
  195. icon: 'fa-plus',
  196. url: '',
  197. selectWord: '',
  198. headData: [],
  199. value: '',
  200. text: '',
  201. width: 600,
  202. height: 400,
  203. select: false, // 选择事件
  204. param: {},
  205. _loaded: false
  206. };
  207. $.extend(dfop, op || {});
  208. var $self = $(this);
  209. dfop.id = $self.attr('id');
  210. if (!dfop.id) {
  211. return false;
  212. }
  213. if (!!$self[0]._lrGirdSelect) {
  214. return $self;
  215. }
  216. $self[0]._lrGirdSelect = { dfop: dfop };
  217. $.lrGirdSelect.init($self);
  218. return $self;
  219. }
  220. $.fn.lrGirdSelectGet = function () {
  221. var $this = $(this);
  222. var dfop = $this[0]._lrGirdSelect.dfop;
  223. dfop._itemValue = dfop._itemValue || {};
  224. var res = dfop._itemValue[dfop.value] || "";
  225. return res;
  226. }
  227. $.fn.lrGirdSelectSet = function (value) {
  228. var $this = $(this);
  229. var dfop = $this[0]._lrGirdSelect.dfop;
  230. function set(_value) {
  231. if (dfop._loaded) {
  232. $.each(dfop._data, function (id, item) {
  233. if (item[dfop.value] == _value) {
  234. if (!!dfop.select) {
  235. dfop.select(item);
  236. }
  237. $this.trigger('change');
  238. $this.addClass('selected');
  239. $this.find('span').text(item[dfop.text]);
  240. dfop._itemValue = item;
  241. return false;
  242. }
  243. });
  244. }
  245. else {
  246. setTimeout(function () {
  247. set(_value);
  248. }, 100);
  249. }
  250. }
  251. set(value);
  252. }
  253. })(window.jQuery, top.learun);