From f8331485341314c3d0613079d4981887a111568c Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 24 十月 2024 17:20:03 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/system/work-order/threshold/index.vue | 1280 +++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 771 insertions(+), 509 deletions(-) diff --git a/src/views/system/work-order/threshold/index.vue b/src/views/system/work-order/threshold/index.vue index 54f88b9..6e2d5af 100644 --- a/src/views/system/work-order/threshold/index.vue +++ b/src/views/system/work-order/threshold/index.vue @@ -1,308 +1,416 @@ <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-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"> - <template slot-scope="scope"> - <template v-if="scope.row.monitorType === 'face'"> - <div class="table-row"> - <div class="table-row-item">鎶撴媿閲�</div> - <div class="table-row-item">{{ scope.row.captureNum }}</div> + <!-- <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 class="table-row"> - <div class="table-row-item">鍙婃椂鐜�</div> - <div class="table-row-item">{{ scope.row.timelyRate }}</div> + </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: 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].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 class="table-row"> - <div class="table-row-item">寤惰繜閲�</div> - <div class="table-row-item">{{ scope.row.delayAmount }}</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].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 class="table-row"> - <div class="table-row-item">璁惧娲昏穬鐜�</div> - <div class="table-row-item">{{ scope.row.deviceActiveRate }}</div> + </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 class="table-row"> - <div class="table-row-item">鎶撴媿鍙婃椂鐜�</div> - <div class="table-row-item">{{ scope.row.timelyCapture }}</div> + </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].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 class="table-row"> - <div class="table-row-item">鏃堕挓鍑嗙‘鐜�</div> - <div class="table-row-item">{{ scope.row.timeAccuracy }}</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].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> - </template> - <template v-else-if="scope.row.monitorType === 'car'"> - <div class="table-row"> - <div class="table-row-item">杩囪溅鏁版嵁閲�</div> - <div class="table-row-item">{{ scope.row.passCarNum }}</div> + </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 class="table-row"> - <div class="table-row-item">杩囪溅缂哄け鐜�</div> - <div class="table-row-item">{{ scope.row.passCarMissRate }}</div> + </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].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 class="table-row"> - <div class="table-row-item">鏈夋晥杩囪溅鏁版嵁閲�</div> - <div class="table-row-item">{{ scope.row.passCarEffectiveNum }}</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].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 class="table-row"> - <div class="table-row-item">璁惧娲昏穬鐜�</div> - <div class="table-row-item">{{ scope.row.deviceActiveRate }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">鎶撴媿鍙婃椂鐜�</div> - <div class="table-row-item">{{ scope.row.timelyCapture }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">鏃堕挓鍑嗙‘鐜�</div> - <div class="table-row-item">{{ scope.row.timeAccuracy }}</div> - </div> - </template> - <template v-else-if="scope.row.monitorType === 'video'"> - <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 class="table-row" style="display: flex;flex-direction: row"> - <div class="table-row-item">瑙嗛璐ㄩ噺</div> - <div class="table-row-item">{{ scope.row.videoQuality }}</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> - </template> - </template> - </el-table-column> - <el-table-column label="涓嬪彂闃堝��" align="center"> - <template slot-scope="scope"> - <template v-if="scope.row.monitorType === 'face'"> - <div class="table-row"> - <div class="table-row-item">鎶撴媿閲�</div> - <div class="table-row-item">{{ scope.row.captureNumAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">鍙婃椂鐜�</div> - <div class="table-row-item">{{ scope.row.timelyRateAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">寤惰繜閲�</div> - <div class="table-row-item">{{ scope.row.delayAmountAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">璁惧娲昏穬鐜�</div> - <div class="table-row-item">{{ scope.row.deviceActiveRateAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">鎶撴媿鍙婃椂鐜�</div> - <div class="table-row-item">{{ scope.row.timelyCaptureAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">鏃堕挓鍑嗙‘鐜�</div> - <div class="table-row-item">{{ scope.row.timeAccuracyAuto }}</div> - </div> - </template> - <template v-else-if="scope.row.monitorType === 'car'"> - <div class="table-row"> - <div class="table-row-item">杩囪溅鏁版嵁閲�</div> - <div class="table-row-item">{{ scope.row.passCarNumAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">杩囪溅缂哄け鐜�</div> - <div class="table-row-item">{{ scope.row.passCarMissRateAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">鏈夋晥杩囪溅鏁版嵁閲�</div> - <div class="table-row-item">{{ scope.row.passCarEffectiveNumAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">璁惧娲昏穬鐜�</div> - <div class="table-row-item">{{ scope.row.deviceActiveRateAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">鎶撴媿鍙婃椂鐜�</div> - <div class="table-row-item">{{ scope.row.timelyCaptureAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">鏃堕挓鍑嗙‘鐜�</div> - <div class="table-row-item">{{ scope.row.timeAccuracyAuto }}</div> - </div> - </template> - <template v-else-if="scope.row.monitorType === 'video'"> - <div class="table-row"> - <div class="table-row-item">鍥惧儚璐ㄩ噺</div> - <div class="table-row-item">{{ scope.row.imageQualityAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">瑙嗛璐ㄩ噺</div> - <div class="table-row-item">{{ scope.row.videoQualityAuto }}</div> - </div> - <div class="table-row"> - <div class="table-row-item">鏍囨敞鍑嗙‘鐜�</div> - <div class="table-row-item">{{ scope.row.annotationAccuracyAuto }}</div> - </div> - </template> - </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-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> - - <pagination - v-show="total>0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> - - <!-- 浜鸿劯闃堝�� --> - <el-dialog title="淇敼浜鸿劯宸ュ崟闃堝��" :visible.sync="faceOpen" width="700px" append-to-body> - <el-form ref="faceForm" :model="faceForm" label-width="150px" :inline="true"> - <el-form-item class="fixedWidth" label="鎶撴媿閲�" prop="captureNum"> - <el-input clearable size="small" v-model="faceForm.captureNum" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="faceForm.captureNumAuto" placeholder="涓嬪彂闃堝��"/> + </div> + </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"> + <el-form-item label="璁惧缂栫爜" prop="serialNumber"> + <el-input + v-model="queryParams.serialNumber" + placeholder="璁惧缂栫爜" + clearable + @keyup.enter.native="getWhiteList" + @clear="getWhiteList" + /> </el-form-item> - <el-form-item class="fixedWidth" label="杩囪溅缂哄け鐜�" prop="timelyRate"> - <el-input clearable size="small" v-model="faceForm.timelyRate" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="faceForm.timelyRateAuto" placeholder="涓嬪彂闃堝��"/> + <el-form-item label="鐐逛綅鍚嶇О" prop="pointName"> + <el-input + v-model="queryParams.pointName" + placeholder="鐐逛綅鍚嶇О" + clearable + @keyup.enter.native="getWhiteList" + @clear="getWhiteList" + /> </el-form-item> - <el-form-item class="fixedWidth" label="寤惰繜閲�" prop="delayAmount"> - <el-input clearable size="small" v-model="faceForm.delayAmount" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="faceForm.delayAmountAuto" placeholder="涓嬪彂闃堝��"/> - </el-form-item> - <el-form-item class="fixedWidth" label="璁惧娲昏穬鐜�" prop="deviceActiveRate"> - <el-input clearable size="small" v-model="faceForm.deviceActiveRate" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="faceForm.deviceActiveRateAuto" placeholder="涓嬪彂闃堝��"/> - </el-form-item> - <el-form-item class="fixedWidth" label="鎶撴媿鍙婃椂鐜�" prop="timelyCapture"> - <el-input clearable size="small" v-model="faceForm.timelyCapture" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="faceForm.timelyCaptureAuto" placeholder="涓嬪彂闃堝��"/> - </el-form-item> - <el-form-item class="fixedWidth" label="鏃堕挓鍑嗙‘鐜�" prop="deviceActiveRate"> - <el-input clearable size="small" v-model="faceForm.timeAccuracy" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="faceForm.timeAccuracyAuto" placeholder="涓嬪彂闃堝��"/> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="small" @click="getWhiteList">鎼滅储</el-button> </el-form-item> </el-form> - <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="editFace">纭� 瀹�</el-button> - <el-button @click="cancelFace">鍙� 娑�</el-button> - </div> - </el-dialog> + </el-row> + <el-row class="content-warp"> + <el-button size="small" type="success" @click="addOpen" plain>鏂板</el-button> + <el-button size="small" type="danger" @click="bathDelete" plain>鍒犻櫎</el-button> + <el-popover style="margin-left: 10px" placement="bottom" trigger="hover" content="瀵煎叆鐐逛綅"> + <div class="bottom_"> + <p>瀵煎叆鐐逛綅鍙仛鏂板鎿嶄綔</p> + </div> + <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" + v-hasPermi="['point:import']">瀵煎叆</el-button> + </div> + <el-button type="primary" size="small" plain icon="el-icon-bottom" slot="reference" v-hasPermi="['point:import']">瀵煎叆鐧藉悕鍗�</el-button> + </el-popover> + </el-row> + <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="createBy"/> + <el-table-column label="澶囨敞" align="center" prop="remark"/> + </el-table> - <!-- 杞﹁締闃堝�� --> - <el-dialog title="淇敼杞﹁締宸ュ崟闃堝��" :visible.sync="carOpen" width="700px" append-to-body> - <el-form ref="faceForm" :model="faceForm" label-width="150px" :inline="true"> - <el-form-item class="fixedWidth" label="杩囪溅鏁版嵁閲�" prop="passCarNum"> - <el-input clearable size="small" v-model="carForm.passCarNum" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="carForm.passCarNumAuto" placeholder="涓嬪彂闃堝��"/> - </el-form-item> - <el-form-item class="fixedWidth" label="杩囪溅缂哄け鐜�" prop="passCarMissRate"> - <el-input clearable size="small" v-model="carForm.passCarMissRate" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="carForm.passCarMissRateAuto" placeholder="涓嬪彂闃堝��"/> - </el-form-item> - <el-form-item class="fixedWidth" label="鏈夋晥杩囪溅鏁版嵁閲�" prop="passCarEffectiveNum"> - <el-input clearable size="small" v-model="carForm.passCarEffectiveNum" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="carForm.passCarEffectiveNumAuto" placeholder="涓嬪彂闃堝��"/> - </el-form-item> - <el-form-item class="fixedWidth" label="璁惧娲昏穬鐜�" prop="deviceActiveRate"> - <el-input clearable size="small" v-model="carForm.deviceActiveRate" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="carForm.deviceActiveRateAuto" placeholder="涓嬪彂闃堝��"/> - </el-form-item> - <el-form-item class="fixedWidth" label="鎶撴媿鍙婃椂鐜�" prop="timelyCapture"> - <el-input clearable size="small" v-model="carForm.timelyCapture" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="carForm.timelyCaptureAuto" placeholder="涓嬪彂闃堝��"/> - </el-form-item> - <el-form-item class="fixedWidth" label="鏃堕挓鍑嗙‘鐜�" prop="timeAccuracy"> - <el-input clearable size="small" v-model="carForm.timeAccuracy" placeholder="宸ュ崟闃堝��"/> - <el-input clearable size="small" v-model="carForm.timeAccuracyAuto" placeholder="涓嬪彂闃堝��"/> - </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> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getWhiteList" + /> + </el-col> + </el-row> - <!-- 瑙嗛闃堝�� --> - <el-dialog title="淇敼瑙嗛宸ュ崟闃堝��" :visible.sync="videoOpen" width="700px" append-to-body> - <el-form ref="videoForm" :model="videoForm" label-width="100px" :inline="true"> - <el-form-item class="fixedWidth" 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 class="fixedWidth" 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 class="fixedWidth" 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> +<!-- 鏂板鐧藉悕鍗�--> + <el-dialog + title="鏂板鐧藉悕鍗�" + :visible.sync="addShow" + width="500px" + :close-on-click-modal="false" + :before-close="addClose"> + <div> + <el-form :model="addForm" label-position="top" :rules="addFormRules" ref="addForm" size="small"> + <el-form-item label="璁惧缂栫爜" prop="serialNumber"> + <el-input v-model="addForm.serialNumber"></el-input> + </el-form-item> + <el-form-item label="澶囨敞淇℃伅" prop="remark"> + <el-input v-model="addForm.remark"></el-input> + </el-form-item> + </el-form> </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="addClose">鍙� 娑�</el-button> + <el-button type="primary" @click="addSubmit">鏂� 澧�</el-button> + </span> </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, +} from "@/api/platform/threshold"; +import { + editCar, + editFace, + getCar, + getFace, + getVideo, +} from "../../../../api/platform/threshold"; + +import { + getWhiteList, + addWhiteList, + bathDelete, +} from "@/api/platform/work-order"; export default { - dicts: ['image_qualify', 'video_qualify'], - name: 'Threshold', + dicts: ["image_qualify", "video_qualify"], + name: "Threshold", data() { return { + ifEditVideo: false, + ifEditFace: false, + ifEditCar: false, indicators: [], // 閬僵灞� loading: true, @@ -317,9 +425,12 @@ // 鎬绘潯鏁� total: 0, // 杩愮淮闃堝�艰〃鏍兼暟鎹� - thresholdList: [], + thresholdList: {}, + videoList: [], + faceList: [], + carList: [], // 寮瑰嚭灞傛爣棰� - title: '', + title: "", // 鏄惁鏄剧ず寮瑰嚭灞� videoOpen: false, faceOpen: false, @@ -328,7 +439,9 @@ queryParams: { pageNum: 1, pageSize: 10, - monitorType: null + monitorType: null, + serialNumber: null, + pointName: null, }, // 琛ㄥ崟鍙傛暟 videoForm: {}, @@ -337,141 +450,208 @@ // 琛ㄥ崟鏍¢獙 faceRules: { monitorType: [ - { required: true, message: '璁惧绫诲瀷涓嶈兘涓虹┖', trigger: 'change' } + {required: true, message: "璁惧绫诲瀷涓嶈兘涓虹┖", trigger: "change"}, ], captureNum: [ - { required: true, message: '璇峰~鍐欐姄鎷嶉噺', trigger: 'blur' } + {required: true, message: "璇峰~鍐欐姄鎷嶉噺", trigger: "blur"}, ], timelyRate: [ - { required: true, message: '璇峰~鍐欏強鏃剁巼', trigger: 'blur' } + {required: true, message: "璇峰~鍐欏強鏃剁巼", trigger: "blur"}, ], delayAmount: [ - { required: true, message: '璇峰~鍐欏欢杩熼噺', trigger: 'blur' } + {required: true, message: "璇峰~鍐欏欢杩熼噺", trigger: "blur"}, ], deviceActiveRate: [ - { required: true, message: '璇峰~鍐欒澶囨椿璺冪巼', trigger: 'blur' } + {required: true, message: "璇峰~鍐欒澶囨椿璺冪巼", trigger: "blur"}, ], timeAccuracy: [ - { required: true, message: '璇峰~鍐欐椂閽熷噯纭巼', trigger: 'blur' } + {required: true, message: "璇峰~鍐欐椂閽熷噯纭巼", trigger: "blur"}, ], timelyCapture: [ - { required: true, message: '璇峰~鍐欐姄鎷嶅強鏃剁巼', trigger: 'blur' } + {required: true, message: "璇峰~鍐欐姄鎷嶅強鏃剁巼", trigger: "blur"}, ], }, carRules: { monitorType: [ - { required: true, message: '璁惧绫诲瀷涓嶈兘涓虹┖', trigger: 'change' } + {required: true, message: "璁惧绫诲瀷涓嶈兘涓虹┖", trigger: "change"}, ], passCarNum: [ - { required: true, message: '璇峰~鍐欒繃杞︽暟鎹噺', trigger: 'blur' } + {required: true, message: "璇峰~鍐欒繃杞︽暟鎹噺", trigger: "blur"}, ], passCarMissRate: [ - { required: true, message: '璇峰~鍐欒繃杞︾己澶辩巼', trigger: 'blur' } + {required: true, message: "璇峰~鍐欒繃杞︾己澶辩巼", trigger: "blur"}, ], passCarEffectiveNum: [ - { required: true, message: '璇峰~鍐欐湁鏁堣繃杞︽暟鎹噺', trigger: 'blur' } + {required: true, message: "璇峰~鍐欐湁鏁堣繃杞︽暟鎹噺", trigger: "blur"}, ], timelyCapture: [ - { required: true, message: '璇峰~鍐欐姄鎷嶅強鏃剁巼', trigger: 'blur' } + {required: true, message: "璇峰~鍐欐姄鎷嶅強鏃剁巼", trigger: "blur"}, ], deviceActiveRate: [ - { required: true, message: '璇峰~鍐欒澶囨椿璺冪巼', trigger: 'blur' } + {required: true, message: "璇峰~鍐欒澶囨椿璺冪巼", trigger: "blur"}, ], timeAccuracy: [ - { required: true, message: '璇峰~鍐欐椂閽熷噯纭巼', trigger: 'blur' } + {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: [], + // 鏂板妗� + addShow: false, + addForm: { + serialNumber: "", + remark: "", + }, + // 鏂板妗嗘牎楠� + addFormRules: { + serialNumber: [ + {required: true, message: "璁惧缂栫爜涓嶈兘涓虹┖", trigger: "blur"}, + ], + }, + // 瀵煎叆鏂囦欢璺緞 + importUrl: '', + fileList: [], + importFile: null, + upload: false, + }; }, created() { - this.getList() + this.getList(); + this.getWhiteList(); }, methods: { + 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") { - + 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("淇敼澶辫触") - } + 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 => { + editFace(this.videoForm).then((res) => { if (res.code === 200) { - this.$message.success("淇敼鎴愬姛") - this.faceOpen = false + this.$message.success("淇敼鎴愬姛"); + this.faceOpen = false; this.getList(); } else { - this.$message.success("淇敼澶辫触") + this.$message.success("淇敼澶辫触"); } // }) // } - }) + }); }, editCar() { // this.$refs['carForm'].validate(validate => { // if (validate) { - editCar(this.carForm).then(res => { + editCar(this.carForm).then((res) => { if (res.code === 200) { - this.$message.success("淇敼鎴愬姛") - this.carOpen = false + this.$message.success("淇敼鎴愬姛"); + this.carOpen = false; this.getList(); } else { - this.$message.success("淇敼澶辫触") + 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() { @@ -482,9 +662,9 @@ indicator: null, createTime: null, updateTime: null, - deleted: null - } - this.resetForm('form') + deleted: null, + }; + this.resetForm("form"); }, resetVideo() { this.videoForm = { @@ -496,8 +676,8 @@ videoQualityAuto: "", annotationAccuracy: null, annotationAccuracyAuto: null, - } - this.resetForm('videoForm') + }; + this.resetForm("videoForm"); }, resetFace() { this.faceForm = { @@ -509,8 +689,8 @@ videoQualityAuto: "", annotationAccuracy: null, annotationAccuracyAuto: null, - } - this.resetForm('faceForm') + }; + this.resetForm("faceForm"); }, resetCar() { this.carForm = { @@ -522,18 +702,215 @@ 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, + }, + ]; + } + }, + // 鎵撳紑鏂板妗� + addOpen() { + this.addShow = true; + }, + // 鍏抽棴鏂板妗� + addClose() { + this.addShow = false; + this.addReset(); + }, + // 鏂板妗嗘彁浜� + addSubmit() { + this.$refs["addForm"].validate((valid) => { + if (valid) { + addWhiteList(this.addForm).then((response) => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.addShow = false; + this.getWhiteList(); + this.addReset(); + }); + } + }); + }, + // 鏂板妗嗛噸缃� + addReset() { + this.addForm = { + serialNumber: "", + remark: "", + }; }, // 澶氶�夋閫変腑鏁版嵁 handleSelectionChange(selection) { @@ -541,176 +918,43 @@ 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('鍒犻櫎鎴愬姛') - }).catch(() => { + // 瀵煎叆鐧藉悕鍗� + 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() }) - }, - /** 鍒囨崲涓嶅悓鎸囨爣 */ - 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> +::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; } @@ -721,4 +965,22 @@ 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; +} </style> -- Gitblit v1.8.0