DateRange.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/2/28
  6. * Time: 上午9:38
  7. */
  8. namespace app\common\helpers;
  9. class DateRange
  10. {
  11. /**
  12. * 【表单控件】: 范围日期选择器
  13. * @param string $name 表单input名称
  14. * @param array $value 表单input值
  15. * array('start' => 开始日期,'end' => 结束日期)
  16. * @param boolean $time 是否显示时间
  17. * @return string
  18. */
  19. public static function tplFormFieldDateRange($name, $value = array(), $time = false) {
  20. $s = '';
  21. if (empty($time) && !defined('TPL_INIT_DATERANGE_DATE')) {
  22. $s = '
  23. <script type="text/javascript">
  24. require(["daterangepicker"], function($){
  25. $(function(){
  26. $(".daterange.daterange-date").each(function(){
  27. var elm = this;
  28. $(this).daterangepicker({
  29. startDate: $(elm).prev().prev().val(),
  30. endDate: $(elm).prev().val(),
  31. format: "YYYY-MM-DD"
  32. }, function(start, end){
  33. $(elm).find(".date-title").html(start.toDateStr() + " 至 " + end.toDateStr());
  34. $(elm).prev().prev().val(start.toDateStr());
  35. $(elm).prev().val(end.toDateStr());
  36. });
  37. });
  38. });
  39. });
  40. </script>
  41. ';
  42. define('TPL_INIT_DATERANGE_DATE', true);
  43. }
  44. if (!empty($time) && !defined('TPL_INIT_DATERANGE_TIME')) {
  45. $s = '
  46. <script type="text/javascript">
  47. require(["daterangepicker"], function($){
  48. $(function(){
  49. $(".daterange.daterange-time").each(function(){
  50. var elm = this;
  51. $(this).daterangepicker({
  52. startDate: $(elm).prev().prev().val(),
  53. endDate: $(elm).prev().val(),
  54. format: "YYYY-MM-DD HH:mm",
  55. timePicker: true,
  56. timePicker12Hour : false,
  57. timePickerIncrement: 1,
  58. minuteStep: 1
  59. }, function(start, end){
  60. $(elm).find(".date-title").html(start.toDateTimeStr() + " 至 " + end.toDateTimeStr());
  61. $(elm).prev().prev().val(start.toDateTimeStr());
  62. $(elm).prev().val(end.toDateTimeStr());
  63. });
  64. });
  65. });
  66. });
  67. </script>
  68. ';
  69. define('TPL_INIT_DATERANGE_TIME', true);
  70. }
  71. if (isset($value['starttime']) && isset($value['start'])) {
  72. if($value['start']) {
  73. $value['starttime'] = empty($time) ? date('Y-m-d',strtotime($value['start'])) : date('Y-m-d H:i',strtotime($value['start']));
  74. }
  75. $value['starttime'] = empty($value['starttime']) ? (empty($time) ? date('Y-m-d') : date('Y-m-d H:i') ): $value['starttime'];
  76. } else {
  77. $value['starttime'] = '请选择';
  78. }
  79. if (isset($value['endtime']) && isset($value['end'])) {
  80. if($value['end']) {
  81. $value['endtime'] = empty($time) ? date('Y-m-d',strtotime($value['end'])) : date('Y-m-d H:i',strtotime($value['end']));
  82. }
  83. $value['endtime'] = empty($value['endtime']) ? $value['starttime'] : $value['endtime'];
  84. } else {
  85. $value['endtime'] = '请选择';
  86. }
  87. $s .= '
  88. <input name="'.$name . '[start]'.'" type="hidden" value="'. $value['starttime'].'" />
  89. <input name="'.$name . '[end]'.'" type="hidden" value="'. $value['endtime'].'" />
  90. <button class="btn btn-info daterange '.(!empty($time) ? 'daterange-time' : 'daterange-date').'" type="button"><span class="date-title">'.$value['starttime'].' 至 '.$value['endtime'].'</span> <i class="fa fa-calendar"></i></button>
  91. ';
  92. return $s;
  93. }
  94. /**
  95. * 【表单控件】: 日期选择器
  96. * @param string $name 表单input名称
  97. * @param array $value 表单input值
  98. * array('start' => 开始日期,'end' => 结束日期)
  99. * @param boolean $time 是否显示时间
  100. * @return string
  101. */
  102. public static function tplFormFieldDate($name, $value = array(), $time = false) {
  103. $s = '';
  104. if (empty($time) && !defined('TPL_INIT_DATERANGE_DATE')) {
  105. $s = '
  106. <script type="text/javascript">
  107. require(["daterangepicker"], function($){
  108. $(function(){
  109. $(".daterange.daterange-date").each(function(){
  110. var elm = this;
  111. $(this).daterangepicker({
  112. startDate: $(elm).prev().prev().val(),
  113. format: "YYYY-MM-DD"
  114. }, function(start){
  115. $(elm).find(".date-title").html(start.toDateStr());
  116. $(elm).prev().prev().val(start.toDateStr());
  117. });
  118. });
  119. });
  120. });
  121. </script>
  122. ';
  123. define('TPL_INIT_DATERANGE_DATE', true);
  124. }
  125. if (!empty($time) && !defined('TPL_INIT_DATERANGE_TIME')) {
  126. $s = '
  127. <script type="text/javascript">
  128. require(["daterangepicker"], function($){
  129. $(function(){
  130. $(".daterange.daterange-time").each(function(){
  131. var elm = this;
  132. $(this).daterangepicker({
  133. startDate: $(elm).prev().prev().val(),
  134. endDate: $(elm).prev().val(),
  135. format: "YYYY-MM-DD HH:mm",
  136. timePicker: true,
  137. timePicker12Hour : false,
  138. timePickerIncrement: 1,
  139. minuteStep: 1
  140. }, function(start, end){
  141. $(elm).find(".date-title").html(start.toDateTimeStr() + " 至 " + end.toDateTimeStr());
  142. $(elm).prev().prev().val(start.toDateTimeStr());
  143. $(elm).prev().val(end.toDateTimeStr());
  144. });
  145. });
  146. });
  147. });
  148. </script>
  149. ';
  150. define('TPL_INIT_DATERANGE_TIME', true);
  151. }
  152. if (isset($value['starttime']) && isset($value['start'])) {
  153. if($value['start']) {
  154. $value['starttime'] = empty($time) ? date('Y-m-d',strtotime($value['start'])) : date('Y-m-d H:i',strtotime($value['start']));
  155. }
  156. $value['starttime'] = empty($value['starttime']) ? (empty($time) ? date('Y-m-d') : date('Y-m-d H:i') ): $value['starttime'];
  157. } else {
  158. $value['starttime'] = '请选择';
  159. }
  160. $s .= '
  161. <input name="'.$name . '[start]'.'" type="hidden" value="'. $value['starttime'].'" />
  162. <input name="'.$name . '[end]'.'" type="hidden" value="'. $value['endtime'].'" />
  163. <button class="btn btn-info daterange '.(!empty($time) ? 'daterange-time' : 'daterange-date').'" type="button"><span class="date-title">'.$value['starttime'].'</span> <i class="fa fa-calendar"></i></button>
  164. ';
  165. return $s;
  166. }
  167. }