common.ui.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /**
  2. * Compute the end date for productplan.
  3. *
  4. * @access public
  5. * @return void
  6. */
  7. function computeEndDate(e)
  8. {
  9. let delta = $('[name=delta]:checked').val();
  10. let beginDate = $('input[name=begin]').val();
  11. if(!beginDate || !delta) return;
  12. delta = currentDelta = parseInt(delta);
  13. beginDate = convertStringToDate(beginDate);
  14. if((delta == 7 || delta == 14) && (beginDate.getDay() == 1))
  15. {
  16. delta = (weekend == 2) ? (delta - 2) : (delta - 1);
  17. }
  18. let currentBeginDate = window.zui.formatDate(beginDate, 'yyyy-MM-dd');
  19. let endDate = formatDate(beginDate, delta - 1);
  20. $('[name=begin]').zui('datePicker').$.setValue(currentBeginDate);
  21. $('[name=end]').zui('datePicker').$.setValue(endDate);
  22. setTimeout(function(){$('[name=delta]').val(`${currentDelta}`)}, 0);
  23. }
  24. /**
  25. * Convert a date string like 2011-11-11 to date object in js.
  26. *
  27. * @param string $date
  28. * @access public
  29. * @return date
  30. */
  31. function convertStringToDate(dateString)
  32. {
  33. dateString = dateString.split('-');
  34. return new Date(dateString[0], dateString[1] - 1, dateString[2]);
  35. }
  36. /**
  37. * 给指定日期加上具体天数,并返回格式化后的日期.
  38. *
  39. * @param string dateString
  40. * @param int days
  41. * @access public
  42. * @return date
  43. */
  44. function formatDate(dateString, days)
  45. {
  46. const date = new Date(dateString);
  47. date.setDate(date.getDate() + days);
  48. const year = date.getFullYear();
  49. const month = String(date.getMonth() + 1).padStart(2, '0');
  50. const day = String(date.getDate()).padStart(2, '0');
  51. return `${year}-${month}-${day}`;
  52. }
  53. /**
  54. * Toggle date box.
  55. *
  56. * @access public
  57. * @return void
  58. */
  59. function toggleDateBox()
  60. {
  61. const beginPicker = $('#begin').zui('datePicker');
  62. if($('[name=future]').prop('checked'))
  63. {
  64. beginPicker.render({disabled: true});
  65. $('#end').attr('disabled', 'disabled').parents('.form-row').addClass('hidden');
  66. }
  67. else
  68. {
  69. beginPicker.render({disabled: false});
  70. $('#end').removeAttr('disabled').parents('.form-row').removeClass('hidden');
  71. }
  72. }
  73. /**
  74. * Load branches.
  75. *
  76. * @access public
  77. * @return void
  78. */
  79. function loadBranches(e)
  80. {
  81. let parentID = $(e.target).val();
  82. let currentBranches = $('select[name^=branch]').val() ? $('select[name^=branch]').val().toString() : '';
  83. $.get($.createLink('productplan', 'ajaxGetParentBranches', "productID=" + productID + "&parentID=" + parentID), function(data)
  84. {
  85. if(data)
  86. {
  87. data = JSON.parse(data);
  88. const $branchPicker = $('select[name^=branch]').zui('picker');
  89. $branchPicker.render({items: data, multiple: true});
  90. $branchPicker.$.setValue(currentBranches);
  91. }
  92. })
  93. }
  94. /**
  95. * Load title.
  96. *
  97. * @access public
  98. * @return void
  99. */
  100. function loadTitle(e)
  101. {
  102. if(parentPlanID) return;
  103. let branchIdList = $(e.target).val();
  104. if(!branchIdList) return;
  105. branchIdList = branchIdList.toString();
  106. $.get($.createLink('productplan', 'ajaxGetLast', "productID=" + productID + "&branch=" + branchIdList), function(data)
  107. {
  108. data = JSON.parse(data);
  109. let planTitle = data ? '(' + lastLang + ': ' + data.title + ')' : '';
  110. $('#lastTitleBox').text(planTitle);
  111. })
  112. }