timeRange.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. import {
  2. formatTime
  3. } from "../../utils/getTime.js"
  4. Component({
  5. options: {
  6. addGlobalClass: true
  7. },
  8. properties: {
  9. dateTypes: {
  10. type: Array,
  11. value: ["全部", "本年", "本季", "本月"]
  12. },
  13. dateType: {
  14. type: String,
  15. value: "本年"
  16. },
  17. onChange: {
  18. type: Function,
  19. },
  20. },
  21. lifetimes: {
  22. attached: function () {
  23. getApp().globalData.Language.getLanguagePackage(this)
  24. this.setData({
  25. actions: this.data.dateTypes.map(item => {
  26. return {
  27. name: getApp().globalData.Language.getMapText(item),
  28. value: item,
  29. color: item == this.data.dateType ? "#3874F6" : ""
  30. }
  31. })
  32. })
  33. this.setRange();
  34. }
  35. },
  36. data: {
  37. actionShow: false,
  38. whereType: {
  39. value: "begdate",
  40. begdate: formatTime(new Date(), "-").split(' ')[0].slice(0, 7),
  41. enddate: "",
  42. begTimestamp: new Date().getTime(),
  43. endTimestamp: "",
  44. },
  45. begdate: "",
  46. enddate: "",
  47. showTimePicker: false,
  48. },
  49. methods: {
  50. openActionSheet() {
  51. this.setData({
  52. actionShow: true
  53. })
  54. },
  55. confirmTimePicker() {
  56. let whereType = this.data.whereType,
  57. begdate = whereType.begdate,
  58. enddate = whereType.enddate;
  59. if (whereType.enddate == "") {
  60. whereType.value = "enddate";
  61. this.setData({
  62. whereType
  63. })
  64. wx.showToast({
  65. title: getApp().globalData.Language.getMapText("请选择结束时间"),
  66. icon: "none"
  67. })
  68. } else {
  69. this.setData({
  70. showTimePicker: false,
  71. begdate,
  72. enddate,
  73. actions: this.data.actions.map(item => {
  74. item.color = ""
  75. return item
  76. })
  77. })
  78. this.triggerEvent("onChange", {
  79. dateType: '',
  80. isAll: 99,
  81. begdate,
  82. enddate
  83. })
  84. }
  85. },
  86. openTimePicker() {
  87. this.setData({
  88. showTimePicker: true
  89. })
  90. },
  91. cancelWhereType() {
  92. this.setData({
  93. showTimePicker: false
  94. })
  95. },
  96. /* 日期选择器 */
  97. datetimeOnInput(event) {
  98. let type = event.currentTarget.dataset.name,
  99. whereType = this.data.whereType;
  100. if (type == "begdate") {
  101. whereType.begTimestamp = event.detail;
  102. whereType.begdate = formatTime(new Date(event.detail), "-").split(' ')[0].slice(0, 7);
  103. if (whereType.begTimestamp > whereType.endTimestamp) {
  104. whereType.engTimestamp = whereType.begTimestamp
  105. whereType.enddate = '';
  106. }
  107. } else {
  108. whereType.endTimestamp = event.detail;
  109. whereType.enddate = formatTime(new Date(event.detail), "-").split(' ')[0].slice(0, 7);
  110. }
  111. this.setData({
  112. whereType
  113. })
  114. },
  115. //切换日期类型
  116. changeDateType(e) {
  117. const {
  118. name
  119. } = e.target.dataset;
  120. this.setData({
  121. "whereType.value": name
  122. })
  123. },
  124. /* 周期选择器 */
  125. onSelect(event) {
  126. const {
  127. value
  128. } = event.detail;
  129. if (this.data.dateType == value) return this.onCancel();
  130. this.setData({
  131. dateType: value,
  132. actions: this.data.actions.map(item => {
  133. item.color = item.value == value ? "#3874F6" : "";
  134. item.loading = item.value == value ? true : false;
  135. return item
  136. })
  137. })
  138. this.setRange();
  139. this.triggerEvent("onChange", {
  140. dateType: value,
  141. isAll: this.data.dateType == "全部" ? 1 : 0,
  142. begdate: "",
  143. enddate: ""
  144. })
  145. },
  146. onCancel() {
  147. this.setData({
  148. actionShow: false,
  149. actions: this.data.actions.map(item => {
  150. item.loading = false;
  151. return item
  152. })
  153. })
  154. },
  155. setRange() {
  156. let dateType = this.data.dateType,
  157. whereType = {
  158. value: "begdate",
  159. begdate: formatTime(new Date(), "-").split(' ')[0].slice(0, 7),
  160. enddate: "",
  161. begTimestamp: new Date().getTime(),
  162. endTimestamp: "",
  163. },
  164. begdate = "",
  165. enddate = "";
  166. switch (dateType) {
  167. case '本年':
  168. begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-01";
  169. enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-12";
  170. whereType.begdate = begdate;
  171. whereType.enddate = enddate;
  172. break;
  173. case '本月':
  174. begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 7);
  175. enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 7);
  176. whereType.begdate = begdate;
  177. whereType.enddate = enddate;
  178. break;
  179. case '本季':
  180. begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-" + (Math.floor((new Date().getMonth() + 1) / 3) * 3 - 2);
  181. enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-" + (Math.floor((new Date().getMonth() + 1) / 3) * 3);
  182. whereType.begdate = begdate;
  183. whereType.enddate = enddate;
  184. break;
  185. default:
  186. break;
  187. }
  188. if (dateType != "全部") {
  189. whereType.begTimestamp = new Date(begdate + '-01').getTime();
  190. whereType.endTimestamp = new Date(enddate + '-30').getTime();
  191. }
  192. this.setData({
  193. whereType,
  194. begdate,
  195. enddate
  196. })
  197. }
  198. }
  199. })