ZhangXianQiang
2024-05-21 ea3796f9a0098858f5726e03db56a339b6eab3cc
Merge branch 'master' into dev-threejs
4个文件已修改
377 ■■■■ 已修改文件
src/views/system/check/result/detail/detail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/check/result/detail/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/check/result/index.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/work-order/threshold/index.vue 354 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/check/result/detail/detail.vue
@@ -237,7 +237,7 @@
    },
    /** 返回按钮 */
    goBack() {
      const obj = { path: "/examine/detail", query: { index: this.$route.query.deptId, examineTag: this.$route.query.examineTag, pageNum: this.$route.query.pageNum } };
      const obj = { path: "/check/detail", query: { index: this.$route.query.deptId, examineTag: this.$route.query.examineTag, pageNum: this.$route.query.pageNum } };
      this.$tab.closeOpenPage(obj);
    },
    // 关闭当前tab页签,打开新页签
src/views/system/check/result/detail/index.vue
@@ -57,8 +57,8 @@
        <el-table-column label="操作" align="center">
          <template slot-scope="scope">
            <div style="display: flex;justify-content: center;">
            <el-button size="small" type="text" @click="handlePublish(scope.row)" v-if="scope.row.publish === 'UNPUBLISHED'" >确认发布</el-button>
            <el-button size="small" type="text" @click="handlePublish(scope.row)" v-if="scope.row.publish === 'PUBLISHED'">取消发布</el-button>
            <el-button v-hasPermi="['check:score:publish']" size="small" type="text" @click="handlePublish(scope.row)" v-if="scope.row.publish === 'UNPUBLISHED'" >确认发布</el-button>
            <el-button v-hasPermi="['check:score:publish']" size="small" type="text" @click="handlePublish(scope.row)" v-if="scope.row.publish === 'PUBLISHED'">取消发布</el-button>
            <el-button
              size="mini"
              type="text"
src/views/system/check/result/index.vue
@@ -43,7 +43,7 @@
                </div>
              </div>
              <div class="bottom-publish">
                <el-button size="medium" :type="isAnyUnpublished(city) ? 'success' : 'danger'" @click="publish(city)">
                <el-button v-hasPermi="['check:score:publish']" size="medium" :type="isAnyUnpublished(city) ? 'success' : 'danger'" @click="publish(city)">
                  {{ isAnyUnpublished(city) ? '发布' : '取消' }}
                </el-button>
                <el-button size="medium" @click="jumpDetail(index)" type="info">详情</el-button>
@@ -138,6 +138,7 @@
            type: 'bar',
            name: '视频考核',
            data: this.dataList.data1,
            barWidth: '40',
            itemStyle: {
              color: 'rgba(255, 165, 0, 1)'
            }
@@ -146,6 +147,7 @@
            type: 'bar',
            name: '人脸考核',
            data: this.dataList.data2,
            barWidth: '40',
            itemStyle: {
              color: 'rgba(85, 192, 191, 1)'
            }
@@ -154,6 +156,7 @@
            type: 'bar',
            name: '车辆考核',
            data: this.dataList.data3,
            barWidth: '40',
            itemStyle: {
              color: 'rgba(62, 144, 247, 1)'
            }
@@ -196,33 +199,37 @@
          axisLabel: {
          },
          data: nameArray
        },
        yAxis: {
          min: 90,
          min: 60
        },
        series: [
          {
            type: 'bar',
            name: '视频考核',
            data: data1,
            barWidth: '40',
            itemStyle: {
              color: 'rgba(255, 165, 0, 1)'
              color: 'rgba(255, 165, 0, 1)',
            }
          },
          {
            type: 'bar',
            name: '人脸考核',
            data: data2,
            barWidth: '40',
            itemStyle: {
              color: 'rgba(85, 192, 191, 1)'
              color: 'rgba(85, 192, 191, 1)',
            }
          },
          {
            type: 'bar',
            name: '车辆考核',
            data: data3,
            barWidth: '40',
            itemStyle: {
              color: 'rgba(62, 144, 247, 1)'
              color: 'rgba(62, 144, 247, 1)',
            }
          },
        ]
src/views/system/work-order/threshold/index.vue
@@ -23,36 +23,144 @@
          <span v-show="scope.row['monitorType'] === 'video'">视频</span>
        </template>
      </el-table-column>
      <el-table-column label="工单阈值" align="center" prop="indicator">
      <el-table-column label="工单阈值" align="center">
        <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 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 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" prop="indicator">
      <el-table-column label="下发阈值" align="center">
        <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>
          </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>
          <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 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">
@@ -86,16 +194,32 @@
    />
    <!-- 人脸阈值 -->
    <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-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>
@@ -104,14 +228,31 @@
    </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-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">
@@ -121,16 +262,9 @@
    </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-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>
@@ -138,7 +272,7 @@
            <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-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>
@@ -146,7 +280,7 @@
            <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-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>
@@ -189,6 +323,7 @@
      // 是否显示弹出层
      videoOpen: false,
      faceOpen: false,
      carOpen: false,
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -200,6 +335,52 @@
      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' }
@@ -220,46 +401,54 @@
    this.getList()
  },
  methods: {
    showContent(row) {
      if(row.monitorType === "car") {
      }
    },
    editVideo() {
      this.$refs['videoForm'].validate(validate => {
        if (validate) {
      // 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("修改失败")
        }
        //   })
        // }
      })
    },
    /** 查询运维阈值列表 */
@@ -525,4 +714,11 @@
  width: 120px;
  text-align: center;
}
.fixedWidth {
  width: 200px;
}
.threshold {
  display: flex;
  flex-direction: row;
}
</style>