| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <template>
- <div class="detail">
- <nav-bar></nav-bar>
- <card class="info">
- <div>{{ info.channelName }}</div>
- </card>
- <card>
- <van-cell-group>
- <van-cell
- title="实时视频质量"
- :value="info.quality ? getDictLabel(info.quality.quality, 'video_diagnosis_state', '未上报') : '未上报'"
- title-style="font-weight:700"
- />
- <van-cell
- v-if="info.quality != null && info.quality.quality != null"
- value-class="cell-quality-value"
- title-style="display:none"
- >
- <template #default>
- <div>诊断截图</div>
- <div class="quality-tags">
- <van-tag type="danger" v-if="info.quality.signalLost == 1">信号丢失</van-tag>
- <van-tag type="danger" v-if="info.quality.occlude == 1">遮挡</van-tag>
- <van-tag type="danger" v-if="info.quality.brightness == 1">亮度</van-tag>
- <van-tag type="danger" v-if="info.quality.colorCast == 1">偏色</van-tag>
- <van-tag type="danger" v-if="info.quality.snowflake == 1">雪花</van-tag>
- <van-tag type="danger" v-if="info.quality.stripe == 1">条纹</van-tag>
- <van-tag type="danger" v-if="info.quality.contrast == 1">对比度</van-tag>
- <van-tag type="danger" v-if="info.quality.blurry == 1">模糊</van-tag>
- </div>
- <van-image
- height="20vh"
- :src="info.quality.image"
- @click="
- () => {
- showImage = true
- }
- "
- ></van-image>
- <van-image-preview v-model="showImage" :images="[info.quality.image]"></van-image-preview
- ></template>
- </van-cell>
- </van-cell-group>
- </card>
- <card v-if="!info.storage">
- <van-cell title="录像存储情况" value="未上报" title-style="font-weight:700;"> </van-cell>
- </card>
- <card v-else>
- <van-cell-group>
- <van-cell title="录像存储情况" title-style="font-weight:700;">
- <!-- <template #default>
- <van-tag type="success" v-if="info.storage.planDays === info.storage.realDays">正常</van-tag>
- <van-tag type="warning" v-else>异常</van-tag>
- </template> -->
- </van-cell>
- <van-cell title="计划存储天数" :value="`${info.storage.planDays}天`"></van-cell>
- <van-cell title="实际存储天数" :value="`${info.storage.realDays}天`"></van-cell>
- <van-cell value-class="cell-calender-value" title-class="cell-calender-title">
- <template #title></template>
- <template #default>
- <calendar
- ref="calendar"
- :data="info.storage"
- :earlistDate="info.storage.earliestTime"
- :defaultSelectedDate="selectDate"
- @change="onChange"
- ></calendar>
- </template>
- </van-cell>
- <van-cell title="录像完整性" title-style="font-weight:500;"></van-cell>
- <van-cell title="日期" :value="dayjs(selectDate).format('YYYY年M月D日')" v-if="selectDate"
- ></van-cell>
- <van-cell title="丢失时长">
- <template #default>
- {{ integrity ? lostDurationText(integrity.loseDuration) : '未知' }}
- </template>
- </van-cell>
- </van-cell-group>
- </card>
- </div>
- </template>
- <script>
- import KList from '@/components/list/index.vue'
- import * as api from '@/api/iot/videoDiagnosis.js'
- import Card from '@/components/card/index.vue'
- import Calendar from './components/calender.vue'
- import { getLabel } from '@/utils/optionEx'
- import NavBar from '@/components/NavBar'
- import { mapGetters } from 'vuex'
- import dayjs from 'dayjs'
- export default {
- data() {
- return {
- info: {},
- showImage:false,
- hostCode: this.$route.query.hostCode,
- channelCode: this.$route.query.channelCode,
- integrity: {},
- selectDate:null,
- dicts: ['video_diagnosis_state']
- }
- },
- components: { NavBar, KList, Card, Calendar },
- computed: {
- ...mapGetters(['dictionary'])
- },
- mounted() {
- this.getInfo()
- },
- methods: {
- getLabel,
- getInfo() {
- api.detail(this.hostCode, this.channelCode).then(r => {
- this.info = r.data
- this.integrity = r.data.integrity
- if(r.data.integrity){
- this.selectDate=r.data.integrity.recordDate;
- }
- })
- },
- onChange(day) {
- this.selectDate = day
- api.integrity(this.hostCode, this.channelCode, dayjs(day).format('YYYY-MM-DD')).then(r => {
- this.integrity = r.data
- })
- },
- lostDurationText(duration) {
- if (!duration) {
- return '未丢失'
- }
- let str = ''
- let hour = Math.floor(duration / 60)
- if (hour > 0) {
- str += `${hour}小时`
- }
- let minute = duration % 60
- str += `${minute}分`
- return str
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .cell-quality-value {
- width: 100%;
- }
- .quality-tags{
- >span{
- margin-left:1vw;
- }
- >span:first-child{
- margin-left:0;
- }
- }
- .cell-calender-value {
- width: 100%;
- }
- .cell-calender-title {
- display: none;
- }
- .detail {
- margin: 15px;
- }
- // .info {
- // ::v-deep .van-cell__title {
- // max-width: 40%;
- // }
- // ::v-deep .van-cell__value {
- // max-width: 60%;
- // }
- // }
- </style>
|