step.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. layui.define(['layer', 'carousel'], function (exports) {
  2. var $ = layui.jquery;
  3. var layer = layui.layer;
  4. var carousel = layui.carousel;
  5. var renderDom = function (elem, stepItems, postion) {
  6. var stepDiv = '<div class="lay-step">';
  7. for (var i = 0; i < stepItems.length; i++) {
  8. stepDiv += '<div class="step-item">';
  9. if (i < (stepItems.length - 1)) {
  10. if (i < postion) {
  11. stepDiv += '<div class="step-item-tail"><i class="step-item-tail-done"></i></div>';
  12. } else {
  13. stepDiv += '<div class="step-item-tail"><i class=""></i></div>';
  14. }
  15. }
  16. var number = stepItems[i].number;
  17. if (!number) {
  18. number = i + 1;
  19. }
  20. if (i == postion) {
  21. stepDiv += '<div class="step-item-head step-item-head-active"><i class="layui-icon">' + number + '</i></div>';
  22. } else if (i < postion) {
  23. stepDiv += '<div class="step-item-head"><i class="layui-icon layui-icon-ok"></i></div>';
  24. } else {
  25. stepDiv += '<div class="step-item-head "><i class="layui-icon">' + number + '</i></div>';
  26. }
  27. var title = stepItems[i].title;
  28. var desc = stepItems[i].desc;
  29. var time = stepItems[i].time;
  30. if (title || desc || time) {
  31. stepDiv += '<div class="step-item-main">';
  32. if (title) {
  33. stepDiv += '<div class="step-item-main-title">' + title + '</div>';
  34. }
  35. if (desc) {
  36. stepDiv += '<div class="step-item-main-desc">' + desc + '</div>';
  37. }
  38. if (time) {
  39. stepDiv += '<div class="step-item-main-time">' + time + '</div>';
  40. }
  41. stepDiv += '</div>';
  42. }
  43. stepDiv += '</div>';
  44. }
  45. stepDiv += '</div>';
  46. $(elem).prepend(stepDiv);
  47. var bfb = 100 / stepItems.length;
  48. $('.step-item').css('width', bfb + '%');
  49. };
  50. var pearStep = {
  51. render: function (param) {
  52. param.indicator = 'none'; // 不显示指示器
  53. param.arrow = 'always'; // 始终显示箭头
  54. param.autoplay = false; // 关闭自动播放
  55. if (!param.stepWidth) {
  56. param.stepWidth = '400px';
  57. }
  58. carousel.render(param);
  59. var stepItems = param.stepItems;
  60. renderDom(param.elem, stepItems, 0);
  61. $('.lay-step').css('width', param.stepWidth);
  62. carousel.on('change(' + param.filter + ')', function (obj) {
  63. $(param.elem).find('.lay-step').remove();
  64. renderDom(param.elem, stepItems, obj.index);
  65. $('.lay-step').css('width', param.stepWidth);
  66. });
  67. $(param.elem).find('.layui-carousel-arrow').css('display', 'none');
  68. $(param.elem).css('background-color', 'transparent');
  69. },
  70. next: function (elem) {
  71. $(elem).find('.layui-carousel-arrow[lay-type=add]').trigger('click');
  72. },
  73. pre: function (elem) {
  74. $(elem).find('.layui-carousel-arrow[lay-type=sub]').trigger('click');
  75. }
  76. };
  77. exports('step', pearStep);
  78. });