From 3c6bdb6f439ff7af04765259fd6a91b6d201d095 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 19 六月 2025 17:12:25 +0800
Subject: [PATCH] 工单,数据中心用户查看数据的权限,合同考核每日,以及导出每日和按月

---
 src/views/system/work-order/threshold/index.vue | 1373 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 996 insertions(+), 377 deletions(-)

diff --git a/src/views/system/work-order/threshold/index.vue b/src/views/system/work-order/threshold/index.vue
index ddbbc4e..2f38eae 100644
--- a/src/views/system/work-order/threshold/index.vue
+++ b/src/views/system/work-order/threshold/index.vue
@@ -1,174 +1,476 @@
 <template>
   <div class="app-container">
-<!--    <el-row :gutter="10" class="mb8">-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="primary"-->
-<!--          plain-->
-<!--          icon="el-icon-plus"-->
-<!--          size="mini"-->
-<!--          @click="handleAdd"-->
-<!--          v-hasPermi="['ycl:threshold:add']"-->
-<!--        >鏂板-->
-<!--        </el-button>-->
-<!--      </el-col>-->
-<!--    </el-row>-->
+    <!--    <el-row :gutter="10" class="mb8">-->
+    <!--      <el-col :span="1.5">-->
+    <!--        <el-button-->
+    <!--          type="primary"-->
+    <!--          plain-->
+    <!--          icon="el-icon-plus"-->
+    <!--          size="mini"-->
+    <!--          @click="handleAdd"-->
+    <!--          v-hasPermi="['ycl:threshold:add']"-->
+    <!--        >鏂板-->
+    <!--        </el-button>-->
+    <!--      </el-col>-->
+    <!--    </el-row>-->
+    <el-row>
+      <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
+        <el-card style="margin-bottom: 20px; height: 350px; margin-right: 20px;color: #656565;">
+          <div style="display: flex; justify-content: space-between">
+            <div class="header鈥攖ext">瑙嗛</div>
+            <div>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                v-hasPermi="['ycl:threshold:edit']"
+                @click="showEdit('video')"
+                v-if="!ifEditVideo"
+              >淇敼
+              </el-button>
+              <el-button
+                size="mini"
+                type="primary"
+                @click="saveEdit('video')"
+                v-if="ifEditVideo"
+              >淇濆瓨
+              </el-button>
+            </div>
+          </div>
+          <div
+            style="
+              margin: 20px;
+              display: flex;
+              width: 400px;
+              justify-content: space-between;
+            "
+          >
 
-    <el-table v-loading="loading" :data="thresholdList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="璁惧绫诲瀷" align="center" prop="monitorType">
-        <template slot-scope="scope">
-          <span v-show="scope.row['monitorType'] === 'face'">浜鸿劯</span>
-          <span v-show="scope.row['monitorType'] === 'car'">杞﹁締</span>
-          <span v-show="scope.row['monitorType'] === 'video'">瑙嗛</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="宸ュ崟闃堝��" align="center" prop="indicator">
-        <template slot-scope="scope">
-          <div class="table-row" style="display: flex;flex-direction: row">
-            <div class="table-row-item">鍥惧儚璐ㄩ噺</div>
-            <div class="table-row-item">{{ scope.row.imageQuality }}</div>
+            <div>
+              <div
+                style="
+                  font-size: small;
+                  display: flex;
+                  flex-direction: row-reverse;
+                  width: 192px;
+                "
+              >
+                宸ュ崟闃堝��
+              </div>
+              <div>
+                <el-form label-width="140px">
+                  <el-form-item
+                    v-for="(item, index) in thresholdList.video"
+                    :label="item.name + '锛�'"
+                    :key="item.id"
+                  >
+                    <el-input
+                      v-model="videoList[index].valueAuto"
+                      size="mini"
+                      style="width: 100px"
+                      :type="item.countType=='int'?'number':''"
+                      v-if="ifEditVideo"
+                    ></el-input>
+                    <span v-else>{{ item.valueAuto }}</span>
+                    <span class="unit" v-if="item.countType=='percent'">%</span>
+                    <span class="unit" v-if="item.countType=='second'">绉�</span>
+                  </el-form-item>
+                </el-form>
+              </div>
+            </div>
+            <div>
+              <span style="font-size: small">涓嬪彂闃堝��</span>
+              <div>
+                <el-form ref="form">
+                  <el-form-item
+                    v-for="(item, index) in thresholdList.video"
+                    label=""
+                    :key="item.id"
+                  >
+                    <el-input
+                      v-model="videoList[index].value"
+                      size="mini"
+                      style="width: 100px"
+                      :type="item.countType=='int'?'number':''"
+                      v-if="ifEditVideo"
+                    ></el-input>
+                    <span v-else>{{ item.value }}</span>
+                    <span class="unit" v-if="item.countType=='percent'">%</span>
+                    <span class="unit" v-if="item.countType=='second'">绉�</span>
+                  </el-form-item>
+                </el-form>
+              </div>
+            </div>
           </div>
-          <div class="table-row" style="display: flex;flex-direction: row">
-            <div class="table-row-item">瑙嗛璐ㄩ噺</div>
-            <div class="table-row-item">{{ scope.row.videoQuality }}</div>
+        </el-card>
+      </el-col>
+      <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
+        <el-card style="margin-bottom: 20px; height: 350px; margin-right: 20px;color: #656565;">
+          <div style="display: flex; justify-content: space-between">
+            <div class="header鈥攖ext">浜鸿劯</div>
+            <div>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                v-hasPermi="['ycl:threshold:edit']"
+                @click="showEdit('face')"
+                v-if="!ifEditFace"
+              >淇敼
+              </el-button>
+              <el-button
+                size="mini"
+                type="primary"
+                @click="saveEdit('face')"
+                v-if="ifEditFace"
+              >淇濆瓨
+              </el-button>
+            </div>
           </div>
-          <div class="table-row" style="display: flex;flex-direction: row">
-            <div class="table-row-item">鏍囨敞鍑嗙‘鐜�</div>
-            <div class="table-row-item">{{ scope.row.annotationAccuracy }}</div>
+          <div
+            style="
+              margin: 20px;
+              display: flex;
+              width: 400px;
+              justify-content: space-between;
+            "
+          >
+            <div>
+              <div
+                style="
+                  font-size: small;
+                  display: flex;
+                  flex-direction: row-reverse;
+                  width: 190px;
+                "
+              >
+                宸ュ崟闃堝��
+              </div>
+              <div>
+                <el-form label-width="140px">
+                  <el-form-item
+                    v-for="(item, index) in thresholdList.face"
+                    :label="item.name + '锛�'"
+                    :key="item.id"
+                  >
+                    <el-input
+                      v-model="faceList[index].valueAuto"
+                      size="mini"
+                      style="width: 100px"
+                      :type="item.countType=='int'?'number':''"
+                      v-if="ifEditFace"
+                    ></el-input>
+                    <span v-else>{{ item.valueAuto }}</span>
+                    <span class="unit" v-if="item.countType=='percent'">%</span>
+                    <span class="unit" v-if="item.countType=='second'">绉�</span>
+                  </el-form-item>
+                </el-form>
+              </div>
+            </div>
+            <div>
+              <span style="font-size: small">涓嬪彂闃堝��</span>
+              <div>
+                <el-form ref="form">
+                  <el-form-item
+                    v-for="(item, index) in thresholdList.face"
+                    label=""
+                    :key="item.id"
+                  >
+                    <el-input
+                      v-model="faceList[index].value"
+                      size="mini"
+                      style="width: 100px"
+                      :type="item.countType=='int'?'number':''"
+                      v-if="ifEditFace"
+                    ></el-input>
+                    <span v-else>{{ item.value }}</span>
+                    <span class="unit" v-if="item.countType=='percent'">%</span>
+                    <span class="unit" v-if="item.countType=='second'">绉�</span>
+                  </el-form-item
+                  >
+                </el-form>
+              </div>
+            </div>
           </div>
-        </template>
-      </el-table-column>
-      <el-table-column label="涓嬪彂闃堝��" align="center" prop="indicator">
-        <template slot-scope="scope">
-          <div class="table-row" style="display: flex;flex-direction: row">
-            <div class="table-row-item">鍥惧儚璐ㄩ噺</div>
-            <div class="table-row-item">{{ scope.row.imageQualityAuto }}</div>
+        </el-card>
+      </el-col
+      >
+      <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
+        <el-card style="margin-bottom: 20px; height: 350px; margin-right: 20px;color: #656565;">
+          <div style="display: flex; justify-content: space-between">
+            <div class="header鈥攖ext">杞﹁締</div>
+            <div>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                v-hasPermi="['ycl:threshold:edit']"
+                @click="showEdit('car')"
+                v-if="!ifEditCar"
+              >淇敼
+              </el-button>
+              <el-button
+                size="mini"
+                type="primary"
+                @click="saveEdit('car')"
+                v-if="ifEditCar"
+              >淇濆瓨
+              </el-button>
+            </div>
           </div>
-          <div class="table-row" style="display: flex;flex-direction: row">
-            <div class="table-row-item">瑙嗛璐ㄩ噺</div>
-            <div class="table-row-item">{{ scope.row.videoQualityAuto }}</div>
+          <div
+            style="
+              margin: 20px;
+              display: flex;
+              width: 400px;
+              justify-content: space-between;
+            "
+          >
+            <div>
+              <div
+                style="
+                  font-size: small;
+                  display: flex;
+                  flex-direction: row-reverse;
+                  width: 206px;
+                "
+              >
+                宸ュ崟闃堝��
+              </div>
+              <div>
+                <el-form ref="form" label-width="160px">
+                  <el-form-item
+                    v-for="(item, index) in thresholdList.car"
+                    :label="item.name + '锛�'"
+                    :key="item.id"
+                  >
+                    <el-input
+                      v-model="carList[index].valueAuto"
+                      size="mini"
+                      style="width: 100px"
+                      :type="item.countType=='int'?'number':''"
+                      v-if="ifEditCar"
+                    ></el-input>
+                    <span v-else>{{ item.valueAuto }}</span>
+                    <span class="unit" v-if="item.countType=='percent'">%</span>
+                    <span class="unit" v-if="item.countType=='second'">绉�</span>
+                  </el-form-item>
+                </el-form>
+              </div>
+            </div>
+            <div>
+              <span style="font-size: small">涓嬪彂闃堝��</span>
+              <div>
+                <el-form ref="form">
+                  <el-form-item
+                    v-for="(item, index) in thresholdList.car"
+                    label=""
+                    :key="item.id"
+                  >
+                    <el-input
+                      v-model="carList[index].value"
+                      size="mini"
+                      style="width: 100px"
+                      :type="item.countType=='int'?'number':''"
+                      v-if="ifEditCar"
+                    ></el-input>
+                    <span v-else>{{ item.value }}</span>
+                    <span class="unit" v-if="item.countType=='percent'">%</span>
+                    <span class="unit" v-if="item.countType=='second'">绉�</span>
+                  </el-form-item>
+                </el-form>
+              </div>
+            </div>
           </div>
-          <div class="table-row" style="display: flex;flex-direction: row">
-            <div class="table-row-item">鏍囨敞鍑嗙‘鐜�</div>
-            <div class="table-row-item">{{ scope.row.annotationAccuracyAuto }}</div>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            v-hasPermi="['ycl:threshold:edit']"
-            @click="updateWho(scope.row)"
-          >淇敼
+        </el-card>
+      </el-col
+      >
+    </el-row>
+
+    <el-row class="content-warp">
+      <div class="header鈥攖ext" style="margin-bottom: 5px">宸ュ崟鐧藉悕鍗�</div>
+      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" @submit.native.prevent>
+        <el-form-item label="鍏抽敭瀛�" prop="keyword">
+          <el-input
+            v-model="queryParams.keyword"
+            placeholder="璁惧缂栫爜/鐐逛綅鍚�"
+            clearable
+            @keyup.enter.native="getWhiteList"
+            @clear="getWhiteList"
+          />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="el-icon-search" size="small" @click="getWhiteList">鎼滅储</el-button>
+        </el-form-item>
+      </el-form>
+    </el-row>
+    <el-row class="content-warp">
+      <el-button size="small" type="success" @click="whiteOpen" plain>鏂板</el-button>
+      <el-button size="small" type="danger" @click="bathDelete" plain>鍒犻櫎</el-button>
+      <el-button type="primary" plain icon="el-icon-top" v-loading="download" size="mini" @click="handleExport"
+      >瀵煎嚭鐧藉悕鍗�
+      </el-button>
+      <el-popover style="margin-left: 10px" placement="bottom" trigger="hover" content="瀵煎叆鐧藉悕鍗�">
+        <div class="bottom_">
+          <el-upload
+            ref="upload"
+            class="upload-demo"
+            drag
+            :action="importUrl"
+            :file-list="fileList"
+            :before-upload="beforeUpload"
+          >
+            <i class="el-icon-upload"></i>
+            <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+            <div class="el-upload__tip" slot="tip">鍙兘涓婁紶xls/xlsx鏂囦欢</div>
+          </el-upload>
+        </div>
+        <div>
+          <el-button class="bottom_" type="primary" size="small" v-loading="upload" @click="handleImport"
+          >瀵煎叆
           </el-button>
-<!--          <el-button-->
-<!--            size="mini"-->
-<!--            type="text"-->
-<!--            icon="el-icon-delete"-->
-<!--            @click="handleDelete(scope.row)"-->
-<!--            v-hasPermi="['ycl:threshold:remove']"-->
-<!--          >鍒犻櫎-->
-<!--          </el-button>-->
-        </template>
-      </el-table-column>
-    </el-table>
+        </div>
+        <el-button type="primary" size="small" plain icon="el-icon-bottom" slot="reference">瀵煎叆鐧藉悕鍗�</el-button>
+      </el-popover>
 
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+      <el-popover style="margin-left: 10px" placement="bottom" content="娣诲姞鏁呴殰绫诲瀷">
+        <div class="bottom_">
+          <el-form ref = "addErrorForm" :model="addErrorForm" v-loading="addErrorLoading" rules="addErrorFormRules" :inline="true" >
+            <el-form-item label="鏁呴殰绫诲瀷" prop="errorTypeList">
+              <el-select v-model="addErrorForm.errorTypeList" multiple>
+                <el-option v-for="dict in dict.type.error_type"
+                           :value="dict.value"
+                           :key="dict.value"
+                           :label="dict.label"/>
+              </el-select>
+            </el-form-item>
+          </el-form>
+        </div>
+        <div>
+          <el-button class="bottom_" type="primary" size="small" @click="addError" plain>纭</el-button>
+        </div>
+        <el-button style="margin-left: 10px" size="small" type="primary" slot="reference" plain>娣诲姞鏁呴殰绫诲瀷</el-button>
+      </el-popover>
 
-    <!-- 浜鸿劯闃堝�� -->
-    <el-dialog title="淇敼浜鸿劯宸ュ崟闃堝��" :visible.sync="faceOpen" width="400px" append-to-body>
-      <el-form ref="faceForm" :model="faceForm" :rules="rules" label-width="150px">
-        <el-form-item label="璁惧绫诲瀷" prop="monitorType">
-          <el-select v-model="faceForm.monitorType" placeholder="璇烽�夋嫨璁惧绫诲瀷" @change="handleModeNameChange">
-            <el-option label="浜鸿劯" value="face"/>
-            <el-option label="杞﹁締" value="car"/>
-            <el-option label="瑙嗛" value="video"/>
-          </el-select>
-        </el-form-item>
+    </el-row>
 
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="editFace">纭� 瀹�</el-button>
-        <el-button @click="cancelFace">鍙� 娑�</el-button>
+    <el-row class="content-warp">
+      <el-col :span="24">
+        <el-table v-loading="loading" :data="workOrderWhiteList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" prop="id"/>
+          <el-table-column label="璁惧缂栫爜" align="center" prop="serialNumber"/>
+          <el-table-column label="鐐逛綅鍚嶇О" align="center" prop="pointName"/>
+          <el-table-column label="鏁呴殰绫诲瀷" align="center" prop="errorType"/>
+          <el-table-column label="澶囨敞" align="center" prop="remark"/>
+          <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button size="mini" type="text" icon="el-icon-edit" @click="handleWhiteUpdate(scope.row)"
+              >淇敼
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="total>0"
+          :total="total"
+          :auto-scroll="false"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getWhiteList"
+        />
+      </el-col>
+    </el-row>
+
+    <!--    鏂板鐧藉悕鍗�-->
+    <el-dialog
+      :title="title"
+      :visible.sync="whiteShow"
+      width="500px"
+      :close-on-click-modal="false"
+      :before-close="whiteClose">
+      <div>
+        <el-form :model="whiteForm" label-position="top" :rules="whiteFormRules" ref="whiteForm" size="small"
+                 class="add-form">
+          <el-form-item label="鐐逛綅" prop="serialNumber">
+            <el-select
+              v-model="whiteForm.pointName"
+              filterable
+              remote
+              reserve-keyword
+              :disabled="whiteForm.id"
+              placeholder="鍥芥爣鐮�/鐐逛綅鍚嶇О鎼滅储"
+              :remote-method="remoteGetPoints"
+              @change="setPointId"
+              :loading="selectLoading"
+              style="width: 460px">
+              <el-option
+                v-for="item in pointList"
+                :key="item.id"
+                :label="item.value"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="鏁呴殰绫诲瀷" prop="errorTypeList">
+            <el-select v-model="whiteForm.errorTypeList" multiple>
+              <el-option v-for="dict in dict.type.error_type"
+                         :value="dict.value"
+                         :key="dict.value"
+                         :label="dict.label"/>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="澶囨敞淇℃伅" prop="remark">
+            <el-input v-model="whiteForm.remark"></el-input>
+          </el-form-item>
+        </el-form>
       </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="whiteClose">鍙� 娑�</el-button>
+        <el-button type="primary" @click="whiteSubmit">纭� 瀹�</el-button>
+      </span>
     </el-dialog>
-
-    <!-- 杞﹁締闃堝�� -->
-    <el-dialog title="淇敼杞﹁締宸ュ崟闃堝��" :visible.sync="faceOpen" width="400px" append-to-body>
-      <el-form ref="faceForm" :model="faceForm" :rules="rules" label-width="150px">
-        <el-form-item label="璁惧绫诲瀷" prop="monitorType">
-          <el-select v-model="faceForm.monitorType" placeholder="璇烽�夋嫨璁惧绫诲瀷" @change="handleModeNameChange">
-            <el-option label="浜鸿劯" value="face"/>
-            <el-option label="杞﹁締" value="car"/>
-            <el-option label="瑙嗛" value="video"/>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="editCar">纭� 瀹�</el-button>
-        <el-button @click="cancelCar">鍙� 娑�</el-button>
-      </div>
-    </el-dialog>
-
-    <!-- 瑙嗛闃堝�� -->
-    <el-dialog title="淇敼瑙嗛宸ュ崟闃堝��" :visible.sync="videoOpen" width="500px" append-to-body>
-      <el-form ref="videoForm" :model="videoForm" :rules="rules" label-width="100px">
-        <el-form-item label="璁惧绫诲瀷" prop="monitorType">
-          <el-select v-model="videoForm.monitorType" disabled placeholder="璇烽�夋嫨璁惧绫诲瀷" @change="handleModeNameChange">
-            <el-option label="浜鸿劯" value="face"/>
-            <el-option label="杞﹁締" value="car"/>
-            <el-option label="瑙嗛" value="video"/>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="鍥惧儚璐ㄩ噺" prop="imageQuality" label-width="100px">
-          <el-select v-model="videoForm.imageQuality" placeholder="宸ュ崟闃堝��" @change="handleModeNameChange">
-            <el-option :key="dict.value" :label="dict.value" v-for="dict in dict.type.image_qualify"/>
-          </el-select>
-          <el-select v-model="videoForm.imageQualityAuto" placeholder="涓嬪彂闃堝��" @change="handleModeNameChange">
-            <el-option :key="dict.value" :label="dict.value" v-for="dict in dict.type.image_qualify"/>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="瑙嗛璐ㄩ噺" prop="videoQuality" label-width="100px">
-          <el-select v-model="videoForm.videoQuality" placeholder="宸ュ崟闃堝��" @change="handleModeNameChange">
-            <el-option :key="dict.value" :label="dict.value" v-for="dict in dict.type.video_qualify"/>
-          </el-select>
-          <el-select v-model="videoForm.videoQualityAuto" placeholder="涓嬪彂闃堝��" @change="handleModeNameChange">
-            <el-option :key="dict.value" :label="dict.value" v-for="dict in dict.type.video_qualify"/>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="鏍囨敞鍑嗙‘鐜�" prop="annotationAccuracy" label-width="100px">
-          <el-input v-model="videoForm.annotationAccuracy" type="number" size="small" placeholder="宸ュ崟闃堝��"></el-input>
-          <el-input v-model="videoForm.annotationAccuracy" type="number" size="small" placeholder="涓嬪彂闃堝��"></el-input>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="editVideo">纭� 瀹�</el-button>
-        <el-button @click="cancelVideo">鍙� 娑�</el-button>
-      </div>
-    </el-dialog>
-
   </div>
+
 </template>
 
 <script>
-import { listThreshold, getThreshold, editVideo } from '@/api/platform/threshold'
-import { editCar, editFace, getCar, getFace, getVideo } from '../../../../api/platform/threshold'
+import {
+  listThreshold,
+  getThreshold,
+  updateThreshold,
+  importData,
+  editCar,
+  editFace,
+  getCar,
+  getFace,
+  getVideo,
+  getWhiteList,
+  getWhite,
+  addWhiteList,
+  bathDelete,
+  updateWhite,
+  whiteExport
+} from "@/api/platform/threshold";
+
+import {pointSelectData} from "@/api/platform/point";
+import {addError} from "../../../../api/platform/threshold";
 
 export default {
-  dicts: ['image_qualify', 'video_qualify'],
-  name: 'Threshold',
+  dicts: ["image_qualify", "video_qualify", "error_type"],
+  name: "Threshold",
   data() {
     return {
+      download: false,
+      addErrorLoading: false,
+      scrollPosition: 0, // 鐢ㄤ簬淇濆瓨婊氬姩浣嶇疆
+      // 涓嬫媺鍔犺浇
+      selectLoading: false,
+      ifEditVideo: false,
+      ifEditFace: false,
+      ifEditCar: false,
+      // 鐐逛綅list
+      pointList: [],
       indicators: [],
       // 閬僵灞�
       loading: true,
@@ -183,106 +485,281 @@
       // 鎬绘潯鏁�
       total: 0,
       // 杩愮淮闃堝�艰〃鏍兼暟鎹�
-      thresholdList: [],
+      thresholdList: {},
+      videoList: [],
+      faceList: [],
+      carList: [],
       // 寮瑰嚭灞傛爣棰�
-      title: '',
+      title: "",
       // 鏄惁鏄剧ず寮瑰嚭灞�
       videoOpen: false,
       faceOpen: false,
+      carOpen: false,
       // 鏌ヨ鍙傛暟
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        monitorType: null
+        monitorType: null,
+        serialNumber: null,
+        pointName: null,
       },
       // 琛ㄥ崟鍙傛暟
       videoForm: {},
       carForm: {},
       faceForm: {},
+      addErrorForm: {},
+      // 鏂板妗嗘牎楠�
+      addErrorFormRules: {
+        errorTypeList: [
+          {required: true, message: "璇烽�夋嫨鏁呴殰绫诲瀷", trigger: "blur"}
+        ],
+      },
       // 琛ㄥ崟鏍¢獙
+      faceRules: {
+        monitorType: [
+          {required: true, message: "璁惧绫诲瀷涓嶈兘涓虹┖", trigger: "change"},
+        ],
+        captureNum: [
+          {required: true, message: "璇峰~鍐欐姄鎷嶉噺", trigger: "blur"},
+        ],
+        timelyRate: [
+          {required: true, message: "璇峰~鍐欏強鏃剁巼", trigger: "blur"},
+        ],
+        delayAmount: [
+          {required: true, message: "璇峰~鍐欏欢杩熼噺", trigger: "blur"},
+        ],
+        deviceActiveRate: [
+          {required: true, message: "璇峰~鍐欒澶囨椿璺冪巼", trigger: "blur"},
+        ],
+        timeAccuracy: [
+          {required: true, message: "璇峰~鍐欐椂閽熷噯纭巼", trigger: "blur"},
+        ],
+        timelyCapture: [
+          {required: true, message: "璇峰~鍐欐姄鎷嶅強鏃剁巼", trigger: "blur"},
+        ],
+      },
+      carRules: {
+        monitorType: [
+          {required: true, message: "璁惧绫诲瀷涓嶈兘涓虹┖", trigger: "change"},
+        ],
+        passCarNum: [
+          {required: true, message: "璇峰~鍐欒繃杞︽暟鎹噺", trigger: "blur"},
+        ],
+        passCarMissRate: [
+          {required: true, message: "璇峰~鍐欒繃杞︾己澶辩巼", trigger: "blur"},
+        ],
+        passCarEffectiveNum: [
+          {required: true, message: "璇峰~鍐欐湁鏁堣繃杞︽暟鎹噺", trigger: "blur"},
+        ],
+        timelyCapture: [
+          {required: true, message: "璇峰~鍐欐姄鎷嶅強鏃剁巼", trigger: "blur"},
+        ],
+        deviceActiveRate: [
+          {required: true, message: "璇峰~鍐欒澶囨椿璺冪巼", trigger: "blur"},
+        ],
+        timeAccuracy: [
+          {required: true, message: "璇峰~鍐欐椂閽熷噯纭巼", trigger: "blur"},
+        ],
+      },
       rules: {
         monitorType: [
-          { required: true, message: '璁惧绫诲瀷锛�1浜鸿劯 2杞﹁締 3瑙嗛涓嶈兘涓虹┖', trigger: 'change' }
+          {
+            required: true,
+            message: "璁惧绫诲瀷锛�1浜鸿劯 2杞﹁締 3瑙嗛涓嶈兘涓虹┖",
+            trigger: "change",
+          },
         ],
         videoQuality: [
-          { required: true, message: '璇烽�夋嫨瑙嗛璐ㄩ噺闃堝��', trigger: 'change' }
+          {required: true, message: "璇烽�夋嫨瑙嗛璐ㄩ噺闃堝��", trigger: "change"},
         ],
         imageQuality: [
-          { required: true, message: '璇烽�夋嫨鍥惧儚璐ㄩ噺闃堝��', trigger: 'change' }
+          {required: true, message: "璇烽�夋嫨鍥惧儚璐ㄩ噺闃堝��", trigger: "change"},
         ],
         annotationAccuracy: [
-          { required: true, message: '璇峰~鍐欐爣娉ㄥ噯纭巼闃堝��', trigger: 'blur' }
+          {required: true, message: "璇峰~鍐欐爣娉ㄥ噯纭巼闃堝��", trigger: "blur"},
         ],
-      }
-    }
+      },
+      // 鐧藉悕鍗曞垪琛�
+      workOrderWhiteList: [],
+      // 鏂板妗�
+      whiteShow: false,
+      whiteForm: {
+        serialNumber: "",
+        remark: "",
+      },
+      // 鏂板妗嗘牎楠�
+      whiteFormRules: {
+        serialNumber: [
+          {required: true, message: "璁惧涓嶈兘涓虹┖", trigger: "blur"},
+        ],
+        errorTypeList: [
+          {required: true, message: "璇烽�夋嫨鏁呴殰绫诲瀷", trigger: "blur"}
+        ],
+      },
+      // 瀵煎叆鏂囦欢璺緞
+      importUrl: '',
+      fileList: [],
+      importFile: null,
+      upload: false,
+    };
   },
   created() {
-    this.getList()
+    this.getList();
+    this.getWhiteList();
   },
   methods: {
-    editVideo() {
-      this.$refs['videoForm'].validate(validate => {
-        if (validate) {
-          editVideo(this.videoForm).then(res => {
-            if (res.code === 200) {
-              this.$message.success("淇敼鎴愬姛")
-              this.getList();
-            } else {
-              this.$message.success("淇敼澶辫触")
-            }
-          })
+    setPointId(selectedValue) {
+      const selectedItem = this.pointList.find(item => item.value === selectedValue);
+      this.whiteForm.serialNumber = selectedItem.id
+    },
+    // 杩滅▼鎼滅储鐐逛綅
+    remoteGetPoints(query) {
+      if (query !== '') {
+        this.selectLoading = true;
+        let data = {
+          "keyword": query
         }
+        pointSelectData(data).then(res => {
+          this.pointList = res.data;
+          this.selectLoading = false;
+        })
+      } else {
+        this.pointList = [];
+      }
+    },
+    handleExport() {
+      this.download = true
+      whiteExport().then(res => {
+        // 灏嗕簩杩涘埗鏁版嵁杞崲涓� Blob 瀵硅薄
+        let blob = new Blob([res], {type: 'application/octet-stream'});
+
+        // 鍒涘缓涓嬭浇閾炬帴
+        let downloadLink = document.createElement('a');
+        downloadLink.href = URL.createObjectURL(blob);
+        downloadLink.setAttribute('download', "宸ュ崟鐧藉悕鍗曟竻鍗�.xlsx"); // 璁剧疆涓嬭浇鏂囦欢鐨勬枃浠跺悕
+        downloadLink.style.display = 'none';
+        // 娣诲姞鍒伴〉闈㈠苟瑙﹀彂涓嬭浇
+        document.body.appendChild(downloadLink);
+        downloadLink.click();
+        document.body.removeChild(downloadLink);
+        this.download = false
       })
+    },
+    showEdit(value) {
+      if (value == "video") {
+        this.videoList = JSON.parse(JSON.stringify(this.thresholdList.video));
+        this.ifEditVideo = true;
+      }
+      if (value == "face") {
+        this.faceList = JSON.parse(JSON.stringify(this.thresholdList.face));
+        this.ifEditFace = true;
+      }
+      if (value == "car") {
+        this.carList = JSON.parse(JSON.stringify(this.thresholdList.car));
+        this.ifEditCar = true;
+      }
+    },
+    saveEdit(value) {
+      let data = []
+      if (value == "video") {
+        data = this.videoList;
+        this.ifEditVideo = false;
+      }
+      if (value == "face") {
+        data = this.faceList;
+        this.ifEditFace = false;
+      }
+      if (value == "car") {
+        data = this.carList;
+        this.ifEditCar = false;
+      }
+      updateThreshold(data).then((response) => {
+        this.$modal.msgSuccess("淇敼鎴愬姛");
+        this.getList();
+      });
+    },
+    showContent(row) {
+      if (row.monitorType === "car") {
+      }
+    },
+    editVideo() {
+      // this.$refs['videoForm'].validate(validate => {
+      //   if (validate) {
+      editVideo(this.videoForm).then((res) => {
+        if (res.code === 200) {
+          this.$message.success("淇敼鎴愬姛");
+          this.videoOpen = false;
+          this.getList();
+        } else {
+          this.$message.success("淇敼澶辫触");
+        }
+        //   })
+        // }
+      });
     },
     editFace() {
-      this.$refs['faceForm'].validate(validate => {
-        if (validate) {
-          editFace(this.videoForm).then(res => {
-            if (res.code === 200) {
-              this.$message.success("淇敼鎴愬姛")
-              this.getList();
-            } else {
-              this.$message.success("淇敼澶辫触")
-            }
-          })
+      // this.$refs['faceForm'].validate(validate => {
+      //   if (validate) {
+      editFace(this.videoForm).then((res) => {
+        if (res.code === 200) {
+          this.$message.success("淇敼鎴愬姛");
+          this.faceOpen = false;
+          this.getList();
+        } else {
+          this.$message.success("淇敼澶辫触");
         }
-      })
+        //   })
+        // }
+      });
     },
     editCar() {
-      this.$refs['carForm'].validate(validate => {
-        if (validate) {
-          editCar(this.carForm).then(res => {
-            if (res.code === 200) {
-              this.$message.success("淇敼鎴愬姛")
-              this.getList();
-            } else {
-              this.$message.success("淇敼澶辫触")
-            }
-          })
+      // this.$refs['carForm'].validate(validate => {
+      //   if (validate) {
+      editCar(this.carForm).then((res) => {
+        if (res.code === 200) {
+          this.$message.success("淇敼鎴愬姛");
+          this.carOpen = false;
+          this.getList();
+        } else {
+          this.$message.success("淇敼澶辫触");
         }
-      })
+        //   })
+        // }
+      });
     },
     /** 鏌ヨ杩愮淮闃堝�煎垪琛� */
     getList() {
-      this.loading = true
-      listThreshold(this.queryParams).then(response => {
-        this.thresholdList = response.rows
-        this.total = response.total
-        this.loading = false
-      })
+      this.loading = true;
+      listThreshold(this.queryParams).then((response) => {
+        this.thresholdList = response.data;
+        this.videoList = JSON.parse(JSON.stringify(this.thresholdList.video));
+        this.faceList = JSON.parse(JSON.stringify(this.thresholdList.face));
+        this.carList = JSON.parse(JSON.stringify(this.thresholdList.car));
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    getWhiteList() {
+      // 淇濆瓨褰撳墠婊氬姩浣嶇疆
+      this.loading = true;
+      getWhiteList(this.queryParams).then((response) => {
+        this.workOrderWhiteList = response.data;
+        this.total = response.total;
+        this.loading = false;
+      });
     },
     // 鍙栨秷鎸夐挳
     cancelFace() {
-      this.faceOpen = false
-      this.resetFace()
+      this.faceOpen = false;
+      this.resetFace();
     },
     cancelCar() {
-      this.carOpen = false
-      this.resetCar()
+      this.carOpen = false;
+      this.resetCar();
     },
     cancelVideo() {
-      this.videoOpen = false
-      this.resetVideo()
+      this.videoOpen = false;
+      this.resetVideo();
     },
     // 琛ㄥ崟閲嶇疆
     reset() {
@@ -293,9 +770,9 @@
         indicator: null,
         createTime: null,
         updateTime: null,
-        deleted: null
-      }
-      this.resetForm('form')
+        deleted: null,
+      };
+      this.resetForm("form");
     },
     resetVideo() {
       this.videoForm = {
@@ -307,8 +784,8 @@
         videoQualityAuto: "",
         annotationAccuracy: null,
         annotationAccuracyAuto: null,
-      }
-      this.resetForm('videoForm')
+      };
+      this.resetForm("videoForm");
     },
     resetFace() {
       this.faceForm = {
@@ -320,8 +797,8 @@
         videoQualityAuto: "",
         annotationAccuracy: null,
         annotationAccuracyAuto: null,
-      }
-      this.resetForm('faceForm')
+      };
+      this.resetForm("faceForm");
     },
     resetCar() {
       this.carForm = {
@@ -333,18 +810,248 @@
         videoQualityAuto: "",
         annotationAccuracy: null,
         annotationAccuracyAuto: null,
-      }
-      this.resetForm('carForm')
+      };
+      this.resetForm("carForm");
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
-    handleQuery() {
-      this.queryParams.pageNum = 1
-      this.getList()
-    },
+    // handleQuery() {
+    //   this.queryParams.pageNum = 1;
+    //   this.getList();
+    // },
     /** 閲嶇疆鎸夐挳鎿嶄綔 */
-    resetQuery() {
-      this.resetForm('queryForm')
-      this.handleQuery()
+    // resetQuery() {
+    //   this.resetForm("queryForm");
+    //   this.handleQuery();
+    // },
+    // 澶氶�夋閫変腑鏁版嵁
+    // handleSelectionChange(selection) {
+    //   this.ids = selection.map((item) => item.id);
+    //   this.single = selection.length !== 1;
+    //   this.multiple = !selection.length;
+    // },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    // handleAdd() {
+    //   this.reset();
+    //   this.open = true;
+    //   this.title = "娣诲姞杩愮淮闃堝��";
+    //   this.handleModeNameChange();
+    // },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    updateWho(row) {
+      if (row.monitorType === "face") {
+        getFace(row.id).then((response) => {
+          this.faceForm = response.data;
+          this.faceOpen = true;
+        });
+      } else if (row.monitorType === "car") {
+        getCar(row.id).then((response) => {
+          this.carForm = response.data;
+          this.carOpen = true;
+        });
+      } else {
+        getVideo(row.id).then((response) => {
+          this.videoForm = response.data;
+          this.videoOpen = true;
+        });
+      }
+    },
+    // handleUpdate(row) {
+    //   this.reset();
+    //   const id = row.id || this.ids;
+    //   getThreshold(id).then((response) => {
+    //     this.form = response.data;
+    //     this.indicators = JSON.parse(this.form.indicator);
+    //     this.videoOpen = true;
+    //     this.title = "淇敼杩愮淮闃堝��";
+    //   });
+    // },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          // 灏唅ndicators杞负json璧嬪�煎埌form
+          this.form.indicator = JSON.stringify(this.indicators);
+          if (this.form.id != null) {
+            updateThreshold(this.form).then((response) => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addThreshold(this.form).then((response) => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎杩愮淮闃堝�肩紪鍙蜂负"' + ids + '"鐨勬暟鎹」锛�')
+        .then(function () {
+          return delThreshold(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {
+        });
+    },
+    /** 鍒囨崲涓嶅悓鎸囨爣 */
+    handleModeNameChange() {
+      if (this.form.monitorType === "1" || this.form.monitorType === null) {
+        this.indicators = [
+          {
+            label: "鎶撴媿閲�",
+            value: null,
+          },
+          {
+            label: "鍙婃椂鐜�",
+            value: null,
+          },
+          {
+            label: "寤惰繜閲�",
+            value: null,
+          },
+          {
+            label: "鎶芥閲�",
+            value: null,
+          },
+          {
+            label: "璁惧娲昏穬鐜�",
+            value: null,
+          },
+          {
+            label: "鎶撴媿鍙婃椂鐜�",
+            value: null,
+          },
+          {
+            label: "鏃堕挓鍑嗙‘鐜�",
+            value: null,
+          },
+          {
+            label: "鏃堕挓涓嶅噯纭巼",
+            value: null,
+          },
+        ];
+      } else if (this.form.monitorType === "car") {
+        this.indicators = [
+          {
+            label: "杩囪溅鏁版嵁閲�",
+            value: null,
+          },
+          {
+            label: "杩囪溅缂哄け鐜�",
+            value: null,
+          },
+          {
+            label: "鏈夋晥杩囪溅鏁版嵁閲�",
+            value: null,
+          },
+          {
+            label: "鎶芥閲�",
+            value: null,
+          },
+          {
+            label: "璁惧娲昏穬鐜�",
+            value: null,
+          },
+          {
+            label: "鎶撴媿鍙婃椂鐜�",
+            value: null,
+          },
+          {
+            label: "鏃堕挓鍑嗙‘鐜�",
+            value: null,
+          },
+          {
+            label: "鏃堕挓涓嶅噯纭巼",
+            value: null,
+          },
+        ];
+      } else if (this.form.monitorType === "video") {
+        this.indicators = [
+          {
+            label: "褰曞儚璐ㄩ噺",
+            value: null,
+          },
+          {
+            label: "鏍囨敞鍑嗙‘鐜�",
+            value: null,
+          },
+          {
+            label: "鍥惧儚璐ㄩ噺",
+            value: null,
+          },
+        ];
+      }
+    },
+    // 鎵撳紑鏂板妗�
+    whiteOpen() {
+      this.title = "鏂板鐧藉悕鍗�"
+      this.whiteShow = true;
+    },
+    // 鍏抽棴鏂板妗�
+    whiteClose() {
+      this.whiteShow = false;
+      this.whiteReset();
+    },
+    // 鏂板鏁呴殰绫诲瀷
+    addError() {
+      this.$refs["addErrorForm"].validate((valid) => {
+        if (valid) {
+          this.addErrorLoading = true
+          addError(this.addErrorForm).then((response) => {
+            this.$modal.msgSuccess("娣诲姞鎴愬姛");
+            this.getWhiteList();
+          });
+          this.addErrorLoading = false
+        }
+      });
+    },
+    // 鐧藉悕鍗曟鎻愪氦
+    whiteSubmit() {
+      this.$refs["whiteForm"].validate((valid) => {
+        if (valid) {
+          if (this.whiteForm.id != null) {
+            updateWhite(this.whiteForm).then((response) => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.whiteShow = false;
+              this.getWhiteList();
+              this.whiteReset();
+            });
+          } else {
+            addWhiteList(this.whiteForm).then((response) => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.whiteShow = false;
+              this.getWhiteList();
+              this.whiteReset();
+            });
+          }
+        }
+      });
+    },
+    // 鏂板妗嗛噸缃�
+    whiteReset() {
+      this.whiteForm = {
+        serialNumber: "",
+        remark: "",
+      };
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleWhiteUpdate(row) {
+      this.whiteReset();
+      const id = row.id
+      getWhite(id).then(response => {
+        this.whiteForm = response.data;
+        this.title = "淇敼鐧藉悕鍗�";
+        this.whiteShow = true;
+      });
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
@@ -352,177 +1059,89 @@
       this.single = selection.length !== 1
       this.multiple = !selection.length
     },
-    /** 鏂板鎸夐挳鎿嶄綔 */
-    handleAdd() {
-      this.reset()
-      this.open = true
-      this.title = '娣诲姞杩愮淮闃堝��'
-      this.handleModeNameChange()
-    },
-    /** 淇敼鎸夐挳鎿嶄綔 */
-    updateWho(row) {
-      if (row.monitorType === 'face') {
-        getFace(row.id).then(response => {
-          this.faceForm = response.data
-          this.faceOpen = true;
-        })
-      } else if (row.monitorType === 'car') {
-        getCar(row.id).then(response => {
-          this.carForm = response.data
-          this.carOpen = true;
-        })
-      } else {
-        getVideo(row.id).then(response => {
-          this.videoForm = response.data
-          this.videoOpen = true;
-        })
-      }
-    },
-    handleUpdate(row) {
-      this.reset()
-      const id = row.id || this.ids
-      getThreshold(id).then(response => {
-        this.form = response.data
-        this.indicators = JSON.parse(this.form.indicator)
-        this.videoOpen = true
-        this.title = '淇敼杩愮淮闃堝��'
+    // 鎵归噺鍒犻櫎
+    bathDelete() {
+      bathDelete(this.ids).then(() => {
+        this.getWhiteList();
+        this.$modal.msgSuccess("鎵归噺鍒犻櫎鎴愬姛");
+        this.ids = [];
       })
     },
-    /** 鎻愪氦鎸夐挳 */
-    submitForm() {
-      this.$refs['form'].validate(valid => {
-        if (valid) {
-          // 灏唅ndicators杞负json璧嬪�煎埌form
-          this.form.indicator = JSON.stringify(this.indicators)
-          if (this.form.id != null) {
-            updateThreshold(this.form).then(response => {
-              this.$modal.msgSuccess('淇敼鎴愬姛')
-              this.open = false
-              this.getList()
-            })
-          } else {
-            addThreshold(this.form).then(response => {
-              this.$modal.msgSuccess('鏂板鎴愬姛')
-              this.open = false
-              this.getList()
-            })
-          }
-        }
-      })
+    beforeUpload(file) {
+      this.importFile = file
+      this.fileList = [file]
+      return false
     },
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    handleDelete(row) {
-      const ids = row.id || this.ids
-      this.$modal.confirm('鏄惁纭鍒犻櫎杩愮淮闃堝�肩紪鍙蜂负"' + ids + '"鐨勬暟鎹」锛�').then(function() {
-        return delThreshold(ids)
-      }).then(() => {
-        this.getList()
-        this.$modal.msgSuccess('鍒犻櫎鎴愬姛')
+    // 瀵煎叆鐧藉悕鍗�
+    handleImport() {
+      this.upload = true;
+      let formData = new FormData()
+      formData.append("file", this.importFile)
+      importData(formData).then(res => {
+        this.$message.success("瀵煎叆鎴愬姛")
+        this.upload = false
+        this.fileList = []
+        this.getWhiteList()
       }).catch(() => {
+        this.upload = false
       })
-    },
-    /** 鍒囨崲涓嶅悓鎸囨爣 */
-    handleModeNameChange() {
-      if (this.form.monitorType === '1' || this.form.monitorType === null) {
-        this.indicators = [
-          {
-            label: '鎶撴媿閲�',
-            value: null
-          },
-          {
-            label: '鍙婃椂鐜�',
-            value: null
-          },
-          {
-            label: '寤惰繜閲�',
-            value: null
-          },
-          {
-            label: '鎶芥閲�',
-            value: null
-          },
-          {
-            label: '璁惧娲昏穬鐜�',
-            value: null
-          },
-          {
-            label: '鎶撴媿鍙婃椂鐜�',
-            value: null
-          },
-          {
-            label: '鏃堕挓鍑嗙‘鐜�',
-            value: null
-          },
-          {
-            label: '鏃堕挓涓嶅噯纭巼',
-            value: null
-          }
-        ]
-      } else if (this.form.monitorType === 'car') {
-        this.indicators = [
-          {
-            label: '杩囪溅鏁版嵁閲�',
-            value: null
-          },
-          {
-            label: '杩囪溅缂哄け鐜�',
-            value: null
-          },
-          {
-            label: '鏈夋晥杩囪溅鏁版嵁閲�',
-            value: null
-          },
-          {
-            label: '鎶芥閲�',
-            value: null
-          },
-          {
-            label: '璁惧娲昏穬鐜�',
-            value: null
-          },
-          {
-            label: '鎶撴媿鍙婃椂鐜�',
-            value: null
-          },
-          {
-            label: '鏃堕挓鍑嗙‘鐜�',
-            value: null
-          },
-          {
-            label: '鏃堕挓涓嶅噯纭巼',
-            value: null
-          }
-        ]
-      } else if (this.form.monitorType === 'video') {
-        this.indicators = [
-          {
-            label: '褰曞儚璐ㄩ噺',
-            value: null
-          },
-          {
-            label: '鏍囨敞鍑嗙‘鐜�',
-            value: null
-          },
-          {
-            label: '鍥惧儚璐ㄩ噺',
-            value: null
-          },
-        ]
-      }
     }
   }
-}
+};
 </script>
-<style>
-.el-input-half-width {
+<style scoped>
+.add-form /deep/ .el-form-item {
+  margin-bottom: 20px;
+}
+
+::v-deep .el-input-half-width {
   width: calc(50% - 6px); /* 鍑忓幓涓�浜涢棿闅� */
 }
-.table-row {
+
+::v-deep .table-row {
   display: flex;
   flex-direction: row;
 }
-.table-row-item {
+
+::v-deep .table-row-item {
   width: 120px;
   text-align: center;
 }
+
+.fixedWidth {
+  width: 200px;
+}
+
+.threshold {
+  display: flex;
+  flex-direction: row;
+}
+
+.header鈥攖ext {
+  font-weight: bold;
+  font-size: large;
+}
+
+::v-deep .el-form-item {
+  margin-bottom: 0px; /* 鏍规嵁闇�姹傝皟鏁磋繖涓�� */
+}
+
+::v-deep .el-form-item__label {
+  color: #8d8d8d;
+}
+
+.unit {
+  margin-left: 5px;
+  display: inline-block;
+}
+
+.content-warp {
+  margin-top: 10px;
+}
+
+.bottom_ {
+  width: 100%;
+  margin-bottom: 8px;
+}
+
 </style>

--
Gitblit v1.8.0