mark
2022-10-09 bf399dc65aa67c4355b0fdc516f8da5ca7234c82
src/components/subComponents/ModelCard.vue
@@ -1,10 +1,6 @@
<template>
  <div class="model-card-box" :style="`height:${height};width:${width};`">
    <el-tabs
      style="height: 100%;"
      @before-leave="changeTabs"
      v-model="activeName"
    >
    <el-tabs style="height: 100%;" @before-leave="changeTabs" v-model="activeName">
      <el-tab-pane label="大图" name="pic">
        <div
          class="model-card-box-left"
@@ -20,77 +16,45 @@
            </p>
            <!-- 人脸类型 -->
            <img-down
              v-if="
                data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''
              "
              v-if="data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''"
              :url="data.picMaxUrl[0]"
            ></img-down>
            <!-- 普通yolo类 -->
            <img-down
              v-else-if="
                (data.targetInfo == null ||
                  data.targetInfo[0].picSmUrl == '') &&
                  data.picMaxUrl.length == 1
              "
              v-else-if="(data.targetInfo == null || data.targetInfo[0].picSmUrl == '') && data.picMaxUrl.length == 1"
              :url="data.picMaxUrl[0]"
            ></img-down>
            <!-- 持续时间yolo类 -->
            <el-carousel
              v-else-if="
                (data.targetInfo == null ||
                  data.targetInfo[0].picSmUrl == '') &&
                  data.picMaxUrl.length > 1
              "
              v-else-if="(data.targetInfo == null || data.targetInfo[0].picSmUrl == '') && data.picMaxUrl.length > 1"
              trigger="click"
              height="100%"
              :autoplay="false"
            >
              <el-carousel-item
                v-for="(item, index) in data.picMaxUrl"
                :key="index"
              >
              <el-carousel-item v-for="(item, index) in data.picMaxUrl" :key="index">
                <img-down :url="item"></img-down>
              </el-carousel-item>
            </el-carousel>
            <!-- yolo类大图 -->
            <div
              class="describe"
              v-if="
                data.targetInfo == null || data.targetInfo[0].picSmUrl == ''
              "
            >
            <div class="describe" v-if="data.targetInfo == null || data.targetInfo[0].picSmUrl == ''">
              <p>
                <span class="fontStyleForModel" style="font-weight:normal">{{
                  data.picDate | formatTime
                }}</span>
                <span class="fontStyleForModel" style="font-weight:normal">{{ data.picDate | formatTime }}</span>
              </p>
              <p>
                <span class="fontStyleForModel">{{ data.cameraAddr }}</span>
                <span
                  class="fontStyleForModel analyServer"
                  style="margin-left:20px;"
                  >{{ data.analyServerName }}</span
                >
                <span class="fontStyleForModel">{{ data.cameraName }}</span>
                <span class="fontStyleForModel analyServer" style="margin-left:20px;">{{ data.analyServerName }}</span>
              </p>
              <p></p>
              <p style="width:100%">
                <span
                  v-for="(item, index) in data.alarmRules"
                  :key="index + 'rule'"
                >
                <span v-for="(item, index) in data.alarmRules" :key="index + 'rule'">
                  <span class="fontStyleForModel">{{ data.taskName }}</span
                  >&nbsp;&nbsp;
                  <span
                    v-if="item.alarmLevel !== '撤防'"
                    class="fontStyleForModel"
                    >{{ item.alarmLevel }}</span
                  <span v-if="item.alarmLevel !== '撤防'" class="fontStyleForModel">{{ item.alarmLevel }}</span
                  >&nbsp;
                  <span v-if="item.isLink" class="fontStyleForModel"
                    >联动任务</span
                  >
                  <span v-if="item.isLink" class="fontStyleForModel">联动任务</span>
                  <span v-if="index < data.alarmRules.length - 1">/&nbsp;</span>
                </span>
              </p>
@@ -99,46 +63,26 @@
            <!-- 人脸类大图  -->
            <div class="describeBigImage" v-else>
              <p>
                <span class="fontStyleForModel">{{
                  data.picDate | formatTime
                }}</span>
                <span class="fontStyleForModel">{{ data.picDate | formatTime }}</span>
              </p>
              <p class="align-right">
                <span
                  class="fontStyleForModel text-overflow"
                  :title="data.cameraAddr"
                  >{{ data.cameraAddr }}</span
                >
                <span
                  class="fontStyleForModel text-overflow"
                  :title="data.cameraAddr"
                  style="margin-left:20px;"
                  >{{ data.analyServerName }}</span
                >
                <span class="fontStyleForModel text-overflow" :title="data.cameraName">{{ data.cameraName }}</span>
                <span class="fontStyleForModel text-overflow" :title="data.analyServerName" style="margin-left:20px;">{{
                  data.analyServerName
                }}</span>
              </p>
              <p style="width:100%">
                <span
                  v-for="(item, index) in data.alarmRules"
                  :key="index + 'rule'"
                >
                <span v-for="(item, index) in data.alarmRules" :key="index + 'rule'">
                  <span class="fontStyleForModel">{{ data.taskName }}</span
                  >&nbsp;&nbsp;
                  <span
                    v-if="item.alarmLevel !== '撤防'"
                    class="fontStyleForModel"
                    >{{ item.alarmLevel }}</span
                  <span v-if="item.alarmLevel !== '撤防'" class="fontStyleForModel">{{ item.alarmLevel }}</span
                  >&nbsp;
                  <span v-if="item.isLink" class="fontStyleForModel"
                    >联动任务</span
                  >
                  <span v-if="item.isLink" class="fontStyleForModel">联动任务</span>
                  <span v-if="index < data.alarmRules.length - 1">/&nbsp;</span>
                </span>
              </p>
              <p style="width:100%">
                <span
                  style="white-space: nowrap;font-weight: 600;font-size: 13px;"
                  >{{ data.showLabels }}</span
                >
                <span style="white-space: nowrap;font-weight: 600;font-size: 13px;">{{ data.showLabels }}</span>
              </p>
            </div>
          </div>
@@ -146,16 +90,10 @@
        <!-- 弹框右侧 -->
        <div
          v-if="
            data.targetInfo &&
              data.targetInfo !== null &&
              data.targetInfo[0].picSmUrl !== ''
          "
          v-if="data.targetInfo && data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''"
          class="model-card-box-right"
          :style="
            data.targetInfo &&
            data.targetInfo !== null &&
            data.targetInfo[0].picSmUrl !== ''
            data.targetInfo && data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''
              ? 'width: 35%;box-sizing: border-box;'
              : ''
          "
@@ -164,17 +102,10 @@
            <b>抓拍图</b>
          </p>
          <!-- 左右两张的人脸对比模式 -->
          <div
            class="img-box"
            v-if="data.baseInfo && data.baseInfo.length >= 1"
            ref="picSmBox"
          >
          <div class="img-box" v-if="data.baseInfo && data.baseInfo.length >= 1" ref="picSmBox">
            <div class="card-img-box-compear-left">
              <!-- <img :src="'/httpImage/'+data.targetInfo[0].picSmUrl" ref="picSm" /> -->
              <img-down
                :url="data.targetInfo[0].picSmUrl"
                :isPreview="false"
              ></img-down>
              <img-down :url="data.targetInfo[0].picSmUrl" :isPreview="false"></img-down>
            </div>
            <el-carousel
              @change="changeInitialIndex"
@@ -185,91 +116,57 @@
              v-if="data.baseInfo[0].targetPicUrl != ''"
              class="card-img-box-compear-right"
            >
              <el-carousel-item
                v-for="(item, index) in data.baseInfo"
                :key="index"
              >
              <el-carousel-item v-for="(item, index) in data.baseInfo" :key="index">
                <!-- <img :src="'/httpImage/'+item.targetPicUrl" /> -->
                <img-down
                  :url="item.targetPicUrl"
                  :isPreview="false"
                ></img-down>
                <img-down :url="item.targetPicUrl" :isPreview="false"></img-down>
              </el-carousel-item>
            </el-carousel>
            <div
              class="img-compareScore"
              v-if="data.baseInfo[0].targetPicUrl != ''"
              :style="
                data.baseInfo[initialIndex].bwType === '1'
                  ? `background: red;`
                  : `background: green;`
              "
              :style="data.baseInfo[initialIndex].bwType === '1' ? `background: red;` : `background: green;`"
            >
              <b>{{ data.baseInfo[initialIndex].compareScore | percentage }}</b>
            </div>
          </div>
          <!-- 没有比对的人脸识别模式 -->
          <div
            class="img-box"
            v-if="!data.baseInfo && data.targetInfo[0].picSmUrl !== ''"
          >
            <div
              class="card-img-box-compear-left"
              style="width:60%;margin-top:5px"
            >
          <div class="img-box" v-if="!data.baseInfo && data.targetInfo[0].picSmUrl !== ''">
            <div class="card-img-box-compear-left" style="width:60%;margin-top:5px">
              <!-- <img :src="'/httpImage/'+data.targetInfo[0].picSmUrl" /> -->
              <img-down
                :url="data.targetInfo[0].picSmUrl"
                :isPreview="false"
              ></img-down>
              <img-down :url="data.targetInfo[0].picSmUrl" :isPreview="false"></img-down>
            </div>
          </div>
          <div
            class="baseInfo"
            v-if="data.baseInfo && data.baseInfo[0].targetPicUrl != ''"
          >
          <div class="baseInfo" v-if="data.baseInfo && data.baseInfo[0].targetPicUrl != ''">
            <div class="baseInfo_list">
              <p>
                <span class="labelInfo">底库</span>
                <span
                  class="val"
                  :title="data.baseInfo[initialIndex].tableName"
                  >{{ data.baseInfo[initialIndex].tableName }}</span
                >
                <span class="val" :title="data.baseInfo[initialIndex].tableName">{{
                  data.baseInfo[initialIndex].tableName
                }}</span>
              </p>
              <p>
                <span class="labelInfo">姓名</span>
                <span
                  class="val"
                  :title="data.baseInfo[initialIndex].targetName"
                  >{{ data.baseInfo[initialIndex].targetName }}</span
                >
                <span class="val" :title="data.baseInfo[initialIndex].targetName">{{
                  data.baseInfo[initialIndex].targetName
                }}</span>
              </p>
              <p>
                <span class="labelInfo">性别</span>
                <span class="val">{{
                  data.baseInfo[initialIndex].labels | sex
                }}</span>
                <span class="val">{{ data.baseInfo[initialIndex].labels | sex }}</span>
              </p>
              <p>
                <span class="labelInfo">身份证号</span>
                <span class="val">{{
                  data.baseInfo[initialIndex].labels | idCard
                }}</span>
                <span class="val">{{ data.baseInfo[initialIndex].labels | idCard }}</span>
              </p>
              <p>
                <span class="labelInfo">手机号</span>
                <span class="val">{{
                  data.baseInfo[initialIndex].labels | phoneNum
                }}</span>
                <span class="val">{{ data.baseInfo[initialIndex].labels | phoneNum }}</span>
              </p>
              <p>
                <span class="labelInfo">人员等级</span>
                <span
                  class="val"
                  :title="data.baseInfo[initialIndex].monitorLevel"
                  >{{ data.baseInfo[initialIndex].monitorLevel }}</span
                >
                <span class="val" :title="data.baseInfo[initialIndex].monitorLevel">{{
                  data.baseInfo[initialIndex].monitorLevel
                }}</span>
              </p>
            </div>
          </div>
@@ -293,35 +190,23 @@
            >
              您的浏览器不支持 video 标签。
            </video> -->
            <wasm-player
              :videoUrl="data.videoUrl"
              :isStream="false"
            ></wasm-player>
            <wasm-player :videoUrl="data.videoUrl" :isStream="false"></wasm-player>
          </div>
        </div>
        <div
          v-if="data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''"
          class="model-card-box-right"
          :style="
            data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''
              ? 'width: 35%;box-sizing: border-box;'
              : ''
            data.targetInfo !== null && data.targetInfo[0].picSmUrl !== '' ? 'width: 35%;box-sizing: border-box;' : ''
          "
        >
          <p class="img-box-title">
            <b>抓拍图</b>
          </p>
          <!-- 左右两张的人脸对比模式 -->
          <div
            class="img-box"
            v-if="data.baseInfo && data.baseInfo.length >= 1"
            ref="picSmBox"
          >
          <div class="img-box" v-if="data.baseInfo && data.baseInfo.length >= 1" ref="picSmBox">
            <div class="card-img-box-compear-left">
              <img-down
                :url="data.targetInfo[0].picSmUrl"
                :isPreview="false"
              ></img-down>
              <img-down :url="data.targetInfo[0].picSmUrl" :isPreview="false"></img-down>
            </div>
            <el-carousel
              @change="changeInitialIndex"
@@ -332,88 +217,57 @@
              class="card-img-box-compear-right"
              :arrow="data.baseInfo.length > 1 ? 'always' : 'never'"
            >
              <el-carousel-item
                v-for="(item, index) in data.baseInfo"
                :key="index"
              >
              <el-carousel-item v-for="(item, index) in data.baseInfo" :key="index">
                <!-- <img :src="'/httpImage/'+item.targetPicUrl" /> -->
                <img-down
                  :url="item.targetPicUrl"
                  :isPreview="false"
                ></img-down>
                <img-down :url="item.targetPicUrl" :isPreview="false"></img-down>
              </el-carousel-item>
            </el-carousel>
            <div
              class="img-compareScore"
              v-if="data.baseInfo[0].targetPicUrl != ''"
              :style="
                data.baseInfo[initialIndex].bwType === '1'
                  ? `background: red;`
                  : `background: green;`
              "
              :style="data.baseInfo[initialIndex].bwType === '1' ? `background: red;` : `background: green;`"
            >
              <b>{{ data.baseInfo[initialIndex].compareScore | percentage }}</b>
            </div>
          </div>
          <!-- 没有比对的人脸识别模式 -->
          <div class="img-box" v-if="!data.baseInfo && data.picMaxUrl">
            <div
              class="card-img-box-compear-left"
              style="width:60%;margin-top:5px"
            >
            <div class="card-img-box-compear-left" style="width:60%;margin-top:5px">
              <!-- <img :src="'/httpImage/'+data.targetInfo[0].picSmUrl" /> -->
              <img-down
                :url="data.targetInfo[0].picSmUrl"
                :isPreview="false"
              ></img-down>
              <img-down :url="data.targetInfo[0].picSmUrl" :isPreview="false"></img-down>
            </div>
          </div>
          <div
            class="baseInfo"
            v-if="data.baseInfo && data.baseInfo[0].targetPicUrl != ''"
          >
          <div class="baseInfo" v-if="data.baseInfo && data.baseInfo[0].targetPicUrl != ''">
            <div class="baseInfo_list">
              <p>
                <span class="labelInfo">底库</span>
                <span
                  class="val"
                  :title="data.baseInfo[initialIndex].tableName"
                  >{{ data.baseInfo[initialIndex].tableName }}</span
                >
                <span class="val" :title="data.baseInfo[initialIndex].tableName">{{
                  data.baseInfo[initialIndex].tableName
                }}</span>
              </p>
              <p>
                <span class="labelInfo">姓名</span>
                <span
                  class="val"
                  :title="data.baseInfo[initialIndex].targetName"
                  >{{ data.baseInfo[initialIndex].targetName }}</span
                >
                <span class="val" :title="data.baseInfo[initialIndex].targetName">{{
                  data.baseInfo[initialIndex].targetName
                }}</span>
              </p>
              <p>
                <span class="labelInfo">性别</span>
                <span class="val">{{
                  data.baseInfo[initialIndex].labels | sex
                }}</span>
                <span class="val">{{ data.baseInfo[initialIndex].labels | sex }}</span>
              </p>
              <p>
                <span class="labelInfo">身份证号</span>
                <span class="val">{{
                  data.baseInfo[initialIndex].labels | idCard
                }}</span>
                <span class="val">{{ data.baseInfo[initialIndex].labels | idCard }}</span>
              </p>
              <p>
                <span class="labelInfo">手机号</span>
                <span class="val">{{
                  data.baseInfo[initialIndex].labels | phoneNum
                }}</span>
                <span class="val">{{ data.baseInfo[initialIndex].labels | phoneNum }}</span>
              </p>
              <p>
                <span class="labelInfo">人员等级</span>
                <span
                  class="val"
                  :title="data.baseInfo[initialIndex].monitorLevel"
                  >{{ data.baseInfo[initialIndex].monitorLevel }}</span
                >
                <span class="val" :title="data.baseInfo[initialIndex].monitorLevel">{{
                  data.baseInfo[initialIndex].monitorLevel
                }}</span>
              </p>
            </div>
          </div>
@@ -425,65 +279,58 @@
<script>
Date.prototype.Format = function(fmt) {
  var o = {
    'M+': this.getMonth() + 1, //月份
    'd+': this.getDate(), //日
    'H+': this.getHours(), //小时
    'm+': this.getMinutes(), //分
    's+': this.getSeconds(), //秒
    'q+': Math.floor((this.getMonth() + 3) / 3), //季度
    S: this.getMilliseconds(), //毫秒
    "M+": this.getMonth() + 1, //月份
    "d+": this.getDate(), //日
    "H+": this.getHours(), //小时
    "m+": this.getMinutes(), //分
    "s+": this.getSeconds(), //秒
    "q+": Math.floor((this.getMonth() + 3) / 3), //季度
    S: this.getMilliseconds() //毫秒
  }
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(
      RegExp.$1,
      (this.getFullYear() + '').substr(4 - RegExp.$1.length)
    )
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length))
  for (var k in o)
    if (new RegExp('(' + k + ')').test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
      )
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length))
  return fmt
}
import WasmPlayer from '@/components/wasmPlayer'
import imgDown from '@/components/subComponents/imgDown'
import WasmPlayer from "@/components/wasmPlayer"
import imgDown from "@/components/subComponents/imgDown"
export default {
  components: {
    WasmPlayer,
    imgDown,
    imgDown
  },
  props: {
    height: {
      type: String,
      default: '100%',
      default: "100%"
    },
    width: {
      type: String,
      default: '100%',
      default: "100%"
    },
    data: {
      type: Object,
      require: false,
      default: function() {
        return {}
      },
    },
      }
    }
  },
  filters: {
    formatTime(t) {
      return new Date(t).Format('yyyy-MM-dd HH:mm:ss')
      return new Date(t).Format("yyyy-MM-dd HH:mm:ss")
    },
    percentage(score) {
      return score.toFixed(2) + '%'
      return score.toFixed(2) + "%"
    },
    sex(v) {
      try {
        let obj = JSON.parse(v)
        return obj.sex
      } catch (error) {
        return v.split('/')[0]
        return v.split("/")[0]
      }
    },
    idCard(v) {
@@ -491,7 +338,7 @@
        let obj = JSON.parse(v)
        return obj.idCard
      } catch (error) {
        return v.split('/')[1]
        return v.split("/")[1]
      }
    },
    phoneNum(v) {
@@ -499,20 +346,20 @@
        let obj = JSON.parse(v)
        return obj.phone
      } catch (error) {
        return v.split('/')[2]
        return v.split("/")[2]
      }
    },
    }
  },
  mounted() {
    console.log('ModelCard data', this.data)
    console.log("ModelCard data", this.data)
    console.log(this.data.baseInfo)
    console.log(this.initialIndex)
    //this.VideoPhotoData.activeName = "pic"
  },
  data() {
    return {
      activeName: 'pic',
      initialIndex: 0,
      activeName: "pic",
      initialIndex: 0
    }
  },
  methods: {
@@ -523,15 +370,15 @@
      this.initialIndex = index
    },
    downloadfile() {
      this.filecontent = 'this is my file content'
      let a = document.createElement('a')
      this.filecontent = "this is my file content"
      let a = document.createElement("a")
      a.href = 'data:text/json;charset=utf-8,' + this.filecontent
      a.href = "data:text/json;charset=utf-8," + this.filecontent
      // a.url = "http://192.168.20.112:6154/93,02c5aea4fc614e";
      a.download = 'video.mp4'
      a.download = "video.mp4"
      a.click()
    },
  },
    }
  }
}
</script>
<style lang="scss">