Browse Source

考虑粒度

xiaohaizhao 6 months ago
parent
commit
d913d6e2cc

+ 37 - 31
components/timeRange/timeRange.js

@@ -17,6 +17,10 @@ Component({
         onChange: {
             type: Function,
         },
+        grading: {
+            type: String,
+            value: "year-month"
+        }
     },
     lifetimes: {
         attached: function () {
@@ -28,7 +32,8 @@ Component({
                         value: item,
                         color: item == this.data.dateType ? "#3874F6" : ""
                     }
-                })
+                }),
+                "whereType.begdate": formatTime(new Date(), "-").split(' ')[0].slice(0, this.data.grading === "year-month" ? 7 : 10),
             })
             this.setRange();
         }
@@ -37,7 +42,6 @@ Component({
         actionShow: false,
         whereType: {
             value: "begdate",
-            begdate: formatTime(new Date(), "-").split(' ')[0].slice(0, 7),
             enddate: "",
             begTimestamp: new Date().getTime(),
             endTimestamp: "",
@@ -96,21 +100,22 @@ Component({
         /* 日期选择器 */
         datetimeOnInput(event) {
             let type = event.currentTarget.dataset.name,
-                whereType = this.data.whereType;
+            whereType = this.data.whereType,
+            grading = this.data.grading || "year-month"; // 获取粒度,默认值为 "year-month"
             if (type == "begdate") {
-                whereType.begTimestamp = event.detail;
-                whereType.begdate = formatTime(new Date(event.detail), "-").split(' ')[0].slice(0, 7);
-                if (whereType.begTimestamp > whereType.endTimestamp) {
-                    whereType.engTimestamp = whereType.begTimestamp
-                    whereType.enddate = '';
-                }
+            whereType.begTimestamp = event.detail;
+            whereType.begdate = formatTime(new Date(event.detail), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
+            if (whereType.begTimestamp > whereType.endTimestamp) {
+                whereType.endTimestamp = whereType.begTimestamp;
+                whereType.enddate = '';
+            }
             } else {
-                whereType.endTimestamp = event.detail;
-                whereType.enddate = formatTime(new Date(event.detail), "-").split(' ')[0].slice(0, 7);
+            whereType.endTimestamp = event.detail;
+            whereType.enddate = formatTime(new Date(event.detail), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
             }
             this.setData({
-                whereType
-            })
+            whereType
+            });
         },
         //切换日期类型
         changeDateType(e) {
@@ -154,9 +159,10 @@ Component({
         },
         setRange() {
             let dateType = this.data.dateType,
+                grading = this.data.grading, // 获取粒度
                 whereType = {
                     value: "begdate",
-                    begdate: formatTime(new Date(), "-").split(' ')[0].slice(0, 7),
+                    begdate: formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10),
                     enddate: "",
                     begTimestamp: new Date().getTime(),
                     endTimestamp: "",
@@ -166,44 +172,44 @@ Component({
             const currentMonth = new Date().getMonth() + 1;
             switch (dateType) {
                 case '本年':
-                    begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-01";
-                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-12";
+                    begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + (grading === "year-month" ? "-01" : "-01-01");
+                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + (grading === "year-month" ? "-12" : "-12-31");
                     whereType.begdate = begdate;
                     whereType.enddate = enddate;
                     break;
                 case '本月':
-                    begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 7);
-                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 7);
+                    begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
+                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
                     whereType.begdate = begdate;
                     whereType.enddate = enddate;
                     break;
                 case '本季':
-                    begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-" + (Math.floor((new Date().getMonth() + 1) / 3) * 3 - 2);
-                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-" + (Math.floor((new Date().getMonth() + 1) / 3) * 3);
+                    begdate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-" + (Math.floor((new Date().getMonth() + 1) / 3) * 3 - 2) + (grading === "year-month" ? "" : "-01");
+                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 4) + "-" + (Math.floor((new Date().getMonth() + 1) / 3) * 3) + (grading === "year-month" ? "" : "-30");
                     whereType.begdate = begdate;
                     whereType.enddate = enddate;
                     break;
                 case '近一年':
-                    begdate = formatTime(new Date(new Date().getFullYear() - 1, new Date().getMonth(), 1), "-").split(' ')[0].slice(0, 7);
-                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 7);
+                    begdate = formatTime(new Date(new Date().getFullYear() - 1, new Date().getMonth(), 1), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
+                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
                     whereType.begdate = begdate;
                     whereType.enddate = enddate;
                     break;
                 case '近三个月':
-                    begdate = formatTime(new Date(new Date().getFullYear(), new Date().getMonth() - 3, 1), "-").split(' ')[0].slice(0, 7);
-                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 7);
+                    begdate = formatTime(new Date(new Date().getFullYear(), new Date().getMonth() - 3, 1), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
+                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
                     whereType.begdate = begdate;
                     whereType.enddate = enddate;
                     break;
                 case '近九个月':
-                    begdate = formatTime(new Date(new Date().getFullYear(), currentMonth - 9 - 1, 1), "-").split(' ')[0].slice(0, 7);
-                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 7);
+                    begdate = formatTime(new Date(new Date().getFullYear(), currentMonth - 9 - 1, 1), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
+                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
                     whereType.begdate = begdate;
                     whereType.enddate = enddate;
                     break;
                 case '近六个月':
-                    begdate = formatTime(new Date(new Date().getFullYear(), currentMonth - 6 - 1, 1), "-").split(' ')[0].slice(0, 7);
-                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, 7);
+                    begdate = formatTime(new Date(new Date().getFullYear(), currentMonth - 6 - 1, 1), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
+                    enddate = formatTime(new Date(), "-").split(' ')[0].slice(0, grading === "year-month" ? 7 : 10);
                     whereType.begdate = begdate;
                     whereType.enddate = enddate;
                     break;
@@ -211,14 +217,14 @@ Component({
                     break;
             }
             if (dateType != "全部") {
-                whereType.begTimestamp = new Date(begdate + '-01').getTime();
-                whereType.endTimestamp = new Date(enddate + '-30').getTime();
+                whereType.begTimestamp = new Date(begdate + (grading === "year-month" ? '-01' : '')).getTime();
+                whereType.endTimestamp = new Date(enddate + (grading === "year-month" ? '-30' : '')).getTime();
             }
             this.setData({
                 whereType,
                 begdate,
                 enddate
-            })
+            });
         }
     }
 })

+ 2 - 2
components/timeRange/timeRange.wxml

@@ -35,8 +35,8 @@
         <text catchtap="confirmTimePicker">{{language['确定']||'确定'}}</text>
     </view>
     <block wx:if="{{showTimePicker}}">
-        <van-datetime-picker wx:if="{{whereType.value=='begdate'}}" show-toolbar='{{false}}' type="year-month" value="{{  whereType.begTimestamp }}" data-name='begdate' bind:input="datetimeOnInput" />
-        <van-datetime-picker wx:else show-toolbar='{{false}}' type="year-month" value="{{ whereType.endTimestamp ||  whereType.begTimestamp }}" minDate='{{whereType.begTimestamp}}' data-name='enddate' bind:input="datetimeOnInput" />
+        <van-datetime-picker wx:if="{{whereType.value=='begdate'}}" show-toolbar='{{false}}' type="{{grading}}" value="{{  whereType.begTimestamp }}" data-name='begdate' bind:input="datetimeOnInput" />
+        <van-datetime-picker wx:else show-toolbar='{{false}}' type="{{grading}}" value="{{ whereType.endTimestamp ||  whereType.begTimestamp }}" minDate='{{whereType.begTimestamp}}' data-name='enddate' bind:input="datetimeOnInput" />
     </block>
 </van-action-sheet>
 <van-action-sheet show="{{  actionShow }}" actions="{{ actions }}" bind:select='onSelect' bind:cancel='onCancel' bind:click-overlay='onCancel' cancel-text="{{language['取消']||'取消'}}" />

+ 1 - 1
salesPanel/salesHourglass/index.wxml

@@ -10,7 +10,7 @@
 </view>
 <Yl_ListBox id='ListBox' pullDown='{{false}}' bind:getlist='getList'>
 	<view class="analysis" style="padding: 0;margin:0;">
-		<timeRange id='TimeRange' dateTypes='{{dateTypes}}' dateType='{{content.dateType}}'
+		<timeRange id='TimeRange' grading='date' dateTypes='{{dateTypes}}' dateType='{{content.dateType}}'
 			bind:onChange='changeDate' />
 		<view style="padding-left: 40rpx;">
 			<checkbox-group bindchange="onCheckboxChange" style="display: flex; align-items: center;">