Browse Source

常规消缺

wangb 3 months ago
parent
commit
f29ba7a7b8

+ 2 - 2
.env.development

@@ -18,8 +18,8 @@ VUE_APP_LOGIN_URL = 'http://172.16.12.101:48080'
 # 马力军
 # VUE_APP_GENERAT_URL = 'http://192.168.2.45:9002'
 # 王波
-VUE_APP_GENERAT_URL = 'http://172.16.12.101:9002'
-# VUE_APP_GENERAT_URL = 'http://127.0.0.1:9002'
+# VUE_APP_GENERAT_URL = 'http://172.16.12.101:9002'
+VUE_APP_GENERAT_URL = 'http://127.0.0.1:9002'
 
 # 智能报表
 # VUE_APP_REPORT_URL = 'http://192.168.0.102:9001'

+ 8 - 8
.env.production

@@ -23,30 +23,30 @@ VUE_APP_LOGIN_URL = 'http://10.127.7.241:48080'
 
 # 发电能力分析
 # VUE_APP_GENERAT_URL = 'http://123.60.219.66:9002'
-# VUE_APP_GENERAT_URL = 'http://10.127.7.241:9002'
-VUE_APP_GENERAT_URL = 'http://172.16.12.101:9002'
+VUE_APP_GENERAT_URL = 'http://10.127.7.241:9002'
+# VUE_APP_GENERAT_URL = 'http://172.16.12.101:9002'
 # VUE_APP_GENERAT_URL = 'http://192.168.2.231:9002'
 # VUE_APP_GENERAT_URL = 'http://127.0.0.1:9002'
 
 # 智能报表
 # VUE_APP_REPORT_URL = 'http://123.60.219.66:9001'
 # VUE_APP_REPORT_URL = 'http://192.168.0.105:9001'
-# VUE_APP_REPORT_URL = 'http://10.127.7.241:9001'
-VUE_APP_REPORT_URL = 'http://172.16.12.101:9001'
+VUE_APP_REPORT_URL = 'http://10.127.7.241:9001'
+# VUE_APP_REPORT_URL = 'http://172.16.12.101:9001'
 # VUE_APP_REPORT_URL = 'http://192.168.2.231:9001'
 # VUE_APP_REPORT_URL = 'http://127.0.0.1:9001'
 
 # 功率预测
 # VUE_APP_BASE_URL = 'http://123.60.219.66:8086'
 # VUE_APP_BASE_URL = 'http://192.168.0.105:8086'
-# VUE_APP_BASE_URL = 'http://10.127.7.241:8086'
-VUE_APP_BASE_URL = 'http://172.16.12.101:8086'
+VUE_APP_BASE_URL = 'http://10.127.7.241:8086'
+# VUE_APP_BASE_URL = 'http://172.16.12.101:8086'
 # VUE_APP_BASE_URL = 'http://192.168.2.231:8086'
 # VUE_APP_BASE_URL = 'http://127.0.0.1:8086'
 
 # 综合报警
-# VUE_APP_ALARM = 'http://10.127.7.241:6015'
-VUE_APP_ALARM = 'http://172.16.12.101:6015'
+VUE_APP_ALARM = 'http://10.127.7.241:6015'
+# VUE_APP_ALARM = 'http://172.16.12.101:6015'
 
 # VUE_APP_ADP_BASE_URL = 'http://10.127.7.241:6015'
 VUE_APP_ADP_BASE_URL = 'http://172.16.12.101'

+ 2 - 2
components.d.ts

@@ -20,7 +20,7 @@ declare module 'vue' {
     CalculationModelConfiguration: typeof import('./src/components/powerPredictionComponent/configPage/calculationModelConfiguration.vue')['default']
     Card1: typeof import('./src/components/coms/cards/card-1.vue')['default']
     CheckTable: typeof import('./src/components/coms/table/check-table.vue')['default']
-    Col: typeof import('./src/components/homeComponent/grid/col.vue')['default']
+    Col: typeof import('./src/components/coms/grid/col.vue')['default']
     CollapseList: typeof import('./src/components/coms/collapse/collapse-list.vue')['default']
     CollectionLineManagement: typeof import('./src/components/powerPredictionComponent/configPage/stationFlode/collectionLineManagement.vue')['default']
     CommonHeaders: typeof import('./src/components/commonHeaders.vue')['default']
@@ -154,7 +154,7 @@ declare module 'vue' {
     RoleManagement: typeof import('./src/components/powerPredictionComponent/configPage/roleManagement.vue')['default']
     RouterLink: typeof import('vue-router')['RouterLink']
     RouterView: typeof import('vue-router')['RouterView']
-    Row: typeof import('./src/components/homeComponent/grid/row.vue')['default']
+    Row: typeof import('./src/components/coms/grid/row.vue')['default']
     SBQ: typeof import('./src/components/powerPredictionComponent/configPage/configDesignVue/SBQ.vue')['default']
     ScatterLineChart: typeof import('./src/components/chart/combination/scatter-line-chart.vue')['default']
     SimpleLineChart: typeof import('./src/components/chart/line/simple-line-chart.vue')['default']

+ 4 - 4
public/static/config/modeConfig.js

@@ -18,11 +18,11 @@ const tilesMaxLevel = 18;
 // 切换模块时是否提示当前模块名称(用于对内介绍项目时便捷显示模块名称)
 const showModuleName = 0;
 
-// const reportBaseUrl = "http://10.127.7.241:8083";
-const reportBaseUrl = "http://172.16.12.101:8083";
+const reportBaseUrl = "http://10.127.7.241:8083";
+// const reportBaseUrl = "http://172.16.12.101:8083";
 
-// const baseReportUrl = "http://10.127.7.196";
-const baseReportUrl = "http://172.16.12.101";
+const baseReportUrl = "http://10.127.7.196";
+// const baseReportUrl = "http://172.16.12.101";
 
 // 是否隐藏控制台打印的 log info warn 信息
 const hideLog = false;

+ 56 - 41
src/components/generatingCapacityComponent/table.vue

@@ -49,7 +49,16 @@
         sortable
         resizable
         :min-width="item.width ? item.width : 70"
-      />
+      >
+        <template #default="scope" v-if="item.styleFn">
+          <span :style="item.styleFn(scope.row)">{{
+            scope.row[item.prop]
+          }}</span>
+        </template>
+        <template #default="scope" v-else>
+          <span>{{ scope.row[item.prop] }}</span>
+        </template>
+      </el-table-column>
       <template #empty>
         <div class="nodata">
           <img :src="nodata" alt="" />
@@ -150,58 +159,63 @@ export default {
       }
     },
     getSummaries(datas) {
-      const {columns, data} = datas
+      const { columns, data } = datas;
       const sums = [];
       columns.forEach((column, index) => {
-        const values = data.map(item => Number(item[column.property]));
+        const values = data.map((item) => Number(item[column.property]));
         if (index === 0) {
-          if (this.fromTableId === '2') {
-            this.getSunOrAvg(1, sums, index, values)
+          if (this.fromTableId === "2") {
+            this.getSunOrAvg(1, sums, index, values);
           } else {
             // if (this.fromTableId === '1' || this.fromTableId === '3' || this.fromTableId === '4' || this.fromTableId === '5' || this.fromTableId === '6')
-            sums[index] = '合计';
-            return
-          } 
+            sums[index] = "合计";
+            return;
+          }
         }
-        if (!values.every(value => isNaN(value))) {
-          if (this.fromTableId === '1') {
-            if (index === 1 || index === 5 || index === 11 || index === 12 || index === 13) {
-              this.getSunOrAvg(2, sums, index, values)
+        if (!values.every((value) => isNaN(value))) {
+          if (this.fromTableId === "1") {
+            if (
+              index === 1 ||
+              index === 5 ||
+              index === 11 ||
+              index === 12 ||
+              index === 13
+            ) {
+              this.getSunOrAvg(2, sums, index, values);
             } else {
-              this.getSunOrAvg(1, sums, index, values)
+              this.getSunOrAvg(1, sums, index, values);
             }
-          } else if (this.fromTableId === '2' || this.fromTableId === '5') {
+          } else if (this.fromTableId === "2" || this.fromTableId === "5") {
             if (index !== 0) {
-              this.getSunOrAvg(2, sums, index, values)
+              this.getSunOrAvg(2, sums, index, values);
             }
-          } else if (this.fromTableId === '3') {
+          } else if (this.fromTableId === "3") {
             if (index === 2) {
-              this.getSunOrAvg(2, sums, index, values)
+              this.getSunOrAvg(2, sums, index, values);
             } else {
-              this.getSunOrAvg(1, sums, index, values)
+              this.getSunOrAvg(1, sums, index, values);
             }
-          } else if (this.fromTableId === '4') {
+          } else if (this.fromTableId === "4") {
             if (index === 1) {
-              this.getSunOrAvg(2, sums, index, values)
+              this.getSunOrAvg(2, sums, index, values);
             } else {
-              this.getSunOrAvg(1, sums, index, values)
+              this.getSunOrAvg(1, sums, index, values);
             }
-          } else if (this.fromTableId === '6') {
+          } else if (this.fromTableId === "6") {
             if (index === 3 || index === 9) {
-              this.getSunOrAvg(1, sums, index, values)
+              this.getSunOrAvg(1, sums, index, values);
             } else {
-              this.getSunOrAvg(2, sums, index, values)
+              this.getSunOrAvg(2, sums, index, values);
             }
-          } else if (this.fromTableId === '7') {
+          } else if (this.fromTableId === "7") {
             if (index === 2 || index === 3) {
-              this.getSunOrAvg(2, sums, index, values)
+              this.getSunOrAvg(2, sums, index, values);
             } else {
-              this.getSunOrAvg(1, sums, index, values)
+              this.getSunOrAvg(1, sums, index, values);
             }
           }
-            
         } else {
-            sums[index] = '-';
+          sums[index] = "-";
         }
       });
 
@@ -209,25 +223,26 @@ export default {
     },
     getSunOrAvg(type, sums, index, values) {
       if (type === 1) {
-        sums[index] = values.reduce((prev, curr) => {
+        sums[index] =
+          values.reduce((prev, curr) => {
             const value = Number(curr);
             if (!isNaN(value)) {
-                return prev + curr;
+              return prev + curr;
             } else {
-                return prev;
+              return prev;
             }
-        }, 0) / values.length;
-        return sums[index] = sums[index].toFixed(2) + ' (avg)';
+          }, 0) / values.length;
+        return (sums[index] = sums[index].toFixed(2) + " (avg)");
       } else {
         sums[index] = values.reduce((prev, curr) => {
-            const value = Number(curr);
-            if (!isNaN(value)) {
-                return prev + curr;
-            } else {
-                return prev;
-            }
+          const value = Number(curr);
+          if (!isNaN(value)) {
+            return prev + curr;
+          } else {
+            return prev;
+          }
         }, 0);
-        return sums[index] = sums[index].toFixed(2)
+        return (sums[index] = sums[index].toFixed(2));
       }
     },
     handleExport() {

+ 7 - 7
src/views/IntegratedAlarm/safe/customWarning/index.vue

@@ -72,7 +72,7 @@
                 v-for="item in state.windturbineList"
                 :key="item.id"
                 :value="item.id"
-                :label="item.name"
+                :label="item.aname"
               >
               </el-option>
             </el-select>
@@ -386,7 +386,7 @@ onMounted(() => {
     faultCause: "13.7s>信号<=14.2s",
     resolvent: "输入端142功率上升延迟300s",
     wpName: "13风电场",
-    code: "#14",
+    code: "F317",
     wpId: null,
     faultType: null,
     id: "sxj_kgdl_xwt_f_wt_0014_eq_sq_0125",
@@ -480,7 +480,7 @@ const state = reactive({
   tableHeader: [
     { title: "时间", code: "ts", width: "150" },
     { title: "场站", code: "stationname", width: "150" },
-    { title: "机组", code: "devicename", width: "150" },
+    { title: "机组", code: "code", width: "150" },
     { title: "部件", code: "components", width: "200" },
     { title: "预警信息", code: "characteristic" },
     // { title: "故障原因", code: "faultCause" },
@@ -630,14 +630,14 @@ const getAlarmHistoryt = async () => {
     ele.isCloseName = ele.endts ? "已解除" : "未解除";
     ele.deviceTypeName = tableFilter(ele.deviceType);
     ele.endtsName = ele.endts > 0 ? formatTime(ele.endts) : "--";
-    ele.devicename = changName(ele)
+    ele.devicename = changName(ele);
   });
   state.tableData = data?.ls;
 };
 const changName = (ele) => {
-  let str = ele.stationname.substring(0, ele.stationname.indexOf('风电场'))
-  return ele.devicename.substring(str.length, ele.devicename.length)
-}
+  let str = ele.stationname.substring(0, ele.stationname.indexOf("风电场"));
+  return ele.devicename.substring(str.length, ele.devicename.length);
+};
 //报警类型变化
 const typechange = () => {
   state.alarmId = "";

+ 3 - 3
src/views/IntegratedAlarm/safe/historyWarning/index.vue

@@ -67,7 +67,7 @@
                 v-for="item in state.windturbineList"
                 :key="item.id"
                 :value="item.id"
-                :label="item.name"
+                :label="item.aname"
               >
               </el-option>
             </el-select>
@@ -408,7 +408,7 @@ onMounted(() => {
     faultCause: "13.7s>信号<=14.2s",
     resolvent: "输入端142功率上升延迟300s",
     wpName: "13风电场",
-    code: "#14",
+    code: "F317",
     wpId: null,
     faultType: null,
     id: "sxj_kgdl_xwt_f_wt_0014_eq_sq_0125",
@@ -502,7 +502,7 @@ const state = reactive({
   tableHeader: [
     { title: "时间", code: "ts", width: "150" },
     { title: "场站", code: "stationname", width: "120" },
-    { title: "机组", code: "devicename", width: "100" },
+    { title: "机组", code: "code", width: "100" },
     { title: "报警信息", code: "description" },
     // { title: "故障原因", code: "faultCause" },
     // { title: "级别", code: "rank", width: "80" },

+ 34 - 22
src/views/generatingCapacity/dataAnalysis/agcAnalysis/index.vue

@@ -34,7 +34,12 @@
                 />
               </div>
             </el-tab-pane>
-            <el-tab-pane label="表格数据" name="1">
+            <el-tab-pane
+              :label="`表格数据${
+                tableData?.length ? ' (' + tableData.length + '个)' : ''
+              }`"
+              name="1"
+            >
               <table-cop
                 :data="tableData"
                 :loading="tableLoading"
@@ -43,7 +48,7 @@
                 :tableId="tableShowId"
                 :tableName="tableName"
                 fromTableId="7"
-                style="position:relative;top: -10px;"
+                style="position: relative; top: -10px"
               >
               </table-cop>
               <el-pagination layout="prev, pager, next" :total="50" />
@@ -412,26 +417,33 @@ const funSubmit = async (params) => {
 
   let abnormalPointTemp = [];
   seriesData.value[1].data.forEach((ele, index) => {
-    if (parseFloat(ele) > parseFloat(seriesData.value[3].data[index])) {
-      abnormalPointTemp.push({
-        date: tsArr[index],
-        value: parseFloat(ele),
-        jud: seriesData.value[3].data[index],
-        res: "高于上限",
-        color: "#f25656",
-        icon: "Top",
-        dataIndex: index,
-      });
-    } else if (parseFloat(ele) < parseFloat(seriesData.value[4].data[index])) {
-      abnormalPointTemp.push({
-        date: tsArr[index],
-        value: parseFloat(ele),
-        jud: seriesData.value[4].data[index],
-        res: "低于下限",
-        color: "#1890ff",
-        icon: "Bottom",
-        dataIndex: index,
-      });
+    if (
+      parseFloat(seriesData.value[2].data[index]) >
+      parseFloat(seriesData.value[0].data[index])
+    ) {
+      if (parseFloat(ele) > parseFloat(seriesData.value[3].data[index])) {
+        abnormalPointTemp.push({
+          date: tsArr[index],
+          value: parseFloat(ele),
+          jud: seriesData.value[3].data[index],
+          res: "高于上限",
+          color: "#f25656",
+          icon: "Top",
+          dataIndex: index,
+        });
+      } else if (
+        parseFloat(ele) < parseFloat(seriesData.value[4].data[index])
+      ) {
+        abnormalPointTemp.push({
+          date: tsArr[index],
+          value: parseFloat(ele),
+          jud: seriesData.value[4].data[index],
+          res: "低于下限",
+          color: "#1890ff",
+          icon: "Bottom",
+          dataIndex: index,
+        });
+      }
     }
   });
   abnormalPoint.value = abnormalPointTemp;

+ 53 - 7
src/views/generatingCapacity/dataAnalysis/angleAnalysis/index.vue

@@ -35,7 +35,13 @@
             <el-tab-pane label="图表展示" name="1"> </el-tab-pane>
             <el-tab-pane label="桨距角风速曲线" name="2" v-if="false">
             </el-tab-pane>
-            <el-tab-pane label="表格数据" name="3"> </el-tab-pane>
+            <el-tab-pane
+              :label="`表格数据${
+                tableData?.length ? ' (' + tableData.length + '个)' : ''
+              }`"
+              name="3"
+            >
+            </el-tab-pane>
             <el-tab-pane
               :label="`异常测点 (${abnormalPoint.length}个)`"
               name="4"
@@ -51,7 +57,7 @@
                 :height="tableHeight"
                 :tableId="tableShowId"
                 :tableName="tableName"
-                style="position:relative;top: -15px;"
+                style="position: relative; top: -15px"
                 :rowstyle="true"
               ></table-cop>
             </div>
@@ -119,19 +125,52 @@
                   label="叶片1"
                   width="180"
                   align="center"
-                />
+                >
+                  <template #default="scope">
+                    <span
+                      :style="`${
+                        scope.row.yp1 < 0
+                          ? 'color: #f25656; font-weight: 700'
+                          : ''
+                      }`"
+                      >{{ scope.row.yp1 }}</span
+                    >
+                  </template>
+                </el-table-column>
                 <el-table-column
                   prop="yp2"
                   label="叶片2"
                   width="180"
                   align="center"
-                />
+                >
+                  <template #default="scope">
+                    <span
+                      :style="`${
+                        scope.row.yp2 < 0
+                          ? 'color: #f25656; font-weight: 700'
+                          : ''
+                      }`"
+                      >{{ scope.row.yp2 }}</span
+                    >
+                  </template>
+                </el-table-column>
                 <el-table-column
                   prop="yp3"
                   label="叶片3"
                   width="180"
                   align="center"
-                />
+                >
+                  <template #default="scope">
+                    <span
+                      :style="`${
+                        scope.row.yp3 < 0
+                          ? 'color: #f25656; font-weight: 700'
+                          : ''
+                      }`"
+                      >{{ scope.row.yp3 }}</span
+                    >
+                  </template>
+                </el-table-column>
               </el-table>
             </div>
           </el-tabs>
@@ -319,7 +358,7 @@ const tableColumn = ref([
   },
   {
     prop: "yp3",
-    label: "叶片三",
+    label: "叶片三33",
   },
 ]);
 const tableLoading = ref(false);
@@ -635,7 +674,14 @@ const initPageData = async () => {
 };
 
 const areNumbersDistinct = (arr) => {
-  return arr[0] !== arr[1] || arr[0] !== arr[2] || arr[1] !== arr[2];
+  return (
+    arr[0] !== arr[1] ||
+    arr[0] !== arr[2] ||
+    arr[1] !== arr[2] ||
+    arr[0] < 0 ||
+    arr[1] < 0 ||
+    arr[2] < 0
+  );
 };
 
 /**mounted */

+ 36 - 16
src/views/generatingCapacity/dataAnalysis/hotAnalysis/index.vue

@@ -29,7 +29,13 @@
               <el-tabs v-model="activeTab">
                 <el-tab-pane label="温度曲线" name="1"> </el-tab-pane>
                 <el-tab-pane label="温度与功率" name="2"> </el-tab-pane>
-                <el-tab-pane label="表格数据" name="3"> </el-tab-pane>
+                <el-tab-pane
+                  :label="`表格数据${
+                    tableData?.length ? ' (' + tableData.length + '个)' : ''
+                  }`"
+                  name="3"
+                >
+                </el-tab-pane>
                 <div v-if="activeTab === '2'" :style="{ height: tableHeight }">
                   <div style="height: 49%">
                     <el-icon
@@ -142,7 +148,7 @@
                     :tableId="tableShowId"
                     :tableName="tableName"
                     :tableFilePath="tableFilePath"
-                    style="position:relative;top: -15px;"
+                    style="position: relative; top: -15px"
                   ></table-cop>
                 </div>
               </el-tabs>
@@ -161,7 +167,7 @@
       <el-form class="whitespace-nowrap" :inline="true" :model="queryForm">
         <el-form-item label="" class="!mb-0">
           <el-select
-            style="width:110px"
+            style="width: 110px"
             v-model="queryForm.checkIds"
             clearable
             @clear="checkAll = false"
@@ -326,15 +332,22 @@ const funExcelChange = async (obj) => {
   //点击excel项时
   /**次代码供温度功率曲线分析使用 */
   excelCheckIds.value = [obj.id]; //当为单选展示风机图表时
-  tableShowId.value = obj.id
-  let tableX = ["未满发样板机_", "满发样板机_", "样板机_", "未满发_", "满发_", "_"];
-for(let i =0; i<tableX.length; i++) {
-    let it = tableX[i]
+  tableShowId.value = obj.id;
+  let tableX = [
+    "未满发样板机_",
+    "满发样板机_",
+    "样板机_",
+    "未满发_",
+    "满发_",
+    "_",
+  ];
+  for (let i = 0; i < tableX.length; i++) {
+    let it = tableX[i];
     if (obj.name.indexOf(it) !== -1) {
-    tableName.value = obj.name.substring(0, obj.name.indexOf(it));
-    break;
+      tableName.value = obj.name.substring(0, obj.name.indexOf(it));
+      break;
     }
-}
+  }
   tableFilePath.value = obj.path;
 
   chartExcelList.value = excelList.value.map((o) => {
@@ -1188,14 +1201,21 @@ const initPageData = () => {
     currentNodeKey.value = actTreeNode.value?.id || "";
 
     excelCheckIds.value = [obj.id]; //当为单选展示风机图表时
-    tableShowId.value = obj.id
-    let tableX = ["未满发样板机_", "满发样板机_", "样板机_", "未满发_", "满发_", "_"];
-    for(let i =0; i<tableX.length; i++) {
-        let it = tableX[i]
-        if (obj.name.indexOf(it) !== -1) {
+    tableShowId.value = obj.id;
+    let tableX = [
+      "未满发样板机_",
+      "满发样板机_",
+      "样板机_",
+      "未满发_",
+      "满发_",
+      "_",
+    ];
+    for (let i = 0; i < tableX.length; i++) {
+      let it = tableX[i];
+      if (obj.name.indexOf(it) !== -1) {
         tableName.value = obj.name.substring(0, obj.name.indexOf(it));
         break;
-        }
+      }
     }
     tableFilePath.value = obj.path;
     chartExcelList.value = excelList.value.map((o) => {

+ 1 - 1
src/views/generatingCapacity/dataAnalysis/lineAnalysis/components/barChart.vue

@@ -226,5 +226,5 @@ const init = () => {
 };
 </script>
 <template>
-  <div :id="chartId" style="height: 400px; width: 990px"></div>
+  <div :id="chartId" :style="`height: 400px; width: ${width || '900px'}`"></div>
 </template>

+ 24 - 5
src/views/generatingCapacity/dataAnalysis/lineAnalysis/index.vue

@@ -95,12 +95,21 @@
             :xAxis="barxAxis"
             :yAxis="baryAxis"
             :series="barSeries"
-            :colors="['#22a6b3', '#05bc4c', '#C531C7', '#4b55ae', '#fa8c16', '#1DA0D7','#DD5044','#1467e3']"
+            :colors="[
+              '#22a6b3',
+              '#05bc4c',
+              '#C531C7',
+              '#4b55ae',
+              '#fa8c16',
+              '#1DA0D7',
+              '#DD5044',
+              '#1467e3',
+            ]"
           >
           </bar-chart-cop>
         </div>
         <div v-if="activeTab === '2'">
-            <!-- :colors="[color: ["#05bb4c", "#C531C7", "#4b55ae", "#fa8c16", "#1DA0D7", "#DD5044"],
+          <!-- :colors="[color: ["#05bb4c", "#C531C7", "#4b55ae", "#fa8c16", "#1DA0D7", "#DD5044"],
               'rgb(222,132,82)',
               'rgb(105,188,80)',
               'rgb(197,78,82)',
@@ -108,7 +117,17 @@
             ]" -->
           <bar-chart-cop
             height="600px"
-            :colors="['#22a6b3', '#05bc4c', '#C531C7', '#4b55ae', '#fa8c16', '#1DA0D7','#DD5044', '#be2edd', '#323E6F']"
+            :colors="[
+              '#22a6b3',
+              '#05bc4c',
+              '#C531C7',
+              '#4b55ae',
+              '#fa8c16',
+              '#1DA0D7',
+              '#DD5044',
+              '#be2edd',
+              '#323E6F',
+            ]"
             width="100%"
             :xAxis="barxAxis"
             :yAxis="baryAxis"
@@ -712,12 +731,12 @@ const funTimeArea = () => {
             barxAxis.data.push(wtObj.wtId);
             for (const timeKey in wtObj.time1) {
               barSeries.value[timeKey].data.push(
-                Math.floor((wtObj.time1[timeKey] / 60))
+                Math.floor(wtObj.time1[timeKey] / 60)
               );
             }
             for (const time2Key in wtObj.time2) {
               barUnWorkSeries.value[time2Key].data.push(
-                Math.floor((wtObj.time2[time2Key] / 60))
+                Math.floor(wtObj.time2[time2Key] / 60)
               );
             }
           }

+ 153 - 15
src/views/generatingCapacity/dataAnalysis/rateAnalysis/index.vue

@@ -31,21 +31,14 @@
         <div class="tableDataMain">
           <el-tabs v-model="activeTab">
             <el-tab-pane label="图表展示" name="1"> </el-tab-pane>
-            <el-tab-pane label="表格数据" name="2"> </el-tab-pane>
-            <div v-if="activeTab === '2'" :style="{ height: tableHeight }">
-              <table-cop
-                class=""
-                :data="tableData"
-                :column="tableColumn"
-                :theme="theme"
-                fromTableId="4"
-                :height="tableHeight"
-                :tableId="tableShowId"
-                :tableName="tableName"
-                :tableFilePath="tableFilePath"
-                style="position: relative; top: -15px"
-              ></table-cop>
-            </div>
+            <el-tab-pane label="风时" name="3"> </el-tab-pane>
+            <el-tab-pane
+              :label="`表格数据${
+                tableData?.length ? ' (' + tableData.length + '个)' : ''
+              }`"
+              name="2"
+            >
+            </el-tab-pane>
             <el-row v-if="activeTab === '1'" :style="{ height: tableHeight }">
               <el-col
                 :span="12"
@@ -136,6 +129,43 @@
                 </scatter-single-chart-cop>
               </el-col>
             </el-row>
+            <div v-if="activeTab === '2'" :style="{ height: tableHeight }">
+              <table-cop
+                class=""
+                :data="tableData"
+                :column="tableColumn"
+                :theme="theme"
+                fromTableId="4"
+                :height="tableHeight"
+                :tableId="tableShowId"
+                :tableName="tableName"
+                :tableFilePath="tableFilePath"
+                style="position: relative; top: -15px"
+              ></table-cop>
+            </div>
+            <div
+              v-if="activeTab === '3'"
+              :style="{ height: tableHeight, width: '100%' }"
+            >
+              <fsChart
+                height="600px"
+                width="100%"
+                :xAxis="fsBarxAxis"
+                :yAxis="fsBaryAxis"
+                :series="fsBarSeries"
+                :colors="[
+                  '#22a6b3',
+                  '#05bc4c',
+                  '#C531C7',
+                  '#4b55ae',
+                  '#fa8c16',
+                  '#1DA0D7',
+                  '#DD5044',
+                  '#1467e3',
+                ]"
+              >
+              </fsChart>
+            </div>
           </el-tabs>
         </div>
       </div>
@@ -266,6 +296,7 @@ import chartCop from "./components/chart.vue";
 import lineChartCop from "./components/lineChart.vue";
 // import SubmitBtn from '../../../components/SubmitBtn.vue'
 import scatterSingleChartCop from "./components/scatterSingleChart.vue";
+import fsChart from "../lineAnalysis/components/barChart.vue";
 // import { ElMessage } from 'element-plus';
 import {
   onMounted,
@@ -454,6 +485,62 @@ const funText = (index) => {
 };
 const chartData = ref([]); //roses的chartList
 let chartId = 1;
+
+const fsBarxAxis = reactive({
+  type: "category",
+  data: [],
+  splitLine: {
+    show: false,
+  },
+  axisTick: {
+    show: true,
+  },
+});
+
+const fsBaryAxis = ref({
+  type: "value",
+  name: "小时",
+  splitLine: {
+    show: false,
+  },
+  axisTick: {
+    show: true,
+  },
+});
+
+const fsBarSeries = ref([
+  {
+    name: "0~3m风速",
+    type: "bar",
+    stack: "a",
+    data: [],
+  },
+  {
+    name: "3~5m风速",
+    type: "bar",
+    stack: "a",
+    data: [],
+  },
+  {
+    name: "5~10m风速",
+    type: "bar",
+    stack: "a",
+    data: [],
+  },
+  {
+    name: "10~12m风速",
+    type: "bar",
+    stack: "a",
+    data: [],
+  },
+  {
+    name: "12~25m风速",
+    type: "bar",
+    stack: "a",
+    data: [],
+  },
+]);
+
 /**submit */
 const funSubmit = async () => {
   const rosesRes = await httpRequest.get("/wind/roses", {
@@ -598,6 +685,57 @@ const funSubmit = async () => {
           },
         ];
       }
+
+      fsBarxAxis.data = [];
+      let fbs = [
+        {
+          name: "0~3m风速",
+          type: "bar",
+          stack: "a",
+          data: [],
+        },
+        {
+          name: "3~5m风速",
+          type: "bar",
+          stack: "a",
+          data: [],
+        },
+        {
+          name: "5~7m风速",
+          type: "bar",
+          stack: "a",
+          data: [],
+        },
+        {
+          name: "7~9m风速",
+          type: "bar",
+          stack: "a",
+          data: [],
+        },
+        {
+          name: "9~11m风速",
+          type: "bar",
+          stack: "a",
+          data: [],
+        },
+        {
+          name: "11~20m风速",
+          type: "bar",
+          stack: "a",
+          data: [],
+        },
+        {
+          name: "20~25m风速",
+          type: "bar",
+          stack: "a",
+          data: [],
+        },
+      ];
+      fsBarxAxis.data.push(rosesRes.data[0].wt);
+      rosesRes.data[0].speeedtime.forEach((ele, index) => {
+        fbs[index].data.push(ele);
+      });
+      fsBarSeries.value = fbs;
     }
   }
   if (lineRes.code === 200) {