yangxiao vor 3 Jahren
Ursprung
Commit
9976ffb507
4 geänderte Dateien mit 406 neuen und 46 gelöschten Zeilen
  1. 18 0
      src/router/index.js
  2. 19 46
      src/tools/basicTool.js
  3. 20 0
      src/views/layout/Menu.vue
  4. 349 0
      src/views/planPower/index.vue

+ 18 - 0
src/router/index.js

@@ -386,6 +386,12 @@ const routes = [{
     import( /* webpackChunkName: "sandtable" */ "../views/SandTable/SandTable.vue"),
 },
 {
+  path: "/planPower",
+  name: "planPower",
+  component: () =>
+    import( /* webpackChunkName: "planPower" */ "../views/planPower/index.vue"),
+},
+{
   path: "/new/pf1",
   name: "pf1",
   component: () =>
@@ -546,6 +552,18 @@ const routes = [{
   component: () => import(/* webpackChunkName: "alarmcenter1" */ "../views/NewPages/alarm-center-1.vue"),
 },
 {
+  path: "/new/tjsj",
+  name: "tjsj",
+  component: () =>
+      import ( /* webpackChunkName: "tjsj" */ "../views/warn/tjsj.vue"),
+},
+{
+  path: "/new/xdgl",
+  name: "xdgl",
+  component: () =>
+      import ( /* webpackChunkName: "xdgl" */ "../views/warn/xdgl.vue"),
+},
+{
   path: "/new/alarmcenter2",
   name: "alarmcenter2",
   component: () =>

+ 19 - 46
src/tools/basicTool.js

@@ -172,57 +172,30 @@ export default {
 
   /**
    * 导出 Json 为 excel 表格
-   * @param {Object} options 传入一个配置项,根据传入的配置项导出对应的 excel 表格,其中:
-   * @param {Array} tTitle 表格的标题,置空则为默认以日期为标题的表格
-   * @param {Array} tHeader 表格的表头,必传
-   * @param {Array} tBody 表格需要展示的字段名,必传
-   * @param {Array} tMerges 表格标题需要合并的单元格,置空则为默认 A1 格为表格标题显示区域
-   * @param {Array} tData 表格渲染所用的数据源,必传
-   * @param {Boolean} autoWidth 表是否根据表格内容自动撑开列宽,置空则为默认 true 
-   * @param {String} exportName 所导出的表格文件名,置空则以时间戳为文件名称进行导出
+   * @param {Object} tableData 用于规定表格表头和内容的 Object
+   * @param {String} excelName 导出的文件名
    */
-  exportExcelForJson (options) {
-    const {
-      export_json_to_excel
-    } = __getExport2Excel();
-
-    let title = options.tTitle;
-
-    if (!title || !title.length) {
-      title = []
-      options.tBody.forEach((ele, index) => {
-        if (!index) {
-          title.push(new Date().formatDate("yyyy-MM-dd") + '导出的表格');
-        } else {
-          title.push("");
-        }
-      });
-    }
-
-    let header = options.tHeader;
-    let data = options.tData.map(data => options.tBody.map(key => data[key]));
-    let merges = options.tMerges || [];
-    let filename = options.exportName || new Date().getTime();
-    let bookType = "xlsx";
-    let autoWidth = (options.autoWidth == true || options.autoWidth == false) ? options.autoWidth : true;
-
-    data.map(item => {
-      item.map((i, index) => {
-        if (!i) item[index] = "";
-      });
+  exportExcel (tableData,excelName) {
+    const { export_json_to_excel } = require('@tools/excel/Export2Excel.js'); // 注意这个Export2Excel路径      
+    let tHeader = []; // 上面设置Excel的表格第一行的标题       
+    let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值   
+
+    const formatJson = function (filterVal, jsonData) {
+      return jsonData.map(v => filterVal.map(j => v[j]));
+    };
+
+    tableData.column.forEach(ele => {
+      tHeader.push(ele.name);
+      filterVal.push(ele.field);
     });
 
-    export_json_to_excel({
-      title,
-      header,
-      data,
-      merges,
-      filename,
-      bookType,
-      autoWidth
-    });
+    const list = tableData.data; //把要导出的数据tableData存到list 
+    const data = formatJson(filterVal, list);
+    export_json_to_excel(tHeader, data, (excelName || "导出的Excel")); // 最后一个是表名字
   },
 
+
+
   // JS 触发全屏功能
   requestFullscreen () {
     //全屏

+ 20 - 0
src/views/layout/Menu.vue

@@ -119,6 +119,26 @@ export default {
                   icon: "svg-wind-site",
                   path: "/new/alarmcenter",
                 },
+                {
+                  text: "预警管理1",
+                  icon: "svg-wind-site",
+                  path: "/new/alarmcenter1",
+                },
+                {
+                  text: "预警管理2",
+                  icon: "svg-wind-site",
+                  path: "/new/alarmcenter2",
+                },
+                {
+                  text: "预警管理3",
+                  icon: "svg-wind-site",
+                  path: "/new/tjsj",
+                },
+                {
+                  text: "预警管理4",
+                  icon: "svg-wind-site",
+                  path: "/new/xdgl",
+                },
               ],
             },
           ],

+ 349 - 0
src/views/planPower/index.vue

@@ -0,0 +1,349 @@
+<template>
+  <div class="draught-fan-list">
+    <div class="query mg-b-8">
+      <div class="query-items">
+        <div class="query-item">
+          <div class="lable">场站:</div>
+          <div class="search-input">
+            <el-select v-model="wpId" clearable placeholder="请选择" popper-class="select" @change="getProject(true)">
+              <el-option v-for="item in wpArray" :key="item.id" :value="item.id" :label="item.name" />
+            </el-select>
+          </div>
+        </div>
+        <div class="query-item">
+          <div class="lable">项目:</div>
+          <div class="search-input">
+            <el-select v-model="projectId" clearable placeholder="请选择" popper-class="select">
+              <el-option v-for="item in projectArray" :key="item.id" :value="item.id" :label="item.name" />
+            </el-select>
+          </div>
+        </div>
+        <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>
+          </div>
+        </div>
+      </div>
+      <div class="query-actions">
+        <button class="btn green" @click="search()">查询</button>
+        <button class="btn green" @click="dialogShow = true">新增</button>
+        <button class="btn green" @click="exportExcel()" v-if="tableData.data.length">导出</button>
+      </div>
+    </div>
+    <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-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-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-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>
+        </el-form-item>
+        <!-- <el-form-item label="活动名称" prop="desc">
+          <el-input v-model="form.name"></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>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import ComTable from "@com/coms/table/table.vue";
+export default {
+  // 名称
+  name: "cutAnalyse",
+
+  // 使用组件
+  components: {
+    ComTable
+  },
+
+  // 数据
+  data () {
+    const that = this;
+    return {
+      isAsc: "asc",
+      wpArray: [],
+      wpId: "",
+      projectArray: [],
+      projectId: "",
+      recorddate: new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy-MM-dd"),
+      dialogShow: false,
+      tableData: {
+        column: [
+          {
+            name: "名称",
+            field: "projectName",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "年",
+            field: "year",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "1月",
+            field: "gc01",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "2月",
+            field: "gc02",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "3月",
+            field: "gc03",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "4月",
+            field: "gc04",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "5月",
+            field: "gc05",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "6月",
+            field: "gc06",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "7月",
+            field: "gc07",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "8月",
+            field: "gc08",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "9月",
+            field: "gc09",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "10月",
+            field: "gc10",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "11月",
+            field: "gc11",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "12月",
+            field: "gc12",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          },
+          {
+            name: "合计",
+            field: "generatingcapacity",
+            is_num: false,
+            is_light: false,
+            sortable: true
+          }
+        ],
+        data: [],
+      },
+      form: {
+        submitWpId: "",
+        submitProjectId: "",
+        submitData: "",
+        gc1:"",
+        gc2:"",
+        gc3:"",
+        gc4:"",
+        gc5:"",
+        gc6:"",
+        gc7:"",
+        gc8:"",
+        gc9:"",
+        gc10:"",
+        gc11:"",
+        gc12:"",
+      },
+      rules: {
+        submitWpId: [
+          { required: true, message: '请选择场站', trigger: 'change' },
+        ],
+        submitProjectId: [
+          { required: true, message: '请选择项目', trigger: 'change' },
+        ],
+        submitData: [
+          { required: true, message: '请选择时间', trigger: 'change' },
+        ],
+        gc1: [
+          { required: true, message: '该行数据不可为空', trigger: 'change' },
+        ]
+      }
+    };
+  },
+
+  // 函数
+  methods: {
+    // 请求服务
+    requestData () {
+      let that = this;
+      that.API.requestData({
+        method: "GET",
+        subUrl: "powercompare/windfarmAjax",
+        success (res) {
+          that.wpArray = res.data;
+          that.wpId = res.data[0].id;
+          that.getProject();
+        }
+      });
+    },
+
+    // 获取期数
+    getProject (skipRequest) {
+      let that = this;
+      that.API.requestData({
+        method: "GET",
+        subUrl: "powercompare/projectAjax",
+        data: {
+          wpIds: that.wpId
+        },
+        success (res) {
+          that.projectArray = res.data;
+          that.projectId = res.data[0].id;
+          if (!skipRequest) {
+            that.getTableData();
+          }
+        }
+      });
+    },
+
+    getTableData () {
+      let that = this;
+      if (!that.recorddate) {
+        that.BASE.showMsg({
+          msg: "时间不可为空"
+        });
+      } else {
+        that.API.requestData({
+          method: "POST",
+          subUrl: "projectplan/getProjectPlanVo",
+          data: {
+            isAsc: that.isAsc,
+            wpId: that.wpId || "",
+            pjId: that.projectId || "",
+            year: new Date(that.recorddate).getFullYear()
+          },
+          success (res) {
+            that.tableData.data = res.data;
+          }
+        });
+      }
+    },
+
+    // 导出excel
+    exportExcel () {
+      this.BASE.exportExcel(this.tableData);
+    },
+
+    search () {
+      this.getTableData();
+    }
+  },
+
+  created () {
+    this.requestData();
+  },
+
+  mounted () { },
+
+  unmounted () { },
+};
+</script>
+
+<style lang="less" scoped>
+.draught-fan-list {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+
+  .btn-group-tabs {
+    display: flex;
+    flex-direction: row;
+
+    .photovoltaic {
+      margin-left: 1.481vh;
+    }
+  }
+
+  .df-table {
+    border: 0.093vh solid fade(@darkgray, 50%);
+    position: relative;
+    overflow: auto;
+    flex-grow: 1;
+    margin-top: 1.481vh;
+
+    &:before {
+      content: '';
+      width: 0.37vh;
+      height: 0.37vh;
+      background: @write;
+      position: absolute;
+      left: 0.278vh;
+      top: 0.278vh;
+    }
+
+    tbody {
+      height: calc(100vh - 166px);
+    }
+  }
+}
+</style>