fuliqi
2024-07-09 fc757b7e8dd314e0ea58de4b3605eb4bf9d68364
Merge remote-tracking branch 'origin/master'
6个文件已修改
925 ■■■■■ 已修改文件
src/api/platform/work-order.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/contract/score/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/data-manage/data-detail/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/data-manage/data-detail/list.js 704 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/data-manage/index.vue 103 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/work-order/index.vue 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/platform/work-order.js
@@ -79,6 +79,15 @@
  })
}
// 批量审核工单
export function batchAuditing(data) {
  return request({
    url: '/work-order/batchAuditing',
    method: 'put',
    data: data
  })
}
// 工单运维情况
export function ywCondition(data) {
  return request({
src/views/system/contract/score/index.vue
@@ -59,7 +59,7 @@
        </template>
      </el-table-column>
      <el-table-column label="审核人" align="center" prop="auditingUser" />
      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="230px">
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)">详情</el-button>
          <el-button size="mini" type="text" icon="el-icon-s-check" @click="handleAuditing(scope.row)"
@@ -123,12 +123,12 @@
                    <template slot-scope="{ data }">
                      <el-tooltip class="item" :disabled="data.label.length < 16 && !data.deductCategory" effect="dark"
                        :content="
                          data.label.length < 16 ?
                            data.deductCategory ?
                                data.deductCategory == '分数乘以数量' ? '扣' + data.calcFraction  + '分*数量 ' : data.deductCategory == '除以数量后乘以分数' ? '扣' + data.calcFraction + '分/' +  data.calcUnit + '小时' : '扣' + data.calcFraction + '分' :
                                '' :
                            (data.deductCategory ?
                                data.label + ' ' + (data.deductCategory == '分数乘以数量' ? '扣' + data.calcFraction  + '分*数量 ' : data.deductCategory == '除以数量后乘以分数' ? '扣' + data.calcFraction + '分/' +  data.calcUnit + '小时' : '扣' + data.calcFraction + '分') :
                          data.label.length < 16 ?
                            data.deductCategory ?
                                data.deductCategory == '分数乘以数量' ? '扣' + data.calcFraction  + '分*数量 ' : data.deductCategory == '除以数量后乘以分数' ? '扣' + data.calcFraction + '分/' +  data.calcUnit + '小时' : '扣' + data.calcFraction + '分' :
                                '' :
                            (data.deductCategory ?
                                data.label + ' ' + (data.deductCategory == '分数乘以数量' ? '扣' + data.calcFraction  + '分*数量 ' : data.deductCategory == '除以数量后乘以分数' ? '扣' + data.calcFraction + '分/' +  data.calcUnit + '小时' : '扣' + data.calcFraction + '分') :
                                data.label)"
                        placement="left">
                        <span>{{ data.label }}</span>
@@ -518,4 +518,4 @@
.el-cascader-node {
  max-width: 300px;
}
</style>
</style>
src/views/system/data-manage/data-detail/index.vue
@@ -129,7 +129,7 @@
<script>
import { listPlatform, getPlatform, delPlatform, addPlatform, updatePlatform } from "@/api/platform/vehicle-data-monitor";
import { tableColumn } from "./list";
import { videoData, carData, faceData, equipment } from "./list";
import store from '@/store';
export default {
@@ -185,7 +185,10 @@
    next();
  },
  created() {
    this.tableHead = tableColumn[0].columns;
    if (this.$route.query.type === '1') this.tableHead = videoData[this.$route.query.index].columns;
    if (this.$route.query.type === '2') this.tableHead = carData[this.$route.query.index].columns;
    if (this.$route.query.type === '3') this.tableHead = faceData[this.$route.query.index].columns;
    if (this.$route.query.type === '4') this.tableHead = equipment[this.$route.query.index].columns;
    this.getList();
  },
  methods: {
src/views/system/data-manage/data-detail/list.js
@@ -1,4 +1,4 @@
export const tableColumn = [
export const videoData = [
  {
    title: '平台在线',
    columns: [
@@ -28,5 +28,705 @@
        prop: 'notUniqueDataNumber'
      },
    ]
  },
  {
    title: '一机一档',
    columns: [
      {
        label: '卡口名称',
        align: 'center',
        prop: 'bayonetName',
      },
      {
        label: '卡口编号',
        align: 'center',
        prop: 'bayonetNumber'
      },
      {
        label: '过车数据量',
        align: 'center',
        prop: 'vehicleDataNumber'
      },
      {
        label: '不唯一数据',
        align: 'center',
        prop: 'notUniqueData'
      },
      {
        label: '不唯一数据量',
        align: 'center',
        prop: 'notUniqueDataNumber'
      },
    ]
  },
  {
    title: "点位在线",
    columns: [
      {
        label: "行政区划编码",
        align: "center",
        prop: "arealayernoCode"
      },
      {
        label: "行政区划名称",
        align: "center",
        prop: "arealayernoName"
      },
      {
        label: "诊断日期",
        align: "center",
        prop: "diagDate"
      },
      {
        label: "统计纬度",
        align: "center",
        prop: "dim"
      },
      {
        label: "icmp离线数",
        align: "center",
        prop: "icmpOfflineNum"
      },
      {
        label: "icmp在线数",
        align: "center",
        prop: "icmpOnlineNum"
      },
      {
        label: "icmp在线率",
        align: "center",
        prop: "icmpOnlineRate"
      },
      {
        label: "icmp诊断总数",
        align: "center",
        prop: "icmpTotalNum"
      },
      {
        label: "离线数",
        align: "center",
        prop: "offlineNum"
      },
      {
        label: "在线数",
        align: "center",
        prop: "onlineNum"
      },
      {
        label: "在线率",
        align: "center",
        prop: "onlineRate"
      }
    ]
  },
  {
    title: "录像可用",
    columns: [
      {
        label: "行政区域名称",
        align: "center",
        prop: "arealayername"
      },
      {
        label: "行政区域ID",
        align: "center",
        prop: "arealayerno"
      },
      {
        label: "创建时间",
        align: "center",
        prop: "createTime"
      },
      {
        label: "摄像机ID",
        align: "center",
        prop: "deviceId"
      },
      {
        label: "摄像机名称",
        align: "center",
        prop: "deviceName"
      },
      {
        label: "主键ID",
        align: "center",
        prop: "id"
      },
      {
        label: "缺失时长",
        align: "center",
        prop: "missDuration"
      },
      {
        label: "国标平台ID",
        align: "center",
        prop: "platId"
      },
      {
        label: "录像时长",
        align: "center",
        prop: "recordDuration"
      },
      {
        label: "录像完整状态",
        align: "center",
        prop: "recordStatus"
      },
      {
        label: "统计时间",
        align: "center",
        prop: "statTime"
      },
      {
        label: "租户ID",
        align: "center",
        prop: "tenantId"
      }
    ]
  },
  {
    title: "视频标注",
    columns: [
      {
        label: "区域路径信息",
        align: "center",
        prop: "arealayerPath"
      },
      {
        label: "区域名称",
        align: "center",
        prop: "arealayername"
      },
      {
        label: "区域编码",
        align: "center",
        prop: "arealayerno"
      },
      {
        label: "设备 ID",
        align: "center",
        prop: "deviceId"
      },
      {
        label: "设备名称",
        align: "center",
        prop: "deviceName"
      },
      {
        label: "是否大于最大值",
        align: "center",
        prop: "diff"
      },
      {
        label: "拉码流时间差",
        align: "center",
        prop: "diffTime"
      },
      {
        label: "IP 地址",
        align: "center",
        prop: "ip"
      },
      {
        label: "图片 ocr 识别结果",
        align: "center",
        prop: "ocrResult"
      },
      {
        label: "图片地址",
        align: "center",
        prop: "imgPath"
      },
      {
        label: "状态码",
        align: "center",
        prop: "statusCode"
      },
      {
        label: "拉码流时间格式",
        align: "center",
        prop: "osdFormat"
      },
      {
        label: "OSD 信息",
        align: "center",
        prop: "osdInfo"
      },
      {
        label: "图片上的字幕时间",
        align: "center",
        prop: "osdTime"
      },
      {
        label: "摄像机标签",
        align: "center",
        prop: "tags"
      },
      {
        label: "更新时间",
        align: "center",
        prop: "updateTime"
      },
      {
        label: "视频码流获取时间",
        align: "center",
        prop: "videoGetTime"
      }
    ]
  },
  {
    title: '重点指挥图像在线率',
    columns: [
      {
        label: "区域路径信息",
        align: "center",
        prop: "arealayerPath"
      },
      {
        label: "行政区划编码",
        align: "center",
        prop: "arealayernoCode"
      },
      {
        label: "行政区划名称",
        align: "center",
        prop: "arealayernoName"
      },
      {
        label: "二进制租户ID",
        align: "center",
        prop: "binaryTenantId"
      },
      {
        label: "模糊",
        align: "center",
        prop: "blur"
      },
      {
        label: "模糊原始分值",
        align: "center",
        prop: "blurRaw"
      },
      {
        label: "模糊阈值",
        align: "center",
        prop: "blurThreshold"
      },
      {
        label: "颜色",
        align: "center",
        prop: "color"
      },
      {
        label: "颜色原始分值",
        align: "center",
        prop: "colorRaw"
      },
      {
        label: "颜色阈值",
        align: "center",
        prop: "colorThreshold"
      },
      {
        label: "解码信息",
        align: "center",
        prop: "decodeInfo"
      },
      {
        label: "设备国标ID",
        align: "center",
        prop: "deviceId"
      },
      {
        label: "设备IP",
        align: "center",
        prop: "deviceIp"
      },
      {
        label: "设备名称",
        align: "center",
        prop: "deviceName"
      },
      {
        label: "扩展JSON",
        align: "center",
        prop: "extJson"
      },
      {
        label: "丢帧率",
        align: "center",
        prop: "frameLostRate"
      },
      {
        label: "组ID",
        align: "center",
        prop: "groupId"
      },
      {
        label: "主键ID",
        align: "center",
        prop: "id"
      },
      {
        label: "IFM延迟",
        align: "center",
        prop: "ifmDelay"
      },
      {
        label: "图像路径",
        align: "center",
        prop: "imagePath"
      },
      {
        label: "图像状态",
        align: "center",
        prop: "imgStatus"
      },
      {
        label: "入网时间",
        align: "center",
        prop: "inTime"
      },
      {
        label: "纬度",
        align: "center",
        prop: "latitude"
      },
      {
        label: "亮度",
        align: "center",
        prop: "light"
      },
      {
        label: "亮度原始分值",
        align: "center",
        prop: "lightRaw"
      },
      {
        label: "亮度阈值",
        align: "center",
        prop: "lightThreshold"
      },
      {
        label: "经度",
        align: "center",
        prop: "longitude"
      },
      {
        label: "在线状态",
        align: "center",
        prop: "onlineStatus"
      },
      {
        label: "原始平台ID",
        align: "center",
        prop: "originalPlatId"
      },
      {
        label: "负载类型",
        align: "center",
        prop: "payloadType"
      },
      {
        label: "像素信息",
        align: "center",
        prop: "pixelInfo"
      },
      {
        label: "平台ID",
        align: "center",
        prop: "platId"
      },
      {
        label: "遮挡",
        align: "center",
        prop: "shade"
      },
      {
        label: "遮挡原始分值",
        align: "center",
        prop: "shadeRaw"
      },
      {
        label: "遮挡阈值",
        align: "center",
        prop: "shadeThreshold"
      },
      {
        label: "抖动",
        align: "center",
        prop: "shake"
      },
      {
        label: "抖动原始分值",
        align: "center",
        prop: "shakeRaw"
      },
      {
        label: "抖动阈值",
        align: "center",
        prop: "shakeThreshold"
      },
      {
        label: "无信号",
        align: "center",
        prop: "signa1"
      },
      {
        label: "无信号原始分值",
        align: "center",
        prop: "signa1Raw"
      },
      {
        label: "无信号状态",
        align: "center",
        prop: "signa1Status"
      },
      {
        label: "无信号阈值",
        align: "center",
        prop: "signa1Threshold"
      },
      {
        label: "SIP延迟",
        align: "center",
        prop: "sipDelay"
      },
      {
        label: "雪花",
        align: "center",
        prop: "snow"
      },
      {
        label: "雪花原始分值",
        align: "center",
        prop: "snowRaw"
      },
      {
        label: "雪花阈值",
        align: "center",
        prop: "snowThreshold"
      },
      {
        label: "条纹",
        align: "center",
        prop: "stripe"
      },
      {
        label: "条纹原始分值",
        align: "center",
        prop: "stripeRaw"
      },
      {
        label: "条纹阈值",
        align: "center",
        prop: "stripeThreshold"
      },
      {
        label: "摄像机标签",
        align: "center",
        prop: "tags"
      },
      {
        label: "任务创建时间",
        align: "center",
        prop: "taskCreateTime"
      },
      {
        label: "任务复检时间",
        align: "center",
        prop: "taskRecheckTime"
      },
      {
        label: "租户ID",
        align: "center",
        prop: "tenantId"
      },
      {
        label: "视频延迟",
        align: "center",
        prop: "videoDelay"
      },
      {
        label: "视频诊断状态",
        align: "center",
        prop: "videoDiagStatus"
      },
      {
        label: "视频诊断时间",
        align: "center",
        prop: "videoDiagTime"
      },
      {
        label: "视频获取状态",
        align: "center",
        prop: "videoGetStatus"
      },
      {
        label: "视频获取时间",
        align: "center",
        prop: "videoGetTime"
      },
      {
        label: "夜间VQD",
        align: "center",
        prop: "vqdAtNight"
      }
    ]
  },
  {
    title: '视频图像资源安全管理',
    columns: []
  },
  {
    title: "视频图像质量检测报告",
    columns: [
      {
        label: "行政区划编码",
        align: "center",
        prop: "arealayernoCode"
      },
      {
        label: "行政区划名称",
        align: "center",
        prop: "arealayernoName"
      },
      {
        label: "模糊",
        align: "center",
        prop: "blur"
      },
      {
        label: "模糊原始分值",
        align: "center",
        prop: "blurRaw"
      },
      {
        label: "颜色",
        align: "center",
        prop: "color"
      },
      {
        label: "颜色原始分值",
        align: "center",
        prop: "colorRaw"
      },
      {
        label: "摄像机-国标id",
        align: "center",
        prop: "deviceId"
      },
      {
        label: "摄像机ip",
        align: "center",
        prop: "deviceIp"
      },
      {
        label: "摄像机设备名称",
        align: "center",
        prop: "deviceName"
      },
      {
        label: "统计纬度",
        align: "center",
        prop: "dim"
      },
      {
        label: "图像是否正常",
        align: "center",
        prop: "isImgAbnormal"
      },
      {
        label: "信号是否丢失",
        align: "center",
        prop: "isSignalMiss"
      },
      {
        label: "亮度",
        align: "center",
        prop: "light"
      },
      {
        label: "亮度原始分值",
        align: "center",
        prop: "lightRaw"
      },
      {
        label: "遮挡",
        align: "center",
        prop: "shade"
      },
      {
        label: "遮挡原始分值",
        align: "center",
        prop: "shadeRaw"
      },
      {
        label: "抖动",
        align: "center",
        prop: "shake"
      },
      {
        label: "抖动原始分值",
        align: "center",
        prop: "shakeRaw"
      },
      {
        label: "无信号",
        align: "center",
        prop: "signa1"
      },
      {
        label: "无信号原始分值",
        align: "center",
        prop: "signa1Raw"
      },
      {
        label: "雪花",
        align: "center",
        prop: "snow"
      },
      {
        label: "雪花原始分值",
        align: "center",
        prop: "snowRaw"
      },
      {
        label: "排序属性",
        align: "center",
        prop: "sortFiled"
      },
      {
        label: "诊断状态编码",
        align: "center",
        prop: "status"
      },
      {
        label: "诊断状态名称",
        align: "center",
        prop: "statusName"
      },
      {
        label: "条纹",
        align: "center",
        prop: "stripe"
      },
      {
        label: "条纹原始分值",
        align: "center",
        prop: "stripeRaw"
      },
      {
        label: "诊断时间",
        align: "center",
        prop: "vqdTime"
      }
    ]
  }
]
];
export const carData = [];
export const faceData = [];
export const equipment = [];
src/views/system/data-manage/index.vue
@@ -10,7 +10,7 @@
      <el-row :gutter="20">
        <el-col :xl="4" :lg="4" :md="6" :sm="6" :xs="12" v-for="(item, index) in videoData" :key="index"
          :style="item.name == '' ? 'display:none' : ''" class="col-margin">
          <el-link @click="handleDetail(item)">
          <el-link @click="handleDetail(item, index)">
            <el-card style="width:150px;height: 150px;text-align: center;">
              <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i>
              <div>{{ item.name }}</div>
@@ -30,7 +30,7 @@
      <el-row :gutter="20">
        <el-col :xl="4" :lg="4" :md="6" :sm="6" :xs="12" v-for="(item, index) in carData" :key="index"
          :style="item.name == '' ? 'display:none' : ''" class="col-margin">
          <el-link @click="handleDetail(item)">
          <el-link @click="handleDetail(item, index)">
            <el-card style="width:150px;height: 150px;text-align: center;">
              <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i>
              <div>{{ item.name }}</div>
@@ -50,7 +50,7 @@
      <el-row :gutter="20">
        <el-col :xl="4" :lg="4" :md="6" :sm="6" :xs="12" v-for="(item, index) in faceData" :key="index"
          :style="item.name == '' ? 'display:none' : ''" class="col-margin">
          <el-link @click="handleDetail(item)">
          <el-link @click="handleDetail(item, index)">
            <el-card style="width:150px;height: 150px;text-align: center;">
              <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i>
              <div>{{ item.name }}</div>
@@ -70,7 +70,7 @@
      <el-row :gutter="20">
        <el-col :xl="4" :lg="4" :md="6" :sm="6" :xs="12" v-for="(item, index) in equipment" :key="index"
          :style="item.name == '' ? 'display:none' : ''" class="col-margin">
          <el-link @click="handleDetail(item)">
          <el-link @click="handleDetail(item, index)">
            <el-card style="width:150px;height: 150px;text-align: center;">
              <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i>
              <div>{{ item.name }}</div>
@@ -89,68 +89,61 @@
  data() {
    return {
      videoData: [
        { name: '平台在线', icon: 'el-icon-connection', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '一机一档', icon: 'el-icon-folder', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '点位在线', icon: 'el-icon-search', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '录像可用', icon: 'el-icon-turn-off', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '视频标注', icon: 'el-icon-place', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '重点指挥图像在线率', icon: 'el-icon-film', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '视频图像资源安全管理', icon: 'el-icon-house', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '视频图像质量', icon: 'el-icon-set-up', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-connection', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-connection', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-connection', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-connection', description: '描述信息', routerUrl: '/vehicle-data-monitor' }
        { name: '平台在线', icon: 'el-icon-connection', description: '描述信息', type: '1' },
        { name: '一机一档', icon: 'el-icon-folder', description: '描述信息', type: '1' },
        { name: '点位在线', icon: 'el-icon-search', description: '描述信息', type: '1' },
        { name: '录像可用', icon: 'el-icon-turn-off', description: '描述信息', type: '1' },
        { name: '视频标注', icon: 'el-icon-place', description: '描述信息', type: '1' },
        { name: '重点指挥图像在线率', icon: 'el-icon-film', description: '描述信息', type: '1' },
        { name: '视频图像资源安全管理', icon: 'el-icon-house', description: '描述信息', type: '1' },
        { name: '视频图像质量', icon: 'el-icon-set-up', description: '描述信息', type: '1' },
        { name: '', icon: 'el-icon-connection', description: '描述信息', type: '1' },
        { name: '', icon: 'el-icon-connection', description: '描述信息', type: '1' },
        { name: '', icon: 'el-icon-connection', description: '描述信息', type: '1' },
        { name: '', icon: 'el-icon-connection', description: '描述信息', type: '1' }
      ],
      carData: [
        { name: '视图库对接稳定性', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '点位在线率', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '联网卡口设备目录一致率', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '车辆卡口信息采集准确率', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '车辆卡口设备抓拍数据完整性', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '车辆卡口设备抓拍数据准确性', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '车辆卡口设备时钟准确性', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '车辆卡口设备抓拍数据上传及时性', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '车辆卡口设备url可用性', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '车辆卡口设备抓拍数据大图可用性', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-truck', description: '描述信息', routerUrl: '/vehicle-data-monitor' }
        { name: '视图库对接稳定性', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '点位在线率', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '联网卡口设备目录一致率', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '车辆卡口信息采集准确率', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '车辆卡口设备抓拍数据完整性', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '车辆卡口设备抓拍数据准确性', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '车辆卡口设备时钟准确性', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '车辆卡口设备抓拍数据上传及时性', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '车辆卡口设备url可用性', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '车辆卡口设备抓拍数据大图可用性', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '', icon: 'el-icon-truck', description: '描述信息', type: '2' },
        { name: '', icon: 'el-icon-truck', description: '描述信息', type: '2' }
      ],
      faceData: [
        { name: '视图库对接稳定性', icon: 'el-icon-alarm-clock', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '点位在线率', icon: 'el-icon-user', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '目录一致率', icon: 'el-icon-data-line', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '人脸卡口信息采集准确率', icon: 'el-icon-timer', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '设备抓拍图片合格性', icon: 'el-icon-money', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '设备抓拍图片时钟准确性', icon: 'el-icon-data-analysis', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '抓拍人脸数据上传及时性', icon: 'el-icon-thumb', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '人脸卡口设备抓拍数据大图可用性', icon: 'el-icon-pie-chart', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-data-line', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-timer', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-money', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-data-analysis', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '视图库对接稳定性', icon: 'el-icon-alarm-clock', description: '描述信息', type: '3' },
        { name: '点位在线率', icon: 'el-icon-user', description: '描述信息', type: '3' },
        { name: '目录一致率', icon: 'el-icon-data-line', description: '描述信息', type: '3' },
        { name: '人脸卡口信息采集准确率', icon: 'el-icon-timer', description: '描述信息', type: '3' },
        { name: '设备抓拍图片合格性', icon: 'el-icon-money', description: '描述信息', type: '3' },
        { name: '设备抓拍图片时钟准确性', icon: 'el-icon-data-analysis', description: '描述信息', type: '3' },
        { name: '抓拍人脸数据上传及时性', icon: 'el-icon-thumb', description: '描述信息', type: '3' },
        { name: '人脸卡口设备抓拍数据大图可用性', icon: 'el-icon-pie-chart', description: '描述信息', type: '3' },
        { name: '', icon: 'el-icon-data-line', description: '描述信息', type: '3' },
        { name: '', icon: 'el-icon-timer', description: '描述信息', type: '3' },
        { name: '', icon: 'el-icon-money', description: '描述信息', type: '3' },
        { name: '', icon: 'el-icon-data-analysis', description: '描述信息', type: '3' },
      ],
      equipment: [
        { name: '资产管理', icon: 'el-icon-wallet', description: '描述信息', routerUrl: '/equipment/index' },
        { name: '', icon: 'el-icon-pie-chart', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-data-line', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-timer', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-money', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '', icon: 'el-icon-data-analysis', description: '描述信息', routerUrl: '/vehicle-data-monitor' },
        { name: '资产管理', icon: 'el-icon-wallet', description: '描述信息', type: '4' },
        { name: '', icon: 'el-icon-pie-chart', description: '描述信息', type: '4' },
        { name: '', icon: 'el-icon-data-line', description: '描述信息', type: '4' },
        { name: '', icon: 'el-icon-timer', description: '描述信息', type: '4' },
        { name: '', icon: 'el-icon-money', description: '描述信息', type: '4' },
        { name: '', icon: 'el-icon-data-analysis', description: '描述信息', type: '4' },
      ]
    };
  },
  methods: {
    handleDetail(item) {
    handleDetail(item, index) {
      this.$router.push({
        path: `/data-manage/data-detail/index/${'car'}/${1}`,
      });
      return;
      this.$router.push({
        path: item.routerUrl,
        params: {
          id: item.id
        }
        path: `/data-manage/data-detail/index/1/1?type=${item.type}&index=${index}`,
      });
    }
  }
src/views/system/work-order/index.vue
@@ -12,12 +12,11 @@
      </el-form-item>
      <el-form-item label="故障类型" prop="workOrderNo">
        <el-select v-model="queryParams.errorType" placeholder="故障类型" clearable @clear="handleQuery">
          <el-option label="市政施工" value="市政施工"></el-option>
          <el-option label="设备遗失" value="设备遗失"></el-option>
          <el-option v-for="item, index in errorTypeOptions" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="审核状态" prop="status">
        <el-select v-model="queryParams.status" placeholder="审核状态" clearable @clear="handleQuery">
        <el-select v-model="queryParams.status" placeholder="审核状态" @change="handleQuery">
          <el-option label="已下发" value="DISTRIBUTED"></el-option>
          <el-option label="运维已处理" value="YW_HANDLE"></el-option>
          <el-option label="审核通过" value="AUDITING_SUCCESS"></el-option>
@@ -43,6 +42,18 @@
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          size="mini"
          @click="batchAuditingVisible = true; batchAuditingWorkOrder = {}"
          v-hasPermi="['work:order:audit']"
        >批量审核</el-button>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :xl="6" :lg="8" :md="12" :sm="24"  v-for="item in workOrderList" :key="item.id" style="margin-bottom: 20px;">
        <el-card :body-style="{ padding: '0px',display: 'flex' }">
@@ -140,12 +151,14 @@
        <el-form-item label="运维人员" prop="ywPeopleName">
          <el-input v-model="auditingForm.ywPeopleName" disabled />
        </el-form-item>
        <el-form-item label="现场情况" v-if="auditingForm.condition">
          <span v-html="auditingForm.condition"></span>
        </el-form-item>
        <el-form-item label="佐证材料" v-if="auditingForm.proofMaterials">
          <el-link v-for="item in auditingForm.proofMaterials != null ? auditingForm.proofMaterials.split(',') : auditingForm.proofMaterials" :underline="false" :key="item.id" @click="handleDownload(item)">{{ item.substring(item.lastIndexOf("/") + 1) }}</el-link>
        </el-form-item>
        <div v-for="obj, index in ywConditions" :key="index">
          <el-form-item :label="'现场情况' + (index + 1)" v-if="obj.ywCondition">
            <span v-html="obj.ywCondition"></span>
          </el-form-item>
          <el-form-item label="佐证材料" v-if="obj.ywProofMaterials">
            <el-link v-for="item in obj.ywProofMaterials != null ? obj.ywProofMaterials.split(',') : obj.ywProofMaterials" :underline="false" :key="item.id" @click="handleDownload(item)">{{ item.substring(item.lastIndexOf("/") + 1) }}</el-link>
          </el-form-item>
        </div>
        <el-form-item label="审核结果" prop="auditingResult">
          <el-radio v-model="auditingForm.auditingResult" label="AUDITING_SUCCESS">通过</el-radio>
          <el-radio v-model="auditingForm.auditingResult" label="AUDITING_FAIL">驳回</el-radio>
@@ -184,9 +197,26 @@
      </div>
    </el-dialog>
    <el-dialog title="运维批量审核" :visible.sync="batchAuditingVisible" width="500px" append-to-body>
      <el-form ref="batchAuditingWorkOrder" :model="batchAuditingWorkOrder" label-width="80px" :rules="batchAuditingRules">
        <el-form-item label="故障类型" prop="errorType">
          <el-select v-model="batchAuditingWorkOrder.errorType" placeholder="故障类型">
            <el-option v-for="item, index in errorTypeOptions" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="审核说明" prop="auditingRemark">
          <el-input v-model="batchAuditingWorkOrder.auditingRemark" type="textarea" maxlength="30" show-word-limit />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="batchAuditing('AUDITING_SUCCESS')">审 核</el-button>
        <el-button type="danger" @click="batchAuditing('AUDITING_FAIL')">驳 回</el-button>
      </div>
    </el-dialog>
    <!-- 过程图 -->
    <el-dialog title="过程图" :visible.sync="flowOpen" width="1200px" :close-on-click-modal="false" append-to-body>
    <el-dialog title="过程图" :visible.sync="flowOpen" width="1200px" append-to-body>
      <div>
        <el-steps :active="ywAuditingList.length != 0 ? 3 : ywHandleList.length != 0 ? 2 : 1" :space="500">
          <el-step title="产生工单">
@@ -283,14 +313,19 @@
}
</style>
<script>
import { listWorkOrder, getWorkOrder, delWorkOrder, addWorkOrder, updateWorkOrder,auditing, ywCondition, getYwCondition, getYwConditionList, getYwAuditingList } from "@/api/platform/work-order";
import { listWorkOrder, getWorkOrder, delWorkOrder, addWorkOrder, updateWorkOrder, auditing, batchAuditing, ywCondition, getYwCondition, getYwConditionList, getYwAuditingList } from "@/api/platform/work-order";
import { addReport } from "@/api/platform/report";
import { getDicts } from "@/api/system/dict/data";
export default {
  name: "Work-order",
  components: {
  },
  data() {
    return {
      errorTypeOptions: [],
      ywConditions: [],
      batchAuditingVisible: false,
      batchAuditingWorkOrder: {},
      ywHandleList: [],
      ywAuditingList: [],
      reportFormRules: {
@@ -388,12 +423,32 @@
          { required: true, message: "运维检测结果不能为空", trigger: "blur" }
        ],
      },
      // 批量审核校验
      batchAuditingRules: {
        errorType: [
          { required: true, message: "请选择故障类型", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    // 批量审核
    batchAuditing(result) {
      this.batchAuditingWorkOrder.auditingResult = result;
      this.$refs["batchAuditingWorkOrder"].validate(valid => {
        if (valid) {
          batchAuditing(this.batchAuditingWorkOrder).then(res => {
            this.batchAuditingWorkOrder = {};
            this.batchAuditingVisible = false;
            this.$modal.msgSuccess("操作成功");
            this.getList();
          })
        }
      })
    },
    /** 下载按钮操作 */
    handleDownload (data) {
      this.$download.resource(data);
@@ -420,10 +475,7 @@
    handleAuditing(row) {
      this.auditingForm = row;
      getYwCondition(row.id).then(response => {
        if (response.data) {
          this.auditingForm.condition = response.data.ywCondition;
          this.auditingForm.proofMaterials = response.data.ywProofMaterials;
        }
        this.ywConditions = response.data;
        this.auditingOpen = true;
      });
    },
@@ -546,6 +598,10 @@
        this.total = response.total;
        this.loading = false;
      });
      // 获取故障类型
      getDicts("error_type").then(response => {
        this.errorTypeOptions = response.data;
      });
    },
    // 取消按钮
    cancel() {