yijianjun 1 месяц назад
Родитель
Сommit
90f719b4e1

+ 54 - 8
src/views/modules/load-forecasting-v2/components/add-or-update.vue

@@ -32,14 +32,24 @@
           </el-form-item>
           </el-form-item>
         </el-col> -->
         </el-col> -->
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="温度" prop="temperatures" class="input">
+          <el-form-item
+            label="温度"
+            prop="temperatures"
+            class="input"
+            :rules="[{ required: true, message: '请输入温度', trigger: ['blur'] }]"
+          >
             <el-input style="width: 100%" type="number" v-model="ruleForm.temperatures" placeholder="请输入温度" :readonly="type == 'view'">
             <el-input style="width: 100%" type="number" v-model="ruleForm.temperatures" placeholder="请输入温度" :readonly="type == 'view'">
               <template slot="append">℃</template>
               <template slot="append">℃</template>
             </el-input>
             </el-input>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="时间维度" prop="dimension">
+          <el-form-item
+            label="时间维度"
+            prop="dimension"
+            class="input"
+            :rules="[{ required: true, message: '请选择时间维度', trigger: ['change'] }]"
+          >
             <el-select style="width: 100%" v-model="ruleForm.dimension" placeholder="时间维度" clearable>
             <el-select style="width: 100%" v-model="ruleForm.dimension" placeholder="时间维度" clearable>
               <el-option label="日" value="daily">日</el-option>
               <el-option label="日" value="daily">日</el-option>
               <el-option label="月" value="monthly">月</el-option>
               <el-option label="月" value="monthly">月</el-option>
@@ -48,7 +58,12 @@
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="用户增长率" prop="userGrowthRate" class="input">
+          <el-form-item
+            label="用户增长率"
+            prop="userGrowthRate"
+            class="input"
+            :rules="[{ required: true, message: '请输入用户增长率', trigger: ['blur'] }]"
+          >
             <el-input
             <el-input
               style="width: 100%"
               style="width: 100%"
               type="number"
               type="number"
@@ -61,7 +76,12 @@
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="当前用户数量" prop="userCount" class="input">
+          <el-form-item
+            label="当前用户数量"
+            prop="userCount"
+            class="input"
+            :rules="[{ required: true, message: '请输入当前用户数量', trigger: ['blur'] }]"
+          >
             <el-input
             <el-input
               style="width: 100%"
               style="width: 100%"
               type="number"
               type="number"
@@ -72,23 +92,35 @@
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="开始时间" prop="startTime">
+          <el-form-item
+            label="开始时间"
+            prop="startTime"
+            class="input"
+            :rules="[{ required: true, message: '请选择开始时间', trigger: ['change'] }]"
+          >
             <el-date-picker
             <el-date-picker
               v-model="ruleForm.startTime"
               v-model="ruleForm.startTime"
               :type="dateTypeMap[ruleForm.dimension]"
               :type="dateTypeMap[ruleForm.dimension]"
               :value-format="dateTypeFormatMap[ruleForm.dimension]"
               :value-format="dateTypeFormatMap[ruleForm.dimension]"
               placeholder="请选择开始时间"
               placeholder="请选择开始时间"
+              :picker-options="startPickerOptions"
               :readonly="type == 'view'"
               :readonly="type == 'view'"
             />
             />
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="结束时间" prop="endTime">
+          <el-form-item
+            label="结束时间"
+            prop="endTime"
+            class="input"
+            :rules="[{ required: true, message: '请选择结束时间', trigger: ['change'] }]"
+          >
             <el-date-picker
             <el-date-picker
               v-model="ruleForm.endTime"
               v-model="ruleForm.endTime"
               :type="dateTypeMap[ruleForm.dimension]"
               :type="dateTypeMap[ruleForm.dimension]"
               :value-format="dateTypeFormatMap[ruleForm.dimension]"
               :value-format="dateTypeFormatMap[ruleForm.dimension]"
               placeholder="请选择结束时间"
               placeholder="请选择结束时间"
+              :picker-options="endPickerOptions"
               :readonly="type == 'view'"
               :readonly="type == 'view'"
             />
             />
           </el-form-item>
           </el-form-item>
@@ -139,6 +171,20 @@ export default {
         monthly: 'yyyy-MM',
         monthly: 'yyyy-MM',
         yearly: 'yyyy',
         yearly: 'yyyy',
       },
       },
+      startPickerOptions: {
+        disabledDate: time => {
+          if (!this.ruleForm.endTime) return false;
+          const endTime = new Date(this.ruleForm.endTime);
+          return time.getTime() > endTime.getTime();
+        },
+      },
+      endPickerOptions: {
+        disabledDate: time => {
+          if (!this.ruleForm.startTime) return false;
+          const start = new Date(this.ruleForm.startTime);
+          return time.getTime() < start.getTime();
+        },
+      },
     };
     };
   },
   },
   props: ['parent'],
   props: ['parent'],
@@ -159,8 +205,8 @@ export default {
         if (data && data.code === 0) {
         if (data && data.code === 0) {
           this.ruleForm = {
           this.ruleForm = {
             ...data.data,
             ...data.data,
-            regionId: String(data.data.regionId),
-            substationId: String(data.data.substationId),
+            regionId: data.data.regionId ? String(data.data.regionId) : null,
+            substationId: data.data.substationId ? String(data.data.substationId) : null,
           };
           };
           if (this.ruleForm.regionId) this.getSubList();
           if (this.ruleForm.regionId) this.getSubList();
         } else {
         } else {

+ 18 - 3
src/views/modules/load-forecasting-v2/components/forecasting-detail.vue

@@ -141,7 +141,7 @@ export default {
         method: 'get',
         method: 'get',
       }).then(({ data }) => {
       }).then(({ data }) => {
         if (data && data.code === 0) {
         if (data && data.code === 0) {
-          this.dataList = data.data.list.map(ite => {
+          this.dataList = data.data.map(ite => {
             const keys = Object.keys(ite.predictions);
             const keys = Object.keys(ite.predictions);
             this.columns = keys;
             this.columns = keys;
             keys.forEach(key => {
             keys.forEach(key => {
@@ -166,7 +166,7 @@ export default {
         var accumulatedrainfallChart1 = echarts.init(document.getElementById('accumulatedrainfallChart1'), 'carp');
         var accumulatedrainfallChart1 = echarts.init(document.getElementById('accumulatedrainfallChart1'), 'carp');
         accumulatedrainfallChart1.setOption({
         accumulatedrainfallChart1.setOption({
           legend: {
           legend: {
-            data: ['预测结果'],
+            data: this.columns,
           },
           },
           grid: { bottom: 20 },
           grid: { bottom: 20 },
           color: ['#0977fd'],
           color: ['#0977fd'],
@@ -177,7 +177,7 @@ export default {
           },
           },
           yAxis: [
           yAxis: [
             {
             {
-              name: 'mV',
+              name: 'MW',
               nameTextStyle: {
               nameTextStyle: {
                 color: '#333',
                 color: '#333',
               },
               },
@@ -211,6 +211,21 @@ export default {
         });
         });
       });
       });
     },
     },
+    search() {
+      this.pageIndex = 1;
+      this.getDataList();
+    },
+    // 每页数
+    sizeChangeHandle(val) {
+      this.pageSize = val;
+      this.pageIndex = 1;
+      this.getDataList();
+    },
+    // 当前页
+    currentChangeHandle(val) {
+      this.pageIndex = val;
+      this.getDataList();
+    },
     // 返回
     // 返回
     back() {
     back() {
       this.parent.showForecastingFlag = false;
       this.parent.showForecastingFlag = false;

+ 15 - 6
src/views/modules/load-forecasting-v2/index.vue

@@ -223,8 +223,16 @@
           v-loading="dataListLoading"
           v-loading="dataListLoading"
         >
         >
           <el-table-column :resizable="true" :sortable="true" label="序号" type="index" width="50" />
           <el-table-column :resizable="true" :sortable="true" label="序号" type="index" width="50" />
-          <el-table-column :resizable="true" :sortable="true" prop="region" label="所属地区" />
-          <el-table-column :resizable="true" :sortable="true" prop="substation" label="变电站" />
+          <el-table-column :resizable="true" :sortable="true" prop="region" label="所属地区">
+            <template slot-scope="scope">
+              {{ scope.row.region ? scope.row.region : '全部' }}
+            </template>
+          </el-table-column>
+          <el-table-column :resizable="true" :sortable="true" prop="substation" label="变电站">
+            <template slot-scope="scope">
+              {{ scope.row.substation ? scope.row.substation : '全部' }}
+            </template>
+          </el-table-column>
           <!-- <el-table-column :resizable="true" :sortable="true" prop="recordDate" label="预测方法" /> -->
           <!-- <el-table-column :resizable="true" :sortable="true" prop="recordDate" label="预测方法" /> -->
           <el-table-column :resizable="true" :sortable="true" prop="temperatures" label="预测参数">
           <el-table-column :resizable="true" :sortable="true" prop="temperatures" label="预测参数">
             <template slot-scope="scope">
             <template slot-scope="scope">
@@ -255,7 +263,7 @@
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column :resizable="true" :sortable="true" prop="createTime" label="添加时间" />
           <el-table-column :resizable="true" :sortable="true" prop="createTime" label="添加时间" />
-          <el-table-column width="300" label="操作">
+          <el-table-column width="270" label="操作">
             <template slot-scope="scope">
             <template slot-scope="scope">
               <el-button class="view" type="success" @click="handleForecastingDetail(scope.row)">
               <el-button class="view" type="success" @click="handleForecastingDetail(scope.row)">
                 <span
                 <span
@@ -364,8 +372,9 @@ export default {
         sort: 'id',
         sort: 'id',
         order: 'desc',
         order: 'desc',
         ...this.searchForm,
         ...this.searchForm,
-        record_date_start: this.searchForm.dateRange[0],
-        record_date_end: this.searchForm.dateRange[1],
+        dimension: this.searchForm.dimension || null,
+        start_time_start: this.searchForm.dateRange[0],
+        end_time_end: this.searchForm.dateRange[1],
       };
       };
       this.$http({
       this.$http({
         url: '/predict-conf/page',
         url: '/predict-conf/page',
@@ -450,7 +459,7 @@ export default {
         type: 'warning',
         type: 'warning',
       }).then(() => {
       }).then(() => {
         this.$http({
         this.$http({
-          url: `/predict-conf/${id}`,
+          url: `/predict-conf/delete/${id}`,
           method: 'delete',
           method: 'delete',
         }).then(({ data }) => {
         }).then(({ data }) => {
           if (data && data.code === 0) {
           if (data && data.code === 0) {