picker.js 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189
  1. mbui.define(['layer'], function (exports) {
  2. var layer = mbui.layer;
  3. var layPicker = {
  4. index: 0, // 递增的index,作为元素的唯一标识
  5. indexList: [], // 每个index的集合
  6. offset: {}, // 每个ul元素的滚动位置
  7. liHeight: 50, // 每个li的高度
  8. selectList: {}, // 存储每个被选中的值,li下标
  9. textField: 'name', // 参数名称-内容
  10. valueField: 'value',// 参数名称-值
  11. fieldList: {}, // 参数名称集
  12. dataList: {}, // 数据集合
  13. tempSearchList: {}, // 临时存储搜索前的主数据
  14. minMaxData: {}, // 最小最大限制数据
  15. init: function(data){
  16. layPicker.index ++;
  17. layPicker.indexList.push(layPicker.index);
  18. var key = ''+layPicker.index;
  19. // 参数名称替换
  20. layPicker.fieldList[key] = {
  21. textField: data.textField || layPicker.textField,
  22. valueField: data.valueField || layPicker.valueField,
  23. };
  24. // 滚动位置初始化
  25. layPicker.offset[key] = {
  26. start: {},
  27. move: {},
  28. end: {state: false},
  29. };
  30. // 日期选择器-获取对应值
  31. if(data.options){
  32. var minObj = lay_picker_date.getMinOrMaxDate(data.minDate);
  33. var maxObj = lay_picker_date.getMinOrMaxDate(data.maxDate);
  34. layPicker.minMaxData[key] = {};
  35. layPicker.minMaxData[key]['minObj'] = minObj;
  36. layPicker.minMaxData[key]['maxObj'] = maxObj;
  37. layPicker.minMaxData[key]['options'] = data.options;
  38. data.data = lay_picker_date.getData(data.options, key);
  39. }
  40. // 选中值初始化
  41. layPicker.selectList[key] = {};
  42. // 数据集
  43. layPicker.dataList[key] = data.data;
  44. // 渲染标签
  45. var html = layPicker.initBody(data, key);
  46. $('body').append(html);
  47. // 给绑定元素添加标识
  48. //data.elem.attr('readonly', true);
  49. data.elem.attr('lay-picker-id', key);
  50. // 不等于自定义html才需要执行这些操作
  51. if(!data.type || data.type != 3){
  52. // 初始化标签和值
  53. layPicker.initBox(data.data, key);
  54. layPicker.initSelect(key);
  55. // 日期选择器-赋值
  56. if(data.options){
  57. layPicker.setValue(key, lay_picker_date.getVoluation(data.options, layPicker.fieldList[key].valueField), data.options);
  58. }
  59. // 搜索监听
  60. if(data.search){
  61. layPicker.tempSearchList[key] = data.data[0];
  62. var temp_keyup;
  63. $('#lay-picker-input-'+key).on('keyup', function() {
  64.     var value = $(this).val();
  65. clearTimeout(temp_keyup);
  66. temp_keyup = setTimeout(function(){
  67. var tempArray = [];
  68. if(value){
  69. var arr = layPicker.tempSearchList[key];
  70. for(var i=0; i<arr.length; i++){
  71. var obj = arr[i];
  72. var text = layPicker.fieldList[key].textField;
  73. if(obj[text].indexOf(value) != -1){
  74. tempArray.push(obj);
  75. }
  76. }
  77. }else{
  78. tempArray = layPicker.tempSearchList[key];
  79. }
  80. layPicker.setData(key, -1, tempArray);
  81. }, 500)
  82. });
  83. }
  84. // 滑动-开始(手指放在页面时触发)
  85. $('.lay-picker-'+key).on('touchstart', '.lay-picker-list-wrap', function(e) {
  86. var touch = e.originalEvent.targetTouches[0];
  87. if(layPicker.tempInter){
  88. clearInterval(layPicker.tempInter);
  89. layPicker.tempInter = null;
  90. layPicker.offset[key].move.y = touch.clientY;
  91. }
  92. layPicker.offset[key].move.len = 0;
  93. layPicker.offset[key].end.state = true;
  94. layPicker.offset[key].start.y = touch.clientY;
  95. var ul = $(this).find('ul')[0];
  96. layPicker.offset[key].start.top = parseInt(ul.style.transform.split(",")[1].replace('px', '')) || 0;
  97. e.stopPropagation(); // 防止屏幕滑动
  98. });
  99. // 滑动-中(手指移动时触发)
  100. $('.lay-picker-'+key).on('touchmove', '.lay-picker-list-wrap', function(e) {
  101. var touch = e.originalEvent.targetTouches[0];
  102. layPicker.offset[key].move.y = touch.clientY;
  103. var y = layPicker.offset[key].move.y - layPicker.offset[key].start.y + layPicker.offset[key].start.top;
  104. $(this).find('ul').css('transform', 'translate3d(0px, ' + y + 'px, 0px)');
  105. layPicker.offset[key].end.y = y;
  106. e.stopPropagation();
  107. e.preventDefault();// 防止屏幕滑动
  108. });
  109. // 滑动-结束(手指离开页面时触发)
  110. $('.lay-picker-'+key).on('touchend', '.lay-picker-list-wrap', function(e) {
  111. layPicker.offset[key].move.state = true;
  112. var tempLen = 1;
  113. if(layPicker.offset[key].start.y > layPicker.offset[key].move.y){
  114. layPicker.offset[key].move.num = true;
  115. tempLen = layPicker.offset[key].start.y - layPicker.offset[key].move.y;
  116. }else{
  117. layPicker.offset[key].move.num = false;
  118. tempLen = layPicker.offset[key].move.y - layPicker.offset[key].start.y;
  119. }
  120. tempLen = tempLen / layPicker.liHeight;
  121. var _this = this;
  122. var ul = $(_this).find('ul')[0], ul2 = $(_this).find('ul');
  123. var tempNum = 1;
  124. layPicker.tempInter = setInterval(function(){
  125. tempNum ++;
  126. var tempTop = layPicker.offset[key].start.top;
  127. layPicker.offset[key].start.top = parseInt(ul.style.transform.split(",")[1].replace('px', '')) || 0;
  128. if(tempLen <= 3
  129. || tempTop >= 0
  130. || layPicker.offset[key].start.top >= 0
  131. || ((ul.children.length - 1) * layPicker.liHeight) <= Math.abs(tempTop)
  132. || ((ul.children.length - 1) * layPicker.liHeight) <= Math.abs(layPicker.offset[key].start.top)){
  133. tempNum = tempLen;
  134. }else{
  135. layPicker.offset[key].start.y = layPicker.offset[key].move.y;
  136. if(layPicker.offset[key].move.num){
  137. layPicker.offset[key].move.y = layPicker.offset[key].move.y - ((tempLen - tempNum) * layPicker.liHeight);
  138. }else{
  139. if(layPicker.offset[key].move.y < 0){
  140. layPicker.offset[key].move.y = layPicker.offset[key].move.y - ((tempLen - tempNum) * layPicker.liHeight);
  141. }else{
  142. layPicker.offset[key].move.y = layPicker.offset[key].move.y + ((tempLen - tempNum) * layPicker.liHeight);
  143. }
  144. }
  145. var y = layPicker.offset[key].move.y - layPicker.offset[key].start.y + layPicker.offset[key].start.top;
  146. ul2.css('transform', 'translate3d(0px, ' + y + 'px, 0px)');
  147. layPicker.offset[key].end.y = y;
  148. }
  149. // 在这前面的都是实现延迟继续滚动效果,这下面的则是原来的效果
  150. if(tempNum >= tempLen){
  151. clearInterval(layPicker.tempInter);
  152. layPicker.offset[key].end.state = false;
  153. var itemHeight = layPicker.liHeight;
  154. var sign = layPicker.offset[key].end.y >= 0 ? 1 : -1;
  155. var thisIndex = $(_this).attr("index");
  156. // 计算超出回弹
  157. var fieldIndex = Math.round(Math.abs(layPicker.offset[key].end.y) / itemHeight);
  158. var len = sign * (fieldIndex * itemHeight);
  159. if (len > 0) {
  160. len = 0;
  161. fieldIndex = 0;
  162. } else if (len < -(ul.children.length - 1) * itemHeight) {
  163. len = -(ul.children.length - 1) * itemHeight;
  164. fieldIndex = ul.children.length - 1;
  165. };
  166. ul2.css('transform', 'translate3d(0px, ' + len + 'px, 0px)');
  167. layPicker.selectList[key][thisIndex] = fieldIndex;
  168. // 获取选中值
  169. var list = layPicker.dataList[key];
  170. var resultArray = [];
  171. for(var k in layPicker.selectList[key]){
  172. var arr = list[Number(k)]
  173. if(arr && arr.length > 0){
  174. var obj = arr[layPicker.selectList[key][k]]
  175. resultArray.push(obj);
  176. }
  177. }
  178. // 回调
  179. if(data.onSelect){
  180. data.onSelect(key, thisIndex, resultArray);
  181. }
  182. // 日期选择器-赋值day
  183. if(data.options){
  184. var valList = layPicker.setOptions(data.options, key, resultArray, thisIndex);
  185. layPicker.setValue(key, valList); // 赋值,以位置类推
  186. }
  187. }
  188. }, 100)
  189. e.stopPropagation();// 防止屏幕滑动
  190. });
  191. // 取消-点击
  192. $('.lay-picker-'+key).on("click", ".lay-picker-cancel-click", function(e){
  193. layPicker.hiden($(this).parents('.lay-picker').attr('lay-index'));
  194. if(data.onCancel){
  195. data.onCancel(key);
  196. }
  197. });
  198. // 确认-点击
  199. $('.lay-picker-'+key).on("click", ".lay-picker-confirm-click", function(e){
  200. layPicker.hiden($(this).parents('.lay-picker').attr('lay-index'));
  201. var list = layPicker.dataList[key];
  202. var v = '', resultArray = [];
  203. for(var k in layPicker.selectList[key]){
  204. var arr = list[Number(k)]
  205. if(arr && arr.length > 0){
  206. var obj = arr[layPicker.selectList[key][k]]
  207. if(data.options && (data.options == 'time' || data.options == 'timesecond' || data.options == 'datetime' || data.options == 'datetimesecond')){
  208. if(data.options == 'time' || data.options == 'timesecond'){
  209. v += obj[layPicker.fieldList[key].valueField] + ":";
  210. }else if((data.options == 'datetime' || data.options == 'datetimesecond') && Number(k) == 2){
  211. v += obj[layPicker.fieldList[key].valueField] + " ";
  212. }else if((data.options == 'datetime' || data.options == 'datetimesecond') && Number(k) > 2){
  213. v += obj[layPicker.fieldList[key].valueField] + ":";
  214. }else{
  215. v += obj[layPicker.fieldList[key].valueField] + "-";
  216. }
  217. }else{
  218. v += obj[layPicker.fieldList[key].valueField] + "-";
  219. }
  220. resultArray.push(obj);
  221. }
  222. }
  223. if(data.onConfirm){
  224. data.onConfirm(key, v.substring(0, v.length-1), resultArray);
  225. }
  226. });
  227. // 清除-点击
  228. $('.lay-picker-'+key).on("click", ".lay-picker-clear-click", function(e){
  229. if(data.onClear){
  230. data.onClear(key);
  231. }
  232. });
  233. }
  234. // 绑定元素-点击
  235. data.elem.on('click', function(e){
  236. layPicker.show($(this).attr('lay-picker-id'));
  237. if(data.onShow){
  238. data.onShow(key);
  239. }
  240. })
  241. // 遮罩-点击
  242. $('.lay-picker-'+key).on("click", ".lay-picker-shade", function(e){
  243. layPicker.hiden($(this).parents('.lay-picker').attr('lay-index'));
  244. if(data.onShade){
  245. data.onShade(key);
  246. }
  247. });
  248. // 成功回调
  249. if(data.onSuccess){
  250. data.onSuccess(key, '.lay-picker-'+key);
  251. }
  252. return key;
  253. },
  254. /** 重置值*/
  255. setOptions: function(options, key, resultArray, thisIndex){
  256. var valList = [];
  257. if(options == 'month' || options == 'date' || options == 'datetime' || options == 'datetimesecond'){
  258. if(thisIndex == 0){
  259. layPicker.setData(key, Number(thisIndex), lay_picker_date.getMonth(resultArray, key));
  260. if(options != 'month'){
  261. layPicker.setData(key, Number(thisIndex) + 1, lay_picker_date.getDay(resultArray, key));
  262. }
  263. }else if(thisIndex == 1 && options != 'month'){
  264. layPicker.setData(key, Number(thisIndex), lay_picker_date.getDay(resultArray, key));
  265. }
  266. if(options != 'month'){
  267. var tempDay = resultArray[2][layPicker.fieldList[key].valueField];
  268. var lastDay = lay_picker_date.getLastDay(resultArray);
  269. if(Number(tempDay) > lastDay){
  270. tempDay = lastDay;
  271. }
  272. valList = [
  273. {value: resultArray[0][layPicker.fieldList[key].valueField]},
  274. {value: resultArray[1][layPicker.fieldList[key].valueField]},
  275. {value: tempDay},
  276. ];
  277. if(options == 'datetime' || options == 'datetimesecond'){
  278. if(thisIndex == 0){
  279. layPicker.setData(key, Number(thisIndex) + 2, lay_picker_date.getHours(resultArray, key));
  280. layPicker.setData(key, Number(thisIndex) + 3, lay_picker_date.getMinutes(resultArray, key));
  281. }else if(thisIndex == 1){
  282. layPicker.setData(key, Number(thisIndex) + 1, lay_picker_date.getHours(resultArray, key));
  283. layPicker.setData(key, Number(thisIndex) + 2, lay_picker_date.getMinutes(resultArray, key));
  284. }else if(thisIndex == 2){
  285. layPicker.setData(key, Number(thisIndex) , lay_picker_date.getHours(resultArray, key));
  286. layPicker.setData(key, Number(thisIndex) + 1, lay_picker_date.getMinutes(resultArray, key));
  287. }else if(thisIndex == 3){
  288. layPicker.setData(key, thisIndex, lay_picker_date.getMinutes(resultArray, key));
  289. }
  290. valList.push({value: resultArray[3][layPicker.fieldList[key].valueField]})
  291. valList.push({value: resultArray[4][layPicker.fieldList[key].valueField]})
  292. if(options == 'datetimesecond'){
  293. if(thisIndex == 0){
  294. layPicker.setData(key, Number(thisIndex) + 4, lay_picker_date.getSeconds(resultArray, key));
  295. }else if(thisIndex == 1){
  296. layPicker.setData(key, Number(thisIndex) + 3, lay_picker_date.getSeconds(resultArray, key));
  297. }else if(thisIndex == 2){
  298. layPicker.setData(key, Number(thisIndex) + 2, lay_picker_date.getSeconds(resultArray, key));
  299. }else if(thisIndex == 3){
  300. layPicker.setData(key, Number(thisIndex) + 1, lay_picker_date.getSeconds(resultArray, key));
  301. }else if(thisIndex == 4){
  302. layPicker.setData(key, Number(thisIndex), lay_picker_date.getSeconds(resultArray, key));
  303. }
  304. valList.push({value: resultArray[5][layPicker.fieldList[key].valueField]})
  305. }
  306. }
  307. }
  308. }
  309. if(options == 'time' || options == 'timesecond'){
  310. if(thisIndex == 0){
  311. layPicker.setData(key, thisIndex, lay_picker_date.getMinutes(resultArray, key, 1));
  312. }
  313. valList = [
  314. {value: resultArray[0][layPicker.fieldList[key].valueField]},
  315. {value: resultArray[1][layPicker.fieldList[key].valueField]},
  316. ];
  317. if(options == 'timesecond'){
  318. if(thisIndex == 0){
  319. layPicker.setData(key, Number(thisIndex) + 1, lay_picker_date.getSeconds(resultArray, key, 1));
  320. }else if(thisIndex == 1){
  321. layPicker.setData(key, Number(thisIndex), lay_picker_date.getSeconds(resultArray, key, 1));
  322. }
  323. valList.push({value: resultArray[2][layPicker.fieldList[key].valueField]});
  324. }
  325. }
  326. return valList;
  327. },
  328. initBody: function(data, index){
  329. var s = '';
  330. s += '<div class="lay-picker lay-picker-'+index+'" lay-index="'+index+'" style="display: none;">';
  331. if(data.shade !== false){
  332. if(data.shade){
  333. s += ' <div class="lay-picker-shade" style="background: rgba(0, 0, 0, '+data.shade+');"></div>';
  334. }else{
  335. s += ' <div class="lay-picker-shade"></div>';
  336. }
  337. }
  338. var cancel = '取消',clear = '清空', confirm = '确定';
  339. if(data.btns && data.btns.length > 0){
  340. cancel = data.btns[0];
  341. clear = data.btns[1];
  342. confirm = data.btns[2];
  343. }
  344. if(data.type == 3){
  345. var radius = (data.radius?'border-radius: '+data.radius+'px '+data.radius+'px 0px 0;':'');
  346. s += ' <div class="lay-picker-container" style=";transform: translate3d(0px, 100%, 0px);'+radius+'">';
  347. s += ' <div class="lay-picker-content" style="overflow: auto;">';
  348. s += (data.content || '');
  349. s += ' </div>';
  350. s += ' </div>';
  351. s += '</div>';
  352. }else if(data.type == 2){
  353. var sumHeight = 350; // 高度超出出现滚动条
  354. sumHeight = (data.title) ? sumHeight += 80 : sumHeight;
  355. sumHeight = (data.search) ? sumHeight += 80 : sumHeight;
  356. var h = $(window).height();
  357. var radius = (data.radius?'border-radius: '+data.radius+'px '+data.radius+'px 0px 0;':'');
  358. s += ' <div class="lay-picker-container" style="transform: translate3d(0px, 100%, 0px);'+radius+''+(sumHeight > h ? 'overflow: auto;height: 100%;':'')+'">';
  359. if(data.title){
  360. s += ' <div class="lay-picker-header" style="'+radius+'">';
  361. s += ' <div class="lay-picker-title">'+(data.title || '')+'</div>';
  362. s += ' </div>';
  363. }
  364. if(data.search){
  365. s += ' <div class="lay-picker-search" style="'+radius+'">';
  366. s += ' <input type="text" id="lay-picker-input-'+index+'" placeholder="'+((typeof data.search === "string") ? data.search : '请输入搜索内容')+'"/>';
  367. s += ' </div>';
  368. }
  369. s += ' <div class="lay-picker-content" style="'+(data.title ? '' : 'margin: 30px 15px;')+'">';
  370. s += ' <div class="lay-picker-shadowup"></div>';
  371. s += ' <div class="lay-picker-shadowdown"></div>';
  372. s += ' <div class="lay-picker-box"></div>';
  373. s += ' </div>';
  374. s += ' <div class="lay-picker-bottom">';
  375. s += ' <span class="lay-picker-cancel-click lay-picker-bottom-btn lay-picker-bottom-btn-cancel">'+cancel+'</span>';
  376. s += ' <span class="lay-picker-clear-click lay-picker-bottom-btn lay-picker-bottom-btn-clear">'+clear+'</span>';
  377. s += ' <span class="lay-picker-confirm-click lay-picker-bottom-btn lay-picker-bottom-btn-confirm">'+confirm+'</span>';
  378. s += ' </div>';
  379. s += ' </div>';
  380. s += '</div>';
  381. }else{
  382. var sumHeight = 350; // 高度超出出现滚动条
  383. sumHeight = (data.search) ? sumHeight += 80 : sumHeight;
  384. var h = $(window).height();
  385. var radius = (data.radius?'border-radius: '+data.radius+'px '+data.radius+'px 0px 0;':'');
  386. s += ' <div class="lay-picker-container" style="transform: translate3d(0px, 100%, 0px);'+radius+''+(sumHeight > h ? 'overflow: auto;height: 100%;':'')+'">';
  387. s += ' <div class="lay-picker-header" style="'+radius+'">';
  388. s += ' <div class="lay-picker-title">'+(data.title || '')+'</div>';
  389. s += ' <div class="lay-picker-btn">';
  390. s += ' <span class="lay-picker-cancel lay-picker-cancel-click">'+cancel+'</span>';
  391. s += ' <span class="lay-picker-clear lay-picker-clear-click">'+clear+'</span>';
  392. s += ' <span class="lay-picker-confirm lay-picker-confirm-click">'+confirm+'</span>';
  393. s += ' </div>';
  394. s += ' </div>';
  395. if(data.search){
  396. s += ' <div class="lay-picker-search" style="'+radius+'">';
  397. s += ' <input type="text" id="lay-picker-input-'+index+'" placeholder="'+((typeof data.search === "string") ? data.search : '请输入搜索内容')+'"/>';
  398. s += ' </div>';
  399. }
  400. s += ' <div class="lay-picker-content">';
  401. s += ' <div class="lay-picker-shadowup"></div>';
  402. s += ' <div class="lay-picker-shadowdown"></div>';
  403. s += ' <div class="lay-picker-box"></div>';
  404. s += ' </div>';
  405. s += ' </div>';
  406. s += '</div>';
  407. }
  408. return s;
  409. },
  410. initBox: function(data, index){
  411. var len = 100 / data.length;
  412. var box = $('.lay-picker-'+index).find('.lay-picker-box');
  413. for(var i=0; i<data.length; i++){
  414. var div = $('<div index="'+i+'" class="lay-picker-list-wrap" style="width: '+len+'%;"></div>');
  415. var ul = $('<ul style="transform: translate3d(0px, 0, 0px);"></ul>');
  416. for(var j=0; j<data[i].length; j++){
  417. var li = $('<li>'+data[i][j][layPicker.fieldList[index].textField]+'</li>');
  418. ul.append(li);
  419. }
  420. div.append(ul);
  421. box.append(div);
  422. }
  423. },
  424. initSelect: function(index){
  425. var list = layPicker.dataList[index];
  426. for(var i=0; i<list.length; i++){
  427. layPicker.selectList[index][i+''] = 0;
  428. }
  429. },
  430. setData: function(index, i, data, trends){
  431. var t_index = (Number(i) + 1);
  432. var ul = $('.lay-picker-'+index).find('.lay-picker-box').find('[index='+t_index+']>ul');
  433. ul.empty();
  434. ul.css('transform', 'translate3d(0px, 0px, 0px)');
  435. for(var i=0; i<data.length; i++){
  436. var li = $('<li>'+data[i][layPicker.fieldList[index].textField]+'</li>');
  437. ul.append(li);
  438. }
  439. layPicker.selectList[index][t_index+''] = 0;
  440. layPicker.dataList[index][t_index] = data;
  441. },
  442. setDataTrends: function(index, i, data){
  443. var t_index = (Number(i) + 1);
  444. if(!data || data.length == 0){
  445. layPicker.deleteData(index, i, t_index);
  446. var len = 100 / layPicker.dataList[index].length;
  447. $('.lay-picker-'+index).find('.lay-picker-list-wrap').css('width', len+'%');
  448. return;
  449. }
  450. var data_len = t_index > layPicker.dataList[index].length-1;
  451. if(data_len){
  452. layPicker.dataList[index].push(data);
  453. }else{
  454. layPicker.dataList[index][t_index] = data;
  455. layPicker.deleteData(index, t_index, t_index+1);
  456. }
  457. var box = $('.lay-picker-'+index).find('.lay-picker-box');
  458. var len = 100 / layPicker.dataList[index].length;
  459. $('.lay-picker-'+index).find('.lay-picker-list-wrap').css('width', len+'%');
  460. if(data_len){
  461. var div = $('<div index="'+t_index+'" class="lay-picker-list-wrap" style="width: '+len+'%;"><ul style="transform: translate3d(0px, 0, 0px);"></ul></div>');
  462. box.append(div);
  463. }
  464. var ul = $('.lay-picker-'+index).find('.lay-picker-box').find('[index='+t_index+']>ul');
  465. ul.empty();
  466. ul.css('transform', 'translate3d(0px, 0px, 0px)');
  467. for(var i=0; i<data.length; i++){
  468. var li = $('<li>'+data[i][layPicker.fieldList[index].textField]+'</li>');
  469. ul.append(li);
  470. }
  471. layPicker.selectList[index][t_index+''] = 0;
  472. },
  473. deleteData: function(index, i, t_index){
  474. if(layPicker.dataList[index].length > Number(i)){
  475. for(var i=t_index; i<layPicker.dataList[index].length; i++){
  476. layPicker.dataList[index].splice(i, 1);
  477. $('.lay-picker-'+index).find('.lay-picker-box').find('[index='+i+']').remove();
  478. return layPicker.deleteData(index, i, t_index);
  479. }
  480. }
  481. },
  482. setValue: function(index, data, options){
  483. var list = layPicker.dataList[index];
  484. var box = $('.lay-picker-'+index).find('.lay-picker-box');
  485. for(var i=0; i<data.length; i++){
  486. data[i].value = Number(data[i].value) < 10 ? '0'+Number(data[i].value) : data[i].value;
  487. }
  488. if(!options && layPicker.minMaxData[index]){
  489. options = layPicker.minMaxData[index]['options'];
  490. }
  491. for(var i=0; i<data.length; i++){
  492. var arr = list[i];
  493. for(var j=0; j<arr.length; j++){
  494. if(arr[j][layPicker.fieldList[index].valueField] == data[i][layPicker.fieldList[index].valueField]){
  495. layPicker.selectList[index][i+''] = j;
  496. if(options){
  497. layPicker.setOptionsValue(options, index, data, i);
  498. }
  499. var y = j * layPicker.liHeight;
  500. box.find('[index='+i+']>ul').css('transform', 'translate3d(0px, -'+y+'px, 0px)');
  501. }
  502. }
  503. }
  504. },
  505. setOptionsValue: function(options, key, resultArray, thisIndex){
  506. if(options == 'month' || options == 'date' || options == 'datetime' || options == 'datetimesecond'){
  507. if(thisIndex == 0){
  508. layPicker.setData(key, Number(thisIndex), lay_picker_date.getMonth(resultArray, key));
  509. }else if(thisIndex == 1 && options != 'month'){
  510. layPicker.setData(key, Number(thisIndex), lay_picker_date.getDay(resultArray, key));
  511. }
  512. if(options == 'datetime' || options == 'datetimesecond'){
  513. if(thisIndex == 2){
  514. layPicker.setData(key, Number(thisIndex) , lay_picker_date.getHours(resultArray, key));
  515. }else if(thisIndex == 3){
  516. layPicker.setData(key, thisIndex, lay_picker_date.getMinutes(resultArray, key));
  517. }
  518. if(options == 'datetimesecond'){
  519. if(thisIndex == 4){
  520. layPicker.setData(key, Number(thisIndex), lay_picker_date.getSeconds(resultArray, key));
  521. }
  522. }
  523. }
  524. }
  525. if(options == 'time' || options == 'timesecond'){
  526. if(thisIndex == 0){
  527. layPicker.setData(key, thisIndex, lay_picker_date.getMinutes(resultArray, key, 1));
  528. }
  529. if(options == 'timesecond'){
  530. if(thisIndex == 1){
  531. layPicker.setData(key, Number(thisIndex), lay_picker_date.getSeconds(resultArray, key, 1));
  532. }
  533. }
  534. }
  535. },
  536. hiden: function(index){
  537. $('.lay-picker-'+index).find('.lay-picker-container').css('transform', 'translate3d(0px, 100%, 0px)');
  538. $('.lay-picker-'+index).find('.lay-picker-shade').fadeOut(200);
  539. setTimeout(function(){
  540. $('.lay-picker-'+index).css('display', 'none');
  541. }, 100)
  542. },
  543. show: function(index){
  544. $('.lay-picker-'+index).css('display', 'block');
  545. $('.lay-picker-'+index).find('.lay-picker-shade').fadeIn(200);
  546. setTimeout(function(){
  547. $('.lay-picker-'+index).find('.lay-picker-container').css('transform', 'translate3d(0px, 0px, 0px)');
  548. }, 10)
  549. $(".lay-picker-not-mobile").remove();
  550. if(!layPicker.isMobile()){
  551. $(".lay-picker-container").append("<div class='lay-picker-not-mobile' style='padding: 15px 0; color: #999;text-align: center;'>非手机模式无法滑动</div>")
  552. }
  553. },
  554. remove: function(index){
  555. layPicker.hiden(index);
  556. setTimeout(function(){
  557. $('.lay-picker-'+index).remove();
  558. }, 200)
  559. for(var i=0; i<layPicker.indexList.length; i++){
  560. if(layPicker.indexList[i] == index){
  561. layPicker.indexList.splice(i, 1);
  562. break;
  563. }
  564. }
  565. },
  566. removeAll: function(){
  567. if(layPicker.indexList.length > 0){
  568. for(var i=0; i<layPicker.indexList.length; i++){
  569. layPicker.hiden(layPicker.indexList[i]);
  570. var index = layPicker.indexList[i];
  571. layPicker.removeTime(index);
  572. layPicker.indexList.splice(i, 1);
  573. return layPicker.removeAll();
  574. }
  575. }
  576. },
  577. removeTime: function(index){
  578. setTimeout(function(){
  579. $('.lay-picker-'+index).remove();
  580. }, 200)
  581. },
  582. /** 判断是否是手机打开*/
  583. isMobile: function () {
  584. return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|DingTalk|Opera Mini/i.test(navigator.userAgent);
  585. },
  586. }
  587. /**
  588. * 日期对象
  589. */
  590. var lay_picker_date = {
  591. getVoluation: function(value, key){
  592. var date_obj = lay_picker_date.getDateTime();
  593. var year_obj = {};
  594. year_obj[''+key] = date_obj.year;
  595. var month_obj = {};
  596. month_obj[''+key] = date_obj.month;
  597. var day_obj = {};
  598. day_obj[''+key] = date_obj.day;
  599. var hours_obj = {};
  600. hours_obj[''+key] = date_obj.hours;
  601. var minutes_obj = {};
  602. minutes_obj[''+key] = date_obj.minutes;
  603. var seconds_obj = {};
  604. seconds_obj[''+key] = date_obj.seconds;
  605. if(value == 'year'){
  606. return [year_obj];
  607. }else if(value == 'month'){
  608. return [year_obj, month_obj];
  609. }else if(value == 'date'){
  610. return [year_obj, month_obj, day_obj];
  611. }else if(value == 'time'){
  612. return [hours_obj, minutes_obj];
  613. }else if(value == 'timesecond'){
  614. return [hours_obj, minutes_obj, seconds_obj];
  615. }else if(value == 'datetime'){
  616. return [year_obj, month_obj, day_obj, hours_obj, minutes_obj];
  617. }else if(value == 'datetimesecond'){
  618. return [year_obj, month_obj, day_obj, hours_obj, minutes_obj, seconds_obj];
  619. }
  620. },
  621. getData: function(value, key){
  622. if(value == 'year'){
  623. var years = lay_picker_date.getYear(key);
  624. return [years];
  625. }else if(value == 'month'){
  626. var years = lay_picker_date.getYear(key);
  627. var date_obj = lay_picker_date.getDateTime();
  628. var months = lay_picker_date.getMonth(
  629. [
  630. {value: years[0].value},
  631. {value: date_obj.month},
  632. ]
  633. , key);
  634. return [years, months];
  635. }else if(value == 'date'){
  636. var years = lay_picker_date.getYear(key);
  637. var date_obj = lay_picker_date.getDateTime();
  638. var months = lay_picker_date.getMonth(
  639. [
  640. {value: years[0].value},
  641. {value: date_obj.month},
  642. ]
  643. , key);
  644. var days = lay_picker_date.getDay(
  645. [
  646. {value: years[0].value},
  647. {value: months[0].value},
  648. {value: date_obj.day},
  649. ]
  650. , key);
  651. return [years, months, days];
  652. }else if(value == 'time'){
  653. var hourss = lay_picker_date.getHours(null, key, 1);
  654. var date_obj = lay_picker_date.getDateTime();
  655. var minutess = lay_picker_date.getMinutes(
  656. [
  657. {value: hourss[0].value},
  658. {value: date_obj.minutes},
  659. ]
  660. , key, 1);
  661. return [hourss, minutess];
  662. }else if(value == 'timesecond'){
  663. var hourss = lay_picker_date.getHours(null, key, 1);
  664. var date_obj = lay_picker_date.getDateTime();
  665. var minutess = lay_picker_date.getMinutes(
  666. [
  667. {value: hourss[0].value},
  668. {value: date_obj.minutes},
  669. ]
  670. , key, 1);
  671. var secondss = lay_picker_date.getSeconds(
  672. [
  673. {value: hourss[0].value},
  674. {value: minutess[0].value},
  675. {value: date_obj.seconds},
  676. ]
  677. , key, 1);
  678. return [hourss, minutess, secondss];
  679. }else if(value == 'datetime'){
  680. var years = lay_picker_date.getYear(key);
  681. var date_obj = lay_picker_date.getDateTime();
  682. var months = lay_picker_date.getMonth(
  683. [
  684. {value: years[0].value},
  685. {value: date_obj.month},
  686. ]
  687. , key);
  688. var days = lay_picker_date.getDay(
  689. [
  690. {value: years[0].value},
  691. {value: months[0].value},
  692. {value: date_obj.day},
  693. ]
  694. , key);
  695. var hourss = lay_picker_date.getHours(
  696. [
  697. {value: years[0].value},
  698. {value: months[0].value},
  699. {value: days[0].value},
  700. ], key);
  701. var minutess = lay_picker_date.getMinutes(
  702. [
  703. {value: years[0].value},
  704. {value: months[0].value},
  705. {value: days[0].value},
  706. {value: hourss[0].value},
  707. ], key);
  708. return [years, months, days, hourss, minutess];
  709. }else if(value == 'datetimesecond'){
  710. var years = lay_picker_date.getYear(key);
  711. var date_obj = lay_picker_date.getDateTime();
  712. var months = lay_picker_date.getMonth(
  713. [
  714. {value: years[0].value},
  715. {value: date_obj.month},
  716. ]
  717. , key);
  718. var days = lay_picker_date.getDay(
  719. [
  720. {value: years[0].value},
  721. {value: months[0].value},
  722. {value: date_obj.day},
  723. ]
  724. , key);
  725. var hourss = lay_picker_date.getHours(
  726. [
  727. {value: years[0].value},
  728. {value: months[0].value},
  729. {value: days[0].value},
  730. ], key);
  731. var minutess = lay_picker_date.getMinutes(
  732. [
  733. {value: years[0].value},
  734. {value: months[0].value},
  735. {value: days[0].value},
  736. {value: hourss[0].value},
  737. ], key);
  738. var secondss = lay_picker_date.getSeconds(
  739. [
  740. {value: years[0].value},
  741. {value: months[0].value},
  742. {value: days[0].value},
  743. {value: hourss[0].value},
  744. {value: minutess[0].value},
  745. ], key);
  746. return [years, months, days, hourss, minutess, secondss];
  747. }
  748. },
  749. getDateTime: function() {
  750. var myDate = new Date();
  751. var year = myDate.getFullYear(); //获取年
  752. var month = myDate.getMonth() + 1; //获取月,默认从0开始,所以要加一
  753. month = ('00' + month).slice(-2);
  754. var day = ('00' + myDate.getDate()).slice(-2); //获取日
  755. var hours = ('00' + myDate.getHours()).slice(-2); //获取小时
  756. var minutes = ('00' + myDate.getMinutes()).slice(-2); //获取分
  757. var seconds = ('00' + myDate.getSeconds()).slice(-2); //获取秒
  758. return {
  759. year: year,
  760. month: month,
  761. day: day,
  762. hours: hours,
  763. minutes: minutes,
  764. seconds: seconds,
  765. }
  766. },
  767. getYear: function(key){
  768. var arr = [],
  769. now = new Date();
  770. var minYear = 1900;
  771. var maxYear = now.getFullYear() + 60;
  772. if(key){
  773. var minObj = layPicker.minMaxData[key].minObj;
  774. if(minObj && minObj.ymd){
  775. minYear = Number(minObj.ymd[0]);
  776. }
  777. var maxObj = layPicker.minMaxData[key].maxObj;
  778. if(maxObj && maxObj.ymd){
  779. maxYear = Number(maxObj.ymd[0]);
  780. }
  781. }
  782. for(var i = minYear; i <= maxYear; i++) {
  783. arr.push({
  784. name: i + '年',
  785. value: i
  786. });
  787. }
  788. return arr;
  789. },
  790. getMonth: function(result, key) {
  791. var year = result[0].value;
  792. var arr = [];
  793. var minMonth = 1;
  794. var maxMonth = 12;
  795. if(key){
  796. var minObj = layPicker.minMaxData[key].minObj;
  797. if(minObj && minObj.ymd){
  798. if(year == minObj.ymd[0]){
  799. minMonth = Number(minObj.ymd[1]);
  800. }else{
  801. var d1 = Number(year+''+result[1].value);
  802. var d2 = Number(minObj.ymd[0]+''+minObj.ymd[1]);
  803. if(d1 <= d2){
  804. minMonth = Number(minObj.ymd[1]);
  805. }
  806. }
  807. }
  808. var maxObj = layPicker.minMaxData[key].maxObj;
  809. if(maxObj && maxObj.ymd){
  810. if(year == maxObj.ymd[0]){
  811. maxMonth = Number(maxObj.ymd[1]);
  812. }else{
  813. var d1 = Number(year+''+result[1].value);
  814. var d2 = Number(maxObj.ymd[0]+''+maxObj.ymd[1]);
  815. if(d1 >= d2){
  816. maxMonth = Number(maxObj.ymd[1]);
  817. }
  818. }
  819. }
  820. }
  821. for(var i = minMonth; i <= maxMonth; i++) {
  822. var code = ('00' + i).slice(-2);
  823. arr.push({
  824. name: i + '月',
  825. value: code
  826. });
  827. }
  828. return arr;
  829. },
  830. getDay: function(result, key) {
  831. var year = result[0].value,
  832. month = result[1].value;
  833. var thisDate = new Date(Number(year), Number(month), 0);
  834. var maxDay = thisDate.getDate();
  835. var minDay = 1;
  836. if(key){
  837. var minObj = layPicker.minMaxData[key].minObj;
  838. if(minObj && minObj.ymd){
  839. if(year == minObj.ymd[0] && month == minObj.ymd[1]){
  840. minDay = Number(minObj.ymd[2]);
  841. }else{
  842. var d1 = Number(year+''+month+''+result[1].value);
  843. var d2 = Number(minObj.ymd[0]+''+minObj.ymd[1]+''+minObj.ymd[2]);
  844. if(d1 <= d2){
  845. minDay = Number(minObj.ymd[2]);
  846. }
  847. }
  848. }
  849. var maxObj = layPicker.minMaxData[key].maxObj;
  850. if(maxObj && maxObj.ymd){
  851. if(year == maxObj.ymd[0] && month == maxObj.ymd[1]){
  852. maxDay = Number(maxObj.ymd[2]);
  853. }else{
  854. var d1 = Number(year+''+month+''+result[1].value);
  855. var d2 = Number(maxObj.ymd[0]+''+maxObj.ymd[1]+''+maxObj.ymd[2]);
  856. if(d1 >= d2){
  857. maxDay = Number(maxObj.ymd[2]);
  858. }
  859. }
  860. }
  861. }
  862. var arr = [];
  863. for(var i = minDay; i <= maxDay; i++) {
  864. var code = ('00' + i).slice(-2);
  865. arr.push({
  866. name: i + '日',
  867. value: code
  868. });
  869. }
  870. return arr;
  871. },
  872. getHours: function(result, key, type) {
  873. var arr = [];
  874. var minHour = 0;
  875. var maxHour = 23;
  876. if(key){
  877. if(type){
  878. var minObj = layPicker.minMaxData[key].minObj;
  879. if(minObj && minObj.hms){
  880. minHour = Number(minObj.hms[0]);
  881. }
  882. var maxObj = layPicker.minMaxData[key].maxObj;
  883. if(maxObj && maxObj.hms){
  884. maxHour = Number(maxObj.hms[0]);
  885. }
  886. }else{
  887. var year = result[0].value,
  888. month = result[1].value,
  889. day = result[2].value;
  890. var minObj = layPicker.minMaxData[key].minObj;
  891. if(minObj && minObj.hms){
  892. if(minObj && minObj.ymd){
  893. var d1 = Number(year+''+month+''+day+''+minObj.hms[0]);
  894. var d2 = Number(minObj.ymd[0]+''+minObj.ymd[1]+''+minObj.ymd[2]+''+minObj.hms[0]);
  895. if(d1 <= d2){
  896. minHour = Number(minObj.hms[0]);
  897. }
  898. }else{
  899. minHour = Number(minObj.hms[0]);
  900. }
  901. }
  902. var maxObj = layPicker.minMaxData[key].maxObj;
  903. if(maxObj && maxObj.hms){
  904. if(maxObj && maxObj.ymd){
  905. var d1 = Number(year+''+month+''+day+''+maxObj.hms[0]);
  906. var d2 = Number(maxObj.ymd[0]+''+maxObj.ymd[1]+''+maxObj.ymd[2]+''+maxObj.hms[0]);
  907. if(d1 >= d2){
  908. maxHour = Number(maxObj.hms[0]);
  909. }
  910. }else{
  911. maxHour = Number(maxObj.hms[0]);
  912. }
  913. }
  914. }
  915. }
  916. for(var i = minHour; i <= maxHour; i++) {
  917. var value = ('00' + i).slice(-2);
  918. arr.push({
  919. name: value + '时',
  920. value: value
  921. })
  922. }
  923. return arr;
  924. },
  925. getMinutes: function(result, key, type) {
  926. var arr = [];
  927. var minMinute = 0;
  928. var maxMinute = 59;
  929. if(key){
  930. if(type){
  931. var hours = result[0].value;
  932. var minObj = layPicker.minMaxData[key].minObj;
  933. if(minObj && minObj.hms){
  934. var d1 = Number(hours +''+ minObj.hms[1]);
  935. var d2 = Number(minObj.hms[0] +''+ minObj.hms[1]);
  936. if(d1 <= d2){
  937. minMinute = Number(minObj.hms[1]);
  938. }
  939. }
  940. var maxObj = layPicker.minMaxData[key].maxObj;
  941. if(maxObj && maxObj.hms){
  942. var d1 = Number(hours +''+ maxObj.hms[1]);
  943. var d2 = Number(maxObj.hms[0] +''+ maxObj.hms[1]);
  944. if(d1 >= d2){
  945. maxMinute = Number(maxObj.hms[1]);
  946. }
  947. }
  948. }else{
  949. var year = result[0].value,
  950. month = result[1].value,
  951. day = result[2].value;
  952. hours = result[3].value;
  953. var minObj = layPicker.minMaxData[key].minObj;
  954. if(minObj && minObj.hms){
  955. if(minObj && minObj.ymd){
  956. var d1 = Number(year+''+month+''+day+''+hours+''+minObj.hms[1]);
  957. var d2 = Number(minObj.ymd[0]+''+minObj.ymd[1]+''+minObj.ymd[2]+''+minObj.hms[0]+''+minObj.hms[1]);
  958. if(d1 <= d2){
  959. minMinute = Number(minObj.hms[1]);
  960. }
  961. }else{
  962. minMinute = Number(minObj.hms[1]);
  963. }
  964. }
  965. var maxObj = layPicker.minMaxData[key].maxObj;
  966. if(maxObj && maxObj.hms){
  967. if(maxObj && maxObj.ymd){
  968. var d1 = Number(year+''+month+''+day+''+hours+''+maxObj.hms[1]);
  969. var d2 = Number(maxObj.ymd[0]+''+maxObj.ymd[1]+''+maxObj.ymd[2]+''+maxObj.hms[0]+''+maxObj.hms[1]);
  970. if(d1 >= d2){
  971. maxMinute = Number(maxObj.hms[1]);
  972. }
  973. }else{
  974. maxMinute = Number(maxObj.hms[1]);
  975. }
  976. }
  977. }
  978. }
  979. for(var i = minMinute; i <= maxMinute; i++) {
  980. var value = ('00' + i).slice(-2);
  981. arr.push({
  982. name: value + '分',
  983. value: value
  984. })
  985. }
  986. return arr;
  987. },
  988. getSeconds: function(result, key, type) {
  989. var arr = [];
  990. var minSecond = 0;
  991. var maxSecond = 59
  992. if(key){
  993. if(type){
  994. var hours = result[0].value;
  995. var minute = result[1].value;
  996. var minObj = layPicker.minMaxData[key].minObj;
  997. if(minObj && minObj.hms && minObj.hms.length > 2){
  998. var d1 = Number(hours +''+ minute+''+ minObj.hms[2]);
  999. var d2 = Number(minObj.hms[0] +''+ minObj.hms[1]+''+ minObj.hms[2]);
  1000. if(d1 <= d2){
  1001. minSecond = Number(minObj.hms[2]);
  1002. }
  1003. }
  1004. var maxObj = layPicker.minMaxData[key].maxObj;
  1005. if(maxObj && maxObj.hms && maxObj.hms.length > 2){
  1006. var d1 = Number(hours +''+ minute+''+ maxObj.hms[2]);
  1007. var d2 = Number(maxObj.hms[0] +''+ maxObj.hms[1]+''+ maxObj.hms[2]);
  1008. if(d1 >= d2){
  1009. maxSecond = Number(maxObj.hms[2]);
  1010. }
  1011. }
  1012. }else{
  1013. var year = result[0].value,
  1014. month = result[1].value,
  1015. day = result[2].value;
  1016. hours = result[3].value;
  1017. minute = result[4].value;
  1018. var minObj = layPicker.minMaxData[key].minObj;
  1019. if(minObj && minObj.hms){
  1020. if(minObj && minObj.ymd){
  1021. var d1 = Number(year+''+month+''+day+''+hours+''+minute+''+minObj.hms[2]);
  1022. var d2 = Number(minObj.ymd[0]+''+minObj.ymd[1]+''+minObj.ymd[2]+''+minObj.hms[0]+''+minObj.hms[1]+''+minObj.hms[2]);
  1023. if(d1 <= d2){
  1024. minSecond = Number(minObj.hms[2]);
  1025. }
  1026. }else{
  1027. minSecond = Number(minObj.hms[2]);
  1028. }
  1029. }
  1030. var maxObj = layPicker.minMaxData[key].maxObj;
  1031. if(maxObj && maxObj.hms){
  1032. if(maxObj && maxObj.ymd){
  1033. var d1 = Number(year+''+month+''+day+''+hours+''+minute+''+maxObj.hms[2]);
  1034. var d2 = Number(maxObj.ymd[0]+''+maxObj.ymd[1]+''+maxObj.ymd[2]+''+maxObj.hms[0]+''+maxObj.hms[1]+''+maxObj.hms[2]);
  1035. if(d1 >= d2){
  1036. maxSecond = Number(maxObj.hms[2]);
  1037. }
  1038. }else{
  1039. maxSecond = Number(maxObj.hms[2]);
  1040. }
  1041. }
  1042. }
  1043. }
  1044. for(var i = minSecond; i <= maxSecond; i++) {
  1045. var value = ('00' + i).slice(-2);
  1046. arr.push({
  1047. name: value + '秒',
  1048. value: value
  1049. })
  1050. }
  1051. return arr;
  1052. },
  1053. getLastDay: function(result){
  1054. var year = result[0].value,
  1055. month = result[1].value;
  1056. var thisDate = new Date(Number(year), Number(month), 0);
  1057. return thisDate.getDate();
  1058. },
  1059. getMinOrMaxDate: function(date){
  1060. if(!date){
  1061. return;
  1062. }
  1063. var arr = date.split(" ");
  1064. var obj = {};
  1065. if(arr.length > 0){
  1066. if(arr.length == 2){
  1067. obj.ymd = arr[0].split("-");
  1068. obj.hms = arr[1].split(":");
  1069. }else if(arr.length == 1 && date.indexOf(":") == -1){
  1070. obj.ymd = arr[0].split("-");
  1071. }else{
  1072. obj.hms = arr[0].split(":");
  1073. }
  1074. }
  1075. return obj;
  1076. },
  1077. }
  1078. $('body').on('click', '.tool-time', function () {
  1079. let elem = $(this);
  1080. let type = $(this).data('type');
  1081. let min = $(this).data('min');
  1082. let max = $(this).data('max');
  1083. if (typeof(type) == "undefined" || type === '') {
  1084. type = 'date';
  1085. }
  1086. if (typeof(min) == "undefined" || min === '') {
  1087. minDate = '1900-1-1';
  1088. }
  1089. if (typeof(max) == "undefined" || max === '') {
  1090. maxDate = '2099-1-1';
  1091. }
  1092. layPicker.init({
  1093. elem: elem, // 绑定元素
  1094. options: type, // 设置为日期选择器(日期选择器可设置:year、month、date、time、timesecond、datetime、datetimesecond),不设置默认取data作为选择值
  1095. onSuccess: function(index, elem){ // 渲染成功回调
  1096. layPicker.show(index);
  1097. /*
  1098. layPicker.setValue(index, [ // 赋值,以位置类推
  1099. {value: ''},
  1100. {value: ''},
  1101. {value: ''},
  1102. ])
  1103. */
  1104. },
  1105. onClear: function(index){ // 停止滚动触发:index是当前对象的标识, i 是当前滑动的对象,result是前面的值集
  1106. elem.val('');
  1107. layPicker.remove(index);
  1108. },
  1109. onConfirm: function(index, val, result){ // 点击确认回调
  1110. elem.val(val)
  1111. layPicker.remove(index);
  1112. },
  1113. onCancel: function(index){ // 点击取消回调
  1114. layPicker.remove(index);
  1115. },
  1116. onShade: function(index){ // 点击遮罩回调
  1117. layPicker.remove(index);
  1118. }
  1119. });
  1120. return false;
  1121. });
  1122. $('body').on('click', '.picker-oa', function () {
  1123. let elem = $(this);
  1124. let url = $(this).data('url');
  1125. let field = $(this).data('field');
  1126. if (typeof(url) == "undefined" || url === '') {
  1127. return false;
  1128. }
  1129. if (typeof(field) == "undefined" || field === '') {
  1130. field = 'title';
  1131. }
  1132. let loading;
  1133. $.ajax({
  1134. url: url,
  1135. type: 'get',
  1136. data:{limit:999999},
  1137. beforeSend:function(){
  1138. loading = layer.loading('加载中...');
  1139. },
  1140. success: function (e) {
  1141. if (e.code == 0) {
  1142. let pickerData = e.data;
  1143. layPicker.init({
  1144. elem: elem, // 绑定元素
  1145. data: [pickerData],
  1146. textField: field,
  1147. valueField: 'id',
  1148. search:true,
  1149. onSuccess: function(index, elem){ // 渲染成功回调
  1150. layPicker.show(index);
  1151. layPicker.setValue(index, [ // 赋值,以位置类推
  1152. {value: ''}
  1153. ])
  1154. },
  1155. onClear: function(index){
  1156. elem.val('');
  1157. elem.next().val('');
  1158. layPicker.remove(index);
  1159. },
  1160. onConfirm: function(index, val, result){ // 点击确认回调
  1161. if(result.length>0){
  1162. elem.val(result[0][field]);
  1163. elem.next().val(result[0].id);
  1164. }
  1165. layPicker.remove(index);
  1166. },
  1167. onCancel: function(index){ // 点击取消回调
  1168. layPicker.remove(index);
  1169. },
  1170. onShade: function(index){ // 点击遮罩回调
  1171. layPicker.remove(index);
  1172. }
  1173. });
  1174. }
  1175. },
  1176. complete:function(){
  1177. layer.close(loading);
  1178. }
  1179. })
  1180. return false;
  1181. });
  1182. exports('picker', layPicker);
  1183. });