Przeglądaj źródła

2023-02-28 update

1. 调整settings 页面及接口
2. 降级node-sass 以解决4.14.1版本 core dump的问题
moccus 2 lat temu
rodzic
commit
3a32475e15
6 zmienionych plików z 1835 dodań i 682 usunięć
  1. 3 0
      README.md
  2. 465 457
      package-lock.json
  3. 1 1
      package.json
  4. 20 0
      src/api/index.js
  5. 381 0
      src/components/setting copy.vue
  6. 965 224
      src/components/setting.vue

+ 3 - 0
README.md

@@ -17,3 +17,6 @@ npm run build
 
 ### Customize configuration
 See [Configuration Reference](https://cli.vuejs.org/config/).
+
+
+采用node 14 版本

Plik diff jest za duży
+ 465 - 457
package-lock.json


+ 1 - 1
package.json

@@ -39,7 +39,7 @@
     "electron-devtools-installer": "^3.1.0",
     "less": "^3.0.4",
     "less-loader": "^5.0.0",
-    "node-sass": "^4.14.1",
+    "node-sass": "4.13.1",
     "sass-loader": "^8.0.2",
     "vue-cli-plugin-electron-builder": "~2.1.1"
   },

+ 20 - 0
src/api/index.js

@@ -401,6 +401,24 @@ const returnSetting = (data) => {
     });
 };
 
+//获取报警列表
+const warningSetting = (data) => {
+    return request({
+        baseURL: process.env.VUE_APP_API,
+        url: `/api/settings/alarminfos?stationId=${data.stationId}&modelId=${data.modelId}`,
+        method: "get"
+    })
+}
+
+//获取预警列表
+const costumeSetting = (data) => {
+    return request({
+        baseURL: process.env.VUE_APP_API,
+        url: `/api/settings/costume-alarminfos?stationId=${data.stationId}&modelId=${data.modelId}`,
+        method: "get"
+    })
+}
+
 //刷新报警信息
 const getAlarmSnap = (data) => {
     return request({
@@ -458,6 +476,8 @@ export default {
     getStationModels,
     getSettings,
     updateSettings,
+    warningSetting,
+    costumeSetting,
     recommended,
     statusChange,
     returnSetting,

+ 381 - 0
src/components/setting copy.vue

@@ -0,0 +1,381 @@
+<template>
+    <el-dialog width="70%" @open="opened" @closed="closed" :fullscreen="true" :show-close="true" class="dialogs">
+        <template #title>
+            <div class="showTitles currentShowTitles">
+                <div class="titles">设置</div>
+            </div>
+        </template>
+        <div class="body">
+            <div class="title">
+                <div :class="current === item.id ? 'title-onItem' : 'title-item'" v-for="(item, index) in stationList"
+                    :key="index" @click="handleChange(item.id)">
+                    {{ item.name }}
+                </div>
+            </div>
+            <div class="content">
+                <div class="models">
+                    <div class="models-left">
+                        <div class="models-name">机型:</div>
+                        <el-select class="inputs" v-model="selectValue" placeholder="请选择" @change="getData()">
+                            <el-option v-for="item in models" :key="item" :label="item" :value="item">
+                            </el-option>
+                        </el-select>
+                    </div>
+                    <div class="returns" @click="handleReturn()">恢复默认设置</div>
+                </div>
+                <div class="control">
+                    <div class="control-item">
+                        <div class="control-title">是否推荐启动:</div>
+                        <el-switch v-model="settingsControl.start" @change="updateSettings()">
+                        </el-switch>
+                    </div>
+                    <div class="control-item">
+                        <div class="control-title">是否推荐停机:</div>
+                        <el-switch v-model="settingsControl.stop" @change="updateSettings()">
+                        </el-switch>
+                    </div>
+                    <div class="control-item">
+                        <div class="control-title">是否推荐限电停机:</div>
+                        <el-switch v-model="settingsControl.limitedPowerStop" @change="updateSettings()">
+                        </el-switch>
+                    </div>
+                    <div class="control-item">
+                        <div class="control-title">是否推荐维护:</div>
+                        <el-switch v-model="settingsControl.maintain" @change="updateSettings()">
+                        </el-switch>
+                    </div>
+                    <div class="control-item">
+                        <div class="control-title">是否推荐取消维护:</div>
+                        <el-switch v-model="settingsControl.unMaintain" @change="updateSettings()">
+                        </el-switch>
+                    </div>
+                    <div class="control-item">
+                        <div class="control-title">是否推荐复位:</div>
+                        <el-switch v-model="settingsControl.reset" @change="updateSettings()">
+                        </el-switch>
+                    </div>
+                </div>
+            </div>
+            <div class="warningTable" v-if="settingsControl.reset">
+                <div class="teble-buttons">
+                    <div class="button" @click="toggleRowExpansionAll(true)">全部展开</div>
+                    <div class="button" @click="toggleRowExpansionAll(false)">全部收回</div>
+                </div>
+                <el-table :data="alertInfo" row-key="id" border default-expand-all ref="dataTreeList"
+                    :tree-props="{ children: 'children', hasChildren: false }" height="70vh"
+                    style="background-color: #000000;border: 1px solid #000000;" :header-cell-style="{
+                        background: 'rgb(30,30,30)',
+                        color: 'rgb(220,220,220)',
+                        padding: '4px',
+                        fontSize: '14px',
+                        'border-bottom': 'solid 1px rgba(77, 77, 77, 1)',
+                    }" :cell-style="{
+    height: '40px',
+    background: 'rgb(30,30,30)',
+    color: 'rgb(220,220,220)',
+    padding: '3px',
+    fontSize: '12px',
+    'border-bottom': '1px solid #000000',
+}">
+                    <el-table-column prop="name" label="名称" sortable width="200" align="center">
+                    </el-table-column>
+                    <!-- <el-table-column prop="stationId" label="风场" sortable>
+                    </el-table-column> -->
+                    <!-- <el-table-column prop="modelId" label="机型" sortable>
+                    </el-table-column> -->
+                    <el-table-column prop="lastUpdateTime" label="故障触发时间" align="center">
+                    </el-table-column>
+                    <!-- <el-table-column prop="rank" label="故障等级" sortable>
+                    </el-table-column> -->
+                    <el-table-column prop="alertText" label="故障描述" align="center">
+                    </el-table-column>
+                    <el-table-column label="是否不可复位" width="180" align="center">
+                        <template #default="scope">
+                            <span>
+                                <el-switch @change="handleSwitchChange(scope.row)" v-model="scope.row.notResettable">
+                                </el-switch>
+                            </span>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </div>
+        </div>
+    </el-dialog>
+</template>
+  
+<script>
+import api from "api/index";
+export default {
+    data() {
+        return {
+            stationList: [],
+            current: "",
+            models: [],
+            selectValue: "",
+            settingsControl: {},
+            alertInfo: [],
+        };
+    },
+    mounted() { },
+    methods: {
+        opened() {
+            let stationList = [];
+            let stations = this.$store.state.stationList;
+            stations.forEach((item) => {
+                if (item.id.indexOf("FDC") != -1) {
+                    stationList.push(item);
+                }
+            });
+            this.stationList = stationList;
+            this.current = stationList[0].id;
+            this.getStationModels(true)
+        },
+        handleChange(val) {
+            this.current = val;
+            this.tableData = []
+            this.pagenum = 1
+            this.getStationModels()
+        },
+        getStationModels(flag) {
+            api.getStationModels({
+                stationid: this.current
+            }).then(res => {
+                if (res.data) {
+                    this.models = res.data
+                    this.selectValue = res.data[0]
+                    this.getData(flag);
+                }
+            })
+        },
+        getData(flag) {
+            api.getSettings({
+                stationId: this.current,
+                modelId: this.selectValue,
+            }).then(res => {
+                if (res.data) {
+                    this.alertInfo = []
+                    this.settingsControl = res.data.settings
+                    if (flag) {
+                        this.alertInfo = res.data.alertInfo
+                    } else {
+                        console.log(this.alertInfo);
+                        setTimeout(() => {
+                            this.alertInfo = res.data.alertInfo
+                        }, 100);
+                    }
+
+
+                    // this.toggleRowExpansionAll(this.alertInfo, true)
+                }
+            })
+        },
+        toggleRowExpansionAll(isExpansion) {
+            this.alertInfo.forEach((item) => {
+                this.$refs.dataTreeList.toggleRowExpansion(item, isExpansion);
+            });
+        },
+        updateSettings() {
+            api.updateSettings(this.settingsControl).then(res => {
+                if (res.data.message === 'success') {
+                    this.$notify({
+                        title: "控制",
+                        message: '修改成功',
+                        type: "success",
+                        position: "bottom-right",
+                        offset: 60,
+                        duration: 3000,
+                    });
+                    this.getData()
+                }
+            })
+        },
+        handleSwitchChange(data) {
+            if (!data.modelId) {
+                if (data.notResettable) {
+                    data.children.forEach(item => {
+                        item.notResettable = true
+                        this.settingsControl.prohibitResetUniformCodes.push(item.uniformCode)
+                    })
+                    this.settingsControl.prohibitResetParts.push(data.id)
+                } else {
+                    for (var i = 0; i < this.settingsControl.prohibitResetParts.length; i++) {
+                        if (this.settingsControl.prohibitResetParts[i] == data.id) {
+                            this.settingsControl.prohibitResetParts.splice(i, 1);
+                        }
+                    }
+                }
+            } else {
+                if (data.notResettable) {
+                    this.settingsControl.prohibitResetUniformCodes.push(data.uniformCode)
+                } else {
+                    for (var i = 0; i < this.settingsControl.prohibitResetUniformCodes.length; i++) {
+                        if (this.settingsControl.prohibitResetUniformCodes[i] == data.uniformCode) {
+                            this.settingsControl.prohibitResetUniformCodes.splice(i, 1);
+                        }
+                    }
+                }
+            }
+            this.updateSettings()
+        },
+        handleReturn(){
+            
+            this.$confirm('确定恢复默认设置?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          api.returnSetting({
+                stationId: this.current,
+                modelId: this.selectValue,
+            }).then(res =>{
+                this.$notify({
+                        title: "控制",
+                        message: '修改成功',
+                        type: "success",
+                        position: "bottom-right",
+                        offset: 60,
+                        duration: 3000,
+                    });
+                    this.getData()
+            })
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消恢复'
+          });          
+        });
+            
+        },
+        closed() {
+
+        },
+
+    },
+};
+</script>
+<style lang="less" scoped>
+.body {
+    background-color: #000000;
+    height: 89vh;
+    width: 102%;
+    margin-left: -1%;
+    margin-top: -40px;
+}
+
+.title {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    margin-left: 3vw;
+    padding-top: 8px;
+    position: absolute;
+    width: 100%;
+    background-color: #000000;
+    padding-bottom: 10px;
+
+    .title-item {
+        background-color: #242424;
+        border-radius: 4px;
+        padding: 8px 27px 7px 25px;
+        font-size: 14px;
+        color: #b4bdc0;
+        margin-right: 10px;
+    }
+
+    .title-onItem {
+        background-color: rgba(37, 116, 219, 1);
+        border-radius: 4px;
+        padding: 8px 27px 7px 25px;
+        font-size: 14px;
+        color: #b4bdc0;
+        margin-right: 10px;
+    }
+}
+
+.content {
+    margin-left: 3vw;
+    padding-top: 7vh;
+    width: 100%;
+
+    .models {
+        display: flex;
+        flex-direction: row;
+        align-items: center;
+        justify-content: space-between;
+        .models-left{
+            display: flex;
+        flex-direction: row;
+        align-items: center;
+        .models-name {
+            margin-right: 10px;
+            color: #ffffff;
+            font-size: 17px;
+        }
+        }
+        .returns{
+            background-color: #666666;
+            border-radius: 4px;
+            padding: 8px 15px 7px 15px;
+            font-size: 14px;
+            color: #ffffff;
+            margin-right: 50px;
+        }
+    }
+}
+
+.control {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    margin-top: 15px;
+
+    .control-item {
+        display: flex;
+        flex-direction: row;
+        align-items: center;
+        margin-right: 30px;
+
+        .control-title {
+            margin-right: 10px;
+            color: #ffffff;
+            font-size: 17px;
+        }
+    }
+}
+
+.inputs {
+    width: 150px !important;
+}
+
+.el-switch {
+    width: 50px !important;
+}
+
+.warningTable {
+    margin-left: 58px;
+    margin-top: 20px;
+    width: 96%;
+}
+
+.el-table--border::after,
+.el-table--group::after,
+.el-table::before {
+    background-color: #000000 !important;
+}
+
+.teble-buttons {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    margin: 10px 0;
+
+    .button {
+        background-color: rgba(37, 116, 219, 1);
+        border-radius: 4px;
+        padding: 8px 27px 7px 25px;
+        font-size: 14px;
+        color: #b4bdc0;
+        margin-right: 10px;
+    }
+}
+</style>

+ 965 - 224
src/components/setting.vue

@@ -1,123 +1,595 @@
 <template>
-    <el-dialog width="70%" @open="opened" @closed="closed" :fullscreen="true" :show-close="true" class="dialogs">
-        <template #title>
-            <div class="showTitles currentShowTitles">
-                <div class="titles">设置</div>
-            </div>
-        </template>
-        <div class="body">
-            <div class="title">
-                <div :class="current === item.id ? 'title-onItem' : 'title-item'" v-for="(item, index) in stationList"
-                    :key="index" @click="handleChange(item.id)">
-                    {{ item.name }}
+  <el-dialog width="70%" @open="opened" @closed="closed" :fullscreen="true" :show-close="true" class="dialogs">
+    <template #title>
+      <div class="showTitles currentShowTitles">
+        <div class="titles">设置</div>
+      </div>
+    </template>
+    <div class="body">
+      <div class="title">
+        <div :class="stationId === item.id ? 'title-onItem' : 'title-item'" v-for="(item, index) in stationList"
+          :key="index" @click="handleChange(item.id)">
+          {{ item.name }}
+        </div>
+        <div class="models">
+          <div class="models-left">
+            <div class="models-name">机型:</div>
+            <el-select class="inputs" v-model="modelId" placeholder="请选择" @change="getData()">
+              <el-option v-for="item in models" :key="item" :label="item" :value="item">
+              </el-option>
+            </el-select>
+          </div>
+          <div class="returns" @click="handleReturn()">恢复默认设置</div>
+          <div class="returns" style="background:#2574db;color:#b4bdc0;" @click="updateSettings()">保存</div>
+        </div>
+      </div>
+      <div class="content">
+        <el-row :gutter="40">
+          <el-col :span="6">
+            <div class="mn">
+              <div class="mn-item" :data-active="actMnIndex === index" v-for="(item, index) in mnList"
+                @click="actMnIndex = index" :key="index">
+                <div class="mn-item-icon">
+                  <img :src="item.icon" />
+                </div>
+                <div class="mn-item-fl">
+                  <div class="mn-item-fl-tt">{{ item.title }}</div>
+                  <div class="mn-item-fl-desc">{{ item.desc }}</div>
                 </div>
+              </div>
             </div>
-            <div class="content">
-                <div class="models">
-                    <div class="models-left">
-                        <div class="models-name">机型:</div>
-                        <el-select class="inputs" v-model="selectValue" placeholder="请选择" @change="getData()">
-                            <el-option v-for="item in models" :key="item" :label="item" :value="item">
-                            </el-option>
-                        </el-select>
-                    </div>
-                    <div class="returns" @click="handleReturn()">恢复默认设置</div>
+          </el-col>
+          <el-col :span="18">
+            <div class="panel">
+              <div class="pn-item" v-if="actMnIndex === 0">
+                <div class="pn-item-desc">
+                  启动校验:1、系统检测风机状态为无故障、非解缆、非维护模式。2、机舱温度超过10度。3、发电机绕组温度超过机舱温度。4、变浆系统进入准备状态89度。5、变流器切出本地。6、产生手动启动或自启动信号。7、两次启动时间差超过300s(手动模式除外)。
+                </div>
+                <div class="searchTitle">
+                  <el-row :gutter="20" style="width: 96%">
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">推荐启动</div>
+                        <el-switch v-model="autoControl.start" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">推荐停机</div>
+                        <el-switch v-model="autoControl.stop" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">推荐维护</div>
+                        <el-switch v-model="autoControl.maintain" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">推荐取消维护</div>
+                        <el-switch v-model="autoControl.unMaintain" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">超出AGC设定</div>
+                        <el-switch v-model="autoControl.exceedAgc" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">限电状态下样板风机不控制</div>
+                        <el-switch v-model="autoControl.notControlTemplate" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">限电状况下将健康指数最差的风机停机</div>
+                        <el-switch v-model="autoControl.limitedPowerStop" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">推荐启动平均风速</div>
+                        <el-input-number :controls="false" v-model="autoControl.startWindSpeed.value" :max="autoControl.startWindSpeed.maxValue" :min="autoControl.startWindSpeed.minValue" v-if="autoControl.startWindSpeed.enable" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                        <el-switch v-model="autoControl.startWindSpeed.enable" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">停机或维护平均风速</div>
+                        <el-input-number :controls="false" v-model="autoControl.stopAndMaintainWindSpeed.value" :max="autoControl.stopAndMaintainWindSpeed.maxValue" :min="autoControl.stopAndMaintainWindSpeed.minValue" v-if="autoControl.stopAndMaintainWindSpeed.enable" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                        <el-switch v-model="autoControl.stopAndMaintainWindSpeed.enable" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">不推荐维护月份开始</div>
+                        <el-date-picker type="month" v-model="autoControl.notMaintainStartTs" @change="funTimeStamp(autoControl.notMaintainStartTs, 'autoControl', 'notMaintainStartTs')"></el-date-picker>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">不推荐维护月份结束</div>
+                        <el-date-picker type="month" v-model="autoControl.notMaintainEndTs" @change="funTimeStamp(autoControl.notMaintainEndTs, 'autoControl', 'notMaintainEndTs')"></el-date-picker>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">不推荐环境温度</div>
+                        <el-input-number :controls="false" v-model="autoControl.notMaintainAmbientTemperature" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">打维护百分比</div>
+                        <el-input-number :controls="false" v-model="autoControl.maintainPercentage.value" :max="autoControl.maintainPercentage.maxValue" :min="autoControl.maintainPercentage.minValue" :step="0.1" v-if="autoControl.maintainPercentage.enable" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                        <el-switch v-model="autoControl.maintainPercentage.enable" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">暴风风速(暴风状态下停机)</div>
+                        <el-input-number :controls="false" v-model="autoControl.stormWindSpeed.value" v-if="autoControl.stormWindSpeed.enable" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                        <el-switch v-model="autoControl.stormWindSpeed.enable" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">齿轮箱高温停机</div>
+                        <el-input-number :controls="false" v-model="autoControl.stopGearboxesTemperature.value" v-if="autoControl.stopGearboxesTemperature.enable" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                        <el-switch v-model="autoControl.stopGearboxesTemperature.enable" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">齿轮箱再启动温度</div>
+                        <el-input-number :controls="false" v-model="autoControl.startGearboxesTemperature.value" v-if="autoControl.startGearboxesTemperature.enable" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                        <el-switch v-model="autoControl.startGearboxesTemperature.enable" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">重试次数</div>
+                        <el-input-number :controls="false" v-model="autoControl.countRetries" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">根据际控制指令推荐</div>
+                        <el-switch v-model="autoControl.controlInstructions" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                  </el-row>
+                </div>
+              </div>
+              <div class="warningTable" v-if="actMnIndex === 1">
+                <div class="searchTitle">
+                  <el-row :gutter="20" style="width: 96%">
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">是否启用</div>
+                        <el-switch v-model="autoReset.enable" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">复位重置次数</div>
+                        <el-input-number :controls="false" v-model="autoReset.resetCount" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                      </div>
+                    </el-col>
+                  </el-row>
                 </div>
-                <div class="control">
-                    <div class="control-item">
-                        <div class="control-title">是否推荐启动:</div>
-                        <el-switch v-model="settingsControl.start" @change="updateSettings()">
-                        </el-switch>
-                    </div>
-                    <div class="control-item">
-                        <div class="control-title">是否推荐停机:</div>
-                        <el-switch v-model="settingsControl.stop" @change="updateSettings()">
-                        </el-switch>
-                    </div>
-                    <div class="control-item">
-                        <div class="control-title">是否推荐限电停机:</div>
-                        <el-switch v-model="settingsControl.limitedPowerStop" @change="updateSettings()">
-                        </el-switch>
-                    </div>
-                    <div class="control-item">
-                        <div class="control-title">是否推荐维护:</div>
-                        <el-switch v-model="settingsControl.maintain" @change="updateSettings()">
-                        </el-switch>
-                    </div>
-                    <div class="control-item">
-                        <div class="control-title">是否推荐取消维护:</div>
-                        <el-switch v-model="settingsControl.unMaintain" @change="updateSettings()">
-                        </el-switch>
-                    </div>
-                    <div class="control-item">
-                        <div class="control-title">是否推荐复位:</div>
-                        <el-switch v-model="settingsControl.reset" @change="updateSettings()">
-                        </el-switch>
-                    </div>
+                <div class="teble-buttons" v-show="autoReset.enable">
+                  <div class="button" @click="toggleRowExpansionAll(true,'dataAutoResetList',alarminfos)">全部展开</div>
+                  <div class="button" @click="toggleRowExpansionAll(false,'dataAutoResetList',alarminfos)">全部收回</div>
                 </div>
-            </div>
-            <div class="warningTable" v-if="settingsControl.reset">
+                <!-- default-expand-all -->
+                <el-table :data="alarminfos" v-show="autoReset.enable" row-key="id" border ref="dataAutoResetList"
+                  :tree-props="{ children: 'children', hasChildren: false }" height="70vh"
+                  style="background-color: #000000;border: 1px solid #000000;" :header-cell-style="{
+                    background: 'rgb(30,30,30)',
+                    color: 'rgb(220,220,220)',
+                    padding: '4px',
+                    fontSize: '14px',
+                    'border-bottom': 'solid 1px rgba(77, 77, 77, 1)',
+                  }" :cell-style="{
+  height: '40px',
+  background: 'rgb(30,30,30)',
+  color: 'rgb(220,220,220)',
+  padding: '3px',
+  fontSize: '12px',
+  'border-bottom': '1px solid #000000',
+}">
+                  <el-table-column prop="name" label="名称" sortable width="200" align="center">
+                  </el-table-column>
+                  <!-- <el-table-column prop="stationId" label="风场" sortable>
+                                    </el-table-column> -->
+                  <!-- <el-table-column prop="modelId" label="机型" sortable>
+                                    </el-table-column> -->
+                  <el-table-column prop="lastUpdateTime" label="故障触发时间" align="center">
+                  </el-table-column>
+                  <!-- <el-table-column prop="rank" label="故障等级" sortable>
+                                    </el-table-column> -->
+                  <el-table-column prop="alertText" label="故障描述" align="center">
+                  </el-table-column>
+                  <el-table-column label="是否不可复位" width="180" align="center">
+                    <template #default="scope">
+                      <span>
+                        <el-switch @change="handleSwitchChange(scope.row)" v-model="scope.row.notResettable">
+                        </el-switch>
+                      </span>
+                    </template>
+                  </el-table-column>
+                </el-table>
+              </div>
+              <div class="pn-item" v-if="actMnIndex === 2">
+                <!-- <div class="pn-item-desc">
+                                    启动校验:1、系统检测风机状态为无故障、非解缆、非维护模式。2、机舱温度超过10度。3、发电机绕组温度超过机舱温度。4、变浆系统进入准备状态89度。5、变流器切出本地。6、产生手动启动或自启动信号。7、两次启动时间差超过300s(手动模式除外)。
+                                </div> -->
+                <div class="searchTitle">
+                  <el-row :gutter="20" style="width: 96%">
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">是否启用</div>
+                        <el-switch v-model="optimizeControl.enable" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">风功率预测未来值</div>
+                        <el-switch v-model="optimizeControl.powerForecast" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">自动停机挂牌</div>
+                        <el-switch v-model="optimizeControl.autoStopAndLock" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">风功率预测换算单台机组</div>
+                        <el-switch v-model="optimizeControl.powerForecastSingleUnit" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">灵敏度</div>
+                        <el-input-number v-model="optimizeControl.sensitivity" :controls="false" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">实际切入风速</div>
+                        <el-switch v-model="optimizeControl.actualInputWindSpeed" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">限电停机(限电情况下,启用健康状态好的风机)</div>
+                        <el-switch v-model="optimizeControl.limitedPowerStop" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">单台设备小风区间风速趋势</div>
+                        <el-switch v-model="optimizeControl.windSpeedTrendsSingleUnit" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">AGC有功设定与实发功率偏差值设定</div>
+                        <el-input-number v-model="optimizeControl.agcDeviationValue" :controls="false" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">提前启动风速</div>
+                        <el-input-number v-model="optimizeControl.advanceStartWindSpeed" :controls="false" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">提前停机风速</div>
+                        <el-input-number v-model="optimizeControl.advanceStopWindSpeed" :controls="false" class="inputs" placeholder="请输入">
+                        </el-input-number>
+                      </div>
+                    </el-col>
+                  </el-row>
+                </div>
+              </div>
+              <div class="warningTable" v-if="actMnIndex === 3">
                 <div class="teble-buttons">
-                    <div class="button" @click="toggleRowExpansionAll(true)">全部展开</div>
-                    <div class="button" @click="toggleRowExpansionAll(false)">全部收回</div>
+                  <div class="search" style="color: white;width: 200px;margin-top: 0px; flex: 0 0 200px;">
+                    <div class="date">是否启用</div>
+                    <el-switch v-model="earlyWarningStop.enable" placeholder="请输入">
+                    </el-switch>
+                  </div>
+                  <div class="button" v-show="earlyWarningStop.enable" @click="toggleRowExpansionAll(true,'dataEarlyWarningStopList',alertInfos)">全部展开</div>
+                  <div class="button" v-show="earlyWarningStop.enable" @click="toggleRowExpansionAll(false,'dataEarlyWarningStopList',alertInfos)">全部收回</div>
                 </div>
-                <el-table :data="alertInfo" row-key="id" border default-expand-all ref="dataTreeList"
-                    :tree-props="{ children: 'children', hasChildren: false }" height="70vh"
-                    style="background-color: #000000;border: 1px solid #000000;" :header-cell-style="{
-                        background: 'rgb(30,30,30)',
-                        color: 'rgb(220,220,220)',
-                        padding: '4px',
-                        fontSize: '14px',
-                        'border-bottom': 'solid 1px rgba(77, 77, 77, 1)',
-                    }" :cell-style="{
-    height: '40px',
-    background: 'rgb(30,30,30)',
-    color: 'rgb(220,220,220)',
-    padding: '3px',
-    fontSize: '12px',
-    'border-bottom': '1px solid #000000',
+                <el-table :data="alertInfos" v-show="earlyWarningStop.enable" row-key="id" border ref="dataEarlyWarningStopList"
+                  :tree-props="{ children: 'children', hasChildren: false }" height="70vh"
+                  style="background-color: #000000;border: 1px solid #000000;" :header-cell-style="{
+                    background: 'rgb(30,30,30)',
+                    color: 'rgb(220,220,220)',
+                    padding: '4px',
+                    fontSize: '14px',
+                    'border-bottom': 'solid 1px rgba(77, 77, 77, 1)',
+                  }" :cell-style="{
+  height: '40px',
+  background: 'rgb(30,30,30)',
+  color: 'rgb(220,220,220)',
+  padding: '3px',
+  fontSize: '12px',
+  'border-bottom': '1px solid #000000',
 }">
-                    <el-table-column prop="name" label="名称" sortable width="200" align="center">
-                    </el-table-column>
-                    <!-- <el-table-column prop="stationId" label="风场" sortable>
-                    </el-table-column> -->
-                    <!-- <el-table-column prop="modelId" label="机型" sortable>
-                    </el-table-column> -->
-                    <el-table-column prop="lastUpdateTime" label="故障触发时间" align="center">
-                    </el-table-column>
-                    <!-- <el-table-column prop="rank" label="故障等级" sortable>
-                    </el-table-column> -->
-                    <el-table-column prop="alertText" label="故障描述" align="center">
-                    </el-table-column>
-                    <el-table-column label="是否不可复位" width="180" align="center">
-                        <template #default="scope">
-                            <span>
-                                <el-switch @change="handleSwitchChange(scope.row)" v-model="scope.row.notResettable">
-                                </el-switch>
-                            </span>
-                        </template>
-                    </el-table-column>
+                  <el-table-column prop="name" label="名称" sortable width="200" align="center">
+                  </el-table-column>
+                  <!-- <el-table-column prop="stationId" label="风场" sortable>
+                                    </el-table-column> -->
+                  <!-- <el-table-column prop="modelId" label="机型" sortable>
+                                    </el-table-column> -->
+                  <el-table-column prop="rank" label="报警级别" align="center">
+                  </el-table-column>
+                  <!-- <el-table-column prop="rank" label="故障等级" sortable>
+                                    </el-table-column> -->
+                  <el-table-column prop="alertText" label="故障描述" align="center">
+                  </el-table-column>
+                  <el-table-column label="是否停机" width="180" align="center">
+                    <template #default="scope">
+                      <span>
+                        <el-switch @change="handleSwitchChange(scope.row, 'earlyWarningStop')" v-model="scope.row.stop">
+                        </el-switch>
+                      </span>
+                    </template>
+                  </el-table-column>
                 </el-table>
+              </div>
+              <div class="pn-item" v-if="actMnIndex === 4">
+                <div class="searchTitle">
+                  <el-row :gutter="20" style="width: 96%">
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">是否启用</div>
+                        <el-switch v-model="artificialIntelligence.enable" placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">关联启动前10分钟样本</div>
+                        <el-switch placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">关联停机前10分钟样本</div>
+                        <el-switch placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">关联启动后10分钟样本</div>
+                        <el-switch placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">关联停机后10分钟样本</div>
+                        <el-switch placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">关联启动失败样本</div>
+                        <el-switch placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">关联停机失败样本</div>
+                        <el-switch placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">关联AGC限电样本</div>
+                        <el-switch placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                    <el-col :span="12">
+                      <div class="search">
+                        <div class="date">神经网络模型</div>
+                        <el-switch placeholder="请输入">
+                        </el-switch>
+                      </div>
+                    </el-col>
+                  </el-row>
+                </div>
+              </div>
             </div>
-        </div>
-    </el-dialog>
+          </el-col>
+        </el-row>
+      </div>
+    </div>
+  </el-dialog>
 </template>
   
 <script>
 import api from "api/index";
+import mnIcon1 from '../assets/img/RecommendedArea/background.png'
 export default {
     data() {
         return {
             stationList: [],
-            current: "",
             models: [],
-            selectValue: "",
             settingsControl: {},
-            alertInfo: [],
+            actMnIndex: 0,
+            mnList: [
+                {
+                    title: '自动控制',
+                    desc: '以AGC有功控制指令为主要素,结合实时风速,风机实时状态,环境温度等,自动调整风电机组控制策略,避免机组小风期间自耗自损,大风时及时切入并网,及时发电。',
+                    icon: mnIcon1
+                },
+                {
+                    title: '自动复位',
+                    desc: '风电机组发生故障后,复位夜市消缺手段之一,利用自动复位功能,筛选可以复位消缺的故障,以达到提高机组可用小时的目的。',
+                    icon: mnIcon1
+                },
+                {
+                    title: '优化控制',
+                    desc: '在自动控制的基础上,考虑提高风能利用率,结合功率预测数据和计划检修安排,提起预判风资源情况下,优化控制,并监测AGC设定于实际出力偏差,超出范围及时调整控制策略,保证AGC曲线运行。',
+                    icon: mnIcon1
+                },
+                {
+                    title: '预警停机',
+                    desc: '根据风机存在的隐患,判断即将发生故障的影响程度,如果危害程度高,控制停机并提醒运行人员,生成缺陷单。',
+                    icon: mnIcon1
+                },
+                {
+                    title: '人工智能',
+                    desc: '利用神经网络算法,调整控制模型,模型调优依据控制策略评价指标。',
+                    icon: mnIcon1
+                }
+            ],
+            stationId: 'MHS_FDC',
+            modelId: '',
+            dataId: '', //当前数据id
+            alarminfos: [], //自动复位
+            alertInfos: [], //预警停机
+            autoControl: { //自动控制
+              start: true,
+              stop: true,
+              maintain: true,
+              unMaintain: true,
+              exceedAgc: true,
+              notControlTemplate: true,
+              limitedPowerStop: false,
+              startWindSpeed: {
+                value: 3.5,
+                enable: false,
+                maxValue: 5.0,
+                minValue: 2.5
+              },
+              stopAndMaintainWindSpeed: {
+                value: 2.5,
+                enable: false,
+                maxValue: 3.5,
+                minValue: 1.0
+              },
+              notMaintainStartTs: 1669824000000,
+              notMaintainEndTs: 1678809600000,
+              notMaintainAmbientTemperature: 0.0,
+              maintainPercentage: {
+                value: 0.3,
+                enable: true,
+                maxValue: 1.0,
+                minValue: 0.0
+              },
+              stormWindSpeed: {
+                value: 25.0,
+                enable: false,
+                maxValue: 0.0,
+                minValue: 0.0
+              },
+              stopGearboxesTemperature: {
+                value: 60.0,
+                enable: false,
+                maxValue: 0.0,
+                minValue: 0.0
+              },
+              startGearboxesTemperature: {
+                value: 85.0,
+                enable: false,
+                maxValue: 0.0,
+                minValue: 0.0
+              },
+              countRetries: 2.0,
+              controlInstructions: true,
+              maintainable: false
+            },
+            autoReset: { //自动复位
+              enable: false,
+              resetCount: 1,
+              alertInfo: null,
+              prohibitResetUniformCodes: [],
+              prohibitResetParts: [],
+              possibleReset: false
+            },
+            optimizeControl: { //优化控制
+              enable: true,
+              powerForecast: true,
+              autoStopAndLock: false,
+              powerForecastSingleUnit: false,
+              sensitivity: 3.0,
+              actualInputWindSpeed: true,
+              limitedPowerStop: false,
+              windSpeedTrendsSingleUnit: true,
+              agcDeviationValue: 3.0,
+              advanceStartWindSpeed: 3.0,
+              advanceStopWindSpeed: 2.5
+            },
+            earlyWarningStop: { //预警停机 
+              enable: false,
+              alertInfo: null,
+              stopUniformCodes: [],
+              prohibitResetParts: []
+            },
+            artificialIntelligence: { //人工智能
+              enable: false
+            }
         };
     },
     mounted() { },
     methods: {
+        //时间change为时间戳
+        funTimeStamp(val, parent, key){
+          this[parent][key] = new Date(val).getTime()
+        },
         opened() {
             let stationList = [];
             let stations = this.$store.state.stationList;
@@ -127,58 +599,150 @@ export default {
                 }
             });
             this.stationList = stationList;
-            this.current = stationList[0].id;
+            this.stationId = stationList[0].id;
             this.getStationModels(true)
         },
         handleChange(val) {
-            this.current = val;
+            this.stationId = val;
             this.tableData = []
             this.pagenum = 1
             this.getStationModels()
         },
-        getStationModels(flag) {
+        getStationModels() {
             api.getStationModels({
-                stationid: this.current
+                stationid: this.stationId
             }).then(res => {
                 if (res.data) {
                     this.models = res.data
-                    this.selectValue = res.data[0]
-                    this.getData(flag);
+                    this.modelId = res.data[0]
+                    this.getData();
                 }
             })
         },
-        getData(flag) {
-            api.getSettings({
-                stationId: this.current,
-                modelId: this.selectValue,
+        async getData() {
+            await api.getSettings({
+                stationId: this.stationId,
+                modelId: this.modelId,
             }).then(res => {
                 if (res.data) {
-                    this.alertInfo = []
-                    this.settingsControl = res.data.settings
-                    if (flag) {
-                        this.alertInfo = res.data.alertInfo
-                    } else {
-                        console.log(this.alertInfo);
-                        setTimeout(() => {
-                            this.alertInfo = res.data.alertInfo
-                        }, 100);
+                  this.autoControl = {...this.autoControl, ...res.data.autoControl}
+                  this.autoReset = {...this.autoReset, ...res.data.autoReset}
+                  this.optimizeControl = {...this.optimizeControl, ...res.data.optimizeControl}
+                  this.earlyWarningStop = {...this.earlyWarningStop, ...res.data.earlyWarningStop}
+                  this.artificialIntelligence = {...this.artificialIntelligence, ...res.data.artificialIntelligence}
+                  this.dataId = res.data.id
+                }
+            })
+            api.warningSetting({
+              stationId: this.stationId,
+              modelId: this.modelId,
+            }).then(res => {
+              if(res.data){
+                this.alarminfos = res.data
+                if(res.data?.length){
+                  this.autoReset.prohibitResetUniformCodes = []
+                  this.autoReset.prohibitResetParts = []
+                  for(const data of res.data){
+                    if(!data.modelId){
+                      if (data.notResettable) {
+                          data.children.forEach(item => {
+                              item.notResettable = true
+                              const childrenAutoFindIndex = this.autoReset.prohibitResetUniformCodes.findIndex(o => o === item.uniformCode)
+                              if(childrenAutoFindIndex == -1){
+                                this.autoReset.prohibitResetUniformCodes.push(item.uniformCode)
+                              }
+                          })
+                          const autoProhibitResetPartsFindIndex = this.autoReset.prohibitResetParts.findIndex(o => o === data.id)
+                          if(autoProhibitResetPartsFindIndex == -1){
+                            this.autoReset.prohibitResetParts.push(data.id)
+                          }
+                      }else{
+                        data.children.forEach(item => {
+                            if(item.notResettable){
+                              const childrenAutoFindIndex = this.autoReset.prohibitResetUniformCodes.findIndex(o => o === item.uniformCode)
+                              if(childrenAutoFindIndex == -1){
+                                this.autoReset.prohibitResetUniformCodes.push(item.uniformCode)
+                              }
+                            }
+                        })
+                      }
+                    }else{
+                      const autoResetfindIndex = this.autoReset.prohibitResetUniformCodes.findIndex(o => o === data.uniformCode)
+                      if (data.notResettable) {
+                          if(autoResetfindIndex == -1){
+                            this.autoReset.prohibitResetUniformCodes.push(data.uniformCode)
+                          }
+                      }
                     }
-
-
-                    // this.toggleRowExpansionAll(this.alertInfo, true)
+                  }
                 }
+              }
+            })
+            api.costumeSetting({
+              stationId: this.stationId,
+              modelId: this.modelId,
+            }).then(res => {
+              if(res.data){
+                this.alertInfos = res.data
+                if(res.data?.length){
+                  this.earlyWarningStop.stopUniformCodes = []
+                  this.earlyWarningStop.prohibitResetParts = []
+                  for(const data of res.data){
+                    if(!data.modelId){
+                      if (data.stop) {
+                          data.children.forEach(item => {
+                              item.stop = true
+                              const childrenAutoFindIndex = this.earlyWarningStop.stopUniformCodes.findIndex(o => o === item.uniformCode)
+                              if(childrenAutoFindIndex == -1){
+                                this.earlyWarningStop.stopUniformCodes.push(item.uniformCode)
+                              }
+                          })
+                          const autoProhibitResetPartsFindIndex = this.earlyWarningStop.prohibitResetParts.findIndex(o => o === data.id)
+                          if(autoProhibitResetPartsFindIndex == -1){
+                            this.earlyWarningStop.prohibitResetParts.push(data.id)
+                          }
+                      }else{
+                        data.children.forEach(item => {
+                            if(item.stop){
+                              const childrenAutoFindIndex = this.earlyWarningStop.stopUniformCodes.findIndex(o => o === item.uniformCode)
+                              if(childrenAutoFindIndex == -1){
+                                this.earlyWarningStop.stopUniformCodes.push(item.uniformCode)
+                              }
+                            }
+                        })
+                      }
+                    }else{
+                      const autoResetfindIndex = this.earlyWarningStop.stopUniformCodes.findIndex(o => o === data.uniformCode)
+                      if (data.notResettable) {
+                          if(autoResetfindIndex == -1){
+                            this.earlyWarningStop.stopUniformCodes.push(data.uniformCode)
+                          }
+                      }
+                    }
+                  }
+                }
+              }
             })
         },
-        toggleRowExpansionAll(isExpansion) {
-            this.alertInfo.forEach((item) => {
-                this.$refs.dataTreeList.toggleRowExpansion(item, isExpansion);
+        toggleRowExpansionAll(isExpansion,refKey,data) {
+            data.forEach((item) => {
+                this.$refs[refKey].toggleRowExpansion(item, isExpansion);
             });
         },
         updateSettings() {
-            api.updateSettings(this.settingsControl).then(res => {
-                if (res.data.message === 'success') {
+            api.updateSettings({
+              stationId: this.stationId,
+              modelId: this.modelId,
+              id: this.dataId,
+              autoControl: this.autoControl,
+              autoReset: this.autoReset,
+              optimizeControl:this.optimizeControl,
+              earlyWarningStop: this.earlyWarningStop,
+              artificialIntelligence:this.artificialIntelligence
+            }).then(res => {
+                if (res.data.code === 200) {
                     this.$notify({
-                        title: "控制",
+                        title: "设置",
                         message: '修改成功',
                         type: "success",
                         position: "bottom-right",
@@ -186,36 +750,92 @@ export default {
                         duration: 3000,
                     });
                     this.getData()
+                }else{
+                  this.$notify({
+                        title: "设置",
+                        message: res.data.message,
+                        type: "warning",
+                        position: "bottom-right",
+                        offset: 60,
+                        duration: 3000,
+                    });
                 }
             })
         },
-        handleSwitchChange(data) {
+        handleSwitchChange(data, type='autoReset') {
+          if(type==='autoReset'){
             if (!data.modelId) {
+                const autoProhibitResetPartsFindIndex = this.autoReset.prohibitResetParts.findIndex(o => o === data.id)
                 if (data.notResettable) {
                     data.children.forEach(item => {
                         item.notResettable = true
-                        this.settingsControl.prohibitResetUniformCodes.push(item.uniformCode)
+                        const childrenAutoFindIndex = this.autoReset.prohibitResetUniformCodes.findIndex(o => o === item.uniformCode)
+                        if(childrenAutoFindIndex == -1){
+                          this.autoReset.prohibitResetUniformCodes.push(item.uniformCode)
+                        }
                     })
-                    this.settingsControl.prohibitResetParts.push(data.id)
+                    if(autoProhibitResetPartsFindIndex == -1){
+                      this.autoReset.prohibitResetParts.push(data.id)
+                    }
                 } else {
-                    for (var i = 0; i < this.settingsControl.prohibitResetParts.length; i++) {
-                        if (this.settingsControl.prohibitResetParts[i] == data.id) {
-                            this.settingsControl.prohibitResetParts.splice(i, 1);
-                        }
+                    data.children.forEach(item => {
+                        item.notResettable = false
+                    })
+                    if(autoProhibitResetPartsFindIndex != -1){
+                      this.autoReset.prohibitResetParts.splice(autoProhibitResetPartsFindIndex, 1)
                     }
                 }
             } else {
+                const autoResetfindIndex = this.autoReset.prohibitResetUniformCodes.findIndex(o => o === data.uniformCode)
                 if (data.notResettable) {
-                    this.settingsControl.prohibitResetUniformCodes.push(data.uniformCode)
+                    if(autoResetfindIndex == -1){
+                      this.autoReset.prohibitResetUniformCodes.push(data.uniformCode)
+                    }
+                } else {
+                    if(autoResetfindIndex != -1){
+                      this.autoReset.prohibitResetUniformCodes.splice(autoResetfindIndex, 1)
+                    }
+                }
+            }
+          }else{
+            if (!data.modelId) {
+                const prohibitResetPartsFindIndex = this.earlyWarningStop.prohibitResetParts.findIndex(o => o === data.id)
+                if (data.stop) {
+                    data.children.forEach(item => {
+                        item.stop = true
+                        const childrenFindIndex = this.earlyWarningStop.stopUniformCodes.findIndex(o => o === item.uniformCode)
+                        if(childrenFindIndex == -1){
+                          this.earlyWarningStop.stopUniformCodes.push(item.uniformCode)
+                        }
+                    })
+                    if(prohibitResetPartsFindIndex == -1){
+                      this.earlyWarningStop.prohibitResetParts.push(data.id)
+                    }
                 } else {
-                    for (var i = 0; i < this.settingsControl.prohibitResetUniformCodes.length; i++) {
-                        if (this.settingsControl.prohibitResetUniformCodes[i] == data.uniformCode) {
-                            this.settingsControl.prohibitResetUniformCodes.splice(i, 1);
+                    data.children.forEach(item => {
+                        item.stop = false
+                        const childrenFindIndex = this.earlyWarningStop.stopUniformCodes.findIndex(o => o === item.uniformCode)
+                        if(childrenFindIndex != -1){
+                          this.earlyWarningStop.stopUniformCodes.splice(childrenFindIndex, 1)
                         }
+                    })
+                    if(prohibitResetPartsFindIndex != -1){
+                      this.earlyWarningStop.prohibitResetParts.splice(prohibitResetPartsFindIndex, 1);
+                    }
+                }
+            } else {
+                const findIndex = this.earlyWarningStop.stopUniformCodes.findIndex(o => o === data.uniformCode)
+                if (data.stop) {
+                  if(findIndex == -1){
+                    this.earlyWarningStop.stopUniformCodes.push(data.uniformCode)
+                  }
+                } else {
+                    if(findIndex != -1){
+                      this.earlyWarningStop.stopUniformCodes.splice(findIndex, 1)
                     }
                 }
             }
-            this.updateSettings()
+          }
         },
         handleReturn(){
             
@@ -225,11 +845,11 @@ export default {
           type: 'warning'
         }).then(() => {
           api.returnSetting({
-                stationId: this.current,
-                modelId: this.selectValue,
+                stationId: this.stationId,
+                modelId: this.modelId,
             }).then(res =>{
                 this.$notify({
-                        title: "控制",
+                        title: "设置",
                         message: '修改成功',
                         type: "success",
                         position: "bottom-right",
@@ -255,127 +875,248 @@ export default {
 </script>
 <style lang="less" scoped>
 .body {
-    background-color: #000000;
-    height: 89vh;
-    width: 102%;
-    margin-left: -1%;
-    margin-top: -40px;
+  background-color: #000000;
+  height: 89vh;
+  width: 102%;
+  margin-left: -1%;
+  margin-top: -40px;
 }
 
 .title {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin-left: 3vw;
+  padding-top: 8px;
+  position: absolute;
+  width: 100%;
+  background-color: #000000;
+  padding-bottom: 10px;
+
+  .title-item {
+    background-color: #242424;
+    border-radius: 4px;
+    padding: 8px 27px 7px 25px;
+    font-size: 14px;
+    color: #b4bdc0;
+    margin-right: 10px;
+  }
+
+  .title-onItem {
+    background-color: rgba(37, 116, 219, 1);
+    border-radius: 4px;
+    padding: 8px 27px 7px 25px;
+    font-size: 14px;
+    color: #b4bdc0;
+    margin-right: 10px;
+  }
+}
+
+.models {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+
+  .models-left {
     display: flex;
     flex-direction: row;
     align-items: center;
-    margin-left: 3vw;
-    padding-top: 8px;
-    position: absolute;
-    width: 100%;
-    background-color: #000000;
-    padding-bottom: 10px;
-
-    .title-item {
-        background-color: #242424;
-        border-radius: 4px;
-        padding: 8px 27px 7px 25px;
-        font-size: 14px;
-        color: #b4bdc0;
-        margin-right: 10px;
-    }
 
-    .title-onItem {
-        background-color: rgba(37, 116, 219, 1);
-        border-radius: 4px;
-        padding: 8px 27px 7px 25px;
-        font-size: 14px;
-        color: #b4bdc0;
-        margin-right: 10px;
+    .models-name {
+      margin-right: 10px;
+      color: #ffffff;
+      font-size: 17px;
     }
+  }
+
+  .returns {
+    background-color: #666666;
+    border-radius: 4px;
+    padding: 8px 15px 7px 15px;
+    font-size: 14px;
+    color: #ffffff;
+    cursor: pointer;
+    margin-right: 20px;
+    margin-left: 10px;
+  }
 }
 
 .content {
-    margin-left: 3vw;
-    padding-top: 7vh;
-    width: 100%;
-
-    .models {
-        display: flex;
-        flex-direction: row;
-        align-items: center;
-        justify-content: space-between;
-        .models-left{
-            display: flex;
-        flex-direction: row;
-        align-items: center;
-        .models-name {
-            margin-right: 10px;
-            color: #ffffff;
-            font-size: 17px;
-        }
-        }
-        .returns{
-            background-color: #666666;
-            border-radius: 4px;
-            padding: 8px 15px 7px 15px;
-            font-size: 14px;
-            color: #ffffff;
-            margin-right: 50px;
-        }
-    }
+  margin-left: 3vw;
+  padding-top: 7vh;
+  width: 100%;
 }
 
 .control {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin-top: 15px;
+
+  .control-item {
     display: flex;
     flex-direction: row;
     align-items: center;
-    margin-top: 15px;
-
-    .control-item {
-        display: flex;
-        flex-direction: row;
-        align-items: center;
-        margin-right: 30px;
-
-        .control-title {
-            margin-right: 10px;
-            color: #ffffff;
-            font-size: 17px;
-        }
+    margin-right: 30px;
+
+    .control-title {
+      margin-right: 10px;
+      color: #ffffff;
+      font-size: 17px;
     }
+  }
 }
 
 .inputs {
-    width: 150px !important;
+  width: 150px !important;
 }
 
 .el-switch {
-    width: 50px !important;
+  width: 50px !important;
 }
 
 .warningTable {
-    margin-left: 58px;
-    margin-top: 20px;
-    width: 96%;
+  width: 96%;
 }
 
 .el-table--border::after,
 .el-table--group::after,
 .el-table::before {
-    background-color: #000000 !important;
+  background-color: #000000 !important;
 }
 
 .teble-buttons {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin: 10px 0;
+
+  .button {
+    background-color: rgba(37, 116, 219, 1);
+    border-radius: 4px;
+    padding: 8px 27px 7px 25px;
+    font-size: 14px;
+    color: #b4bdc0;
+    margin-right: 10px;
+  }
+}
+
+.mn {
+  overflow-y: auto;
+  height: 82vh;
+  overflow-x: hidden;
+
+  &-item {
+    // width: 100%;
+    min-height: 118px;
+    padding: 20px;
     display: flex;
-    flex-direction: row;
-    align-items: center;
-    margin: 10px 0;
-
-    .button {
-        background-color: rgba(37, 116, 219, 1);
-        border-radius: 4px;
-        padding: 8px 27px 7px 25px;
-        font-size: 14px;
-        color: #b4bdc0;
-        margin-right: 10px;
+    border-radius: 8px;
+    cursor: pointer;
+    transition: all ease .2s;
+    border-bottom: 2px solid black;
+
+    &-icon {
+      height: 60px;
+      width: 60px;
+      border-radius: 50%;
+      overflow: hidden;
+      flex: 0 0 60px;
+
+      img {
+        width: 100%;
+        height: 100%;
+      }
+    }
+
+    &-fl {
+      display: flex;
+      flex-direction: column;
+
+      &-tt {
+        padding-top: 10px;
+        font-size: 18px;
+        color: white;
+      }
+
+      &-desc {
+        padding-top: 20px;
+        font-size: 12px;
+        color: grey;
+        white-space: wrap;
+      }
+    }
+
+    &:hover {
+      background: rgba(255, 255, 255, 0.3);
+
+      .mn-item-fl-desc {
+        color: white;
+      }
+    }
+
+    &[data-active='true'] {
+      background: rgba(255, 255, 255, 0.3);
+
+      .mn-item-fl-desc {
+        color: white;
+      }
     }
+
+  }
+}
+
+.panel {
+  height: 82vh;
+  overflow-x: hidden;
+  overflow-y: auto;
+
+  .pn-item {
+    &-desc {
+      width: 96%;
+      line-height: 2;
+      color: rgba(255, 255, 255, 0.75);
+    }
+  }
+}
+
+.searchTitle {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  //   margin-left: 3vw;
+  flex-wrap: wrap;
+  padding-top: 10px;
+  color: #ffffff;
+}
+
+.search {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  margin-right: 50px;
+  margin-top: 20px;
+  height: 40px;
+  flex: 1 1 200px;
+  white-space: nowrap;
+}
+
+.date {
+  margin-right: 10px;
+  font-size: 16px;
+}
+
+.inputs {
+  border: none;
+  width: 174px !important;
+  background-color: #292929;
+  height: 40px;
+  color: #ffffff;
+}
+/deep/ .el-input-number__decrease, /deep/ .el-input-number__increase{
+  background: #666666!important;
+  color: white!important;
 }
 </style>

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików