Compare commits

..

No commits in common. "f071abfcf73da0dd172f11e4a899cdfe93e7c36f" and "ccbb53093fee181ea4a5d1807be582535161d195" have entirely different histories.

2 changed files with 504 additions and 678 deletions

View File

@ -358,10 +358,6 @@
<div style="width: 100%; height: 100%;position:relative"> <div style="width: 100%; height: 100%;position:relative">
<!-- 预览视频--遮罩 --> <!-- 预览视频--遮罩 -->
<div class="video-cover" @click="videoShowMsg"></div> <div class="video-cover" @click="videoShowMsg"></div>
<div class="waterMark waterMark-left-top">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-top">{{userInfo.realNameShow}}</div>
<div class="waterMark waterMark-left-bottom">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-bottom">{{userInfo.realNameShow}}</div>
<vue3VideoPlay v-bind="options" /> <vue3VideoPlay v-bind="options" />
</div> </div>
</div> </div>
@ -388,8 +384,6 @@
<a-pagination v-model:current="current" :total="videoTotal" defaultPageSize="4" :showSizeChanger="false" <a-pagination v-model:current="current" :total="videoTotal" defaultPageSize="4" :showSizeChanger="false"
@change="batchPicturePreview" show-less-items /> @change="batchPicturePreview" show-less-items />
</a-modal> </a-modal>
<!-- 批量预览视频弹窗 --> <!-- 批量预览视频弹窗 -->
<a-modal wrapClassName="batch-preview-modal" v-model:visible="batchVisible" title="视频批量预览" :width="1060" <a-modal wrapClassName="batch-preview-modal" v-model:visible="batchVisible" title="视频批量预览" :width="1060"
destroyOnClose @cancel="videoClean"> destroyOnClose @cancel="videoClean">
@ -398,10 +392,6 @@
<div v-for="(item, index) in videoList" :key="item.id" style="width: 100%; height: 100%;position:relative"> <div v-for="(item, index) in videoList" :key="item.id" style="width: 100%; height: 100%;position:relative">
<!-- 批量预览视频--遮罩 --> <!-- 批量预览视频--遮罩 -->
<div class="batch-video-cover" @click="videoShowMsg(index)"></div> <div class="batch-video-cover" @click="videoShowMsg(index)"></div>
<div class="batch-waterMark batch-waterMark-left-top">{{userInfo.usernameShow}}</div>
<div class="batch-waterMark batch-waterMark-right-top">{{userInfo.realNameShow}}</div>
<div class="batch-waterMark batch-waterMark-left-bottom">{{userInfo.usernameShow}}</div>
<div class="batch-waterMark batch-waterMark-right-bottom">{{userInfo.realNameShow}}</div>
<p></p> <p></p>
<vue3VideoPlay v-bind="item.options" /> <vue3VideoPlay v-bind="item.options" />
</div> </div>
@ -409,7 +399,6 @@
<a-pagination v-model:current="current" :total="videoTotal" defaultPageSize="4" :showSizeChanger="false" <a-pagination v-model:current="current" :total="videoTotal" defaultPageSize="4" :showSizeChanger="false"
@change="batchPreview" show-less-items /> @change="batchPreview" show-less-items />
</a-modal> </a-modal>
<a-modal wrapClassName="wrj" v-model:visible="wrjVisible" :width="1000" :title="wrjName + '详情'" <a-modal wrapClassName="wrj" v-model:visible="wrjVisible" :width="1000" :title="wrjName + '详情'"
@ok="wrjVisible = false"> @ok="wrjVisible = false">
<div v-for="(db, key) in wrjData" :key="key"> <div v-for="(db, key) in wrjData" :key="key">
@ -449,10 +438,6 @@ import {
computed, computed,
} from 'vue' } from 'vue'
import {
getUser,
getUserInfo,
} from '@/api/home'
import { import {
getCameraByParentId, getCameraByParentId,
getStreamByChannelCode, getStreamByChannelCode,
@ -622,8 +607,6 @@ if (props.searchValue) {
mapSearchParam.value.cameraName = props.searchValue mapSearchParam.value.cameraName = props.searchValue
} }
onMounted(() => { onMounted(() => {
handleUser()
if (jcssType.value) { if (jcssType.value) {
tabClick(0, jcssType.value) tabClick(0, jcssType.value)
if (jcssType.value == '视频资源') { if (jcssType.value == '视频资源') {
@ -708,7 +691,7 @@ if (whoShow1.value.itShowXiHaiAn) {
// //
const rowClickData = ref(null) const rowClickData = ref(null)
// // todo1
const openVideo = (id, item) => { const openVideo = (id, item) => {
if(item) { if(item) {
rowClickData.value = item; rowClickData.value = item;
@ -1628,6 +1611,8 @@ const onSelectChange = (record, selected, selectedRows, nativeEvent) => {
) )
} }
console.log('已选中======================>', selectedList.value) console.log('已选中======================>', selectedList.value)
// selectedList.value = selectedRows
// allClick.value = selectedRowKeys
} }
const onSelectAll = (selected, selectedRows, changeRows) => { const onSelectAll = (selected, selectedRows, changeRows) => {
if (selected) { if (selected) {
@ -1692,22 +1677,6 @@ const videoShowMsg = (index) => {
} }
message.warning(msg) message.warning(msg)
} }
//
const userInfo = ref(null)
const handleUser = () => {
getUser().then(res => {
console.log('res-----获取用户信息------->', res);
if (res.data.code != 0) {
return message.warning(res.data.msg)
}
userInfo.value = res.data.data || {}
userInfo.value.usernameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.username || '');
userInfo.value.realNameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.realName || '');
}).catch(err => {
message.warning(err)
})
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.infrastructrueBox { .infrastructrueBox {
@ -2151,83 +2120,4 @@ video::-webkit-media-controls {
cursor: pointer; cursor: pointer;
} }
.waterMark {
position: absolute;
z-index: 99999999;
color: #0058e1;
font-size: 22px;
font-weight: bold;
opacity: 0.4;
transform: rotate(-25deg);
width: 470px
}
//
.waterMark-left-top {
left: 50px;
top: 100px;
text-align: left;
}
//
.waterMark-right-top {
right: 50px;
top: 100px;
text-align: right;
}
//
.waterMark-left-bottom {
left: 50px;
bottom: 100px;
text-align: left;
}
//
.waterMark-right-bottom {
right: 50px;
bottom: 100px;
text-align: right;
}
//
.batch-waterMark {
position: absolute;
z-index: 99999999;
color: #0058e1;
font-size: 14px;
opacity: 0.4;
transform: rotate(-25deg);
width: 200px;
}
//
.batch-waterMark-left-top {
left: 30px;
top: 50px;
text-align: left;
}
//
.batch-waterMark-right-top {
text-align: right;
right: 30px;
top: 80px;
}
//
.batch-waterMark-left-bottom {
left: 30px;
bottom: 50px;
text-align: left;
}
//
.batch-waterMark-right-bottom {
right: 20px;
bottom: 30px;
text-align: right;
}
</style> </style>

View File

@ -52,18 +52,30 @@
<span class="img"></span> <span class="img"></span>
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
</div> </div>
<div style=" <div
style="
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
"> "
>
<div class="oddNumbers">子单号{{ item.instanceId }}</div> <div class="oddNumbers">子单号{{ item.instanceId }}</div>
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<a-button type="primary" @click="modify(props.refObj.id, item)" v-if="item.backToFirst"> <a-button
type="primary"
@click="modify(props.refObj.id, item)"
v-if="item.backToFirst"
>
修改 修改
</a-button> </a-button>
<a-popconfirm v-if="!item.ended" title="是否终止此流程?" ok-text="" cancel-text="" <a-popconfirm
@confirm="endThis(item.instanceId)" @cancel="cancel"> v-if="!item.ended"
title="是否终止此流程?"
ok-text="是"
cancel-text="否"
@confirm="endThis(item.instanceId)"
@cancel="cancel"
>
<a-button type="primary" danger style="margin-left: 10px"> <a-button type="primary" danger style="margin-left: 10px">
流程终止 流程终止
</a-button> </a-button>
@ -72,9 +84,15 @@
</div> </div>
<div class="box" v-if="item.list.length > 0"> <div class="box" v-if="item.list.length > 0">
<div class="ability" v-for="val in item.list" :key="val.id" <div
:class="item.approveStatus === '通过' ? 'clickCursor' : ''"> class="ability"
<div class="left" :class=" v-for="val in item.list"
:key="val.id"
:class="item.approveStatus === '通过' ? 'clickCursor' : ''"
>
<div
class="left"
:class="
val.type == '应用资源' val.type == '应用资源'
? 'yyzy' ? 'yyzy'
: val.infoList.filter( : val.infoList.filter(
@ -94,7 +112,8 @@
)[0].attrValue == '业务组件' )[0].attrValue == '业务组件'
? 'ywzj' ? 'ywzj'
: 'yyzy' : 'yyzy'
"></div> "
></div>
<div class="right"> <div class="right">
<div class="ability-top"> <div class="ability-top">
<div class="name"> <div class="name">
@ -134,15 +153,22 @@
申请结果{{ 申请结果{{
item.ended ? item.approveStatus || '审核完成' : '审核中' item.ended ? item.approveStatus || '审核完成' : '审核中'
}} }}
<a-button v-if=" <a-button
v-if="
item.approveStatus === '通过' && item.approveStatus === '通过' &&
val.infoList.filter( val.infoList.filter(
(item) => item.attrType == '上传附件' (item) => item.attrType == '上传附件'
)[0] )[0]
" @click.stop="downloadFile(item, '附件下载')" class="DownloadAttachment"> "
@click.stop="downloadFile(item, '附件下载')"
class="DownloadAttachment"
>
附件下载 附件下载
</a-button> </a-button>
<a-button v-if="item.approveStatus === '通过'" @click.stop="switchFunction(item)"> <a-button
v-if="item.approveStatus === '通过'"
@click.stop="switchFunction(item)"
>
查看详情 查看详情
</a-button> </a-button>
</div> </div>
@ -159,8 +185,11 @@
<span class="channelName">{{ val.channelName }}</span> <span class="channelName">{{ val.channelName }}</span>
<span class="type">基础设施</span> <span class="type">基础设施</span>
</div> </div>
<a-button type="primary" v-if="item.approveStatus == '通过' && whoShow1.itShowXiHaiAn" <a-button
@click.stop="openVideo(val)"> type="primary"
v-if="item.approveStatus == '通过' && whoShow1.itShowXiHaiAn"
@click.stop="openVideo(val)"
>
视频预览 视频预览
</a-button> </a-button>
@ -188,15 +217,16 @@
</div> </div>
<!-- 单个预览弹窗 --> <!-- 单个预览弹窗 -->
<a-modal wrapClassName="single-preview-modal" v-model:visible="visible" title="视频预览" :width="960" destroyOnClose> <a-modal
wrapClassName="single-preview-modal"
v-model:visible="visible"
title="视频预览"
:width="960"
destroyOnClose
>
<template #footer></template> <template #footer></template>
<div style="width: 100%; display: flex; justify-content: center"> <div style="width: 100%; display: flex; justify-content: center">
<div style="width: 100%; height: 100%;position: relative"> <div style="width: 100%; height: 100%">
<!-- 预览视频--遮罩 -->
<div class="waterMark waterMark-left-top">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-top">{{userInfo.realNameShow}}</div>
<div class="waterMark waterMark-left-bottom">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-bottom">{{userInfo.realNameShow}}</div>
<vue3VideoPlay v-bind="options"/> <vue3VideoPlay v-bind="options"/>
</div> </div>
</div> </div>
@ -205,7 +235,7 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, defineProps, reactive, onMounted } from 'vue' import { ref, defineProps, reactive } from 'vue'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { endProcess, getApplyForm } from '@/api/personalCenter.js' import { endProcess, getApplyForm } from '@/api/personalCenter.js'
@ -213,9 +243,6 @@ import { useRouter } from 'vue-router'
import { import {
getStreamByChannelCode, getStreamByChannelCode,
} from '@/api/videoSurveillance' } from '@/api/videoSurveillance'
import {
getUser,
} from '@/api/home'
const router = useRouter() const router = useRouter()
const backUrl = ref(window.SITE_CONFIG.apiURL + '/') const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const props = defineProps({ const props = defineProps({
@ -431,27 +458,6 @@ const openVideo = (item) => {
// visible.value = true // visible.value = true
// options.src = 'http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8' // options.src = 'http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8'
} }
onMounted(() => {
handleUser()
})
//
const userInfo = ref(null)
const handleUser = () => {
getUser().then(res => {
console.log('res-----获取用户信息------->', res);
if (res.data.code != 0) {
return message.warning(res.data.msg)
}
userInfo.value = res.data.data || {}
userInfo.value.usernameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.username || '');
userInfo.value.realNameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.realName || '');
}).catch(err => {
message.warning(err)
})
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.title { .title {
@ -462,22 +468,17 @@ const handleUser = () => {
padding-left: 0.1rem; padding-left: 0.1rem;
border-left: 0.06rem #0058e1 solid; border-left: 0.06rem #0058e1 solid;
} }
.top { .top {
margin-bottom: 0.1rem; margin-bottom: 0.1rem;
.main { .main {
background: #eee; background: #eee;
padding: 0.2rem 0.2rem 0.1rem; padding: 0.2rem 0.2rem 0.1rem;
p { p {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
& > span { & > span {
width: 100%; width: 100%;
} }
.enclosure { .enclosure {
width: 95%; width: 95%;
padding: 0.05rem 0.1rem; padding: 0.05rem 0.1rem;
@ -486,13 +487,11 @@ const handleUser = () => {
justify-content: space-between; justify-content: space-between;
margin-top: 0.05rem; margin-top: 0.05rem;
} }
.btn:hover { .btn:hover {
color: #0058e1; color: #0058e1;
cursor: pointer; cursor: pointer;
} }
} }
.item { .item {
span { span {
width: 2.5rem; width: 2.5rem;
@ -500,19 +499,16 @@ const handleUser = () => {
} }
} }
} }
.bottom { .bottom {
.main { .main {
.item { .item {
border-top: 1px #eee solid; border-top: 1px #eee solid;
.deptName { .deptName {
color: #0058e1; color: #0058e1;
font-size: 0.16rem; font-size: 0.16rem;
margin-top: 0.1rem; margin-top: 0.1rem;
display: flex; display: flex;
align-items: center; align-items: center;
.img { .img {
width: 0.05rem; width: 0.05rem;
height: 0.05rem; height: 0.05rem;
@ -521,20 +517,16 @@ const handleUser = () => {
margin-right: 0.1rem; margin-right: 0.1rem;
} }
} }
.oddNumbers { .oddNumbers {
margin: 0.1rem 0 0 0.15rem; margin: 0.1rem 0 0 0.15rem;
} }
.box { .box {
margin-left: 0.1rem; margin-left: 0.1rem;
.ability { .ability {
height: 1.3rem; height: 1.3rem;
display: flex; display: flex;
border-bottom: 1px #eee solid; border-bottom: 1px #eee solid;
padding: 0.1rem 0; padding: 0.1rem 0;
.left { .left {
display: inline-block; display: inline-block;
width: 1.1rem; width: 1.1rem;
@ -548,7 +540,6 @@ const handleUser = () => {
background: url('~@/assets/home/sxt_square.png') no-repeat; background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.yyzy { .yyzy {
background: url('~@/assets/home/yyzy_square.png') no-repeat; background: url('~@/assets/home/yyzy_square.png') no-repeat;
background-size: 100%; background-size: 100%;
@ -573,7 +564,6 @@ const handleUser = () => {
background: url('~@/assets/home/ywzj_square.png') no-repeat; background: url('~@/assets/home/ywzj_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.btn { .btn {
cursor: pointer; cursor: pointer;
color: #0087ff; color: #0087ff;
@ -582,22 +572,18 @@ const handleUser = () => {
border: 1px #0087ff solid; border: 1px #0087ff solid;
border-radius: 0.2rem; border-radius: 0.2rem;
} }
.right { .right {
flex: 1; flex: 1;
margin-left: 0.15rem; margin-left: 0.15rem;
.ability-top { .ability-top {
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
.name { .name {
width: 6rem; width: 6rem;
height: 0.2rem; height: 0.2rem;
display: flex; display: flex;
.channelName { .channelName {
max-width: 5rem; max-width: 5rem;
height: 0.2rem; height: 0.2rem;
@ -608,7 +594,6 @@ const handleUser = () => {
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
.type { .type {
background: #0087ff; background: #0087ff;
color: #fff; color: #fff;
@ -619,10 +604,8 @@ const handleUser = () => {
} }
} }
} }
.ability-bottom { .ability-bottom {
margin-top: 0.15rem; margin-top: 0.15rem;
// display: flex; // display: flex;
// justify-content: space-between; // justify-content: space-between;
.dec { .dec {
@ -635,7 +618,6 @@ const handleUser = () => {
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
.dec2 { .dec2 {
width: 7rem; width: 7rem;
height: 0.22rem; height: 0.22rem;
@ -646,7 +628,6 @@ const handleUser = () => {
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
// .result:hover { // .result:hover {
// color: #0058e1; // color: #0058e1;
// cursor: pointer; // cursor: pointer;
@ -656,20 +637,17 @@ const handleUser = () => {
} }
} }
} }
.DownloadAttachment { .DownloadAttachment {
position: absolute; position: absolute;
right: 10px; right: 10px;
top: -150px; top: -150px;
} }
.DownloadAttachment2 { .DownloadAttachment2 {
position: absolute; position: absolute;
right: 10px; right: 10px;
top: -110px; top: -110px;
} }
} }
.clickCursor { .clickCursor {
cursor: pointer; cursor: pointer;
} }
@ -683,55 +661,13 @@ const handleUser = () => {
background: url(~@/assets/home/video-background.png) no-repeat; background: url(~@/assets/home/video-background.png) no-repeat;
background-size: cover; background-size: cover;
} }
.ant-modal-title { .ant-modal-title {
font-size: 0.16rem; font-size: 0.16rem;
font-weight: 500; font-weight: 500;
color: #ffffff; color: #ffffff;
} }
.anticon { .anticon {
color: #ffffff; color: #ffffff;
} }
} }
//
.waterMark-left-top {
left: 50px;
top: 100px;
text-align: left;
}
//
.waterMark-right-top {
right: 50px;
top: 100px;
text-align: right;
}
//
.waterMark-left-bottom {
left: 50px;
bottom: 100px;
text-align: left;
}
//
.waterMark-right-bottom {
right: 50px;
bottom: 100px;
text-align: right;
}
.waterMark {
position: absolute;
z-index: 99999999;
color: #0058e1;
font-size: 22px;
font-weight: bold;
opacity: 0.4;
transform: rotate(-25deg);
width: 470px
}
</style> </style>