Browse Source

计划发电量填报模块完成

yangxiao 3 years ago
parent
commit
bff3d4f6e8
3 changed files with 241 additions and 33 deletions
  1. 14 2
      src/tools/basicTool.js
  2. 1 0
      src/views/Home/dialog/table.vue
  3. 226 31
      src/views/planPower/index.vue

+ 14 - 2
src/tools/basicTool.js

@@ -175,7 +175,7 @@ export default {
    * @param {Object} tableData 用于规定表格表头和内容的 Object
    * @param {String} excelName 导出的文件名
    */
-  exportExcel (tableData,excelName) {
+  exportExcel (tableData, excelName) {
     const { export_json_to_excel } = require('@tools/excel/Export2Excel.js'); // 注意这个Export2Excel路径      
     let tHeader = []; // 上面设置Excel的表格第一行的标题       
     let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值   
@@ -258,5 +258,17 @@ export default {
     isMail: /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/,
     // 是否是数字
     isNumber: /^(-?\d+)(\.\d+)?$/
+  },
+
+  elCkeck: {
+    isNumber (rule, value, callback) {
+      if (value === '') {
+        callback(new Error('该值不可为空'));
+      } else if (!/^(-?\d+)(\.\d+)?$/.test(value)) {
+        callback(new Error('输入有误,仅支持输入数字'));
+      } else {
+        callback();
+      }
+    }
   }
-};
+}

+ 1 - 0
src/views/Home/dialog/table.vue

@@ -15,6 +15,7 @@
       <div class="left">
         <table class="table-form">
           <tr>
+            <td class="white"></td>
             <td class="white" v-for="(item, index) in tableData.datels" :key="index">{{item}}</td>
           </tr>
           <tr v-for="(item, index) in tableData.result" :key="index">

+ 226 - 31
src/views/planPower/index.vue

@@ -21,7 +21,7 @@
         <div class="query-item">
           <div class="lable">日期:</div>
           <div class="search-input">
-            <el-date-picker v-model="recorddate" type="date" value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+            <el-date-picker v-model="recorddate" type="year" value-format="YYYY" placeholder="选择日期" popper-class="date-select">
             </el-date-picker>
           </div>
         </div>
@@ -35,31 +35,66 @@
     <div class="df-table">
       <ComTable height="78vh" :data="tableData"></ComTable>
     </div>
-    <el-dialog title="新增计划发电量" v-model="dialogShow" width="85%" top="10vh" custom-class="modal" :close-on-click-modal="false">
+    <el-dialog title="新增计划发电量" v-model="dialogShow" width="85%" top="10vh" custom-class="modal curDialog"
+      :close-on-click-modal="false" @closed="resetForm">
       <el-form ref="form" :model="form" :rules="rules" inline label-width="80px">
         <el-form-item label="场站" prop="submitWpId">
-          <el-select v-model="form.submitWpId" clearable placeholder="请选择" popper-class="select" @change="getProject(true)">
+          <el-select v-model="form.submitWpId" clearable placeholder="请选择" popper-class="select" @change="reGetProject()">
             <el-option v-for="item in wpArray" :key="item.id" :value="item.id" :label="item.name" />
           </el-select>
         </el-form-item>
         <el-form-item label="项目" prop="submitProjectId">
           <el-select v-model="form.submitProjectId" clearable placeholder="请选择" popper-class="select">
-            <el-option v-for="item in projectArray" :key="item.id" :value="item.id" :label="item.name" />
+            <el-option v-for="item in projectArray2" :key="item.id" :value="item.id" :label="item.name" />
           </el-select>
         </el-form-item>
         <el-form-item label="时间" prop="submitData">
-          <el-date-picker v-model="form.submitData" type="date" value-format="YYYY-MM-DD" placeholder="选择日期"
-            popper-class="date-select">
+          <el-date-picker v-model="form.submitData" type="year" value-format="YYYY" placeholder="选择日期" popper-class="date-select">
           </el-date-picker>
         </el-form-item>
-        <!-- <el-form-item label="活动名称" prop="desc">
-          <el-input v-model="form.name"></el-input>
-        </el-form-item> -->
+        <el-form-item class="curFlex" label="1月份计划发电量(万kWh):" prop="gc01">
+          <el-input v-model="form.gc01"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="2月份计划发电量(万kWh):" prop="gc02">
+          <el-input v-model="form.gc02"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="3月份计划发电量(万kWh):" prop="gc03">
+          <el-input v-model="form.gc03"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="4月份计划发电量(万kWh):" prop="gc04">
+          <el-input v-model="form.gc04"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="5月份计划发电量(万kWh):" prop="gc05">
+          <el-input v-model="form.gc05"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="6月份计划发电量(万kWh):" prop="gc06">
+          <el-input v-model="form.gc06"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="7月份计划发电量(万kWh):" prop="gc07">
+          <el-input v-model="form.gc07"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="8月份计划发电量(万kWh):" prop="gc08">
+          <el-input v-model="form.gc08"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="9月份计划发电量(万kWh):" prop="gc09">
+          <el-input v-model="form.gc09"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="10月份计划发电量(万kWh):" prop="gc10">
+          <el-input v-model="form.gc10"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="11月份计划发电量(万kWh):" prop="gc11">
+          <el-input v-model="form.gc11"></el-input>
+        </el-form-item>
+        <el-form-item class="curFlex" label="12月份计划发电量(万kWh):" prop="gc12">
+          <el-input v-model="form.gc12"></el-input>
+        </el-form-item>
       </el-form>
-      <span slot="footer" class="dialog-footer">
-        <button class="btn green" @click="dialogShow = false">取消</button>
-        <button class="btn green">提交</button>
-      </span>
+      <template #footer>
+        <span class="dialog-footer">
+          <button class="btn green" @click="submit">提交</button>
+          <button class="btn green" @click="dialogShow = false">取消</button>
+        </span>
+      </template>
     </el-dialog>
   </div>
 </template>
@@ -84,7 +119,8 @@ export default {
       wpId: "",
       projectArray: [],
       projectId: "",
-      recorddate: new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy-MM-dd"),
+      projectArray2: [],
+      recorddate: new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy"),
       dialogShow: false,
       tableData: {
         column: [
@@ -192,26 +228,40 @@ export default {
             is_num: false,
             is_light: false,
             sortable: true
+          },
+          {
+            name: "操作",
+            field: "generatingcapacity",
+            is_num: false,
+            is_light: false,
+            sortable: true,
+            template () {
+              return "<el-button type='text' style='cursor: pointer;'>编辑</el-button>";
+            },
+            click (e, row) {
+              that.editData(row)
+            }
           }
         ],
         data: [],
       },
       form: {
+        outagehours: 0.0,
         submitWpId: "",
         submitProjectId: "",
         submitData: "",
-        gc1:"",
-        gc2:"",
-        gc3:"",
-        gc4:"",
-        gc5:"",
-        gc6:"",
-        gc7:"",
-        gc8:"",
-        gc9:"",
-        gc10:"",
-        gc11:"",
-        gc12:"",
+        gc01: "",
+        gc02: "",
+        gc03: "",
+        gc04: "",
+        gc05: "",
+        gc06: "",
+        gc07: "",
+        gc08: "",
+        gc09: "",
+        gc10: "",
+        gc11: "",
+        gc12: "",
       },
       rules: {
         submitWpId: [
@@ -223,9 +273,42 @@ export default {
         submitData: [
           { required: true, message: '请选择时间', trigger: 'change' },
         ],
-        gc1: [
-          { required: true, message: '该行数据不可为空', trigger: 'change' },
-        ]
+        gc01: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc02: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc03: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc04: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc05: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc06: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc07: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc08: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc09: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc10: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc11: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
+        gc12: [
+          { required: true, validator: this.BASE.elCkeck.isNumber, trigger: 'change' },
+        ],
       }
     };
   },
@@ -237,10 +320,10 @@ export default {
       let that = this;
       that.API.requestData({
         method: "GET",
-        subUrl: "powercompare/windfarmAjax",
+        subUrl: "powercompare/windfarmAllAjax",
         success (res) {
           that.wpArray = res.data;
-          that.wpId = res.data[0].id;
+          that.wpId = that.wpId || res.data[0].id;
           that.getProject();
         }
       });
@@ -257,6 +340,7 @@ export default {
         },
         success (res) {
           that.projectArray = res.data;
+          that.projectArray2 = res.data;
           that.projectId = res.data[0].id;
           if (!skipRequest) {
             that.getTableData();
@@ -265,6 +349,23 @@ export default {
       });
     },
 
+    // 弹窗获取期数
+    reGetProject (wpIds = this.form.submitWpId) {
+      let that = this;
+      that.API.requestData({
+        method: "GET",
+        subUrl: "powercompare/projectAjax",
+        data: {
+          wpIds
+        },
+        success (res) {
+          that.projectArray2 = res.data;
+          that.form.submitProjectId = res.data[0].id
+          that.dialogShow = true;
+        }
+      });
+    },
+
     getTableData () {
       let that = this;
       if (!that.recorddate) {
@@ -293,6 +394,65 @@ export default {
       this.BASE.exportExcel(this.tableData);
     },
 
+    submit () {
+      let that = this;
+      that.$refs.form.validate((valid) => {
+        if (valid) {
+          let data = that.BASE.deepCopy(that.form);
+          data.windpower = that.form.submitWpId;
+          data.projectid = that.form.submitProjectId;
+          data.year = new Date(that.form.submitData).getFullYear();
+          data.generatingcapacity = (parseFloat(data.gc01) + parseFloat(data.gc02) + parseFloat(data.gc03) + parseFloat(data.gc04) + parseFloat(data.gc05) + parseFloat(data.gc06) + parseFloat(data.gc07) + parseFloat(data.gc08) + parseFloat(data.gc09) + parseFloat(data.gc10) + parseFloat(data.gc11) + parseFloat(data.gc12));
+          that.API.requestData({
+            method: "POST",
+            subUrl: "projectplan/saveData",
+            data,
+            success (res) {
+              that.getTableData();
+              that.BASE.showMsg({
+                type: "success",
+                msg: "保存成功"
+              });
+              that.dialogShow = false;
+            }
+          });
+        } else {
+          return false;
+        }
+      });
+    },
+
+    editData (item) {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "projectplan/getSingleProjectPlan",
+        data: {
+          pjId: item.projectid,
+          year: item.year
+        },
+        success (res) {
+          that.reGetProject(res.data.windpower || "");
+          that.form = res.data;
+          that.form.submitWpId = res.data.windpower;
+          that.form.submitProjectId = res.data.projectid;
+          that.form.submitData = res.data.year;
+          that.form.outagehours = 0.0;
+          that.dialogShow = true;
+        }
+      });
+    },
+
+    resetForm () {
+      for (let key in this.form) {
+        if(key === "outagehours"){
+          this.form[key] = 0.0;
+        }
+        this.form[key] = "";
+      }
+      this.$refs.form.resetFields();
+    },
+
     search () {
       this.getTableData();
     }
@@ -347,3 +507,38 @@ export default {
   }
 }
 </style>
+<style lang="less">
+.el-form {
+  .el-form-item {
+    margin-bottom: 30px;
+  }
+  .el-form-item.curFlex {
+    width: 100%;
+    .el-form-item__label {
+      width: 210px !important;
+    }
+    .el-form-item__content {
+      display: flex;
+      justify-content: start;
+      align-items: center;
+      width: 100%;
+    }
+  }
+}
+
+.curDialog {
+  .el-dialog__body {
+    max-height: 600px;
+    overflow-y: scroll;
+  }
+
+  .dialog-footer {
+    width: 100%;
+    margin-top: 20px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+}
+</style>
+