vbea 3 tahun lalu
induk
melakukan
17aea5c06a
2 mengubah file dengan 59 tambahan dan 11 penghapusan
  1. 4 0
      Strides-APP/app/pages/home/Home.js
  2. 55 11
      Strides-Admin/src/views/Reports.vue

+ 4 - 0
Strides-APP/app/pages/home/Home.js

@@ -228,6 +228,10 @@ export default class HomePage extends Component {
     });
   }
 
+  /**
+   * 获取定位数据
+   * @param {*} again
+   */
   infoGeoLocation(again) {
     if (this.state.mapReady) {
       navigator.geolocation.getCurrentPosition(location => {

+ 55 - 11
Strides-Admin/src/views/Reports.vue

@@ -11,7 +11,7 @@
           <el-form-item
             label="Report Type:"
             class="row-item">
-            <el-select v-model="reportFilter.reportType">
+            <el-select v-model="reportFilter.reportType" @change="changeReportType">
               <el-option
                 v-for="reportType in reportTypeOptions"
                 :label="reportType.name"
@@ -21,7 +21,7 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item label="Service Provider:" v-if="reportFilter.reportType !== 'MTU' && reportFilter.reportType !== 'MSUR'">
+          <el-form-item label="Service Provider:" v-if="reportFilter.reportType !== 'MTU' && reportFilter.reportType !== 'MSUR' && reportFilter.reportType !== 'MAF'">
             <el-select v-model="reportFilter.providerPk">
               <el-option
                 v-for="serviceProvider in serviceProviderOptions"
@@ -31,7 +31,7 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="Site:" v-if="reportFilter.reportType == 'MSUR'">
+          <el-form-item label="Site:" v-if="reportFilter.reportType == 'MSUR' || reportFilter.reportType == 'MAF'">
             <el-select
               class="add-text"
               filterable
@@ -51,29 +51,38 @@
         <div class="row">
           <el-form-item
             label="Month:"
-            class="row-item">
+            class="row-item"
+            v-if="reportFilter.reportType != 'MAF'">
             <el-select v-model="reportFilter.month">
               <el-option
                 v-for="month in monthOptions"
                 :label="month.name"
                 :value="month.value"
-                :key="month.value"
-              ></el-option>
+                :key="month.value"/>
             </el-select>
           </el-form-item>
-
           <el-form-item
             label="Year:"
-            class="row-item">
+            class="row-item"
+            v-if="reportFilter.reportType != 'MAF'">
             <el-date-picker
               v-model="reportFilter.year"
               format="yyyy"
               value-format="yyyy"
               type="year"
-              :clearable="false"
-            />
+              :clearable="false"/>
+          </el-form-item>
+          <el-form-item
+            label="Date Range:"
+            class="row-item"
+            v-if="reportFilter.reportType == 'MAF'">
+            <el-date-picker
+              v-model="dateRange"
+              type="daterange"
+              value-format="yyyy-MM-dd"
+              start-placeholder="Start Date"
+              end-placeholder="End Date"/>
           </el-form-item>
-
           <el-button
             class="filter-item generate-button"
             v-waves
@@ -201,6 +210,7 @@ export default {
     return {
       loading: false,
       regenbtn: false,
+      dateRange: [],
       siteOptions: [],
       reportTypeOptions: [],
       serviceProviderOptions: [],
@@ -233,11 +243,45 @@ export default {
         this.loading = false
       })
     },
+    changeReportType() {
+      this.getSiteOptions("")
+    },
+    validate(isGen) {
+      var valid = true;
+      if (this.reportFilter.reportType == 'MAF') {
+        if (this.dateRange.length == 2) {
+          this.reportFilter.dateStart = this.dateRange[0]
+          this.reportFilter.dateEnd = this.dateRange[1]
+        } else {
+          this.$message({
+            type: 'error',
+            message: "Please select date range"
+          });
+          valid = false;
+        }
+      }
+      if (this.reportFilter.reportType == 'MSUR' || this.reportFilter.reportType == 'MAF') {
+        if (!this.reportFilter.sitePk && isGen) {
+          this.$message({
+            type: 'error',
+            message: "Please select a site"
+          });
+          valid = false;
+        }
+      }
+      return valid;
+    },
     handleGenerateReport() {
+      if (!this.validate()) {
+        return;
+      }
       this.loading = true
       this.getReportsPages()
     },
     async reGenerateReport() {
+      if (!this.validate(true)) {
+        return;
+      }
       this.regenbtn = true;
       this.loading = true;
       generateMonthlyExcel(this.reportFilter).then(res => {