<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>
|
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
|
<el-card style="margin-bottom: 20px; height: 450px; margin-right: 20px">
|
<div style="display: flex; justify-content: space-between">
|
<div class="header—text">视频</div>
|
<div>
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-edit"
|
v-hasPermi="['ycl:threshold:edit']"
|
@click="a()"
|
v-if="!ifEdit"
|
>修改
|
</el-button>
|
<el-button size="mini" type="primary" @click="a()" v-if="ifEdit"
|
>保存
|
</el-button>
|
</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: 172px;
|
"
|
>工单阈值</div
|
>
|
<div>
|
<el-form label-width="120px">
|
<el-form-item label="模糊分值:">
|
<el-input
|
v-model="videoList.blur"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].blur }}</span>
|
</el-form-item>
|
<el-form-item label="颜色分值:">
|
<el-input
|
v-model="videoList.color"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].color }}</span>
|
</el-form-item>
|
<el-form-item label="亮度分值:">
|
<el-input
|
v-model="videoList.light"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].light }}</span>
|
</el-form-item>
|
<el-form-item label="遮挡分值:">
|
<el-input
|
v-model="videoList.shade"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].shade }}</span>
|
</el-form-item>
|
<el-form-item label="雪花分值:">
|
<el-input
|
v-model="videoList.snow"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].snow }}</span>
|
</el-form-item>
|
<el-form-item label="条纹分值:">
|
<el-input
|
v-model="videoList.stripe"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].stripe }}</span>
|
</el-form-item>
|
<el-form-item label="无信号分值:">
|
<el-input
|
v-model="videoList.signal"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].signal }}</span>
|
</el-form-item>
|
<el-form-item label="标注时间差(秒):">
|
<el-input
|
v-model="videoList.diffTime"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].diffTime }}</span>
|
</el-form-item>
|
</el-form>
|
</div>
|
</div>
|
<div>
|
<span style="font-size: small">下发阈值</span>
|
<div>
|
<el-form ref="form" :model="thresholdList[0]">
|
<el-form-item label="">
|
<el-input
|
v-model="videoList.blur"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].blur }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="videoList.color"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].color }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="videoList.light"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].light }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="videoList.shade"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].shade }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="videoList.snow"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].snow }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="videoList.stripe"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].stripe }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="videoList.signal"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].signal }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="videoList.difftime"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[0].difftime }}</span>
|
</el-form-item>
|
</el-form>
|
</div>
|
</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: 450px; margin-right: 20px">
|
<div style="display: flex; justify-content: space-between">
|
<div class="header—text">人脸</div>
|
<div>
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-edit"
|
v-hasPermi="['ycl:threshold:edit']"
|
@click="a()"
|
v-if="!ifEdit"
|
>修改
|
</el-button>
|
<el-button size="mini" type="primary" @click="b()" v-if="ifEdit"
|
>保存
|
</el-button>
|
</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 label="时钟准确率:">
|
<el-input
|
v-model="faceList.clockPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[1].clockPercent }}</span>
|
</el-form-item>
|
<el-form-item label="数据及时率:">
|
<el-input
|
v-model="faceList.timelyPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[1].timelyPercent }}</span>
|
</el-form-item>
|
<el-form-item label="不唯一数据量:">
|
<el-input
|
v-model="faceList.nouniqueCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[1].nouniqueCount }}</span>
|
</el-form-item>
|
<el-form-item label="建模失败率:">
|
<el-input
|
v-model="faceList.failPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ thresholdList[1].failPercent }}</span>
|
</el-form-item>
|
<el-form-item label="平均人脸低评分率:">
|
<el-input
|
v-model="faceList.lowScorePercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{
|
thresholdList[1].lowScorePercent
|
}}</span></el-form-item
|
>
|
<el-form-item label="持续无数据天数:">
|
<el-input
|
v-model="thresholdList[0].continueNoDataCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span></el-form-item
|
>
|
</el-form>
|
</div>
|
</div>
|
<div>
|
<span style="font-size: small">下发阈值</span>
|
<div>
|
<el-form
|
ref="form"
|
:model="thresholdList[0]"
|
>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[1].clockPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{
|
thresholdList[1].clockPercent
|
}}</span></el-form-item
|
>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].timelyPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span></el-form-item
|
>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].nouniqueCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span></el-form-item
|
>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].failPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span></el-form-item
|
>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].lowScorePercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span></el-form-item
|
>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].continueNoDataCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span></el-form-item
|
>
|
</el-form>
|
</div>
|
</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: 450px; margin-right: 20px">
|
<div style="display: flex; justify-content: space-between">
|
<div class="header—text">车辆</div>
|
<div>
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-edit"
|
v-hasPermi="['ycl:threshold:edit']"
|
@click="a()"
|
v-if="!ifEdit"
|
>修改
|
</el-button>
|
<el-button size="mini" type="primary" @click="a()" v-if="ifEdit"
|
>保存
|
</el-button>
|
</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: 232px;
|
"
|
>工单阈值</div
|
>
|
<div>
|
<el-form
|
ref="form"
|
:model="thresholdList[0]"
|
label-width="180px"
|
>
|
<el-form-item label="时钟准确率:">
|
<el-input
|
v-model="thresholdList[0].clockPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="数据及时率:">
|
<el-input
|
v-model="thresholdList[0].timelyPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="不唯一数据量:">
|
<el-input
|
v-model="thresholdList[0].nouniqueCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="车牌未识别量:">
|
<el-input
|
v-model="thresholdList[0].dayNoNumberCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="车辆六项属性不完整量:">
|
<el-input
|
v-model="thresholdList[0].noIntegrityCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="持续无数据天数:">
|
<el-input
|
v-model="thresholdList[0].continueNoDataCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
</el-form>
|
</div>
|
</div>
|
<div>
|
<span style="font-size: small">下发阈值</span>
|
<div>
|
<el-form
|
ref="form"
|
:model="thresholdList[0]"
|
>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].clockPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].timelyPercent"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].nouniqueCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].dayNoNumberCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].noIntegrityCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
<el-form-item label="">
|
<el-input
|
v-model="thresholdList[0].continueNoDataCount"
|
size="mini"
|
style="width: 100px"
|
v-if="ifEdit"
|
></el-input>
|
<span v-else>{{ 10 }}</span>
|
</el-form-item>
|
</el-form>
|
</div>
|
</div>
|
</div>
|
</el-card></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>
|
</div>
|
<div class="table-row">
|
<div class="table-row-item">及时率</div>
|
<div class="table-row-item">{{ scope.row.timelyRate }}</div>
|
</div>
|
<div class="table-row">
|
<div class="table-row-item">延迟量</div>
|
<div class="table-row-item">{{ scope.row.delayAmount }}</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 === 'car'">
|
<div class="table-row">
|
<div class="table-row-item">过车数据量</div>
|
<div class="table-row-item">{{ scope.row.passCarNum }}</div>
|
</div>
|
<div class="table-row">
|
<div class="table-row-item">过车缺失率</div>
|
<div class="table-row-item">{{ scope.row.passCarMissRate }}</div>
|
</div>
|
<div class="table-row">
|
<div class="table-row-item">有效过车数据量</div>
|
<div class="table-row-item">
|
{{ scope.row.passCarEffectiveNum }}
|
</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>
|
</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="下发阈值"
|
/>
|
</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>
|
<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-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-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>
|
|
<!-- 视频阈值 -->
|
<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>
|
</div>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import {
|
listThreshold,
|
getThreshold,
|
editVideo,
|
} from "@/api/platform/threshold";
|
import {
|
editCar,
|
editFace,
|
getCar,
|
getFace,
|
getVideo,
|
} from "../../../../api/platform/threshold";
|
|
export default {
|
dicts: ["image_qualify", "video_qualify"],
|
name: "Threshold",
|
data() {
|
return {
|
ifEdit: false,
|
indicators: [],
|
// 遮罩层
|
loading: true,
|
// 选中数组
|
ids: [],
|
// 非单个禁用
|
single: true,
|
// 非多个禁用
|
multiple: true,
|
// 显示搜索条件
|
showSearch: true,
|
// 总条数
|
total: 0,
|
// 运维阈值表格数据
|
thresholdList: [],
|
videoList: [],
|
faceList: [],
|
// 弹出层标题
|
title: "",
|
// 是否显示弹出层
|
videoOpen: false,
|
faceOpen: false,
|
carOpen: false,
|
// 查询参数
|
queryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
monitorType: null,
|
},
|
// 表单参数
|
videoForm: {},
|
carForm: {},
|
faceForm: {},
|
// 表单校验
|
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",
|
},
|
],
|
videoQuality: [
|
{ required: true, message: "请选择视频质量阈值", trigger: "change" },
|
],
|
imageQuality: [
|
{ required: true, message: "请选择图像质量阈值", trigger: "change" },
|
],
|
annotationAccuracy: [
|
{ required: true, message: "请填写标注准确率阈值", trigger: "blur" },
|
],
|
},
|
};
|
},
|
created() {
|
this.getList();
|
},
|
methods: {
|
a() {
|
this.ifEdit = true;
|
},
|
b(){
|
console.log(1111111);
|
this.ifEdit = false;
|
console.log(this.ifEdit);
|
},
|
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.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.carOpen = false;
|
this.getList();
|
} else {
|
this.$message.success("修改失败");
|
}
|
// })
|
// }
|
});
|
},
|
/** 查询运维阈值列表 */
|
getList() {
|
this.loading = true;
|
listThreshold(this.queryParams).then((response) => {
|
this.thresholdList = response.rows;
|
this.videoList = this.thresholdList[0];
|
this.total = response.total;
|
this.loading = false;
|
});
|
},
|
// 取消按钮
|
cancelFace() {
|
this.faceOpen = false;
|
this.resetFace();
|
},
|
cancelCar() {
|
this.carOpen = false;
|
this.resetCar();
|
},
|
cancelVideo() {
|
this.videoOpen = false;
|
this.resetVideo();
|
},
|
// 表单重置
|
reset() {
|
this.form = {
|
id: null,
|
monitorType: null,
|
timeout: null,
|
indicator: null,
|
createTime: null,
|
updateTime: null,
|
deleted: null,
|
};
|
this.resetForm("form");
|
},
|
resetVideo() {
|
this.videoForm = {
|
id: null,
|
monitorType: "",
|
imageQuality: "",
|
imageQualityAuto: "",
|
videoQuality: "",
|
videoQualityAuto: "",
|
annotationAccuracy: null,
|
annotationAccuracyAuto: null,
|
};
|
this.resetForm("videoForm");
|
},
|
resetFace() {
|
this.faceForm = {
|
id: null,
|
monitorType: "",
|
imageQuality: "",
|
imageQualityAuto: "",
|
videoQuality: "",
|
videoQualityAuto: "",
|
annotationAccuracy: null,
|
annotationAccuracyAuto: null,
|
};
|
this.resetForm("faceForm");
|
},
|
resetCar() {
|
this.carForm = {
|
id: null,
|
monitorType: "",
|
imageQuality: "",
|
imageQualityAuto: "",
|
videoQuality: "",
|
videoQualityAuto: "",
|
annotationAccuracy: null,
|
annotationAccuracyAuto: null,
|
};
|
this.resetForm("carForm");
|
},
|
/** 搜索按钮操作 */
|
handleQuery() {
|
this.queryParams.pageNum = 1;
|
this.getList();
|
},
|
/** 重置按钮操作 */
|
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) {
|
// 将indicators转为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,
|
},
|
];
|
}
|
},
|
},
|
};
|
</script>
|
<style scoped>
|
::v-deep .el-input-half-width {
|
width: calc(50% - 6px); /* 减去一些间隔 */
|
}
|
::v-deep .table-row {
|
display: flex;
|
flex-direction: row;
|
}
|
::v-deep .table-row-item {
|
width: 120px;
|
text-align: center;
|
}
|
.fixedWidth {
|
width: 200px;
|
}
|
.threshold {
|
display: flex;
|
flex-direction: row;
|
}
|
|
.header—text {
|
font-weight: bold;
|
}
|
::v-deep .el-form-item {
|
margin-bottom: 0px; /* 根据需求调整这个值 */
|
}
|
</style>
|