From 401524fb5661d57ffb2229d683fe4de85b65fd1c Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期四, 31 八月 2023 17:54:24 +0800 Subject: [PATCH] 生产管理看板+删不需要的文件 --- src/components/subComponents/ModelCard.vue | 400 ++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 282 insertions(+), 118 deletions(-) diff --git a/src/components/subComponents/ModelCard.vue b/src/components/subComponents/ModelCard.vue index c0eae2d..2c6403e 100644 --- a/src/components/subComponents/ModelCard.vue +++ b/src/components/subComponents/ModelCard.vue @@ -1,104 +1,180 @@ <template> <div class="model-card-box" :style="`height:${height};width:${width};`"> - <el-tabs style="height: 100%;" @before-leave="changeTabs" v-model="VideoPhotoData.activeName"> + <el-tabs + style="height: 100%;" + @before-leave="changeTabs" + v-model="activeName" + > <el-tab-pane label="澶у浘" name="pic"> <div class="model-card-box-left" - :style="data.targetInfo !== null && data.targetInfo[0].picSmUrl !== '' - ? 'width: 65%;padding: 5px;box-sizing: border-box' - : 'width: 100%;padding: 5px;box-sizing: border-box'" + :style=" + data.targetInfo !== null && data.targetInfo[0].picSmUrl !== '' + ? 'width: 65%;padding: 5px;box-sizing: border-box' + : 'width: 100%;padding: 5px;box-sizing: border-box' + " > <div class="img-box"> <p class="img-box-title"> <b>鍏ㄦ櫙鍥�</b> </p> - <img-down - v-if="data.targetInfo !== null && data.targetInfo[0].picSmUrl !== ''" - :url="data.picMaxUrl[0]" - ></img-down> <!-- 浜鸿劯绫诲瀷 --> <img-down - v-else-if="(data.targetInfo == null || data.targetInfo[0].picSmUrl == '') && data.picMaxUrl.length == 1" + v-if=" + data.targetInfo !== null && data.targetInfo[0].picSmUrl !== '' + " :url="data.picMaxUrl[0]" ></img-down> + <!-- 鏅�歽olo绫� --> + <img-down + 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绫� --> + + <!-- yolo绫诲ぇ鍥� --> <div class="describe" - v-if="data.targetInfo == null || data.targetInfo[0].picSmUrl == ''" + 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.cameraAddr }}</span> + <span + class="fontStyleForModel analyServer" + style="margin-left:20px;" + >{{ data.analyServerName }}</span + > </p> - <p> - - </p> + <p></p> <p style="width:100%"> - <span v-for="(item,index) in data.alarmRules" :key="index+'rule'"> - <span class="fontStyleForModel">{{data.taskName}}</span> + <span + v-for="(item, index) in data.alarmRules" + :key="index + 'rule'" + > + <span class="fontStyleForModel">{{ data.taskName }}</span + > <span v-if="item.alarmLevel !== '鎾ら槻'" class="fontStyleForModel" - >{{item.alarmLevel}}</span> - <span v-if="item.isLink" class="fontStyleForModel">鑱斿姩浠诲姟</span> - <span v-if="index < data.alarmRules.length-1">/ </span> + >{{ item.alarmLevel }}</span + > + <span v-if="item.isLink" class="fontStyleForModel" + >鑱斿姩浠诲姟</span + > + <span v-if="index < data.alarmRules.length - 1">/ </span> </span> </p> </div> - <!-- yolo绫诲ぇ鍥� --> + + <!-- 浜鸿劯绫诲ぇ鍥� --> <div class="describeBigImage" v-else> <p> - <span class="fontStyleForModel">{{ data.picDate | formatTime}}</span> + <span class="fontStyleForModel">{{ + data.picDate | formatTime + }}</span> </p> - <p> - <span class="fontStyleForModel">{{ data.cameraAddr }}</span> <span class="fontStyleForModel analyServer" style="margin-left:20px;">{{ data.analyServerName }}</span> + <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 + > </p> <p style="width:100%"> - <span v-for="(item,index) in data.alarmRules" :key="index+'rule'"> - <span class="fontStyleForModel">{{data.taskName}}</span> + <span + v-for="(item, index) in data.alarmRules" + :key="index + 'rule'" + > + <span class="fontStyleForModel">{{ data.taskName }}</span + > <span v-if="item.alarmLevel !== '鎾ら槻'" class="fontStyleForModel" - >{{item.alarmLevel}}</span> - <span v-if="item.isLink" class="fontStyleForModel">鑱斿姩浠诲姟</span> - <span v-if="index < data.alarmRules.length-1">/ </span> + >{{ item.alarmLevel }}</span + > + <span v-if="item.isLink" class="fontStyleForModel" + >鑱斿姩浠诲姟</span + > + <span v-if="index < data.alarmRules.length - 1">/ </span> </span> </p> <p style="width:100%"> - <span class="fontStyleForModel">{{data.showLabels}}</span> + <span + style="white-space: nowrap;font-weight: 600;font-size: 13px;" + >{{ data.showLabels }}</span + > </p> </div> - <!-- 浜鸿劯绫诲ぇ鍥� --> </div> </div> + + <!-- 寮规鍙充晶 --> <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 !== '' - ? 'width: 35%;box-sizing: border-box;' - : ''" + :style=" + data.targetInfo && + 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 :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" @@ -109,9 +185,15 @@ 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 @@ -127,85 +209,119 @@ </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> + >{{ data.baseInfo[initialIndex].tableName }}</span + > </p> <p> <span class="labelInfo">濮撳悕</span> <span class="val" :title="data.baseInfo[initialIndex].targetName" - >{{data.baseInfo[initialIndex].targetName}}</span> + >{{ 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> + >{{ data.baseInfo[initialIndex].monitorLevel }}</span + > </p> </div> </div> </div> </el-tab-pane> + <el-tab-pane label="瑙嗛" name="video" class="video-tabs"> <div class="model-card-box-left" - :style="data.targetInfo !== null && data.targetInfo[0].picSmUrl !== '' - ? 'width: 65%;padding: 5px;box-sizing: border-box' - : 'width: 70%;padding: 5px;box-sizing: border-box;margin-left:15%'" + :style=" + data.targetInfo !== null && data.targetInfo[0].picSmUrl !== '' + ? 'width: 65%;padding: 5px;box-sizing: border-box' + : 'width: 70%;padding: 5px;box-sizing: border-box;margin-left:15%' + " > <div class="img-box"> - <video + <!-- <video :src="'/httpImage/' + data.videoUrl" controls style="margin-top: 12px;" - >鎮ㄧ殑娴忚鍣ㄤ笉鏀寔 video 鏍囩銆�</video> + > + 鎮ㄧ殑娴忚鍣ㄤ笉鏀寔 video 鏍囩銆� + </video> --> + <wasm-player + :videoUrl="data.videoUrl" + :isStream="false" + ></wasm-player> </div> - <!-- <div class="merge"> - <el-button type="primary" @click="mergeVideo">鍚堝苟瑙嗛</el-button> - <a name="download" @click="downloadfile">涓嬭浇</a> - <a href="/httpImage/192.168.20.112:6081/31,02c86c199cd9b1" download="panlei.mp4">涓嬭浇2</a> - </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;' - : ''" + :style=" + 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" @@ -216,9 +332,15 @@ 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 @@ -234,46 +356,64 @@ </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="img-box" v-if="!data.baseInfo && data.picMaxUrl"> + <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> + >{{ data.baseInfo[initialIndex].tableName }}</span + > </p> <p> <span class="labelInfo">濮撳悕</span> <span class="val" :title="data.baseInfo[initialIndex].targetName" - >{{data.baseInfo[initialIndex].targetName}}</span> + >{{ 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> + >{{ data.baseInfo[initialIndex].monitorLevel }}</span + > </p> </div> </div> @@ -283,54 +423,67 @@ </div> </template> <script> -Date.prototype.Format = function (fmt) { +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), //瀛e害 - "S": this.getMilliseconds() //姣 - }; - if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + 'M+': this.getMonth() + 1, //鏈堜唤 + 'd+': this.getDate(), //鏃� + 'H+': this.getHours(), //灏忔椂 + 'm+': this.getMinutes(), //鍒� + 's+': this.getSeconds(), //绉� + 'q+': Math.floor((this.getMonth() + 3) / 3), //瀛e害 + S: this.getMilliseconds(), //姣 + } + 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))); - return fmt; + 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 } -/* eslint-disable */ -import CameraPlayer from "@/components/player"; -import imgDown from "@/components/subComponents/imgDown" +import WasmPlayer from '@/components/wasmPlayer' +import imgDown from '@/components/subComponents/imgDown' export default { components: { - CameraPlayer, - imgDown + WasmPlayer, + imgDown, }, props: { height: { type: String, - default: "100%" + default: '100%', }, width: { type: String, - default: "100%" + default: '100%', }, - data: "" + 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) { @@ -338,7 +491,7 @@ let obj = JSON.parse(v) return obj.idCard } catch (error) { - return v.split("/")[1] + return v.split('/')[1] } }, phoneNum(v) { @@ -346,39 +499,40 @@ 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" + //this.VideoPhotoData.activeName = "pic" }, data() { return { + activeName: 'pic', initialIndex: 0, - }; + } }, methods: { changeTabs(activeName, oldActiveName) { - console.log(activeName, oldActiveName); + console.log(activeName, oldActiveName) }, changeInitialIndex(index) { - this.initialIndex = index; + 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.click(); - } + a.download = 'video.mp4' + a.click() + }, }, -}; +} </script> <style lang="scss"> .fontStyleForModel { @@ -493,7 +647,6 @@ } text-align: left; margin: 4px 0; - } } .describeBigImage { @@ -502,6 +655,17 @@ float: left; margin-top: 5px; p { + &.align-right { + text-align: right; + .text-overflow { + display: inline-block; + vertical-align: top; + width: 90px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } b { //color: #e43933; } -- Gitblit v1.8.0