Pārlūkot izejas kodu

优化系统中搜索按钮样式,增加报警配置页面,调整报警配置页面样式及功能

baiyanting 1 gadu atpakaļ
vecāks
revīzija
061e7f012f
61 mainītis faili ar 1898 papildinājumiem un 73 dzēšanām
  1. 1 1
      src/api/zhbj/index.js
  2. 35 1
      src/assets/styles/dialog.less
  3. 45 0
      src/router/index.js
  4. 3 4
      src/views/HealthControl/HealthTab3.vue
  5. 7 7
      src/views/HealthControl/HealthTab4.vue
  6. 3 1
      src/views/HealthControl/assess/assessconfig.vue
  7. 1 1
      src/views/HealthControl/energyEfficAnalyse/evaluationAnalysis/index.vue
  8. 1 2
      src/views/HealthControl/energyEfficAnalyse/malfunctionAnalysis/index.vue
  9. 1 1
      src/views/HealthControl/energyEfficAnalyse/powerAnalysis/index.vue
  10. 1 1
      src/views/HealthControl/healthManagement/wtSaturability/tab1.vue
  11. 1 1
      src/views/HealthControl/healthManagement/wtSaturability/tab2.vue
  12. 1 1
      src/views/HealthControl/healthManagement/wtSaturability/tab3.vue
  13. 482 0
      src/views/IntegratedAlarm/alarmConfig/components/windturbine_components.vue
  14. 633 0
      src/views/IntegratedAlarm/alarmConfig/historyConfig/index.vue
  15. 11 0
      src/views/IntegratedAlarm/alarmConfig/index.vue
  16. 621 0
      src/views/IntegratedAlarm/reliability/historyAnalyse/index.vue
  17. 1 1
      src/views/IntegratedAlarm/safe/customWarning/index.vue
  18. 1 1
      src/views/IntegratedAlarm/safe/dataSearch/index.vue
  19. 1 1
      src/views/WindSite/pages/Info/Warning.vue
  20. 1 1
      src/views/economicsOperation/benchmarkingManagement/intervalBenchmarking/index.vue
  21. 1 1
      src/views/economicsOperation/benchmarkingManagement/loseRate/index.vue
  22. 1 1
      src/views/economicsOperation/benchmarkingManagement/performanceRankingList/decision1Mx.vue
  23. 1 1
      src/views/economicsOperation/benchmarkingManagement/performanceRankingList/index.vue
  24. 1 1
      src/views/economicsOperation/benchmarkingManagement/projectBenchmarking/index.vue
  25. 1 1
      src/views/economicsOperation/benchmarkingManagement/singleMachineBenchmarking/index.vue
  26. 1 1
      src/views/economicsOperation/benchmarkingManagement/siteBenchmarking/index.vue
  27. 1 1
      src/views/economicsOperation/benchmarkingManagement/valueBenchmarking/index.vue
  28. 1 1
      src/views/economicsOperation/benchmarkingManagement/wiringBenchmarking/index.vue
  29. 1 1
      src/views/economicsOperation/comprehensiveControl/maintenanceKPI/index.vue
  30. 1 1
      src/views/economicsOperation/comprehensiveControl/runningKPI/index.vue
  31. 1 1
      src/views/economicsOperation/comprehensiveControl/stationControlKPI/index.vue
  32. 1 1
      src/views/economicsOperation/efficiency/consumeEfficiency/index.vue
  33. 1 1
      src/views/economicsOperation/efficiency/restorationEfficiency/index.vue
  34. 1 1
      src/views/economicsOperation/efficiency/stateEfficiency/index.vue
  35. 1 1
      src/views/economicsOperation/photovoltaicAnalyse/lslfx/index.vue
  36. 1 1
      src/views/economicsOperation/photovoltaicAnalyse/performanceEvaluation/index.vue
  37. 1 1
      src/views/economicsOperation/photovoltaicAnalyse/prAnalyse/index.vue
  38. 1 1
      src/views/economicsOperation/photovoltaicAnalyse/stateTransition/index.vue
  39. 3 4
      src/views/economicsOperation/photovoltaicAnalyse/timeTransition/index.vue
  40. 1 1
      src/views/economicsOperation/stationAnalyse/electricAnalyse/index.vue
  41. 2 2
      src/views/economicsOperation/stationAnalyse/stationElectricAnalyse/index.vue
  42. 1 1
      src/views/economicsOperation/stationAnalyse/windAndPhotovoltaic/index.vue
  43. 1 1
      src/views/economicsOperation/thematicAnalysis/MTBF/index.vue
  44. 1 1
      src/views/economicsOperation/thematicAnalysis/comprehensiveAnalysis/index.vue
  45. 1 1
      src/views/economicsOperation/thematicAnalysis/failure/index.vue
  46. 1 1
      src/views/economicsOperation/thematicAnalysis/generation/index.vue
  47. 1 1
      src/views/economicsOperation/thematicAnalysis/reset/index.vue
  48. 1 1
      src/views/economicsOperation/thematicAnalysis/windEnergy/index.vue
  49. 1 1
      src/views/economicsOperation/windAnalyse/cutInAndOutAnalysis/historyDetail.vue
  50. 1 1
      src/views/economicsOperation/windAnalyse/cutInAndOutAnalysis/index.vue
  51. 1 1
      src/views/economicsOperation/windAnalyse/monthlyAnalysis/index.vue
  52. 1 1
      src/views/economicsOperation/windAnalyse/performanceAssess/historyDetail.vue
  53. 3 3
      src/views/economicsOperation/windAnalyse/performanceAssess/index.vue
  54. 1 1
      src/views/economicsOperation/windAnalyse/singleWindAnasyle/historyDetail.vue
  55. 1 1
      src/views/economicsOperation/windAnalyse/singleWindAnasyle/index.vue
  56. 2 2
      src/views/economicsOperation/windAnalyse/singleWindAnasyle/windDetailDialog.vue
  57. 1 1
      src/views/economicsOperation/windAnalyse/stateTransition/index.vue
  58. 1 1
      src/views/economicsOperation/windAnalyse/timeTransition/index.vue
  59. 1 1
      src/views/stateMonitor/alarmCenter/commonAlarm/index.vue
  60. 1 1
      src/views/stateMonitor/factoryMonitor/photovoltaic/lightBoosterStation/index.vue
  61. 1 1
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/index.vue

+ 1 - 1
src/api/zhbj/index.js

@@ -285,7 +285,7 @@ export const fetchruleventLogs = (pagenum, pagesize, ruleName, ruleType) => {
 };
 //风机报警列表
 export const windturbinebj_fetchTableData = (query) => {
-  console.log(111, query);
+
   return request({
     url: "alarmconfiguration/page",
     method: "get",

+ 35 - 1
src/assets/styles/dialog.less

@@ -1,4 +1,3 @@
-
 .modal {
   &.el-dialog {
     background: fade(#121d1c, 95);
@@ -68,6 +67,41 @@
   ul li {
     list-style: none;
   }
+  .wind-comp-form {
+    padding-left: 30px;
+    .el-form-item {
+      margin-bottom: 20px !important;
+      width: 310px !important;
+    }
+  }
+
+  .el-radio-group {
+    height: 28px;
+    .el-radio-button__original-radio + .el-radio-button__inner {
+      background-color: rgba(5, 187, 76, 0.2);
+      border: 1px solid #3b6c53;
+      color: #b3b3b3;
+      font-size: 14px;
+      //   background-color: rgba(5, 187, 76, 0.5);
+      //   color: #ffffff;
+    }
+    .el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled) {
+      box-shadow: unset;
+    }
+    .el-radio-button__inner:hover {
+      border: 1px solid #3b6c53;
+    }
+    .el-radio-button__original-radio:checked + .el-radio-button__inner {
+      // background-color: rgba(5, 187, 76, 0.2);
+      // border: 1px solid #3b6c53;
+      // color: #b3b3b3;
+      // font-size: 14px;
+      box-shadow: unset;
+
+      background-color: rgba(5, 187, 76, 0.5);
+      color: #ffffff;
+    }
+  }
   .el-drawer.rtl {
     height: 100%;
     background-color: #161816 !important;

+ 45 - 0
src/router/index.js

@@ -639,6 +639,51 @@ export const asyncRoutes = [
               permissions: ["jn_safe_ssbj"],
             },
           },
+          {
+            path: "historyAnalyse", // 报警分析
+            name: "historyAnalyse",
+            component: () =>
+              import("@/views/IntegratedAlarm/reliability/historyAnalyse"),
+            meta: {
+              title: "报警分析",
+              icon: "",
+              permissions: ["jn_safe_ssbj"],
+            },
+          },
+        ],
+      },
+      {
+        path: "alarmConfig", // 报警配置
+        name: "alarmConfig",
+        component: () => import("@/views/IntegratedAlarm/alarmConfig"),
+        meta: {
+          title: "报警配置",
+          icon: "svg-zhbj",
+          permissions: ["jn_safe"],
+        },
+        children: [
+          {
+            path: "historyConfig", // 报警配置
+            name: "historyConfig",
+            component: () =>
+              import("@/views/IntegratedAlarm/alarmConfig/historyConfig"),
+            meta: {
+              title: "报警配置",
+              icon: "",
+              permissions: ["jn_safe_ssbj"],
+            },
+          },
+          //   {
+          //     path: "historyAnalyse", // 报警分析
+          //     name: "historyAnalyse",
+          //     component: () =>
+          //       import("@/views/IntegratedAlarm/reliability/historyAnalyse"),
+          //     meta: {
+          //       title: "报警分析",
+          //       icon: "",
+          //       permissions: ["jn_safe_ssbj"],
+          //     },
+          //   },
         ],
       },
     ],

+ 3 - 4
src/views/HealthControl/HealthTab3.vue

@@ -69,7 +69,7 @@
         </div>
       </div>
       <div class="query-actions" style="margin-right: 500px">
-        <button class="btn green" @click="onClickSearch">搜索</button>
+        <button class="btn green" @click="onClickSearch">搜 索</button>
       </div>
     </div>
     <div class="table-box">
@@ -192,7 +192,7 @@ export default {
         if (res.code == 200) {
           this.stations = res.data;
           this.station = this.stations[0]?.id;
-        //  this.windturbine = this.windturbines[0]?.id;
+          //  this.windturbine = this.windturbines[0]?.id;
           this.requestUnfinishedList();
         }
       });
@@ -219,8 +219,7 @@ export default {
         .then((res) => {
           if (res.code == 200) {
             this.windturbines = res.data;
-         this.windturbine = this.windturbines[0].id;
-
+            this.windturbine = this.windturbines[0].id;
           }
         });
 

+ 7 - 7
src/views/HealthControl/HealthTab4.vue

@@ -70,7 +70,7 @@
       </div>
 
       <div class="query-actions" style="margin-right: 500px">
-        <button class="btn green" @click="onClickSearch">搜索</button>
+        <button class="btn green" @click="onClickSearch">搜 索</button>
       </div>
     </div>
     <div class="table-box">
@@ -314,15 +314,15 @@ export default {
     },
     // 通过消缺单获得详细信息
     requestTrack(row) {
-
-      api.recommenFindMainTrack({
-         rid: row.rid,
-      }).then((res) => {
+      api
+        .recommenFindMainTrack({
+          rid: row.rid,
+        })
+        .then((res) => {
           if (res.code == 200) {
             this.trackDate = res.data;
           }
-      });
-
+        });
 
       // let that = this;
       // that.API.requestData({

+ 3 - 1
src/views/HealthControl/assess/assessconfig.vue

@@ -11,7 +11,9 @@
           </div>
         </div>
         <div class="query-actions">
-          <button class="btn green mg-l-30" @click="onClickSearch">搜索</button>
+          <button class="btn green mg-l-30" @click="onClickSearch">
+            搜 索
+          </button>
           <button class="btn green mg-l-30" @click="onClickCreate">新增</button>
         </div>
       </div>

+ 1 - 1
src/views/HealthControl/energyEfficAnalyse/evaluationAnalysis/index.vue

@@ -65,7 +65,7 @@
         </div>
       </div>
       <div class="query-actions">
-        <button class="btn green" @click="getTableData">搜索</button>
+        <button class="btn green" @click="getTableData">搜 索</button>
       </div>
     </div>
     <el-table

+ 1 - 2
src/views/HealthControl/energyEfficAnalyse/malfunctionAnalysis/index.vue

@@ -65,7 +65,7 @@
         </div>
       </div>
       <div class="query-actions">
-        <button class="btn green" @click="getTableData">搜索</button>
+        <button class="btn green" @click="getTableData">搜 索</button>
       </div>
     </div>
     <el-table
@@ -240,4 +240,3 @@ export default {
   padding: 10px 20px 15px 20px;
 }
 </style>
-

+ 1 - 1
src/views/HealthControl/energyEfficAnalyse/powerAnalysis/index.vue

@@ -65,7 +65,7 @@
         </div>
       </div>
       <div class="query-actions">
-        <button class="btn green" @click="getTableData">搜索</button>
+        <button class="btn green" @click="getTableData">搜 索</button>
       </div>
     </div>
     <el-table

+ 1 - 1
src/views/HealthControl/healthManagement/wtSaturability/tab1.vue

@@ -45,7 +45,7 @@
         </div>
       </div>
       <div class="query-actions">
-        <button class="btn green" @click="search">搜索</button>
+        <button class="btn green" @click="search">搜 索</button>
       </div>
     </div>
     <div class="df-table">

+ 1 - 1
src/views/HealthControl/healthManagement/wtSaturability/tab2.vue

@@ -58,7 +58,7 @@
         </div>
       </div>
       <div class="query-actions">
-        <button class="btn green" @click="search">搜索</button>
+        <button class="btn green" @click="search">搜 索</button>
       </div>
     </div>
     <div class="df-table">

+ 1 - 1
src/views/HealthControl/healthManagement/wtSaturability/tab3.vue

@@ -58,7 +58,7 @@
         </div>
       </div>
       <div class="query-actions">
-        <button class="btn green" @click="search">搜索</button>
+        <button class="btn green" @click="search">搜 索</button>
       </div>
     </div>
     <div class="df-table">

+ 482 - 0
src/views/IntegratedAlarm/alarmConfig/components/windturbine_components.vue

@@ -0,0 +1,482 @@
+<template>
+  <el-dialog
+    v-model="isShow"
+    width="800px"
+    @close="resetOptions"
+    destroy-on-close
+  >
+    <template #title>
+      <div class="dialog-title">
+        <div class="title">{{ title }}</div>
+      </div>
+    </template>
+    <el-form
+      :model="dialogOptions"
+      :rules="rules"
+      label-width="120px"
+      ref="formRef"
+      inline
+      class="wind-comp-form"
+    >
+      <el-form-item label="报警类别" prop="deviceType">
+        <el-select
+          v-model="dialogOptions.deviceType"
+          filterable
+          placeholder="请选择"
+          @change="
+            (res) => {
+              dialogOptions.stationId = '';
+              dialogOptions.characteristic =
+                dialogOptions.deviceType == 'booststation'
+                  ? '报警'
+                  : '正常停机';
+              checkRules();
+              getWpList();
+            }
+          "
+        >
+          <el-option
+            v-for="item in categoryArray"
+            :key="item.id"
+            :label="item.label"
+            :value="item.id"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="序列号">
+        <el-input
+          v-model="dialogOptions.id"
+          placeholder="自动生成"
+          clearable
+          readonly
+        />
+      </el-form-item>
+      <el-form-item label="场站" prop="stationId">
+        <el-select
+          v-model="dialogOptions.stationId"
+          filterable
+          placeholder="请选择"
+          :disabled="!wpArray?.length"
+          @change="
+            (res) => {
+              dialogOptions.modelId = '';
+              getWtModel();
+            }
+          "
+        >
+          <el-option
+            v-for="item in wpArray"
+            :key="item.id"
+            :label="item.aname"
+            :value="item.id"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item
+        label="设备型号"
+        prop="modelId"
+        v-if="dialogOptions.deviceType !== 'booststation'"
+      >
+        <el-select
+          v-model="dialogOptions.modelId"
+          filterable
+          placeholder="请选择"
+          :disabled="!modelArray?.length"
+        >
+          <el-option
+            v-for="item in modelArray"
+            :key="item"
+            :label="item"
+            :value="item"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="统一编码" prop="uniformCode">
+        <el-input v-model="dialogOptions.uniformCode" clearable />
+      </el-form-item>
+      <el-form-item label="特性" prop="characteristic">
+        <el-select
+          v-model="dialogOptions.characteristic"
+          filterable
+          placeholder="请选择"
+        >
+          <el-option
+            v-for="item in dialogOptions.deviceType == 'booststation'
+              ? characteristicArray1
+              : characteristicArray"
+            :key="item"
+            :label="item"
+            :value="item"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="故障编码">
+        <el-input v-model="dialogOptions.nemCode" clearable />
+      </el-form-item>
+      <el-form-item label="描述" prop="description">
+        <el-input
+          v-model="dialogOptions.description"
+          placeholder="请输入"
+          clearable
+        />
+      </el-form-item>
+      <el-form-item label="报警级别">
+        <el-select v-model="dialogOptions.rank" filterable placeholder="请选择">
+          <el-option
+            v-for="item in levelArray"
+            :key="item.id"
+            :label="item.label"
+            :value="item.id"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item
+        label="测点"
+        prop="tagId"
+        v-if="dialogOptions.deviceType === 'booststation'"
+      >
+        <el-select
+          v-model="dialogOptions.tagId"
+          filterable
+          placeholder="请选择"
+        >
+          <el-option
+            v-for="item in pointArray"
+            :key="item.nemCode"
+            :label="item.name"
+            :value="item.nemCode"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item
+        label="关键部件"
+        prop="components"
+        v-if="dialogOptions.deviceType !== 'booststation'"
+      >
+        <el-select v-model="dialogOptions.components" filterable>
+          <el-option-group
+            v-for="group in associatedComponentsArray"
+            :key="group.label"
+            :label="group.label"
+          >
+            <el-option
+              v-for="item in group.options"
+              :key="item.nemCode"
+              :label="item.name"
+              :value="item.nemCode"
+            />
+          </el-option-group>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="是否启用">
+        <el-radio-group size="small" v-model="dialogOptions.enable">
+          <el-radio-button :label="true">是</el-radio-button>
+          <el-radio-button :label="false">否</el-radio-button>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="是否可复位">
+        <el-radio-group size="small" v-model="dialogOptions.resetTable">
+          <el-radio-button :label="true">是</el-radio-button>
+          <el-radio-button :label="false">否</el-radio-button>
+        </el-radio-group>
+      </el-form-item>
+    </el-form>
+    <el-row class="footerButton" style="margin-top: 20px">
+      <el-button size="mini" round @click="cancle">取 消</el-button>
+      <el-button size="mini" round @click="checkData">确 定</el-button>
+    </el-row>
+  </el-dialog>
+</template>
+<script>
+import {
+  getWpList,
+  getBpList,
+  getWtModel,
+  getPointList,
+  fetchRelatePartAndAlarmType,
+  saveAlarmconfiguration,
+} from "@api/zhbj/index.js";
+export default {
+  props: {
+    isVisible: {
+      type: Boolean,
+      default: () => false,
+    },
+    form: {
+      type: Object,
+      default: () => {},
+    },
+    title: {
+      type: String,
+    },
+  },
+
+  data() {
+    return {
+      isShow: false,
+      dialogOptions: {
+        deviceType: "",
+        id: "",
+        stationId: "",
+        modelId: "",
+        uniformCode: "",
+        nemCode: "",
+        characteristic: "",
+        description: "",
+        rank: 1,
+        tagId: "",
+        components: "",
+        enable: false,
+        resetTable: false,
+      },
+      rules: {
+        deviceType: [
+          {
+            required: true,
+            message: "报警类型不可为空",
+            trigger: "change",
+          },
+        ],
+        stationId: [
+          {
+            required: true,
+            message: "场站不可为空",
+            trigger: "change",
+          },
+        ],
+        modelId: [
+          {
+            required: true,
+            message: "设备型号不可为空",
+            trigger: "change",
+          },
+        ],
+        uniformCode: [
+          {
+            required: true,
+            message: "统一编码不可为空",
+            trigger: "change",
+          },
+        ],
+        characteristic: [
+          {
+            required: true,
+            message: "统一编码不可为空",
+            trigger: "change",
+          },
+        ],
+        tagId: [
+          {
+            required: true,
+            message: "测点不可为空",
+            trigger: "change",
+          },
+        ],
+        description: [
+          {
+            required: true,
+            message: "描述不可为空",
+            trigger: "change",
+          },
+        ],
+        components: [
+          {
+            required: true,
+            message: "部件不可为空",
+            trigger: "change",
+          },
+        ],
+      },
+      categoryArray: [
+        { id: "windturbine", label: "风机报警" },
+        { id: "booststation", label: "升压站报警" },
+        { id: "inverter", label: "光伏报警" },
+      ],
+      wpArray: [],
+      modelArray: [],
+      characteristicArray: [
+        "安全链停机",
+        "启动禁止",
+        "报警",
+        "手动停机",
+        "安全停机",
+        "禁止启动",
+        "电网故障",
+        "电网停机故障",
+        "记录",
+        "紧急停机",
+        "变桨停机",
+        "正常停机",
+        "偏航停机",
+        "报警记录",
+        "日志",
+        "正常停机故障",
+        "电网故障停机",
+        "快速停机",
+        "总故障",
+      ],
+      characteristicArray1: ["动作", "事故", "报警"],
+      levelArray: [
+        { id: 1, label: "低级" },
+        { id: 2, label: "低中级" },
+        { id: 3, label: "中级" },
+        { id: 4, label: "中高级" },
+        { id: 5, label: "高级" },
+      ],
+      pointArray: [],
+      associatedComponentsArray: [],
+    };
+  },
+
+  created() {
+    this.isShow = this.isVisible;
+    this.dialogOptions = Object.assign(this.dialogOptions, this.form);
+    this.checkRules();
+    this.getWpList();
+    this.getfetchRelatePart();
+  },
+
+  methods: {
+    cancle() {
+      this.$confirm("确认关闭?")
+        .then(() => {
+          this.isShow = false;
+        })
+        .catch(() => {});
+    },
+
+    checkRules() {
+      const isBp = this.dialogOptions.deviceType === "booststation";
+      const isWt = this.dialogOptions.deviceType === "windturbine";
+      const isInv = this.dialogOptions.deviceType === "inverter";
+      this.rules.tagId.forEach((ele) => {
+        ele.required = isBp;
+      });
+
+      this.rules.modelId.forEach((ele) => {
+        ele.required = !isBp;
+      });
+
+      this.rules.components.forEach((ele) => {
+        ele.required = isWt || isInv;
+      });
+    },
+
+    getWpList() {
+      if (
+        this.dialogOptions.deviceType === "windturbine" ||
+        this.dialogOptions.deviceType === "inverter"
+      ) {
+        getWpList(this.dialogOptions.deviceType).then((res) => {
+          this.dialogOptions.stationId = res?.data?.[0]?.id || "";
+          this.wpArray = res.data;
+          this.getWtModel();
+        });
+      } else {
+        getBpList().then((res) => {
+          this.dialogOptions.stationId = res?.data?.[0]?.id || "";
+          this.wpArray = res.data;
+          this.getWtModel();
+        });
+      }
+    },
+
+    getWtModel() {
+      getWtModel(this.dialogOptions.stationId).then((res) => {
+        this.dialogOptions.modelId = res?.data?.[0] || "";
+        this.modelArray = res.data;
+        if (this.dialogOptions.deviceType === "booststation") {
+          this.getPointList();
+        }
+      });
+    },
+
+    getPointList() {
+      getPointList({
+        subId: this.dialogOptions.stationId,
+      }).then((res) => {
+        this.pointArray = res.data.total;
+      });
+    },
+
+    getfetchRelatePart() {
+      fetchRelatePartAndAlarmType().then((res) => {
+        const keyMap = {
+          fjbj: "风机部件",
+          gfbj: "光伏部件",
+        };
+
+        let associatedComponentsArray = [];
+
+        for (let key in keyMap) {
+          associatedComponentsArray.push({
+            id: key,
+            label: keyMap[key],
+            options: res.data[key] || [],
+          });
+        }
+        this.dialogOptions.components =
+          associatedComponentsArray?.[0]?.options?.[0]?.nemCode || "";
+        this.associatedComponentsArray = associatedComponentsArray;
+      });
+    },
+
+    checkData() {
+      this.$refs.formRef.validate((valid, fields) => {
+        if (valid) {
+          saveAlarmconfiguration(
+            Object.assign(this.dialogOptions, {
+              alarmType:
+                this.dialogOptions.alarmType || this.dialogOptions.deviceType,
+            })
+          ).then((res) => {
+            if (res.code === 200) {
+              this.BASE.showMsg({
+                type: "success",
+                msg: "提交成功",
+              });
+              this.isShow = false;
+            }
+          });
+        }
+      });
+    },
+
+    resetOptions() {
+      this.dialogOptions = {
+        deviceType: "",
+        id: "",
+        stationId: "",
+        modelId: "",
+        uniformCode: "",
+        characteristic:
+          this.dialogOptions.deviceType == "booststation" ? "报警" : "正常停机",
+        nemCode: "",
+        description: "",
+        rank: 1,
+        tagId: "",
+        components: "",
+        enable: false,
+        resetTable: false,
+      };
+      this.resetForm();
+      this.isShow = false;
+    },
+
+    resetForm() {
+      this.$refs.formRef.resetFields();
+    },
+  },
+
+  watch: {
+    isVisible(value) {
+      this.isShow = value;
+    },
+    form(value) {
+      this.dialogOptions = value;
+      this.checkRules();
+      this.getWpList();
+    },
+  },
+};
+</script>

+ 633 - 0
src/views/IntegratedAlarm/alarmConfig/historyConfig/index.vue

@@ -0,0 +1,633 @@
+<template>
+  <div class="history-config">
+    <div class="form-wrapper">
+      <div class="btns" style="margin-bottom: 10px">
+        <el-button size="mini" round class="buttons" @click="handleInsert">
+          新增记录
+        </el-button>
+        <el-button size="mini" round class="buttons" @click="export2Excel">
+          批量导出</el-button
+        >
+        <el-button size="mini" round class="buttons" @click="outExe">
+          模板下载</el-button
+        >
+        <el-upload
+          style="display: inline; margin-left: 10px"
+          action="/sharding/warning2/import"
+          :headers="token"
+          :show-file-list="false"
+          :on-success="handleSuccess"
+          :on-progress="handleProgress"
+          :on-error="handleError"
+        >
+          <el-button
+            size="mini"
+            round
+            class="buttons"
+            @click="exportShow = true"
+          >
+            批量导入</el-button
+          >
+        </el-upload>
+      </div>
+      <div class="search-wrapper">
+        <el-select
+          class="search-item"
+          v-model="query.alarmType"
+          size="mini"
+          popper-class="select"
+          @change="categorychanged"
+        >
+          <el-option key="2" label="升压站" value="booststation"></el-option>
+          <el-option key="1" label="风机" value="windturbine"></el-option>
+          <el-option key="3" label="光伏" value="inverter"></el-option>
+        </el-select>
+        <el-select
+          class="search-item"
+          v-model="query.wpId"
+          clearable
+          size="mini"
+          :placeholder="
+            query.alarmType == 'booststation' ? '全部升压站' : '全部场站'
+          "
+          popper-class="select"
+          @change="changeStation"
+        >
+          <el-option
+            v-for="item in stationList"
+            :key="item.id"
+            :value="item.id"
+            :label="item.aname"
+          ></el-option>
+        </el-select>
+        <el-select
+          class="search-item"
+          v-if="query.alarmType != 'booststation'"
+          v-model="query.modelId"
+          clearable
+          size="mini"
+          placeholder="全部机型"
+          popper-class="select"
+        >
+          <el-option
+            v-for="item in modelList"
+            :key="item.id"
+            :value="item.id"
+            :label="item.aname"
+          ></el-option>
+        </el-select>
+        <el-input
+          class="search-item"
+          placeholder="请输入名称"
+          v-model="query.name"
+          size="mini"
+          clearable
+        ></el-input>
+        <el-button class="buttons" round size="mini" @click="getData"
+          >搜 索</el-button
+        >
+      </div>
+    </div>
+    <div class="table-wrapper">
+      <div class="leftContent">
+        <span>{{ pageTitle }}</span>
+      </div>
+      <el-table
+        :data="state.tableData"
+        :highlight-current-row="true"
+        border
+        height="calc(100% - 52px - 42px)"
+        width="100%"
+      >
+        <el-table-column
+          v-for="item in query.alarmType == 'windturbine' ||
+          query.alarmType == 'inverter'
+            ? state.tableHeader
+            : state.tableHeader1"
+          :key="item.code"
+          :label="item.title"
+          align="center"
+          :prop="item.code"
+          show-overflow-tooltip
+        >
+          <template #default="scope">
+            <span v-if="item.code == 'rank'">
+              {{ rankConvert(scope.row.rank) }}
+            </span>
+            <span v-else-if="item.code == 'alarmType'">
+              {{ alarmTypeConvert("alarmType", scope.row.alarmType) }}
+            </span>
+            <span v-else-if="item.code == 'deviceType'">
+              {{ alarmTypeConvert("deviceType", scope.row.deviceType) }}
+            </span>
+            <span v-else-if="item.code == 'enable'">
+              {{ enabledConvert(scope.row.enable) }}
+            </span>
+            <span v-else>
+              {{ scope.row[item.code] }}
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" width="100">
+          <template #default="scope">
+            <el-button
+              type="text"
+              style="color: #05bb4c"
+              size="mini"
+              @click="handleEditClick(scope.row)"
+            >
+              编辑</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          layout="total, sizes, prev, pager, next"
+          :current-page="query.pageNum"
+          :page-size="query.pageSize"
+          :page-sizes="[22, 50, 100, 200, 500]"
+          :total="total"
+          @size-change="
+            (value) => {
+              query.pageSize = value;
+              query.pageNum = 1;
+              getData();
+            }
+          "
+          @current-change="handlePageChange"
+        ></el-pagination>
+      </div>
+    </div>
+    <windturbinecomponents
+      :title="state.title"
+      @close="dialogclose"
+      :isVisible="state.visible"
+      :form="state.form"
+    />
+  </div>
+</template>
+<script setup>
+import {
+  windturbinebj_fetchTableData,
+  getStationinfo,
+  fetchRelatePartAndAlarmType,
+  fetchModel,
+  getWpList,
+} from "@/api/zhbj/index.js";
+import { outExportExcel } from "@/tools/excel/exportExcel.js"; //引入文件
+import {
+  ref,
+  onMounted,
+  provide,
+  computed,
+  reactive,
+  watch,
+  nextTick,
+} from "vue";
+import { useStore } from "vuex";
+import { ElMessageBox, ElMessage } from "element-plus";
+import windturbinecomponents from "@/views/IntegratedAlarm/alarmConfig/components/windturbine_components.vue";
+const pageTitle = "报警配置";
+const store = useStore();
+const token = { token: store.state.user.authToken };
+onMounted(() => {
+  getWpArray();
+  getequipmentmodel_list();
+  getData();
+});
+const query = reactive({
+  pageNum: 1,
+  pageSize: 22,
+  wpId: "",
+  modelId: "",
+  name: "",
+  alarmType: "windturbine",
+});
+const state = reactive({
+  title: "",
+  tableData: [],
+  modelList: [],
+  modelListAll: {}, //型号所有列表
+  visible: false,
+  form: {},
+  tableHeader: [
+    { title: "编码", code: "id" },
+    { title: "场站", code: "stationName" },
+    // { title: "设备", code: "deviceId", },
+    { title: "机型", code: "modelId" },
+    { title: "报警描述", code: "description" },
+    { title: "设备部件", code: "componentsName" },
+    { title: "特性", code: "characteristic" },
+    { title: "设备类型", code: "deviceType" },
+    { title: "报警类型", code: "alarmType" },
+    // { title: "级别", code: "rankName" },
+    { title: "是否启用", code: "enable" },
+    { title: "是否可复位", code: "resetTableName" },
+  ],
+  tableHeader1: [
+    { title: "编码", code: "id" },
+    { title: "升压站", code: "stationName" },
+    // { title: "规则名称", code: "name" },
+    // { title: "表达式", code: "expression" },
+
+    { title: "类型", code: "alarmType" },
+    // { title: "级别", code: "rank" },
+    { title: "是否启用", code: "enable" },
+    { title: "描述", code: "description" },
+  ],
+});
+// 机型
+const getequipmentmodel_list = async () => {
+  const { data } = await fetchModel();
+  state.modelListAll = data;
+};
+// 场站列表/升压站列表
+const stationList = ref([]);
+const categorychanged = async (value) => {
+  query.alarmType = value;
+  query.wpId = "";
+  query.modelId = "";
+  getWpArray();
+  getData();
+};
+const getWpArray = async () => {
+  const { data } = await getWpList(query.alarmType);
+  stationList.value = data;
+};
+//型号列表
+const modelList = computed(() => {
+  if (query.wpId == "") {
+    return [];
+  } else {
+    return state.modelListAll[query.wpId];
+  }
+});
+const isStation = computed(() => store.getters.isStation);
+
+let total = ref(0);
+const getData = async () => {
+  const { data: res } = await windturbinebj_fetchTableData(query);
+  res.records.forEach((ele) => {
+    ele.rankName = getRankName(ele.rank);
+    ele.resetTableName = ele.resetTable ? "是" : "否";
+  });
+  state.tableData = res.records;
+  total.value = res.total;
+};
+
+const getRankName = (rank) => {
+  if (rank === 1) {
+    return "低级";
+  } else if (rank === 2) {
+    return "低中级";
+  } else if (rank === 3) {
+    return "中级";
+  } else if (rank === 4) {
+    return "中高级";
+  } else if (rank === 5) {
+    return "高极";
+  }
+};
+//changeStation
+const changeStation = async () => {
+  query.modelId = "";
+  getData();
+};
+const dialogclose = () => {
+  state.visible = false;
+  getData();
+};
+
+const handleInsert = () => {
+  state.visible = true;
+  state.title = "新增";
+};
+const handleEditClick = (row) => {
+  state.title = "编辑";
+  let obj = Object.assign({}, row);
+  obj && (obj.manufacturerCode = "");
+  state.form = obj;
+  state.visible = true;
+};
+
+// 分页导航
+const handlePageChange = (val) => {
+  query.pageNum = val;
+  getData();
+};
+
+const tableHeader = [
+  "id",
+  "报警级别(ZC_BJ:运转正常;YJ_BJ:运转状态超出标准范围;GZ_BJ:非正常停止运转;WH_BJ:停机维护;XD_BJ:限电/计划停机)",
+  "制造商(HFYG_CS:合肥阳光电源有限公司;AMS_CS:艾默生;NRJD_CS:国电南瑞吉电新能源;MGSK_CS:美国赛康;LHDL_CS:联合动力;SYHC_CS:沈阳华创)",
+  "名称",
+  "上一级节点",
+  "是否有子节点",
+  "序列号",
+  "类别 :正常停机,正常启动,快速停机,紧急停机",
+  "设备型号",
+  "全部默认为1",
+  "统一编码",
+  "是否展示(0:是;1:否)",
+  "报警分类(bj:变桨;bpq:变频器;clx:齿轮箱;fdj:发电机;hh:滑环;jcjr:机舱加热;lq:冷却;ph:偏航;rh:润滑;yy:液压;zz:主轴;other:其它;kz:控制;yl:叶轮;jc:机舱;xb:箱变;dw:电网;td:塔底;fsy:风速仪)",
+  "消缺规定时间",
+  "是否可以复位(0:是;1:否)",
+  "报警类型编号",
+  "故障编码",
+  "关联部件",
+];
+
+const tableKey = [
+  "id",
+  "levelId",
+  "manufacturerCode",
+  "chineseText",
+  "parentId",
+  "isleaf",
+  "sequenceNumber",
+  "characteristic",
+  "modelId",
+  "codeName",
+  "ednaValue",
+  "display",
+  "warningClassIfyId",
+  "standardTime",
+  "isreset",
+  "warningTypeId",
+  "faultCode",
+  "relatedParts",
+];
+// 批量导出
+const export2Excel = async () => {
+  let { name, wpId, modelId } = query;
+  const res = await windturbinebj_fetchTableData({
+    pageNum: 1,
+    pageSize: 999999,
+    name,
+    wpId,
+    modelId,
+  });
+
+  ElMessage.success(`导出成功!`);
+  outExportExcel(
+    tableHeader,
+    tableKey,
+    res.data.records,
+    "设备报警配置导出excel"
+  );
+};
+// 模板下载
+const outExe = () => {
+  const data = [];
+  ElMessage.success(`导出成功!`);
+  outExportExcel(tableHeader, tableKey, data, "设备报警模板");
+};
+// 批量导入
+const handleSuccess = (response, file, fileList) => {
+  ElMessage.success("导入成功!");
+  getData();
+};
+const handleProgress = (response, file, fileList) => {};
+const handleError = (response, file, fileList) => {
+  ElMessage.success("导入失败!");
+};
+//级别
+const rankConvert = (val) => {
+  if (val == 1) {
+    return "低级";
+  } else if (val == 2) {
+    return "低中级";
+  } else if (val == 3) {
+    return "中级";
+  } else if (val == 4) {
+    return "中高级";
+  } else if (val == 5) {
+    return "高级";
+  }
+};
+// 类型
+const alarmTypeConvert = (type, val) => {
+  if (type === "alarmType") {
+    if (val === "windturbine") {
+      return "风机";
+    } else if (val === "booststation") {
+      return "升压站";
+    } else if (val === "inverter") {
+      return "光伏";
+    } else if (val === "custom") {
+      return "自定义";
+    }
+  } else {
+    if (val === "windturbine") {
+      return "风机";
+    } else if (val === "booststation") {
+      return "升压站";
+    } else if (val === "inverter") {
+      return "光伏";
+    }
+  }
+};
+// 状态
+const enabledConvert = (val) => {
+  if (val === false) {
+    return "停用";
+  } else if (val === true) {
+    return "启用";
+  }
+};
+// 报警分类
+const warningClassIfyIdConvert = (val) => {
+  switch (val) {
+    case "bj":
+      return "变桨";
+
+    case "bpq":
+      return "变频器";
+
+    case "clx":
+      return "齿轮箱";
+
+    case "fdj":
+      return "发电机";
+
+    case "hh":
+      return "滑环";
+
+    case "jcjr":
+      return "机舱加热";
+
+    case "lq":
+      return "冷却";
+
+    case "ph":
+      return "偏航";
+
+    case "rh":
+      return "润滑";
+
+    case "yy":
+      return "液压";
+
+    case "zz":
+      return "主轴";
+
+    case "other":
+      return "其它";
+
+    case "kz":
+      return "控制";
+
+    case "yl":
+      return "叶轮";
+
+    case "jc":
+      return "机舱";
+
+    case "xb":
+      return "箱变";
+
+    case "dw":
+      return "电网";
+
+    case "td":
+      return "塔底";
+
+    case "fsy":
+      return "风速仪";
+  }
+};
+// 是否可以复位
+const isresetConvert = (val) => {
+  switch (val) {
+    case 0:
+      return "是";
+    case 1:
+      return "否";
+  }
+};
+
+// 统一编码
+const ednaValueConvert = (val) => {
+  if (val === 0) {
+    return "";
+  } else if (val < 100 && val > 0) {
+    return "DI0" + val;
+  } else if (val >= 100) {
+    return "DI" + val;
+  }
+};
+// 关联部件
+const relatePartConvert = (val) => {
+  switch (val) {
+    case "YP":
+      return "叶片";
+    case "LG":
+      return "轮毂";
+    case "TZ":
+      return "塔架";
+    case "JC":
+      return "机舱";
+    case "KZXT":
+      return "控制系统";
+    case "BJXT":
+      return "变桨系统";
+    case "PHXT":
+      return "偏航系统";
+    case "CLX":
+      return "齿轮箱";
+    case "FDJ":
+      return "发电机";
+    case "BPQ":
+      return "变频器";
+    case "YYXT":
+      return "液压系统";
+    case "FZXT":
+      return "辅助系统";
+    case "CFXT":
+      return "测风系统";
+    case "DWXT":
+      return "电网系统";
+    case "TDG":
+      return "塔底柜";
+    case "CDL":
+      return "传动链";
+    case "QT":
+      return "其他";
+    default:
+  }
+};
+</script>
+<style scoped lang="less">
+.history-config {
+  height: 100%;
+  width: 100%;
+  padding: 0 20px;
+  padding-bottom: 10px;
+  .form-wrapper {
+    display: flex;
+    padding-top: 10px;
+    justify-content: space-between;
+    .search-wrapper::v-deep {
+      display: flex;
+      align-items: center;
+      font-size: 14px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #b3b3b3;
+      margin-bottom: 10px;
+      .search-item {
+        margin-right: 10px;
+        max-width: 190px;
+      }
+    }
+
+    .btns {
+      display: flex;
+      justify-content: flex-end;
+      margin-right: 10px;
+      //   position: absolute;
+      //   right: 0;
+      //   top: 53px;
+    }
+
+    .buttons {
+      background-color: rgba(5, 187, 76, 0.2);
+      border: 1px solid #3b6c53;
+      color: #b3b3b3;
+      font-size: 14px;
+      &:hover {
+        background-color: rgba(5, 187, 76, 0.5);
+        color: #ffffff;
+      }
+    }
+  }
+}
+.table-wrapper {
+  height: calc(100% - 43px);
+  width: 100%;
+  .leftContent {
+    width: 242px;
+    height: 41px;
+    display: flex;
+    align-items: center;
+    background: url("~@/assets/imgs/title_left_bg1.png") no-repeat;
+
+    span {
+      font-size: 16px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #05bb4c;
+      margin-left: 25px;
+    }
+  }
+  .pagination-wrapper :deep {
+    text-align: right;
+    margin-top: 10px;
+  }
+}
+
+.el-button + .el-button {
+  margin-left: 10px;
+}
+</style>

+ 11 - 0
src/views/IntegratedAlarm/alarmConfig/index.vue

@@ -0,0 +1,11 @@
+<template>
+  <router-view />
+</template>
+
+<script>
+export default {
+  name: "alarmConfig", //报警配置
+};
+</script>
+
+<style scoped lang="less"></style>

+ 621 - 0
src/views/IntegratedAlarm/reliability/historyAnalyse/index.vue

@@ -0,0 +1,621 @@
+<template>
+  <!-- 风机原始数据统计表页面 -->
+  <div class="history-analyse">
+    <!-- 页面头部 multiple多选属性 -->
+    <div class="form-wrapper">
+      <div class="search-wrapper">
+        <div class="search-item">
+          <span class="label">报警类型:</span>
+          <div class="search-content">
+            <el-select
+              v-model="state.typeVal"
+              size="mini"
+              placeholder="全部"
+              popper-class="select"
+              @change="changeType"
+            >
+              <el-option
+                v-for="item in state.typeList"
+                :key="item.value"
+                :value="item.value"
+                :label="item.label"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+        <div class="search-item">
+          <span class="label">场站:</span>
+          <div class="search-content">
+            <el-select
+              size="mini"
+              v-model="state.changZhan"
+              @change="changeChangzhan"
+              placeholder="全部场站"
+            >
+              <el-option
+                v-for="item in changZhanArray"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+        <div class="search-item" v-if="state.typeVal !== 'booststation'">
+          <span class="label">型号:</span>
+          <div class="search-content">
+            <el-select
+              size="mini"
+              v-model="state.modelId"
+              @change="changeModel"
+              placeholder="全部型号"
+            >
+              <el-option
+                v-for="item in modelList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+        <div class="search-item" v-if="state.typeVal !== 'booststation'">
+          <span class="label">部件:</span>
+          <div class="search-content">
+            <el-select
+              v-model="state.components"
+              multiple
+              size="mini"
+              collapse-tags
+              clearable
+              placeholder="全部部件"
+              @change="changeComponents"
+            >
+              <el-option
+                v-for="item in componentList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.nemCode"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+        <div class="search-item" v-if="state.typeVal !== 'booststation'">
+          <span class="label">报警描述:</span>
+          <div class="search-content">
+            <el-select
+              v-model="state.alarmIds"
+              multiple
+              size="mini"
+              clearable
+              collapse-tags
+              placeholder="全部描述"
+            >
+              <el-option
+                v-for="item in state.alarmIdList"
+                :key="item.id"
+                :label="item.description"
+                :value="item.alarmId"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </div>
+        <div class="search-item">
+          <span class="label">开始日期:</span>
+          <div class="search-content">
+            <el-date-picker
+              size="mini"
+              v-model="state.starttime"
+              type="datetime"
+              placeholder="选择日期"
+              value-format="YYYY-MM-DD HH:mm:ss"
+            >
+            </el-date-picker>
+          </div>
+        </div>
+        <div class="search-item">
+          <span class="label">结束日期:</span>
+          <div class="search-content">
+            <el-date-picker
+              size="mini"
+              v-model="state.endtime"
+              type="datetime"
+              placeholder="选择日期"
+              value-format="YYYY-MM-DD HH:mm:ss"
+            >
+            </el-date-picker>
+          </div>
+        </div>
+      </div>
+      <div class="btns">
+        <el-button class="buttons" size="mini" round @click="getTableList"
+          >查询</el-button
+        >
+      </div>
+    </div>
+
+    <!-- 页面下部---统计表 -->
+    <div class="table_all">
+      <div class="leftContent">
+        <span>{{ pageTitle }}</span>
+      </div>
+      <el-table
+        :data="state.tableData"
+        stripe
+        height="calc(100% - 40px)"
+        @sort-change="handleSort"
+      >
+        <el-table-column
+          prop="wtname"
+          label="设备编号"
+          align="center"
+          width="80"
+        />
+        <el-table-column
+          :label="item.label"
+          v-for="(item, index) in state.tHeard"
+          :key="index"
+          :prop="item"
+          header-align="center"
+          show-overflow-tooltip
+          sortable="custom"
+        >
+          <template #default="{ row }">
+            <div class="bar">
+              <div
+                class="bar-percent"
+                :style="{
+                  width:
+                    row[`${item.code}_count`] || row[`${item.code}_time`]
+                      ? (row[`${item.code}_count`] /
+                          (row[`${item.code}_count`] +
+                            row[`${item.code}_time`])) *
+                          100 +
+                        'px'
+                      : '0px',
+                }"
+              ></div>
+              <span class="value">{{ row[`${item.code}_count`] }} 次数</span>
+            </div>
+            <div class="bar">
+              <div
+                class="bar-percent"
+                :style="{
+                  width:
+                    row[`${item.code}_count`] || row[`${item.code}_time`]
+                      ? (row[`${item.code}_time`] /
+                          (row[`${item.code}_count`] +
+                            row[`${item.code}_time`])) *
+                          100 +
+                        'px'
+                      : '0px',
+                }"
+              ></div>
+              <span class="value">{{ row[`${item.code}_time`] }} 分钟</span>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <el-dialog
+      v-model="dialogVisible"
+      width="80%"
+      :before-close="dialogClose"
+      custom-class="currentPdfDialogStyle"
+    >
+      <el-table
+        :data="DataDetail"
+        border
+        :cell-class-name="tableCell"
+        :header-row-class-name="tableRowClassName"
+        height="600px"
+        @row-click="handle"
+      >
+        <el-table-column prop="windturbineId" label="风机编号" align="center" />
+        <el-table-column prop="alarmName" label="报警名称" align="center" />
+        <el-table-column prop="alarmDate" label="时间" align="center" />
+        <el-table-column prop="type" label="类型(触发/解除)" align="center">
+          <template #default="scope">
+            <!-- <span v-if="scope.row.type === 1">触发</span>
+            <span v-if="scope.row.type === 0">解除</span> -->
+            {{ scope.row.type === 1 ? "触发" : "解除" }}
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+    <!-- <el-pagination
+      small
+      background
+      layout="total, prev, pager, next"
+      :current-page="pageParam.pagenum"
+      :page-size="pageParam.pagesize"
+      :total="pageParam.total"
+      @current-change="changePage"
+    ></el-pagination> -->
+  </div>
+</template>
+
+<script setup>
+import { useStore } from "vuex";
+import BASE from "@tools/basicTool.js";
+import {
+  ref,
+  onMounted,
+  watch,
+  reactive,
+  computed,
+  onUnmounted,
+  nextTick,
+} from "vue";
+import {
+  getAlarmCountList,
+  fetchModel,
+  fetchRelatePartAndAlarmType,
+  GetAlarmId,
+  getWpList,
+} from "@/api/zhbj/index.js";
+import dayjs from "dayjs";
+onMounted(() => {
+  getWpArray();
+  getequipmentmodel_list();
+  getfetchRelatePart();
+  //   getTableList();
+});
+const pageTitle = "报警分析";
+const store = useStore();
+const changZhanArray = ref([]);
+const state = reactive({
+  typeVal: "windturbine",
+  typeList: [
+    {
+      label: "升压站",
+      value: "booststation",
+    },
+    // {
+    //   label: "自定义",
+    //   value: "custom",
+    // },
+    {
+      label: "风机",
+      value: "windturbine",
+    },
+    {
+      label: "光伏",
+      value: "inverter",
+    },
+  ],
+  tableData: [],
+  tHeard: [],
+  changZhan: "",
+  components: "", //部件
+  modelId: "", //型号
+  alarmIds: "",
+  alarmIdList: [],
+  modelListAll: {},
+  fetchListAll: {},
+  starttime: dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
+  endtime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+  dialogVisible: false,
+});
+
+const changeType = (value) => {
+  state.typeVal = value;
+  getWpArray();
+};
+
+const getWpArray = async () => {
+  const { data } = await getWpList(state.typeVal);
+  changZhanArray.value = data;
+  if (state.typeVal != "booststation") {
+    state.changZhan =
+      state.typeVal == "windturbine" ? "SXJ_KGDL_DJY_FDC_STA" : "";
+  } else {
+    state.changZhan = "";
+    state.modelId = "";
+    getTableList();
+  }
+};
+// 机型
+const getequipmentmodel_list = async () => {
+  const { data } = await fetchModel();
+  state.modelListAll = data;
+};
+//所属部件
+const getfetchRelatePart = async () => {
+  const { data } = await fetchRelatePartAndAlarmType();
+  state.fetchListAll = data;
+};
+//型号列表
+const modelList = computed(() => {
+  if (state.changZhan == "") {
+    return [];
+  } else {
+    return state.modelListAll[state.changZhan];
+  }
+});
+//部件列表
+const componentList = computed(() => {
+  if (state.changZhan == "") {
+    return [];
+  } else {
+    if (state.changZhan.includes("FDC")) {
+      return state.fetchListAll?.fjbj;
+    } else {
+      return state.fetchListAll?.gfbj;
+    }
+  }
+});
+watch(
+  () => [modelList, componentList],
+  (val) => {
+    if (state.typeVal != "booststation") {
+      let arr = val.map((item) => item.value);
+      if (arr[0] && arr[0].length && arr[1] && arr[1].length) {
+        state.modelId = [arr[0][0]?.nemCode];
+        let componenDefaultSelect =
+          arr[1]?.find((ele) => {
+            return ele.nemCode === "ZZ";
+          })?.nemCode || "";
+        componenDefaultSelect
+          ? (state.components = [componenDefaultSelect])
+          : arr[1]?.[0]?.nemCode
+          ? (state.components = [arr[1]?.[0]?.nemCode])
+          : (state.components = []);
+        getAlarmId();
+      }
+    }
+  },
+  {
+    deep: true,
+    immediate: true,
+  }
+);
+function changeModel(val) {
+  state.modelId = val;
+  getAlarmId();
+}
+function changeComponents(val) {
+  state.components = val;
+  getAlarmId();
+}
+function changeChangzhan(val) {
+  state.changZhan = val;
+  if (state.typeVal != "booststation") {
+    getAlarmId();
+  }
+}
+function getAlarmId() {
+  GetAlarmId({
+    components: state.components,
+    modelId: state.modelId,
+    wpId: state.changZhan,
+  }).then(({ data }) => {
+    state.alarmIdList = data;
+    state.alarmIds = [];
+    // state.alarmIds =
+    //   data.length <= 5
+    //     ? data.map((item) => item.alarmId)
+    //     : data.slice(0, 5).map((item) => item.alarmId);
+    getTableList();
+  });
+}
+// 获取列表数据 调用接口
+function getTableList() {
+  if (state.components?.length) {
+    getAlarmCountList({
+      stationid: state.changZhan || "",
+      begin: state.starttime,
+      end: state.endtime,
+      timeType: "m",
+      components: state.typeVal === "booststation" ? "" : state.components,
+      modelId: state.modelId,
+      alarmIds: state.alarmIds,
+      alarmType: state.typeVal,
+    }).then((res) => {
+      if (res.length) {
+        let tableData = [];
+        let tHeard = [];
+        let data = res;
+        data.forEach((pEle) => {
+          for (let wtId in pEle) {
+            let wtItem = data.find((tableItem) => {
+              return wtId === tableItem.windturbineId;
+            });
+            !wtItem && (wtItem = { wtId });
+            pEle[wtId].forEach((cEle) => {
+              let someRes = tHeard.some((findEle) => {
+                return findEle.label == cEle.alertText;
+              });
+
+              if (!someRes) {
+                tHeard.push({
+                  label: cEle.alertText,
+                  code: cEle.alarmid,
+                });
+              }
+              wtItem[`${cEle.alarmid}_count`] = cEle.count;
+              wtItem[`${cEle.alarmid}_time`] = cEle.time;
+              wtItem["wtname"] = cEle.windturbineCode;
+            });
+            tableData.push(wtItem);
+          }
+        });
+        state.tHeard = tHeard;
+        state.tableData = tableData;
+      } else {
+        state.tHeard = [];
+        state.tableData = [];
+      }
+    });
+  } else {
+    BASE.showMsg({
+      msg: "部件至少选择一项才可查询",
+    });
+  }
+}
+
+const handleSort = function (val) {
+  let item = val.prop;
+  let list = JSON.parse(JSON.stringify(state.tableData));
+  if (val.order == "ascending") {
+    state.tableData = list.sort(compare(`${item.code}_count`));
+  } else if (val.order == "descending") {
+    state.tableData = list.sort(compare(`${item.code}_count`)).reverse();
+  }
+};
+//排序函数
+const compare = function (property) {
+  return function (a, b) {
+    var value1 = a[property];
+    var value2 = b[property];
+    return value1 - value2;
+  };
+};
+
+//     // 单元格点击事件
+//     handle(row, column, event, cell) {
+//       let parts =
+//         this.tHeard.find((ele) => {
+//           return ele.label === column.label;
+//         })?.parts || "";
+//       getDialogData({
+//         stationid: this.changZhan || "",
+//         starttime: dayjs(this.starttime).format("YYYY-MM-DD"),
+//         endtime: dayjs(this.endtime).format("YYYY-MM-DD"),
+//         windturbineid: row.wtId,
+//         parts,
+//       }).then((res) => {
+//         if (res && res.status === 20000) {
+
+//           if (res.data.length) {
+//             if (column.property !== "wtId") {
+//               this.DataDetail = res.data;
+//               let tableArr = [];
+//               res.data.forEach((currentItem) => {
+//                 // if (currentItem.type === 1) {
+//                 //   currentItem.type = '触发'
+//                 // }
+//                 // else if (currentItem.type === 0) {
+//                 //   currentItem.type = '解除'
+//                 // }
+//                 tableArr.push(currentItem);
+//               });
+
+//               this.dialogVisible = true;
+//             }
+//           } else {
+//             BASE.showMsg({
+//               msg: "所选风机暂无数据",
+//             });
+//           }
+//         }
+//       });
+//     },
+</script>
+
+<style lang="less" scoped>
+.history-analyse {
+  height: 100%;
+  width: 100%;
+  padding: 0 20px;
+  padding-bottom: 10px;
+  .form-wrapper ::v-deep {
+    display: flex;
+    flex-direction: column;
+    padding-top: 10px;
+    position: relative;
+    .search-wrapper {
+      display: flex;
+      align-items: center;
+      font-size: 14px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #b3b3b3;
+      margin-bottom: 10px;
+      .search-item {
+        display: flex;
+        margin-right: 10px;
+        max-width: 450px;
+        align-items: center;
+        .label {
+          margin-right: 10px;
+          text-align: right;
+          white-space: nowrap;
+          // width: 60px;
+        }
+        .search-content {
+          flex: 1;
+        }
+      }
+    }
+
+    .btns {
+      display: flex;
+      justify-content: flex-end;
+      margin-right: 10px;
+      position: absolute;
+      right: 0;
+      top: 53px;
+    }
+
+    .buttons {
+      background-color: rgba(5, 187, 76, 0.2);
+      border: 1px solid #3b6c53;
+      color: #b3b3b3;
+      font-size: 14px;
+
+      &:hover {
+        background-color: rgba(5, 187, 76, 0.5);
+        color: #ffffff;
+      }
+    }
+  }
+  .table_all {
+    height: calc(100% - 47px);
+    width: 100%;
+    .leftContent {
+      width: 242px;
+      height: 41px;
+      display: flex;
+      align-items: center;
+      background: url("~@/assets/imgs/title_left_bg1.png") no-repeat;
+
+      span {
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #05bb4c;
+        margin-left: 25px;
+      }
+    }
+    .el-table {
+      .el-table__row {
+        td {
+          cursor: pointer;
+
+          &:first-child {
+            cursor: auto;
+          }
+        }
+      }
+    }
+  }
+  .bar {
+    display: flex;
+    align-items: center;
+    height: 16px;
+    margin: 8px 0;
+
+    .bar-percent {
+      height: 100%;
+      background: #05bb4c;
+      margin-right: 8px;
+    }
+  }
+}
+</style>

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

@@ -669,7 +669,7 @@ const messageTypeFilter = (val) => {
 };
 </script>
 
-<style scoped lang="scss">
+<style scoped lang="less">
 p {
   padding: 0;
   margin: 0;

+ 1 - 1
src/views/IntegratedAlarm/safe/dataSearch/index.vue

@@ -345,7 +345,7 @@ const getWindturbineList = async () => {
   //   await getequipmentmodel_list();
   await getFetchAIPointListt();
 };
-// 风机搜索
+// 风机搜 
 const filterWTList = computed(() =>
   state.windturbineList?.filter(
     (data) =>

+ 1 - 1
src/views/WindSite/pages/Info/Warning.vue

@@ -5,7 +5,7 @@
         <div class="query">
           <input class="search-input" name="query" v-model="query" />
         </div>
-        <button class="btn search" @click="search">搜索</button>
+        <button class="btn search" @click="search">搜 索</button>
         <div class="empty"></div>
         <button class="btn empty-btn" @click="reset">重置</button>
       </el-row>

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/intervalBenchmarking/index.vue

@@ -87,7 +87,7 @@
           :disabled="displayDetail"
           class="buttons"
           @click="gerCjdb"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button
           round

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/loseRate/index.vue

@@ -126,7 +126,7 @@
           class="buttons"
           :disabled="displayDetail"
           @click="gerWxssl"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button
           round

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/performanceRankingList/decision1Mx.vue

@@ -103,7 +103,7 @@
       </div>
       <div class="but">
         <el-button round size="mini" class="buttons" @click="getPerformance"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button round size="mini" class="buttons" @click="mxClick"
           >返回</el-button

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/performanceRankingList/index.vue

@@ -111,7 +111,7 @@
       </div>
       <div class="but">
         <el-button round size="mini" class="buttons" @click="getPerformance"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <!-- <el-button round size="mini" class="buttons" @click="mxClick"
           >明细</el-button

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/projectBenchmarking/index.vue

@@ -106,7 +106,7 @@
           class="buttons"
           :disabled="displayDetail"
           @click="getXmdb"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button
           round

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/singleMachineBenchmarking/index.vue

@@ -117,7 +117,7 @@
         </div>
         <div class="but">
           <el-button round size="mini" class="buttons" @click="seachData"
-            >搜索</el-button
+            >搜 索</el-button
           >
           <el-button round size="mini" class="buttons" @click="downXlsxFn"
             >导出</el-button

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/siteBenchmarking/index.vue

@@ -83,7 +83,7 @@
           class="buttons"
           :disabled="displayDetail"
           @click="gerCndb"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button
           round

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/valueBenchmarking/index.vue

@@ -28,7 +28,7 @@
         </div>
       </div>
       <el-button round size="mini" class="searchColor" @click="getTableDate"
-        >搜索</el-button
+        >搜 索</el-button
       >
       <!-- <el-button round size="mini">导出</el-button> -->
     </div>

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/wiringBenchmarking/index.vue

@@ -127,7 +127,7 @@
           :disabled="displayDetail"
           class="buttons"
           @click="gerXldb"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button
           round

+ 1 - 1
src/views/economicsOperation/comprehensiveControl/maintenanceKPI/index.vue

@@ -33,7 +33,7 @@
 
       <div class="but">
         <el-button round size="mini" class="buttons" @click="getTableData"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button round size="mini" class="buttons" @click="downXlsxFn"
           >导出</el-button

+ 1 - 1
src/views/economicsOperation/comprehensiveControl/runningKPI/index.vue

@@ -34,7 +34,7 @@
 
       <div class="but">
         <el-button round size="mini" class="buttons" @click="getTableData"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button round size="mini" class="buttons" @click="downXlsxFn"
           >导出</el-button

+ 1 - 1
src/views/economicsOperation/comprehensiveControl/stationControlKPI/index.vue

@@ -33,7 +33,7 @@
 
       <div class="but">
         <el-button round size="mini" class="buttons" @click="getTableData"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button round size="mini" class="buttons" @click="downXlsxFn"
           >导出</el-button

+ 1 - 1
src/views/economicsOperation/efficiency/consumeEfficiency/index.vue

@@ -44,7 +44,7 @@
         </div>
       </div>
       <el-button round size="mini" class="searchColor" @click="getTableDate"
-        >搜索</el-button
+        >搜 索</el-button
       >
       <!-- <el-button round size="mini">导出</el-button> -->
     </div>

+ 1 - 1
src/views/economicsOperation/efficiency/restorationEfficiency/index.vue

@@ -44,7 +44,7 @@
         </div>
       </div>
       <el-button round size="mini" class="searchColor" @click="getTableDate"
-        >搜索</el-button
+        >搜 索</el-button
       >
       <!-- <el-button round size="mini">导出</el-button> -->
     </div>

+ 1 - 1
src/views/economicsOperation/efficiency/stateEfficiency/index.vue

@@ -67,7 +67,7 @@
         </div>
       </div>
       <el-button round size="mini" class="searchColor" @click="getTableDate"
-        >搜索</el-button
+        >搜 索</el-button
       >
       <!-- <el-button round size="mini">导出</el-button> -->
     </div>

+ 1 - 1
src/views/economicsOperation/photovoltaicAnalyse/lslfx/index.vue

@@ -34,7 +34,7 @@
       </div>
       <div class="but">
         <el-button round size="mini" class="buttons" @click="getTableData"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
     </div>

+ 1 - 1
src/views/economicsOperation/photovoltaicAnalyse/performanceEvaluation/index.vue

@@ -51,7 +51,7 @@
         </div>
         <div class="but">
           <el-button round size="mini" class="buttons" @click="seachData"
-            >搜索</el-button
+            >搜 索</el-button
           >
         </div>
       </div>

+ 1 - 1
src/views/economicsOperation/photovoltaicAnalyse/prAnalyse/index.vue

@@ -26,7 +26,7 @@
       >
       </el-date-picker>
       <el-button round size="mini" class="buttons" @click="getDatas"
-        >搜索</el-button
+        >搜 索</el-button
       >
     </div>
     <div class="pr-content">

+ 1 - 1
src/views/economicsOperation/photovoltaicAnalyse/stateTransition/index.vue

@@ -48,7 +48,7 @@
         </div>
         <div class="but">
           <el-button round size="mini" class="buttons" @click="seachData"
-            >搜索</el-button
+            >搜 索</el-button
           >
         </div>
       </div>

+ 3 - 4
src/views/economicsOperation/photovoltaicAnalyse/timeTransition/index.vue

@@ -45,7 +45,7 @@
         </div>
         <div class="but">
           <el-button round size="mini" class="buttons" @click="seachData"
-            >搜索</el-button
+            >搜 索</el-button
           >
         </div>
       </div>
@@ -104,12 +104,11 @@
         <div style="text-align: right">
           <el-pagination
             @size-change="handleSizeChange"
-            :page-sizes="[22, 50, 100, 500]" 
-             layout="total, sizes, prev, pager, next, jumper"
+            :page-sizes="[22, 50, 100, 500]"
+            layout="total, sizes, prev, pager, next, jumper"
             @current-change="handlePageChange"
             :current-page="page.currentPage"
             :page-size="page.pagesize"
-          
             :total="page.total"
           />
         </div>

+ 1 - 1
src/views/economicsOperation/stationAnalyse/electricAnalyse/index.vue

@@ -55,7 +55,7 @@
         >
         </el-date-picker>
         <el-button round size="mini" class="searchColor" @click="getDatas"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
     </div>

+ 2 - 2
src/views/economicsOperation/stationAnalyse/stationElectricAnalyse/index.vue

@@ -60,7 +60,7 @@
         </el-radio-group>
 
         <el-button round size="mini" class="searchColor" @click="getDatas"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
     </div>
@@ -189,7 +189,7 @@ export default {
       list: [],
       barList: [],
       tableData: [],
-      showDisplay:true,
+      showDisplay: true,
       tableHead: [
         { title: "指标名称", children: [] },
         { title: "一月", children: ["本月", "同比", "环比"] },

+ 1 - 1
src/views/economicsOperation/stationAnalyse/windAndPhotovoltaic/index.vue

@@ -25,7 +25,7 @@
       >
       </el-date-picker>
       <el-button round size="mini" class="searchColor" @click="getDatas"
-        >搜索</el-button
+        >搜 索</el-button
       >
     </div>
     <div class="wp-content">

+ 1 - 1
src/views/economicsOperation/thematicAnalysis/MTBF/index.vue

@@ -38,7 +38,7 @@
           </el-date-picker>
         </div>
         <el-button round size="mini" class="searchColor" @click="search"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
       <div class="search-right">

+ 1 - 1
src/views/economicsOperation/thematicAnalysis/comprehensiveAnalysis/index.vue

@@ -41,7 +41,7 @@
       </div>
       <div class="but">
         <el-button round size="mini" class="buttons" @click="seachData"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button round size="mini" class="buttons" @click="downXlsxFn"
           >导出</el-button

+ 1 - 1
src/views/economicsOperation/thematicAnalysis/failure/index.vue

@@ -38,7 +38,7 @@
           </el-date-picker>
         </div>
         <el-button round size="mini" class="searchColor" @click="search"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
       <div class="search-right">

+ 1 - 1
src/views/economicsOperation/thematicAnalysis/generation/index.vue

@@ -38,7 +38,7 @@
           </el-date-picker>
         </div>
         <el-button round size="mini" class="searchColor" @click="search"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
       <div class="search-right">

+ 1 - 1
src/views/economicsOperation/thematicAnalysis/reset/index.vue

@@ -38,7 +38,7 @@
           </el-date-picker>
         </div>
         <el-button round size="mini" class="searchColor" @click="search"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
       <div class="search-right">

+ 1 - 1
src/views/economicsOperation/thematicAnalysis/windEnergy/index.vue

@@ -38,7 +38,7 @@
           </el-date-picker>
         </div>
         <el-button round size="mini" class="searchColor" @click="search"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
     </div>

+ 1 - 1
src/views/economicsOperation/windAnalyse/cutInAndOutAnalysis/historyDetail.vue

@@ -58,7 +58,7 @@
       </div>
       <div class="but">
         <el-button round size="mini" class="buttons" @click="seachData"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button round size="mini" class="buttons" @click="downXlsxFn"
           >导出</el-button

+ 1 - 1
src/views/economicsOperation/windAnalyse/cutInAndOutAnalysis/index.vue

@@ -55,7 +55,7 @@
       </div>
       <div class="but">
         <el-button round size="mini" class="buttons" @click="seachData"
-          >搜索</el-button
+          >搜索</el-button
         >
         <el-button round size="mini" class="buttons" @click="downXlsxFn"
           >导出</el-button

+ 1 - 1
src/views/economicsOperation/windAnalyse/monthlyAnalysis/index.vue

@@ -58,7 +58,7 @@
       </div>
       <div class="but">
         <el-button round size="mini" class="buttons" @click="seachData"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button round size="mini" class="buttons" @click="downXlsxFn"
           >导出</el-button

+ 1 - 1
src/views/economicsOperation/windAnalyse/performanceAssess/historyDetail.vue

@@ -12,7 +12,7 @@
         value-format="YYYY-MM-DD"
       />
       <el-button round size="mini" class="buttons" @click="seachData"
-        >搜索</el-button
+        >搜 索</el-button
       >
     </div>
     <div class="economicTable1">

+ 3 - 3
src/views/economicsOperation/windAnalyse/performanceAssess/index.vue

@@ -81,7 +81,7 @@
         </div>
         <div class="but">
           <el-button round size="mini" class="buttons" @click="seachData"
-            >搜索</el-button
+            >搜 索</el-button
           >
           <el-button
             round
@@ -331,13 +331,13 @@ export default {
     tabSelect(index) {
       this.tabIndex = index;
       //   if (this.tabIndex == 0) {
-    //   this.pickerTimer = dayjs().format("YYYY-MM-DD");
+      //   this.pickerTimer = dayjs().format("YYYY-MM-DD");
       //   } else if (this.tabIndex == 1) {
       //     this.pickerTimer = dayjs().format("YYYY-MM");
       //   } else if (this.tabIndex == 2) {
       //     this.pickerTimer = dayjs().format("YYYY");
       //   }
-    //   this.historyTimer = dayjs().format("YYYY-MM-DD");
+      //   this.historyTimer = dayjs().format("YYYY-MM-DD");
       this.page.currentPage = 1;
       this.seachData();
     },

+ 1 - 1
src/views/economicsOperation/windAnalyse/singleWindAnasyle/historyDetail.vue

@@ -16,7 +16,7 @@
       </div>
       <div class="but">
         <el-button round size="mini" class="buttons" @click="seachData"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button round size="mini" class="buttons" @click="downXlsxFn"
           >导出</el-button

+ 1 - 1
src/views/economicsOperation/windAnalyse/singleWindAnasyle/index.vue

@@ -58,7 +58,7 @@
       </div>
       <div class="but">
         <el-button round size="mini" class="buttons" @click="seachData"
-          >搜索</el-button
+          >搜 索</el-button
         >
         <el-button round size="mini" class="buttons" @click="downXlsxFn"
           >导出</el-button

+ 2 - 2
src/views/economicsOperation/windAnalyse/singleWindAnasyle/windDetailDialog.vue

@@ -119,7 +119,7 @@
         </div>
         <div class="query-actions">
           <el-button class="buttons" size="mini" round @click="search"
-            >搜索</el-button
+            >搜 索</el-button
           >
         </div>
       </div>
@@ -1747,7 +1747,7 @@ export default {
       this.search();
     },
 
-    // 搜索
+    // 搜 
     search() {
       if (this.tabIndex === 0) {
         this.getLostChartData();

+ 1 - 1
src/views/economicsOperation/windAnalyse/stateTransition/index.vue

@@ -48,7 +48,7 @@
         </div>
         <div class="but">
           <el-button round size="mini" class="buttons" @click="seachData"
-            >搜索</el-button
+            >搜 索</el-button
           >
         </div>
       </div>

+ 1 - 1
src/views/economicsOperation/windAnalyse/timeTransition/index.vue

@@ -45,7 +45,7 @@
         </div>
         <div class="but">
           <el-button round size="mini" class="buttons" @click="seachData"
-            >搜索</el-button
+            >搜 索</el-button
           >
         </div>
       </div>

+ 1 - 1
src/views/stateMonitor/alarmCenter/commonAlarm/index.vue

@@ -108,7 +108,7 @@
       </div>
       <div class="btns">
         <el-button round size="mini" class="buttons" @click="getTableData(0)"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
     </div>

+ 1 - 1
src/views/stateMonitor/factoryMonitor/photovoltaic/lightBoosterStation/index.vue

@@ -96,7 +96,7 @@
       </div>
       <div class="btns">
         <el-button round size="mini" class="buttons" @click="getAlarm(true)"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
     </div>

+ 1 - 1
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/index.vue

@@ -76,7 +76,7 @@
       </div>
       <div class="btns">
         <el-button round size="mini" class="buttons" @click="getAlarm"
-          >搜索</el-button
+          >搜 索</el-button
         >
       </div>
     </div>