flx:修改ios视频格式 企业账号底部换icon
@ -160,8 +160,8 @@
|
|||||||
}
|
}
|
||||||
that.tabList.push({
|
that.tabList.push({
|
||||||
appName: 'AI预警',
|
appName: 'AI预警',
|
||||||
moduleIcon2: 'menu-icon',
|
moduleIcon2: 'ai-icon',
|
||||||
moduleIcon: 'menu-icon_active',
|
moduleIcon: 'ai-icon_active',
|
||||||
plugin: 'aIEarlyWarn',
|
plugin: 'aIEarlyWarn',
|
||||||
appShow: 1,
|
appShow: 1,
|
||||||
isShow: true,
|
isShow: true,
|
||||||
@ -184,8 +184,8 @@
|
|||||||
})
|
})
|
||||||
that.tabList.push({
|
that.tabList.push({
|
||||||
appName: '我的',
|
appName: '我的',
|
||||||
moduleIcon2: 'tabIcon-my',
|
moduleIcon2: 'my-icon',
|
||||||
moduleIcon: 'tabIcon-my-select',
|
moduleIcon: 'my-icon_active',
|
||||||
plugin: 'my',
|
plugin: 'my',
|
||||||
appShow: 1,
|
appShow: 1,
|
||||||
isShow: true,
|
isShow: true,
|
||||||
|
|||||||
@ -14,15 +14,15 @@
|
|||||||
@play="onPlay" @pause="onPause" @error="onVideoError" @ended="onEnded" @timeupdate="onTimeUpdate"
|
@play="onPlay" @pause="onPause" @error="onVideoError" @ended="onEnded" @timeupdate="onTimeUpdate"
|
||||||
@fullscreenchange="onFullscreenChange">
|
@fullscreenchange="onFullscreenChange">
|
||||||
<cover-view @click="onVideoClick" v-if="!error && !loading" class="maskleft"></cover-view>
|
<cover-view @click="onVideoClick" v-if="!error && !loading" class="maskleft"></cover-view>
|
||||||
</video>
|
<!-- 加载状态 - APP平台使用cover-view覆盖 -->
|
||||||
|
<!-- #ifdef APP-PLUS -->
|
||||||
|
<cover-view v-if="loading" class="loading-overlay">
|
||||||
|
<cover-image src="@/static/iscImage/loading.gif" class="loading-spinner"></cover-image>
|
||||||
|
<!-- <cover-view class="loading-text">加载中...</cover-view> -->
|
||||||
|
</cover-view>
|
||||||
|
<!-- #endif -->
|
||||||
|
|
||||||
<!-- 加载状态 - APP平台使用cover-view覆盖 -->
|
</video>
|
||||||
<!-- #ifdef APP-PLUS -->
|
|
||||||
<cover-view v-if="loading" class="loading-overlay">
|
|
||||||
<cover-image src="@/static/iscImage/loading.gif" class="loading-spinner"></cover-image>
|
|
||||||
<!-- <cover-view class="loading-text">加载中...</cover-view> -->
|
|
||||||
</cover-view>
|
|
||||||
<!-- #endif -->
|
|
||||||
|
|
||||||
<!-- 加载状态 - H5平台使用普通view -->
|
<!-- 加载状态 - H5平台使用普通view -->
|
||||||
<!-- #ifdef H5 -->
|
<!-- #ifdef H5 -->
|
||||||
@ -680,16 +680,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
/deep/ .uni-video-slots {
|
/deep/ .uni-video-slots {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/deep/ .uni-video-slot {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 80%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
.maskleft {
|
.maskleft {
|
||||||
width: calc(100% - 2rpx);
|
width: calc(100% - 2rpx);
|
||||||
height: 80%;
|
|
||||||
/* #ifdef APP-PLUS */
|
/* #ifdef APP-PLUS */
|
||||||
// cover-view 在 video 内部需要绝对定位才能覆盖并接收点击事件
|
// cover-view 在 video 内部需要绝对定位才能覆盖并接收点击事件
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -712,9 +717,9 @@
|
|||||||
z-index: 1;
|
z-index: 1;
|
||||||
/* #ifdef APP-PLUS */
|
/* #ifdef APP-PLUS */
|
||||||
// 防止在swiper中滑动时错位
|
// 防止在swiper中滑动时错位
|
||||||
transform: translateZ(0);
|
// transform: translateZ(0);
|
||||||
-webkit-transform: translateZ(0);
|
// -webkit-transform: translateZ(0);
|
||||||
will-change: transform;
|
// will-change: transform;
|
||||||
/* #endif */
|
/* #endif */
|
||||||
|
|
||||||
.video-container {
|
.video-container {
|
||||||
@ -747,17 +752,12 @@
|
|||||||
|
|
||||||
.loading-overlay {
|
.loading-overlay {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
// flex-direction: column;
|
||||||
align-items: center;
|
// align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
// background: rgba(0, 0, 0, 0.5);
|
// background: rgba(0, 0, 0, 0.5);
|
||||||
z-index: 10;
|
// z-index: 10;
|
||||||
|
|
||||||
.loading-spinner {
|
.loading-spinner {
|
||||||
width: 500rpx;
|
width: 500rpx;
|
||||||
@ -831,7 +831,7 @@
|
|||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 80%;
|
// height: 80%;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
// 确保可以接收点击事件
|
// 确保可以接收点击事件
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
@ -843,25 +843,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
cover-view.loading-overlay {
|
cover-view.loading-overlay {
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
// background: rgba(0, 0, 0, 0.5);
|
// background: rgba(0, 0, 0, 0.5);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: 998;
|
height: 80%;
|
||||||
|
// z-index: 998;
|
||||||
// 防止在swiper中滑动时错位
|
// 防止在swiper中滑动时错位
|
||||||
transform: translateZ(0);
|
// transform: translateZ(0);
|
||||||
-webkit-transform: translateZ(0);
|
// -webkit-transform: translateZ(0);
|
||||||
|
|
||||||
cover-view.loading-spinner {
|
cover-view.loading-spinner {
|
||||||
width: 500rpx;
|
width: 500rpx;
|
||||||
height: 500rpx;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
cover-view.loading-text {
|
cover-view.loading-text {
|
||||||
@ -885,8 +880,8 @@
|
|||||||
z-index: 999;
|
z-index: 999;
|
||||||
width: 99%;
|
width: 99%;
|
||||||
// 防止在swiper中滑动时错位
|
// 防止在swiper中滑动时错位
|
||||||
transform: translateZ(0);
|
// transform: translateZ(0);
|
||||||
-webkit-transform: translateZ(0);
|
// -webkit-transform: translateZ(0);
|
||||||
|
|
||||||
cover-view.error-icon {
|
cover-view.error-icon {
|
||||||
width: 120rpx;
|
width: 120rpx;
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
"sassImplementationName" : "node-sass",
|
"sassImplementationName" : "node-sass",
|
||||||
/* 5+App特有相关 */
|
/* 5+App特有相关 */
|
||||||
"app-plus" : {
|
"app-plus" : {
|
||||||
"orientation" : [
|
"screenOrientation" : [
|
||||||
// //竖屏正方向
|
// //竖屏正方向
|
||||||
"portrait-primary",
|
"portrait-primary",
|
||||||
"portrait-secondary",
|
"portrait-secondary",
|
||||||
|
|||||||
@ -95,8 +95,8 @@
|
|||||||
</view>
|
</view>
|
||||||
<u-calendar v-model="constructionTimeShow" mode="range" :max-date="'2300-01-01'"
|
<u-calendar v-model="constructionTimeShow" mode="range" :max-date="'2300-01-01'"
|
||||||
@change="onConstructionTimeChange"></u-calendar>
|
@change="onConstructionTimeChange"></u-calendar>
|
||||||
<u-popup v-model="detailShow" mode="bottom" :closeable="true">
|
<u-popup class="my-popup" v-model="detailShow" :mask="false" mode="bottom" :closeable="true">
|
||||||
<view class="popup-main">
|
<view class="popup-main" :style="{height: `calc(100vh - ${mobileTopHeight + 44}px - 110rpx)`}">
|
||||||
<view class="popup-box_header">{{alarmTypeName(detailInfo.alarmType)}}</view>
|
<view class="popup-box_header">{{alarmTypeName(detailInfo.alarmType)}}</view>
|
||||||
<view class="popup-box_item">
|
<view class="popup-box_item">
|
||||||
<view>时间:</view>
|
<view>时间:</view>
|
||||||
@ -486,12 +486,14 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
/deep/ .u-drawer .u-icon__icon {
|
/deep/ .my-popup {
|
||||||
color: white !important;
|
bottom: 110rpx;
|
||||||
|
.u-icon__icon {
|
||||||
|
color: white !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.popup-main {
|
.popup-main {
|
||||||
height: 100vh;
|
|
||||||
padding-top: 164rpx;
|
padding-top: 164rpx;
|
||||||
background: #000000;
|
background: #000000;
|
||||||
|
|
||||||
|
|||||||
@ -380,12 +380,19 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
|
>view:first-child {
|
||||||
|
flex: 1;
|
||||||
|
white-space: nowrap; /* 不换行 */
|
||||||
|
overflow: hidden; /* 隐藏溢出的内容 */
|
||||||
|
text-overflow: ellipsis; /* 用省略号表示溢出的文本 */
|
||||||
|
}
|
||||||
>view:last-child {
|
>view:last-child {
|
||||||
width: 20rpx;
|
width: 20rpx;
|
||||||
height: 20rpx;
|
height: 20rpx;
|
||||||
background-color: #D8DBE8;
|
background-color: #D8DBE8;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.onLine {
|
.onLine {
|
||||||
|
|||||||
@ -134,9 +134,9 @@
|
|||||||
</scroll-view>
|
</scroll-view>
|
||||||
</view>
|
</view>
|
||||||
<view class="content-footer">
|
<view class="content-footer">
|
||||||
<view class="" @click="onVideoStop">
|
<!-- <view class="" @click="onVideoStop">
|
||||||
<image src="/static/stop-icon.png" mode=""></image>
|
<image src="/static/stop-icon.png" mode=""></image>
|
||||||
</view>
|
</view> -->
|
||||||
<view :class="{'showDetail': showDetail}" @click="getDetail">
|
<view :class="{'showDetail': showDetail}" @click="getDetail">
|
||||||
<image src="/static/detail-icon.png" mode=""></image>
|
<image src="/static/detail-icon.png" mode=""></image>
|
||||||
</view>
|
</view>
|
||||||
@ -642,7 +642,8 @@
|
|||||||
.content-footer {
|
.content-footer {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
// justify-content: space-between;
|
||||||
|
justify-content: flex-end;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@ -9,7 +9,8 @@
|
|||||||
<template v-if="videoConfig.enableNotPlugin != 1">
|
<template v-if="videoConfig.enableNotPlugin != 1">
|
||||||
<!-- APP环境使用web-view -->
|
<!-- APP环境使用web-view -->
|
||||||
<!-- #ifdef APP-PLUS -->
|
<!-- #ifdef APP-PLUS -->
|
||||||
<video v-if="!isYsy" class="videoBox" id="myVideo" :custom-cache="false" :src="playUrlFilter" controls
|
<video v-if="!isYsy && isIOS" class="videoBox" id="myVideo" :src="audioUrl" controls autoplay></video>
|
||||||
|
<video v-if="!isYsy && !isIOS" class="videoBox" id="myVideo" :custom-cache="false" :src="playUrlFilter" controls
|
||||||
autoplay></video>
|
autoplay></video>
|
||||||
<!-- #endif -->
|
<!-- #endif -->
|
||||||
<!-- H5环境使用ezuikit -->
|
<!-- H5环境使用ezuikit -->
|
||||||
@ -222,6 +223,7 @@
|
|||||||
seconds: 0,
|
seconds: 0,
|
||||||
secondsTime: null,
|
secondsTime: null,
|
||||||
testModule: null,
|
testModule: null,
|
||||||
|
audioUrl: "",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
@ -285,6 +287,10 @@
|
|||||||
formattedTime() {
|
formattedTime() {
|
||||||
return this.$dayjs.duration(this.seconds, 'seconds').format('HH:mm:ss');
|
return this.$dayjs.duration(this.seconds, 'seconds').format('HH:mm:ss');
|
||||||
},
|
},
|
||||||
|
isIOS() {
|
||||||
|
const systemInfo = uni.getSystemInfoSync();
|
||||||
|
return systemInfo.platform === 'ios';
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
setHeight() {
|
setHeight() {
|
||||||
@ -413,7 +419,7 @@
|
|||||||
that.secondsTime = setInterval(() => {
|
that.secondsTime = setInterval(() => {
|
||||||
that.seconds += 1;
|
that.seconds += 1;
|
||||||
}, 1000);
|
}, 1000);
|
||||||
} else if(res.status == "EXCEPTION" || res.status == "FAILED") {
|
} else if (res.status == "EXCEPTION" || res.status == "FAILED") {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '连接失败!',
|
title: '连接失败!',
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
@ -1081,29 +1087,47 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.sendRequest({
|
const systemInfo = uni.getSystemInfoSync();
|
||||||
url: "xmgl/videoItem/getVideoItemInfo",
|
if (systemInfo.platform === 'ios') {
|
||||||
data: {
|
this.sendRequest({
|
||||||
...json,
|
url: "xmgl/videoItem/getVideoItemInfo",
|
||||||
type: "wss", //rtsp或者hls
|
data: {
|
||||||
},
|
...json,
|
||||||
method: "post",
|
type: "hls", //rtsp或者hls
|
||||||
success(res) {
|
},
|
||||||
let isProd = process.env.NODE_ENV === 'development' ? "" : "" // '/mlh5'
|
method: "post",
|
||||||
switch (that.videoInfo.videoType) {
|
success(res) {
|
||||||
case 1:
|
if (res.code == 200) {
|
||||||
that.webURL = isProd + '/static/monitor/player.html?cameraUrl=' + res.result
|
console.log(778877, res.result.videoInfo.url);
|
||||||
.videoInfo
|
that.audioUrl = res.result.videoInfo.url;
|
||||||
.hdFlvAddress
|
}
|
||||||
break;
|
|
||||||
default:
|
|
||||||
that.webURL = isProd + '/static/monitor/player.html?cameraUrl=' + res.result
|
|
||||||
.videoInfo
|
|
||||||
.url
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
})
|
} else {
|
||||||
|
this.sendRequest({
|
||||||
|
url: "xmgl/videoItem/getVideoItemInfo",
|
||||||
|
data: {
|
||||||
|
...json,
|
||||||
|
type: "wss", //rtsp或者hls
|
||||||
|
},
|
||||||
|
method: "post",
|
||||||
|
success(res) {
|
||||||
|
let isProd = process.env.NODE_ENV === 'development' ? "" : "" // '/mlh5'
|
||||||
|
switch (that.videoInfo.videoType) {
|
||||||
|
case 1:
|
||||||
|
that.webURL = isProd + '/static/monitor/player.html?cameraUrl=' + res.result
|
||||||
|
.videoInfo
|
||||||
|
.hdFlvAddress
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
that.webURL = isProd + '/static/monitor/player.html?cameraUrl=' + res.result
|
||||||
|
.videoInfo
|
||||||
|
.url
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|||||||
BIN
static/ai-icon.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
static/ai-icon_active.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 668 B After Width: | Height: | Size: 856 B |
BIN
static/my-icon.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
static/my-icon_active.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.2 KiB |