| | |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | <el-row> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"> |
| | | <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—text">视频</div> |
| | |
| | | </div> |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"> |
| | | <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—text">人脸</div> |
| | |
| | | </div> |
| | | </el-card></el-col |
| | | > |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"> |
| | | <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—text">车辆</div> |
| | |
| | | </el-card></el-col |
| | | > |
| | | </el-row> |
| | | <el-row class="content-warp"> |
| | | <div class="header—text" 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 label="点位名称" prop="pointName"> |
| | | <el-input |
| | | v-model="queryParams.pointName" |
| | | 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="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> |
| | | |
| | | <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="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> |
| | | |
| | |
| | | listThreshold, |
| | | getThreshold, |
| | | updateThreshold, |
| | | importData, |
| | | } from "@/api/platform/threshold"; |
| | | import { |
| | | editCar, |
| | |
| | | getFace, |
| | | getVideo, |
| | | } from "../../../../api/platform/threshold"; |
| | | |
| | | import { |
| | | getWhiteList, |
| | | addWhiteList, |
| | | bathDelete, |
| | | } from "@/api/platform/work-order"; |
| | | |
| | | export default { |
| | | dicts: ["image_qualify", "video_qualify"], |
| | |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | monitorType: null, |
| | | serialNumber: null, |
| | | pointName: null, |
| | | }, |
| | | // 表单参数 |
| | | videoForm: {}, |
| | |
| | | // 表单校验 |
| | | 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: { |
| | |
| | | }, |
| | | ], |
| | | 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.getWhiteList(); |
| | | }, |
| | | methods: { |
| | | showEdit(value) { |
| | |
| | | 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; |
| | | }); |
| | |
| | | this.getList(); |
| | | this.$modal.msgSuccess("删除成功"); |
| | | }) |
| | | .catch(() => {}); |
| | | .catch(() => { |
| | | }); |
| | | }, |
| | | /** 切换不同指标 */ |
| | | handleModeNameChange() { |
| | |
| | | ]; |
| | | } |
| | | }, |
| | | }, |
| | | // 打开新增框 |
| | | 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) { |
| | | this.ids = selection.map(item => item.id) |
| | | this.single = selection.length !== 1 |
| | | this.multiple = !selection.length |
| | | }, |
| | | // 批量删除 |
| | | bathDelete() { |
| | | bathDelete(this.ids).then(() => { |
| | | this.getWhiteList(); |
| | | this.$modal.msgSuccess("批量删除成功"); |
| | | this.ids = []; |
| | | }) |
| | | }, |
| | | beforeUpload(file) { |
| | | this.importFile = file |
| | | this.fileList = [file] |
| | | return false |
| | | }, |
| | | // 导入白名单 |
| | | 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() |
| | | }) |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | |
| | | margin-left: 5px; |
| | | display: inline-block; |
| | | } |
| | | .content-warp { |
| | | margin-top: 10px; |
| | | } |
| | | </style> |