Browse Source

改为时段查询且禁用未来日期

duwendi 1 year ago
parent
commit
1aa2d00afa

+ 12 - 1
src/assets/css/element_ui.css

@@ -78,6 +78,13 @@
78 78
   border-color: #19446E !important;
79 79
 }
80 80
 
81
+.el-input__inner {
82
+  background-color: #2d3744;
83
+}
84
+.el-picker-panel__footer {
85
+  background-color: #2d3744;
86
+}
87
+
81 88
 .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
82 89
   background: #2a2a2a;
83 90
 }
@@ -325,7 +332,7 @@ cur-select {
325 332
 }
326 333
 
327 334
 .el-input__icon {
328
-  line-height: 25px;
335
+  line-height: 40px;
329 336
 }
330 337
 
331 338
 .el-input__inner {
@@ -397,3 +404,7 @@ cur-select {
397 404
 .el-tabs__item {
398 405
   color: #bbc2d0
399 406
 }
407
+
408
+.el-date-table td.disabled div{
409
+  background-color: #858990;
410
+}

+ 1 - 0
src/pages/index/components/access_data_analysis.vue

@@ -22,6 +22,7 @@
22 22
           range-separator="至"
23 23
           start-placeholder="开始日期"
24 24
           value-format="yyyy-MM-dd"
25
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
25 26
           end-placeholder="结束日期">
26 27
         </el-date-picker>
27 28
       </el-form-item>

+ 1 - 0
src/pages/index/components/berth_peration_nalysis.vue

@@ -22,6 +22,7 @@
22 22
           range-separator="至"
23 23
           start-placeholder="开始日期"
24 24
           value-format="yyyy-MM-dd"
25
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
25 26
           end-placeholder="结束日期">
26 27
         </el-date-picker>
27 28
       </el-form-item>

+ 76 - 26
src/pages/index/components/berth_road.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="body-wrapper">
3
-    <el-form class="form-wrapper" :inline="true" :model="formInline1">
3
+    <el-form class="form-wrapper" :inline="true" :rules="formRules" ref="formInline1" :model="formInline1">
4 4
       <el-form-item label="行政区">
5 5
         <el-select clearable  v-model="formInline1.regionCode" placeholder="请选择" popper-class="cur-select">
6 6
           <el-option v-for="item in districtOptions"  :key="item.label" :label="item.label" :value="item.value"></el-option>
@@ -14,16 +14,25 @@
14 14
           <el-option v-for="item in carOptions" :key="item.parkId" :label="item.carParkName" :value="item.parkId"></el-option>
15 15
         </el-select>
16 16
       </el-form-item>
17
-      <el-form-item label="查询日期">
17
+      <el-form-item label="开始时间" prop="begin">
18 18
         <el-date-picker
19
-          clearable
20
-          v-model="formInline1.time"
21
-          type="daterange"
22
-          range-separator="至"
23
-          start-placeholder="开始日期"
24
-          value-format="yyyy-MM-dd"
25
-          end-placeholder="结束日期">
26
-        </el-date-picker>
19
+          v-model="formInline1.begin"
20
+          type="datetime"
21
+          placeholder="选择开始时间"
22
+          @change="validateTimeRange"
23
+          :picker-options="endPickerOptions"
24
+          value-format="yyyy-MM-dd HH:mm:ss"
25
+        ></el-date-picker>
26
+      </el-form-item>
27
+      <el-form-item label="结束时间" prop="end">
28
+        <el-date-picker
29
+          v-model="formInline1.end"
30
+          type="datetime"
31
+          placeholder="选择结束时间"
32
+          @change="validateTimeRange"
33
+          :picker-options="endPickerOptions"
34
+          value-format="yyyy-MM-dd HH:mm:ss"
35
+        ></el-date-picker>
27 36
       </el-form-item>
28 37
       <el-form-item>
29 38
         <el-button type="primary" @click="queryAll">查询</el-button>
@@ -136,6 +145,7 @@ import piechart from "@/components/pieChart";
136 145
 import linechart from "@/components/lineChart";
137 146
 import barchart from "@/components/barChart";
138 147
 import vtable from "@/components/vtableNew";
148
+import { Message } from 'element-ui';
139 149
 import api from "@/api/article_liao";
140 150
 import options from '@/util/options'
141 151
 
@@ -149,11 +159,19 @@ export default {
149 159
   },
150 160
   data() {
151 161
     return {
162
+      formRules: {
163
+        begin: [{ required: false, message: '请选择开始时间', trigger: 'blur' }],
164
+        end: [
165
+          { required: false, message: '请选择结束时间', trigger: 'blur' },
166
+          { validator: this.validateEndTime, trigger: 'blur' }
167
+        ]
168
+      },
152 169
       districtOptions: options.districtOptions,
153 170
       carOptions: [],
154 171
       formInline1: {
155 172
         parkId: '',
156
-        time: [],
173
+        begin: '',
174
+        end: '',
157 175
         regionCode: '',
158 176
         streetName: ''
159 177
       },
@@ -173,30 +191,62 @@ export default {
173 191
   },
174 192
   watch: {
175 193
 
194
+  },
195
+  computed: {
196
+    endPickerOptions() {
197
+      return {
198
+        disabledDate(time) {
199
+          // 禁止选择当前时间之后的日期和时间
200
+          return time.getTime() > Date.now();
201
+        }
202
+      };
203
+    }
176 204
   },
177 205
   methods: {
206
+    validateEndTime(rule, value, callback) {
207
+      if (this.formInline1.begin && this.formInline1.end) {
208
+        const startTimestamp = new Date(this.formInline1.begin).getTime();
209
+        const endTimestamp = new Date(value).getTime();
210
+        if (startTimestamp > endTimestamp) {
211
+          callback(new Error('结束时间不能早于开始时间'));
212
+        } else {
213
+          callback();
214
+        }
215
+      } else {
216
+        callback();
217
+      }
218
+    },
219
+    validateTimeRange() {
220
+      // 触发结束时间的验证
221
+      this.$refs['formInline1'].validateField('end');
222
+    },
178 223
     getParkDic() {
179 224
       api.parkDic().then(res => {
180 225
         this.carOptions = res.data || [];
181 226
       })
182 227
     },
183 228
     queryAll() {
184
-      let params = {...this.formInline1}
185
-      if (
186
-        this.formInline1.time && this.formInline1.time.length === 2 &&
187
-        this.formInline1.time[1] !== ""
188
-      ) {
189
-        this.formInline1.time[0] = this.formInline1.time[0].substring(0, 10) + " 00:00:00";
190
-        this.formInline1.time[1] = this.formInline1.time[1].substring(0, 10) + " 23:59:59";
191
-        params.begin= this.formInline1.time[0]
192
-        params.end = this.formInline1.time[1]
229
+      if (this.formInline1.begin || this.formInline1.end) {
230
+        this.$refs['formInline1'].validate((valid) => {
231
+          if (valid) {
232
+            let params = {...this.formInline1}
233
+            this.dashBerthRoadStat1(params)
234
+            this.dashBerthRoadStat2(params)
235
+            this.dashBerthRoadStat3(params)
236
+            this.dashBerthRoadStat4(params)
237
+            this.dashBerthRoadStat5(params)
238
+          } else {
239
+            Message.error('结束时间不能早于开始时间!')
240
+          }
241
+        });
242
+      } else {
243
+        let params = {...this.formInline1}
244
+        this.dashBerthRoadStat1(params)
245
+        this.dashBerthRoadStat2(params)
246
+        this.dashBerthRoadStat3(params)
247
+        this.dashBerthRoadStat4(params)
248
+        this.dashBerthRoadStat5(params)
193 249
       }
194
-      delete params.time
195
-      this.dashBerthRoadStat1(params)
196
-      this.dashBerthRoadStat2(params)
197
-      this.dashBerthRoadStat3(params)
198
-      this.dashBerthRoadStat4(params)
199
-      this.dashBerthRoadStat5(params)
200 250
     },
201 251
     lineTooltipFormat1(params) {
202 252
       const data = params[0].data;

+ 74 - 26
src/pages/index/components/berth_road_out.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="body-wrapper">
3
-    <el-form class="form-wrapper" :inline="true" :model="formInline1">
3
+    <el-form class="form-wrapper" :inline="true" :rules="formRules" ref="formInline1" :model="formInline1">
4 4
       <el-form-item label="行政区">
5 5
         <el-select clearable  v-model="formInline1.regionCode" placeholder="请选择" popper-class="cur-select">
6 6
           <el-option v-for="item in districtOptions"  :key="item.label" :label="item.label" :value="item.value"></el-option>
@@ -14,16 +14,23 @@
14 14
           <el-option v-for="item in carOptions" :key="item.parkId" :label="item.carParkName" :value="item.parkId"></el-option>
15 15
         </el-select>
16 16
       </el-form-item>
17
-      <el-form-item label="查询日期">
17
+      <el-form-item label="开始时间" prop="begin">
18 18
         <el-date-picker
19
-          clearable
20
-          v-model="formInline1.time"
21
-          type="daterange"
22
-          range-separator="至"
23
-          start-placeholder="开始日期"
24
-          value-format="yyyy-MM-dd"
25
-          end-placeholder="结束日期">
26
-        </el-date-picker>
19
+          v-model="formInline1.begin"
20
+          type="datetime"
21
+          placeholder="选择开始时间"
22
+          :picker-options="endPickerOptions"
23
+          value-format="yyyy-MM-dd HH:mm:ss"
24
+        ></el-date-picker>
25
+      </el-form-item>
26
+      <el-form-item label="结束时间" prop="end">
27
+        <el-date-picker
28
+          v-model="formInline1.end"
29
+          type="datetime"
30
+          placeholder="选择结束时间"
31
+          :picker-options="endPickerOptions"
32
+          value-format="yyyy-MM-dd HH:mm:ss"
33
+        ></el-date-picker>
27 34
       </el-form-item>
28 35
       <el-form-item>
29 36
         <el-button type="primary" @click="queryAll">查询</el-button>
@@ -138,6 +145,7 @@ import barchart from "@/components/barChart";
138 145
 import vtable from "@/components/vtableNew";
139 146
 import api from "@/api/article_liao";
140 147
 import options from '@/util/options'
148
+import {Message} from "element-ui";
141 149
 
142 150
 export default {
143 151
   components: {
@@ -148,11 +156,19 @@ export default {
148 156
   },
149 157
   data() {
150 158
     return {
159
+      formRules: {
160
+        begin: [{ required: false, message: '请选择开始时间', trigger: 'blur' }],
161
+        end: [
162
+          { required: false, message: '请选择结束时间', trigger: 'blur' },
163
+          { validator: this.validateEndTime, trigger: 'blur' }
164
+        ]
165
+      },
151 166
       districtOptions: options.districtOptions,
152 167
       carOptions: [],
153 168
       formInline1: {
154 169
         parkId: '',
155
-        time: [],
170
+        begin: '',
171
+        end: '',
156 172
         regionCode: '',
157 173
         streetName: ''
158 174
       },
@@ -173,30 +189,62 @@ export default {
173 189
   },
174 190
   watch: {
175 191
 
192
+  },
193
+  computed: {
194
+    endPickerOptions() {
195
+      return {
196
+        disabledDate(time) {
197
+          // 禁止选择当前时间之后的日期和时间
198
+          return time.getTime() > Date.now();
199
+        }
200
+      };
201
+    }
176 202
   },
177 203
   methods: {
204
+    validateEndTime(rule, value, callback) {
205
+      if (this.formInline1.begin && this.formInline1.end) {
206
+        const startTimestamp = new Date(this.formInline1.begin).getTime();
207
+        const endTimestamp = new Date(value).getTime();
208
+        if (startTimestamp > endTimestamp) {
209
+          callback(new Error('结束时间不能早于开始时间'));
210
+        } else {
211
+          callback();
212
+        }
213
+      } else {
214
+        callback();
215
+      }
216
+    },
217
+    validateTimeRange() {
218
+      // 触发结束时间的验证
219
+      this.$refs['formInline1'].validateField('end');
220
+    },
178 221
     getParkDic() {
179 222
       api.parkDic().then(res => {
180 223
         this.carOptions = res.data || [];
181 224
       })
182 225
     },
183 226
     queryAll() {
184
-      let params = {...this.formInline1}
185
-      if (
186
-        this.formInline1.time && this.formInline1.time.length === 2 &&
187
-        this.formInline1.time[1] !== ""
188
-      ) {
189
-        this.formInline1.time[0] = this.formInline1.time[0].substring(0, 10) + " 00:00:00";
190
-        this.formInline1.time[1] = this.formInline1.time[1].substring(0, 10) + " 23:59:59";
191
-        params.begin= this.formInline1.time[0]
192
-        params.end = this.formInline1.time[1]
227
+      if (this.formInline1.begin || this.formInline1.end) {
228
+        this.$refs['formInline1'].validate((valid) => {
229
+          if (valid) {
230
+            let params = {...this.formInline1}
231
+            this.dashBertRroadOutStat1(params)
232
+            this.dashBertRroadOutStat2(params)
233
+            this.dashBertRroadOutStat3(params)
234
+            this.dashBertRroadOutStat4(params)
235
+            this.dashBertRroadOutStat5(params)
236
+          } else {
237
+            Message.error('结束时间不能早于开始时间!')
238
+          }
239
+        });
240
+      } else {
241
+        let params = {...this.formInline1}
242
+        this.dashBertRroadOutStat1(params)
243
+        this.dashBertRroadOutStat2(params)
244
+        this.dashBertRroadOutStat3(params)
245
+        this.dashBertRroadOutStat4(params)
246
+        this.dashBertRroadOutStat5(params)
193 247
       }
194
-      delete params.time
195
-      this.dashBertRroadOutStat1(params)
196
-      this.dashBertRroadOutStat2(params)
197
-      this.dashBertRroadOutStat3(params)
198
-      this.dashBertRroadOutStat4(params)
199
-      this.dashBertRroadOutStat5(params)
200 248
     },
201 249
     lineTooltipFormat1(params) {
202 250
       const data = params[0].data;

+ 1 - 0
src/pages/index/components/berths_information.vue

@@ -27,6 +27,7 @@
27 27
           range-separator="至"
28 28
           start-placeholder="开始日期"
29 29
           value-format="yyyy-MM-dd"
30
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
30 31
           end-placeholder="结束日期">
31 32
         </el-date-picker>
32 33
       </el-form-item>

+ 1 - 0
src/pages/index/components/berths_revenue.vue

@@ -28,6 +28,7 @@
28 28
           range-separator="至"
29 29
           start-placeholder="开始日期"
30 30
           value-format="yyyy-MM-dd"
31
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
31 32
           end-placeholder="结束日期">
32 33
         </el-date-picker>
33 34
       </el-form-item>

+ 1 - 0
src/pages/index/components/berths_usage.vue

@@ -27,6 +27,7 @@
27 27
           range-separator="至"
28 28
           start-placeholder="开始日期"
29 29
           value-format="yyyy-MM-dd"
30
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
30 31
           end-placeholder="结束日期">
31 32
         </el-date-picker>
32 33
       </el-form-item>

+ 1 - 0
src/pages/index/components/business_conditions.vue

@@ -37,6 +37,7 @@
37 37
           range-separator="至"
38 38
           start-placeholder="开始日期"
39 39
           value-format="yyyy-MM-dd"
40
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
40 41
           end-placeholder="结束日期">
41 42
         </el-date-picker>
42 43
       </el-form-item>

+ 1 - 0
src/pages/index/components/charge_business_analysis.vue

@@ -27,6 +27,7 @@
27 27
           range-separator="至"
28 28
           start-placeholder="开始日期"
29 29
           value-format="yyyy-MM-dd"
30
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
30 31
           end-placeholder="结束日期">
31 32
         </el-date-picker>
32 33
       </el-form-item>

+ 1 - 0
src/pages/index/components/customer_complaint.vue

@@ -73,6 +73,7 @@
73 73
           range-separator="至"
74 74
           start-placeholder="开始日期"
75 75
           value-format="yyyy-MM-dd"
76
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
76 77
           end-placeholder="结束日期">
77 78
         </el-date-picker>
78 79
       </el-form-item>

+ 1 - 0
src/pages/index/components/operation_log.vue

@@ -21,6 +21,7 @@
21 21
               range-separator="-"
22 22
               value-format="yyyy-MM-dd HH:mm:ss"
23 23
               start-placeholder="开始日期"
24
+              :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
24 25
               end-placeholder="结束日期">
25 26
             </el-date-picker>
26 27
           </el-form-item>

+ 1 - 0
src/pages/index/components/parking_analysis_report.vue

@@ -22,6 +22,7 @@
22 22
               range-separator="-"
23 23
               value-format="yyyy-MM-dd HH:mm:ss"
24 24
               start-placeholder="开始日期"
25
+              :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
25 26
               end-placeholder="结束日期">
26 27
             </el-date-picker>
27 28
           </el-form-item>

+ 1 - 0
src/pages/index/components/parking_operate.vue

@@ -22,6 +22,7 @@
22 22
           range-separator="至"
23 23
           start-placeholder="开始日期"
24 24
           value-format="yyyy-MM-dd"
25
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
25 26
           end-placeholder="结束日期">
26 27
         </el-date-picker>
27 28
       </el-form-item>

+ 1 - 0
src/pages/index/components/vehicle_violations.vue

@@ -22,6 +22,7 @@
22 22
           range-separator="至"
23 23
           start-placeholder="开始日期"
24 24
           value-format="yyyy-MM-dd"
25
+          :picker-options="{disabledDate: (time) => time.getTime() > Date.now()}"
25 26
           end-placeholder="结束日期">
26 27
         </el-date-picker>
27 28
       </el-form-item>