This commit is contained in:
Teng 2025-09-09 17:44:16 +08:00
parent ede767d8ef
commit abf3ff4bbb
230 changed files with 1413 additions and 3653 deletions

View File

@ -13,7 +13,7 @@
<view class="title">退出登录</view>
<view class="card-font">
确定要注销155******76账户吗
确定要注销130******31账户吗
</view>
</view>
</view>
@ -53,8 +53,11 @@
}
const go = () => {
uni.setStorageSync('token', 1);
plus.runtime.quit();
// plus.runtime.quit();
uni.redirectTo({
url: '/pages/login/login'
});
}
</script>

View File

@ -2,7 +2,7 @@
<view class="move-circle" :style="containerStyle">
<image src="/static/index/keyimg/lunpan.png" class="move-circle-all" />
<view class="click-box-top" @click="handleClick(0)" />
<view class="click-box-left" @click="handleClick(3)" />
<view class="click-box-right" @click="handleClick(3)" />
<view class="click-box-bottom" @click="handleClick(2)" />
<view class="click-box-right" @click="handleClick(1)" />
</view>
@ -15,9 +15,9 @@ const props = defineProps({
/**
* 水平位置单位 rpx
*/
left: {
right: {
type: Number,
default: 0
default: 200
},
/**
* 垂直位置单位 rpx
@ -42,7 +42,7 @@ let resetTimer: number | null = null
//
const containerStyle = computed(() => {
const style: Record<string, string> = {
left: `${props.left}rpx`
right: `${props.right}rpx`
}
if (props.top !== undefined) {
style.top = `${props.top}rpx`
@ -84,21 +84,21 @@ function handleClick(dir: number) {
.click-box-top {
position: absolute;
top: 0;
left: 100rpx;
right: 100rpx;
width: 130rpx;
height: 120rpx;
}
.click-box-bottom {
position: absolute;
bottom: 0;
left: 100rpx;
right: 100rpx;
width: 130rpx;
height: 120rpx;
}
.click-box-left {
.click-box-right {
position: absolute;
bottom: 100rpx;
left: 0;
right: 0;
width: 98rpx;
height: 120rpx;
}

View File

@ -1,27 +1,27 @@
<template>
<view class="move-circle" :style="{ bottom: `${movebottom}rpx`, left: `${moveleft}rpx` }" @touchmove="onTouchMove"
<view class="move-circle" :style="{ bottom: `${movebottom}rpx`, right: `${moveright}rpx` }" @touchmove="onTouchMove"
@touchend="onPressEnd" @touchcancel="onPressEnd">
<!-- 长按持续波纹动画 -->
<view v-if="showShadow && pao" class="light-shadow ripple-loop" :style="{
left: shadow.x + 'px',
<!-- <view v-if="showShadow && pao" class="light-shadow ripple-loop" :style="{
right: shadow.x + 'px',
top: shadow.y + 'px',
transform: 'translate(-50%, -50%)'
}"></view>
}"></view> -->
<!-- 点击单次波纹动画 key 刷新 -->
<view v-if="showRippleOnce && pao" :key="rippleKey" class="light-shadow ripple-once" :style="{
left: shadow.x + 'px',
<!-- <view v-if="showRippleOnce && pao" :key="rippleKey" class="light-shadow ripple-once" :style="{
right: shadow.x + 'px',
top: shadow.y + 'px',
transform: 'translate(-50%, -50%)'
}" @animationend="onRippleAnimationEnd"></view>
}" @animationend="onRippleAnimationEnd"></view> -->
<image :src="!notext?`/static/index/newruler/direction_1.png`: `/static/index/newruler/suere.png`" v-show="type==-1 || type==4" class="move-circle-all" />
<image src="/static/index/camera/arrow1.png" v-show="type==-1 || type==4" class="move-circle-all" />
<!-- <image src="/static/index/newruler/direction_2.png" v-show="type==-2" class="move-circle-all" />
<image src="/static/index/newruler/direction_3.png" v-show="type==-3" class="move-circle-all" /> -->
<image :src="!notext?`/static/index/newruler/direction_3.png`: `/static/index/newruler/sure_2.png`" v-show="type==3" class="move-circle-all" />
<image :src="!notext?`/static/index/newruler/direction_5.png`: `/static/index/newruler/sure_4.png`" v-show="type==2" class="move-circle-all" />
<image :src="!notext?`/static/index/newruler/direction_4.png`: `/static/index/newruler/sure_3.png`" v-show="type==0" class="move-circle-all" />
<image :src="!notext?`/static/index/newruler/direction_2.png`: `/static/index/newruler/sure_1.png`" v-show="type==1" class="move-circle-all" />
<image src="/static/index/camera/arrow3.png" v-show="type==3" class="move-circle-all" />
<image src="/static/index/camera/arrow5.png" v-show="type==2" class="move-circle-all" />
<image src="/static/index/camera/arrow4.png" v-show="type==0" class="move-circle-all" />
<image src="/static/index/camera/arrow2.png" v-show="type==1" class="move-circle-all" />
<view class="pulse-circle" v-if="getblue" :key="pulseKey">
</view>
@ -55,7 +55,7 @@
const RADIUS = uni.upx2px(175)
const DIAMETER = uni.upx2px(350)
const LEFT = uni.upx2px(-50)
const right = uni.upx2px(-50)
const BOTTOM = uni.upx2px(100)
const windowHeight = uni.getSystemInfoSync().windowHeight
const TOP = windowHeight - BOTTOM - DIAMETER
@ -69,9 +69,9 @@
type: Number,
default: 0
},
moveleft: {
moveright: {
type: Number,
default: 0
default: 110
},
pao:{
type: Boolean,
@ -242,7 +242,7 @@
.move-circle {
position: absolute;
bottom: 0rpx;
left: 0rpx;
right: 0rpx;
width: 350rpx;
height: 350rpx;
display: flex;
@ -254,25 +254,19 @@
.click-box-top {
position: absolute;
top: 20rpx;
left: 70rpx;
right: 70rpx;
width: 220rpx;
height: 80rpx;
// background-color: red;
}
.click-box-bottom {
position: absolute;
bottom: 20rpx;
left: 70rpx;
right: 70rpx;
width: 220rpx;
height: 80rpx;
}
.click-box-left {
position: absolute;
bottom: 100rpx;
left: 0;
width: 90rpx;
height: 150rpx;
// background-color: red;
}
.click-box-right {
@ -281,6 +275,17 @@
right: 0;
width: 90rpx;
height: 150rpx;
// background-color: red;
}
.click-box-left {
position: absolute;
bottom: 100rpx;
left: 0;
width: 90rpx;
height: 150rpx;
// background-color: red;
}
.click-box-center {
@ -290,12 +295,14 @@
width: 90rpx;
height: 90rpx;
// background-color: red;
// background-color: red;
}
}
.move-circle-all {
width: 350rpx;
height: 350rpx;
// background-color: red;
}
.light-shadow {
@ -354,7 +361,7 @@
.pulse-circle {
position: absolute;
top: 50%;
left: 50%;
right: 50%;
transform: translate(-50%, -50%);
border-radius: 50%;
background: radial-gradient(circle, #03a4ff 0%, transparent 70%);

View File

@ -2,8 +2,8 @@
"name" : "护理单元",
"appid" : "__UNI__FB2D473",
"description" : "护理单元",
"versionName" : "1.6.0",
"versionCode" : 160,
"versionName" : "1.6.1",
"versionCode" : 161,
"transformPx" : false,
/* 5+App */
"app-plus" : {

View File

@ -53,23 +53,11 @@
"position": "absolute",
"left": "250px",
"top": "120px",
"width": "600px",
"height": "450px",
"width": "630px",
"height": "510px",
"background": "transparent"
}
}
// {
// "id": "optionSub",
// "path": "pages/option",
// "style": {
// "position": "absolute",
// "right": "110px",
// "bottom": "0px",
// "width": "170px",
// "height": "170px",
// "background": "transparent"
// }
// }
]
}
}

View File

@ -6,7 +6,7 @@ import request from '@/request/index.js'
// 查询服务类型
export const getServiceTree = () => {
return request({
url: '/nuIpadApi/nuConfigServiceCategory/getServiceTree',
url: `${uni.getStorageSync('serverUrl')}/nuIpadApi/nuConfigServiceCategory/getServiceTree`,
method: 'get',
})
}

View File

@ -926,6 +926,9 @@
onMounted(() => {
downdonghua.value = 0;
getServiceTree().then((res:any)=>{
console.log("res",res)
})
})
//
const lastTap = ref(0)

View File

@ -4,7 +4,7 @@
<MonitorView
ref="monitor"
init="5"
style="width: 600px;height: 450px;"
style="width: 630px;height: 510px;"
@onTel="handleTelEvent"
@onSnapShot="handleSnapShotEvent"
@onRecord="handleRecordEvent"
@ -28,7 +28,8 @@ export default {
snapshot: [],
record: [],
talk: []
}
},
suo:true,
};
},
onLoad() {
@ -36,9 +37,31 @@ export default {
const globalEvent = uni.requireNativePlugin && uni.requireNativePlugin("globalEvent");
if (globalEvent && globalEvent.addEventListener) {
globalEvent.addEventListener("myEvent", (e) => {
console.log("myEvent", e);
console.log(e)
if(e.recordUrl){
uni.showToast({
title: '录屏成功',
icon: 'success', // 'success' | 'loading' | 'none'
duration: 1500
})
}
if(e.snapShotUrl){
uni.showToast({
title: '截屏成功',
icon: 'success', // 'success' | 'loading' | 'none'
duration: 1500
})
}
if(this.suo && e.onVolumeChange){
if(e.onVolumeChange){
this.toggleVolume();
}
this.suo = false;
}
});
}
// this.doStopRecord()
// 在页面生命周期注册 uni.$on 事件,暴露给其他页面调用
uni.$on('monitor:doSnapshot', this.doSnapshot);
@ -428,9 +451,9 @@ export default {
<style>
.center-column {
width: 600px;
height: 450px;
border-radius: 30px;
width: 630px;
height: 510px;
/* border-radius: 30px; */
overflow: hidden;
}
</style>

View File

@ -192,6 +192,7 @@
isRel(form.username).then((res : any) => {
if (res.result !== null && res.result.serverUrl) {
uni.setStorageSync('serverUrl', res.result.serverUrl);
console.log("url",res.result.serverUrl)
time.value = Date.now();
getLoginCode(time.value).then((res : any) => {
@ -231,14 +232,19 @@
openbottom.value = true;
}
}
const jumpFirst = ref(false);
const canJump = () => {
if (loading.value === 2) {
setTimeout(() => {
jumpTo(`/pages/watch/index`)
}, 500)
} else {
loading.value++
if(!jumpFirst.value){
if (loading.value === 2) {
setTimeout(() => {
jumpTo(`/pages/watch/index`)
}, 500)
} else {
loading.value++
}
jumpFirst.value = true;
}
}
const loading = ref(0)
const huakuaisuccess = () => {
@ -282,11 +288,6 @@
if (uni.getStorageSync('appWgtVersion') != uni.getSystemInfoSync().appWgtVersion) {
showPopup.value = true;
}
init()
});
//
onShow(() => {
zyupgrade.value?.check_update();
if (uni.getStorageSync('token') && uni.getStorageSync('token') !== 1) {
if (loading.value === 2) {
setTimeout(() => {
@ -296,6 +297,12 @@
loading.value++
}
}
init()
});
//
onShow(() => {
zyupgrade.value?.check_update();
});
function init() {
@ -313,12 +320,12 @@
}
monitorModule.cloudLoginIn(loginfo, (r) => {
console.log("?????", r)
if (!loading.value) {
loading.value = true
} else {
if (loading.value === 2) {
setTimeout(() => {
jumpTo(`/pages/watch/index`)
}, 500)
} else {
loading.value++
}
})
}

View File

@ -116,7 +116,17 @@
<!-- <image style="width: 100%;height: 100%;" src="/static/index/watch/bgc.png" /> -->
<!-- <image style="width: 100rpx;height: 100rpx;position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);" src="/static/index/watch/play.png" @click="jumpToCeshi" /> -->
</view>
<view style="display: flex;margin-top: 20rpx;">
<view class="picture">
<view class="picture-card" v-for="(item,index) in downpicture" :key="index"
:style="{color:downtarget===index?'#1486EB':''}" @click="clickDownCard(index)">
<view class="bgc-card" :style="{background:downtarget===index?'#E2EDFC':''}">
<image style="width: 90rpx;height: 90rpx;"
:src="`/static/index/picture/${index}${downtarget===index?1:0}.png`" />
</view>
{{item}}
</view>
</view>
<!-- <view style="display: flex;margin-top: 20rpx;">
<view class="card-father">
<view class="up-title">
<view class="">
@ -129,12 +139,12 @@
<view class="small-bgc" style="margin-right: 20rpx;">
<image style="width: 100%;height: 100%;position: absolute;top: 0;left: 0;"
src="/static/index/watch/bgc.png" />
<!-- <image style="width: 50rpx;height: 50rpx;" src="/static/index/watch/play.png" /> -->
</view>
<view class="small-bgc">
<image style="width: 100%;height: 100%;position: absolute;top: 0;left: 0;"
src="/static/index/watch/bgc.png" />
<!-- <image style="width: 50rpx;height: 50rpx;" src="/static/index/watch/play.png" /> -->
</view>
</view>
@ -161,25 +171,24 @@
</view>
</view>
</view>
</view> -->
<view class="right-right">
<view class="red-kuang" v-if="typeNow===0">
<image style="width: 110rpx;height: 140rpx;margin-left: 40rpx;margin-top: -10rpx;"
<image style="width: 75rpx;height: 90rpx;margin-left: 40rpx;margin-top: -10rpx;"
src="/static/index/watch/laotai.png" />
<view class="">
<view
style="margin-left: 20rpx;display: flex;align-items: center;margin-bottom: 5rpx;margin-top: 25rpx;">
<view style="margin-left: 20rpx;display: flex;align-items: center;margin-bottom: 5rpx;">
<view class="font-weight">
王金凤
</view>
<view class="font-small" style="margin-left: 10rpx;">
<view class="font-small" style="margin-left: 30rpx;">
80
</view>
<view class="blue-bgc">
当日指令
</view>
</view>
<view class="font-small" style="margin-left: 20rpx;margin-top: 25rpx;">
<view class="font-small" style="margin-left: 20rpx;margin-top: 0rpx;">
入住时间2025.01.01
</view>
</view>
@ -233,55 +242,56 @@
待进行
</view>
</view>
<view class="juzhong">
<view class="juzhong" style="top: -120rpx;">
<donghua :width="`600rpx`" :height="`500rpx`" :links="blueArray" :playing="photoplay"
:loop="true" :interval="120" />
</view>
<view class="juzhong" style="z-index: 2;margin-top: 80rpx;">
<donghua :width="`400rpx`" :height="`250rpx`" :links="bluesmallArray" :playing="photoplay"
<view class="juzhong" style="z-index: 2;margin-top: 50rpx;">
<donghua :width="`300rpx`" :height="`200rpx`" :links="bluesmallArray" :playing="photoplay"
:loop="true" :interval="120" />
</view>
<image style="width: 480rpx;height: 350rpx;" src="/static/index/newindex/wendu/2.png" />
<view style="font-size: 38rpx;">
<image style="width: 300rpx;height: 200rpx;" src="/static/index/newindex/wendu/2.png" />
<view style="font-size: 25rpx;">
一级压疮防护
</view>
<view class="small-button">
<view class="gray-ball">
<image class="laba-img" src="/static/index/video/laba.png" />
</view>
<view class="gray-ball">
<image class="laba-img" src="/static/index/video/video.png" />
</view>
<view class="gray-ball">
<image class="laba-img" src="/static/index/video/txt.png" />
</view>
</view>
</view>
<view class="right-bottom">
<view style="display: flex;margin-left: 50rpx;padding-top: 30rpx;">
<image class="bottom-img" src="/static/index/newindex/rightmenu/2.png" />
<view style="margin-top: 10rpx;margin-left: 5rpx;">
协助执行
<view class="bottom-view">
<view v-for="(item,index) in cameraArray" class="button-father" @click="clickcamera(index)">
<view class="bottom-button"
:style="{backgroundColor:cameratarget.includes(index)?`#DDE9F0`:`` }">
<image style="width: 70%;height: 70%"
:src="`/static/index/camera/${index}${cameratarget.includes(index)?1:0}.png`" />
</view>
<view style="font-size: 25rpx;" :style="{color:cameratarget.includes(index)?`#0E86EA`:`` }">
{{item}}
</view>
</view>
<view style="display: flex;">
<view class="people-card" v-for="(item,index) in peopleArray" :key="index">
<image style="width: 60rpx;height: 60rpx;" :src="item.url" />
<view style="margin-left: 10rpx;">
<view class="jump-white" v-show="jumpopen">
<view style="display: flex;justify-content: space-around;height: 100rpx;width: 100%;align-items: center;">
<view class="">
清晰度
</view>
<image style="width: 40rpx;height: 40rpx" src="/static/index/camera/back.png" @click="jumpopen=false" />
</view>
<view class="jump-item" v-for="(item,index) in where" :key="index" @click="clickjump(index)" :style="{backgroundColor:wheretarget===index?'#E5E8EE':''}" >
<image style="width: 50rpx;height: 50rpx;margin-right: 10rpx;margin-left:-10rpx" :src="wheretarget===index?item.target:item.url" />
<view :style="{color:wheretarget===index?'#0E86EA':''}">
{{item.name}}
</view>
</view>
</view>
</view>
</view>
</view>
<specialDrawerVue ref="gobackdrawer" :circletarget="openright" @open="cleanandopen">
<!-- <specialDrawerVue ref="gobackdrawer" :circletarget="openright" @open="cleanandopen">
<bigroll ref="wheelRef" :opensecondmenu="opensecondmenu" @firstIndex="firstIndex"
@secondIndex="secondIndex" />
</specialDrawerVue>
</specialDrawerVue> -->
<arrowkeys @movecard="movecard" :getblue="getblue" :moveleft="5" />
<joysticknew @movecard="movecamera" v-show="!cameratarget.includes(5)" />
<!-- 自动更新组件 -->
<!-- <zy-update ref="zyupgrade" :noticeflag="true" theme="blue" :h5preview="false" oldversion="1.0.0"
:appstoreflag="true" :autocheckupdate="true"></zy-update> -->
@ -296,17 +306,11 @@
import specialDrawerVue from '../../component/public/specialDrawer.vue';
import bigroll from './drawer/index.vue';
import { movedirection } from './api/lunpan.js'
import joysticknew from '@/component/public/newgame/joysticknew.vue';
const cameraArray = ref([])
onLoad(() => {
const globalEvent = uni.requireNativePlugin("globalEvent");
globalEvent.addEventListener("myEvent", (e) => {
console.log("myEvent", e);
uni.showToast({
title: "myEvent: " + JSON.stringify(e),
duration: 2000,
});
});
cameraArray.value = cameraSmall
})
const zyupgrade = ref(null);
const menuIndex = ref(-1);
@ -318,13 +322,86 @@
const topnum = ref(0); // scroll-top (px)
const itemHeight = 100; // (px)
const containerHeight = 400; // scroll-view (px)
const wheretarget = ref(3);
const where = [
{
name:"左右翻转",
url:"/static/index/camera/800.png",
target:"/static/index/camera/801.png",
},
{
name:"上下翻转",
url:"/static/index/camera/810.png",
target:"/static/index/camera/811.png",
},
{
name:"中心翻转",
url:"/static/index/camera/820.png",
target:"/static/index/camera/821.png",
},
{
name:"不翻转",
url:"/static/index/camera/830.png",
target:"/static/index/camera/831.png",
},
]
const downpicture = [
"原图",
"全景拉伸",
"四分屏",
"180°全景",
"360°全景"
]
const cameratarget = ref([]);
const cameraBig = [
"截图",
"录制",
"对讲",
"静音",
"预警",
"更多",
"图片",
"视频",
"清晰度",
"翻转",
]
const cameraSmall = [
"截图",
"录制",
"对讲",
"静音",
"预警",
"更多",
]
const downtarget = ref(0)
const jumpToCeshi = () => {
uni.navigateTo({
url: '/pages/denglu'
})
}
const clickDownCard = (index : number) => {
downtarget.value = index;
switch (index) {
case 0:
uni.$emit('monitor:switchDisplay', 0)
break
case 1:
uni.$emit('monitor:switchDisplay', 4)
break
case 2:
uni.$emit('monitor:switchDisplay', 1)
break
case 3:
uni.$emit('monitor:switchDisplay', 2)
break
case 4:
uni.$emit('monitor:switchDisplay', 3)
break
}
}
const first = ref(5);
const second = ref(0);
const firstIndex = (index : number) => {
@ -610,7 +687,9 @@
openfirstmenu.value = true;
opensecondmenu.value = false
}
const movecamera = (type : number) => {
handleKey(type)
}
const movecard = (type : number) => {
if (leftTargetIndex.value !== -1) {
@ -672,7 +751,7 @@
break
case 1:
if (typeNow.value < typeArray.value.length - 2) {
console.log("???", typeArray.value.length)
// console.log("???", typeArray.value.length)
typeNow.value++
topTargetIndex.value = typeNow.value
@ -832,6 +911,139 @@
}
}
}
const removeTimers = new Map<number, ReturnType<typeof setTimeout>>();
onBeforeUnmount(() => {
for (const t of removeTimers.values()) {
clearTimeout(t)
}
removeTimers.clear()
})
const removeIndexOnce = (index : number) => {
const pos = cameratarget.value.indexOf(index)
if (pos !== -1) {
cameratarget.value.splice(pos, 1) // pos 1
}
}
const jumpopen = ref(false);
const clickcamera = (index : number) => {
switch (index) {
case 0:
//
uni.$emit('monitor:doSnapshot')
// push
if (!cameratarget.value.includes(index)) {
cameratarget.value.push(index)
}
//
if (removeTimers.has(index)) {
clearTimeout(removeTimers.get(index)!)
}
// 1s
const timerId = setTimeout(() => {
const pos = cameratarget.value.indexOf(index)
if (pos !== -1) {
cameratarget.value.splice(pos, 1)
}
removeTimers.delete(index)
}, 500)
removeTimers.set(index, timerId)
break
case 1:
if (cameratarget.value.includes(index)) {
uni.$emit('monitor:stopRecord');
removeIndexOnce(index)
} else {
uni.$emit('monitor:startRecord');
cameratarget.value.push(index)
}
break
case 2:
if (cameratarget.value.includes(index)) {
uni.$emit('monitor:stopTalk');
removeIndexOnce(index)
} else {
uni.$emit('monitor:openTalk');
cameratarget.value.push(index)
}
break
case 3:
if (cameratarget.value.includes(index)) {
uni.$emit('monitor:toggleVolume');
removeIndexOnce(index)
} else {
uni.$emit('monitor:toggleVolume');
cameratarget.value.push(index)
}
break
case 4:
if (cameratarget.value.includes(index)) {
uni.$emit('monitor:stopAlarm')
removeIndexOnce(index)
} else {
uni.$emit('monitor:startAlarm')
cameratarget.value.push(index)
}
break
case 5:
if (cameratarget.value.includes(index)) {
cameraArray.value = cameraSmall
removeIndexOnce(index)
} else {
cameraArray.value = cameraBig
cameratarget.value.push(index)
}
jumpopen.value = false;
break
case 6:
if (cameratarget.value.includes(index)) {
removeIndexOnce(index)
} else {
cameratarget.value.push(index)
}
break
case 7:
if (cameratarget.value.includes(index)) {
removeIndexOnce(index)
} else {
cameratarget.value.push(index)
}
break
case 8:
if (cameratarget.value.includes(index)) {
uni.$emit('monitor:changeQuality');
removeIndexOnce(index)
} else {
uni.$emit('monitor:changeQuality');
cameratarget.value.push(index)
}
break
case 9:
jumpopen.value = true
// if (cameratarget.value.includes(index)) {
// removeIndexOnce(index)
// } else {
// cameratarget.value.push(index)
// }
break
}
}
const clickjump = (index:number) => {
wheretarget.value = index;
if(index===3){
uni.$emit('monitor:flipImage', 6)
removeIndexOnce(9)
}else{
uni.$emit('monitor:flipImage', index)
cameratarget.value.push(9)
}
}
// moveFirstUp / moveFirstDown
const moveUpDebounced = useThrottle(() => wheelRef.value?.moveFirstUp(), 400)
@ -981,9 +1193,7 @@
activeDir = type
//
movedirection(dirCode, 1).then((res : any) => {
console.log("start", dirCode, res)
})
movedirection(dirCode, 1)
// stop
if (stopTimers[type]) clearTimeout(stopTimers[type])
@ -1108,6 +1318,7 @@
margin-top: 100rpx;
position: relative;
display: flex;
// background-color: red;
// margin-bottom: 50rpx;
.menu {
@ -1165,7 +1376,7 @@
.big-bgc {
// margin-top: -50rpx;
margin-top: 30rpx;
margin-top: 20rpx;
width: 1250rpx;
height: 913rpx;
border-radius: 50rpx;
@ -1230,9 +1441,9 @@
.red-kuang {
margin-top: 0rpx;
margin-left: 50rpx;
width: 550rpx;
height: 190rpx;
margin-left: 90rpx;
width: 510rpx;
height: 120rpx;
border-radius: 50rpx;
position: relative;
display: flex;
@ -1241,27 +1452,27 @@
.blue-bgc {
width: 140rpx;
height: 60rpx;
width: 120rpx;
height: 50rpx;
display: flex;
justify-content: center;
align-items: center;
z-index: 1;
font-size: 26rpx;
font-size: 23rpx;
background-color: rgba(248, 249, 250, 0.5);
color: #017DE9;
border-radius: 20rpx;
margin-left: 10rpx;
margin-left: 30rpx;
}
.font-weight {
font-size: 32rpx;
font-size: 30rpx;
font-weight: 600;
}
.font-small {
font-size: 30rpx;
font-size: 25rpx;
}
}
@ -1269,14 +1480,14 @@
.states-father {
display: flex;
margin-top: 30rpx;
margin-left: 50rpx;
margin-top: 20rpx;
margin-left: 90rpx;
width: 100%;
.states {
width: 170rpx;
width: 157rpx;
margin-right: 15rpx;
height: 80rpx;
height: 60rpx;
border-radius: 60rpx;
background-color: rgba(226, 227, 231, 0.5);
display: flex;
@ -1293,11 +1504,50 @@
}
}
.bottom-view {
margin-left: 90rpx;
margin-top: 20rpx;
width: 510rpx;
height: 690rpx;
border-radius: 50rpx;
background-color: rgba(226, 227, 231, 0.5);
position: relative;
display: flex;
flex-wrap: wrap;
overflow: hidden;
align-items: flex-start;
/* 关键:禁用 stretch子项按自己的高度 */
align-content: flex-start;
/* 多行时顶端对齐(可选) */
.button-father {
margin-top: 20rpx;
margin-bottom: 0;
margin-left: 45rpx;
// height: 150rpx;
// margin-right: 34rpx;
// background-color: red;
text-align: center;
.bottom-button {
background-color: #F2F2F4;
display: flex;
justify-content: center;
align-items: center;
width: 110rpx;
height: 110rpx;
border: 1rpx solid #CDD3DD;
border-radius: 35rpx;
margin-bottom: 5rpx;
}
}
}
.big-view {
margin-left: 50rpx;
margin-top: 30rpx;
width: 550rpx;
height: 625rpx;
margin-left: 90rpx;
margin-top: 20rpx;
width: 510rpx;
height: 340rpx;
border-radius: 50rpx;
background-color: rgba(226, 227, 231, 0.5);
position: relative;
@ -1308,8 +1558,8 @@
.font-weight {
font-size: 50rpx;
margin-top: 45rpx;
font-size: 40rpx;
margin-top: 30rpx;
font-weight: 600;
}
@ -1329,7 +1579,7 @@
.small-button {
// width: 70%;
margin-top: 20rpx;
margin-top: 10rpx;
height: 70rpx;
display: flex;
// justify-content: space-between;
@ -1548,4 +1798,51 @@
position: relative;
z-index: 1;
}
.picture {
display: flex;
margin-top: 150rpx;
.picture-card {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin-left: 20rpx;
margin-right: 10rpx;
width: 200rpx;
.bgc-card {
width: 100%;
height: 130rpx;
background-color: #EAEAEC;
border-radius: 30rpx;
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 10rpx;
}
}
}
.jump-white {
position: absolute;
bottom: 20rpx;
left: 50rpx;
width: 300rpx;
height: 400rpx;
background-color: #fff;
border-radius: 30rpx;
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.1)
}
.jump-item{
margin: 10rpx 10rpx;
height: 60rpx;
justify-content: center;
width: 93%;
display: flex;
border-radius: 20rpx;
align-items: center;
}
</style>

BIN
static/index/camera/00.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/index/camera/01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/index/camera/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/index/camera/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/index/camera/20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/index/camera/21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/index/camera/30.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
static/index/camera/31.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/index/camera/40.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
static/index/camera/41.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
static/index/camera/50.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 B

BIN
static/index/camera/51.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

BIN
static/index/camera/60.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
static/index/camera/61.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
static/index/camera/70.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
static/index/camera/71.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
static/index/camera/80.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/index/camera/81.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
static/index/camera/90.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
static/index/camera/91.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
static/index/picture/00.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
static/index/picture/01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
static/index/picture/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
static/index/picture/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
static/index/picture/20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/index/picture/21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/index/picture/30.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
static/index/picture/31.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
static/index/picture/40.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
static/index/picture/41.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -1,10 +0,0 @@
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
export {
_export_sfc as _
};

View File

@ -1,11 +1,5 @@
Promise.resolve("./pages/ceshianzhuo.js").then((res) => {
res();
});
Promise.resolve("./pages/camera.js").then((res) => {
res();
});
Promise.resolve("./pages/option.js").then((res) => {
res();
});
Promise.resolve("./app.css.js").then(() => {
});

View File

@ -1,7 +1,22 @@
import { r as requireNativePlugin, f as formatAppLog } from "../uni-app.es.js";
import { resolveComponent, openBlock, createElementBlock, createElementVNode, createVNode } from "vue";
import { _ as _export_sfc } from "../_plugin-vue_export-helper.js";
const _style_0 = { "center-column": { "": { "width": 600, "height": 450, "borderRadius": 30, "overflow": "hidden" } } };
function requireNativePlugin(name) {
return weex.requireModule(name);
}
function formatAppLog(type, filename, ...args) {
if (uni.__log__) {
uni.__log__(type, filename, ...args);
} else {
console[type].apply(console, [...args, filename]);
}
}
const _style_0 = { "center-column": { "": { "width": 630, "height": 510, "overflow": "hidden" } } };
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
const _sfc_main = {
data() {
return {
@ -18,14 +33,37 @@ const _sfc_main = {
snapshot: [],
record: [],
talk: []
}
},
suo: true
};
},
onLoad() {
const globalEvent = requireNativePlugin && requireNativePlugin("globalEvent");
if (globalEvent && globalEvent.addEventListener) {
globalEvent.addEventListener("myEvent", (e) => {
formatAppLog("log", "at pages/camera.nvue:39", "myEvent", e);
formatAppLog("log", "at pages/camera.nvue:40", e);
if (e.recordUrl) {
uni.showToast({
title: "录屏成功",
icon: "success",
// 'success' | 'loading' | 'none'
duration: 1500
});
}
if (e.snapShotUrl) {
uni.showToast({
title: "截屏成功",
icon: "success",
// 'success' | 'loading' | 'none'
duration: 1500
});
}
if (this.suo && e.onVolumeChange) {
if (e.onVolumeChange) {
this.toggleVolume();
}
this.suo = false;
}
});
}
uni.$on("monitor:doSnapshot", this.doSnapshot);
@ -60,27 +98,27 @@ const _sfc_main = {
methods: {
/* ------------------ 原有功能 ------------------ */
handleTelEvent(event) {
formatAppLog("log", "at pages/camera.nvue:79", "Tel event detail:", event.detail);
formatAppLog("log", "at pages/camera.nvue:102", "Tel event detail:", event.detail);
},
switchDisplay(mode) {
formatAppLog("log", "at pages/camera.nvue:84", "zzzzz", mode);
formatAppLog("log", "at pages/camera.nvue:107", "zzzzz", mode);
this.$refs.monitor && this.$refs.monitor.switchDisplayModeFragment(mode);
},
startAlarm() {
this.isAlarming = true;
this.$refs.monitor.startOrStopManualAlarm(this.isAlarming, (res) => {
formatAppLog("log", "at pages/camera.nvue:91", "startAlarm callback:", res);
formatAppLog("log", "at pages/camera.nvue:114", "startAlarm callback:", res);
});
},
stopAlarm() {
this.isAlarming = false;
this.$refs.monitor.startOrStopManualAlarm(this.isAlarming, (res) => {
formatAppLog("log", "at pages/camera.nvue:97", "stopAlarm callback:", res);
formatAppLog("log", "at pages/camera.nvue:120", "stopAlarm callback:", res);
});
},
flipImage(type) {
this.$refs.monitor.changeImageSwitch(type, (res) => {
formatAppLog("log", "at pages/camera.nvue:103", "flipImage callback:", res);
formatAppLog("log", "at pages/camera.nvue:126", "flipImage callback:", res);
});
},
resumeOrPause() {
@ -111,12 +149,12 @@ const _sfc_main = {
}
try {
this.$refs.monitor.snapShot((res) => {
formatAppLog("log", "at pages/camera.nvue:143", "snapShot callback:", res);
formatAppLog("log", "at pages/camera.nvue:166", "snapShot callback:", res);
this._handleSnapshotResultFromNative(res, payload.reqId);
});
uni.showToast({ title: "正在截屏...", icon: "none", duration: 800 });
} catch (err) {
formatAppLog("error", "at pages/camera.nvue:148", "snapShot 调用失败", err);
formatAppLog("error", "at pages/camera.nvue:171", "snapShot 调用失败", err);
uni.showToast({ title: "snapShot 调用失败", icon: "none" });
if (payload.reqId) {
uni.$emit(`monitor:response:${payload.reqId}`, { ok: false, error: "snapShot_call_failed", detail: String(err) });
@ -135,7 +173,7 @@ const _sfc_main = {
}
try {
this.$refs.monitor.startRecord((res) => {
formatAppLog("log", "at pages/camera.nvue:168", "startRecord callback:", res);
formatAppLog("log", "at pages/camera.nvue:191", "startRecord callback:", res);
if (payload.reqId) {
uni.$emit(`monitor:response:${payload.reqId}`, { ok: true, res });
}
@ -143,7 +181,7 @@ const _sfc_main = {
this.isRecording = true;
uni.showToast({ title: "录屏已开始", icon: "none" });
} catch (err) {
formatAppLog("error", "at pages/camera.nvue:177", "startRecord 调用失败", err);
formatAppLog("error", "at pages/camera.nvue:200", "startRecord 调用失败", err);
uni.showToast({ title: "startRecord 调用失败", icon: "none" });
if (payload.reqId) {
uni.$emit(`monitor:response:${payload.reqId}`, { ok: false, error: "startRecord_call_failed", detail: String(err) });
@ -165,11 +203,11 @@ const _sfc_main = {
}
try {
this.$refs.monitor.stopRecord((res) => {
formatAppLog("log", "at pages/camera.nvue:203", "stopRecord callback:", res);
formatAppLog("log", "at pages/camera.nvue:226", "stopRecord callback:", res);
this._handleRecordResultFromNative(res, payload.reqId);
});
} catch (err) {
formatAppLog("error", "at pages/camera.nvue:208", "stopRecord 调用失败", err);
formatAppLog("error", "at pages/camera.nvue:231", "stopRecord 调用失败", err);
uni.showToast({ title: "stopRecord 调用失败", icon: "none" });
if (payload.reqId) {
uni.$emit(`monitor:response:${payload.reqId}`, { ok: false, error: "stopRecord_call_failed", detail: String(err) });
@ -191,7 +229,7 @@ const _sfc_main = {
}
try {
this.$refs.monitor.openTalk((res) => {
formatAppLog("log", "at pages/camera.nvue:232", "openTalk callback:", res);
formatAppLog("log", "at pages/camera.nvue:255", "openTalk callback:", res);
if (payload.reqId) {
uni.$emit(`monitor:response:${payload.reqId}`, { ok: true, res });
}
@ -199,7 +237,7 @@ const _sfc_main = {
this.isTalking = true;
uni.showToast({ title: "尝试建立对讲连接...", icon: "none" });
} catch (err) {
formatAppLog("error", "at pages/camera.nvue:241", "openTalk 调用失败", err);
formatAppLog("error", "at pages/camera.nvue:264", "openTalk 调用失败", err);
uni.showToast({ title: "openTalk 调用失败", icon: "none" });
if (payload.reqId) {
uni.$emit(`monitor:response:${payload.reqId}`, { ok: false, error: "openTalk_call_failed", detail: String(err) });
@ -218,14 +256,14 @@ const _sfc_main = {
}
try {
this.$refs.monitor.stopTalk((res) => {
formatAppLog("log", "at pages/camera.nvue:261", "stopTalk callback:", res);
formatAppLog("log", "at pages/camera.nvue:284", "stopTalk callback:", res);
if (payload.reqId) {
uni.$emit(`monitor:response:${payload.reqId}`, { ok: true, res });
}
});
this.isTalking = false;
} catch (err) {
formatAppLog("error", "at pages/camera.nvue:268", "stopTalk 调用失败", err);
formatAppLog("error", "at pages/camera.nvue:291", "stopTalk 调用失败", err);
uni.showToast({ title: "stopTalk 调用失败", icon: "none" });
if (payload.reqId) {
uni.$emit(`monitor:response:${payload.reqId}`, { ok: false, error: "stopTalk_call_failed", detail: String(err) });
@ -236,19 +274,19 @@ const _sfc_main = {
// 处理来自模板 @onSnapShot 的事件event.detail
handleSnapShotEvent(event) {
const payload = event && event.detail ? event.detail : event;
formatAppLog("log", "at pages/camera.nvue:281", "onSnapShot event:", payload);
formatAppLog("log", "at pages/camera.nvue:304", "onSnapShot event:", payload);
this._handleSnapshotResultFromNative(payload);
},
// 处理来自模板 @onRecord 的事件event.detail
handleRecordEvent(event) {
const payload = event && event.detail ? event.detail : event;
formatAppLog("log", "at pages/camera.nvue:289", "onRecord event:", payload);
formatAppLog("log", "at pages/camera.nvue:312", "onRecord event:", payload);
this._handleRecordResultFromNative(payload);
},
// 处理来自模板 @onTalkStatus 的事件
handleTalkEvent(event) {
const payload = event && event.detail ? event.detail : event;
formatAppLog("log", "at pages/camera.nvue:296", "onTalkStatus event:", payload);
formatAppLog("log", "at pages/camera.nvue:319", "onTalkStatus event:", payload);
const status = payload && payload.talkStatus;
const tips = payload && payload.tips;
uni.$emit("monitor:talk:status", payload);
@ -292,7 +330,7 @@ const _sfc_main = {
let payload = res;
if (res.detail)
payload = res.detail;
formatAppLog("log", "at pages/camera.nvue:349", "snapshot payload normalized:", payload);
formatAppLog("log", "at pages/camera.nvue:372", "snapshot payload normalized:", payload);
if (reqIdFromCallback) {
uni.$emit(`monitor:response:${reqIdFromCallback}`, { ok: !!payload.snapShotResult, payload });
}
@ -312,7 +350,7 @@ const _sfc_main = {
} else {
const err = payload.snapShotErrorCode || payload.error || "unknown";
uni.showToast({ title: "截图失败: " + err, icon: "none", duration: 2e3 });
formatAppLog("warn", "at pages/camera.nvue:376", "snapshot failed reason:", err, payload);
formatAppLog("warn", "at pages/camera.nvue:399", "snapshot failed reason:", err, payload);
}
},
_handleRecordResultFromNative(res, reqIdFromCallback = null) {
@ -327,7 +365,7 @@ const _sfc_main = {
let payload = res;
if (res.detail)
payload = res.detail;
formatAppLog("log", "at pages/camera.nvue:392", "record payload normalized:", payload);
formatAppLog("log", "at pages/camera.nvue:415", "record payload normalized:", payload);
if (reqIdFromCallback) {
uni.$emit(`monitor:response:${reqIdFromCallback}`, { ok: !!(payload.recordUrl || payload.snapShotResult), payload });
}
@ -341,11 +379,11 @@ const _sfc_main = {
if (payload.recordUrl) {
uni.showToast({ title: "录屏完成", icon: "success", duration: 1400 });
this.isRecording = false;
formatAppLog("log", "at pages/camera.nvue:413", "录屏地址:", payload.recordUrl);
formatAppLog("log", "at pages/camera.nvue:436", "录屏地址:", payload.recordUrl);
} else if (payload.recordFailedReason) {
uni.showToast({ title: "录屏失败: " + payload.recordFailedReason, icon: "none", duration: 2e3 });
this.isRecording = false;
formatAppLog("warn", "at pages/camera.nvue:417", "record failed reason:", payload.recordFailedReason);
formatAppLog("warn", "at pages/camera.nvue:440", "record failed reason:", payload.recordFailedReason);
} else {
if (payload.snapShotResult === true) {
uni.showToast({ title: "录屏操作已完成(返回未知)", icon: "none" });
@ -368,7 +406,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
createVNode(_component_MonitorView, {
ref: "monitor",
init: "5",
style: { "width": "600px", "height": "450px" },
style: { "width": "630px", "height": "510px" },
onOnTel: $options.handleTelEvent,
onOnSnapShot: $options.handleSnapShotEvent,
onOnRecord: $options.handleRecordEvent,

View File

@ -1,551 +0,0 @@
import { r as requireNativePlugin, f as formatAppLog } from "../uni-app.es.js";
import { resolveComponent, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, createTextVNode } from "vue";
import { _ as _export_sfc } from "../_plugin-vue_export-helper.js";
const _style_0 = { "center-column": { "": { "display": "flex", "flexDirection": "column", "alignItems": "center" } }, "button-group": { "": { "display": "flex", "flexDirection": "row", "flexWrap": "wrap", "justifyContent": "center", "marginTop": 40, "width": 620 } }, "button": { "": { "marginTop": 6, "marginRight": 6, "marginBottom": 6, "marginLeft": 6, "paddingTop": 8, "paddingRight": 12, "paddingBottom": 8, "paddingLeft": 12, "minWidth": "120px", "height": 44, "borderRadius": 6, "borderWidth": 1, "borderStyle": "solid", "borderColor": "#dddddd", "backgroundColor": "#ffffff" } } };
const _sfc_main = {
data() {
return {
phoneNumber: "1234567890",
isAlarming: false,
isRecording: false,
// 录屏状态
isTalking: false
// 对讲状态
};
},
onLoad() {
const globalEvent = requireNativePlugin && requireNativePlugin("globalEvent");
if (globalEvent && globalEvent.addEventListener) {
globalEvent.addEventListener("myEvent", (e) => {
formatAppLog("log", "at pages/ceshianzhuo.nvue:73", "myEvent", e);
});
}
},
methods: {
/* ------------------ 原有功能 ------------------ */
handleTelEvent(event) {
formatAppLog("log", "at pages/ceshianzhuo.nvue:80", "Tel event detail:", event.detail);
},
switchDisplay(mode) {
this.$refs.monitor && this.$refs.monitor.switchDisplayModeFragment(mode);
},
startAlarm() {
this.isAlarming = true;
this.$refs.monitor.startOrStopManualAlarm(this.isAlarming, (res) => {
formatAppLog("log", "at pages/ceshianzhuo.nvue:91", "startAlarm callback:", res);
});
},
stopAlarm() {
this.isAlarming = false;
this.$refs.monitor.startOrStopManualAlarm(this.isAlarming, (res) => {
formatAppLog("log", "at pages/ceshianzhuo.nvue:97", "stopAlarm callback:", res);
});
},
flipImage(type) {
this.$refs.monitor.changeImageSwitch(type, (res) => {
formatAppLog("log", "at pages/ceshianzhuo.nvue:103", "flipImage callback:", res);
});
},
resumeOrPause() {
this.$refs.monitor.resumeOrPause && this.$refs.monitor.resumeOrPause();
},
changeQuality() {
this.$refs.monitor.changeQuality && this.$refs.monitor.changeQuality();
},
test() {
this.$refs.monitor && this.$refs.monitor.test && this.$refs.monitor.test();
},
/* ------------------ 新增:截图/录屏/对讲 调用方法 ------------------ */
// 1. 截图(调用)
doSnapshot() {
if (!this.$refs.monitor || !this.$refs.monitor.snapShot) {
uni.showToast({
title: "组件不支持 snapShot()",
icon: "none"
});
return;
}
try {
this.$refs.monitor.snapShot((res) => {
formatAppLog("log", "at pages/ceshianzhuo.nvue:134", "snapShot callback:", res);
this._handleSnapshotResultFromNative(res);
});
uni.showToast({
title: "正在截屏...",
icon: "none",
duration: 800
});
} catch (err) {
formatAppLog("error", "at pages/ceshianzhuo.nvue:143", "snapShot 调用失败", err);
uni.showToast({
title: "snapShot 调用失败",
icon: "none"
});
}
},
// 2. 开始录屏(调用)
doStartRecord() {
if (!this.$refs.monitor || !this.$refs.monitor.startRecord) {
uni.showToast({
title: "组件不支持 startRecord()",
icon: "none"
});
return;
}
try {
this.$refs.monitor.startRecord((res) => {
formatAppLog("log", "at pages/ceshianzhuo.nvue:163", "startRecord callback:", res);
});
this.isRecording = true;
uni.showToast({
title: "录屏已开始",
icon: "none"
});
} catch (err) {
formatAppLog("error", "at pages/ceshianzhuo.nvue:171", "startRecord 调用失败", err);
uni.showToast({
title: "startRecord 调用失败",
icon: "none"
});
}
},
// 3. 停止录屏(调用)
doStopRecord() {
if (!this.$refs.monitor || !this.$refs.monitor.stopRecord) {
uni.showToast({
title: "组件不支持 stopRecord()",
icon: "none"
});
return;
}
try {
this.$refs.monitor.stopRecord((res) => {
formatAppLog("log", "at pages/ceshianzhuo.nvue:191", "stopRecord callback:", res);
this._handleRecordResultFromNative(res);
});
} catch (err) {
formatAppLog("error", "at pages/ceshianzhuo.nvue:196", "stopRecord 调用失败", err);
uni.showToast({
title: "stopRecord 调用失败",
icon: "none"
});
}
},
// 4. 开始对讲(调用)
doOpenTalk() {
if (!this.$refs.monitor || !this.$refs.monitor.openTalk) {
uni.showToast({
title: "组件不支持 openTalk()",
icon: "none"
});
return;
}
try {
this.$refs.monitor.openTalk((res) => {
formatAppLog("log", "at pages/ceshianzhuo.nvue:215", "openTalk callback:", res);
});
this.isTalking = true;
uni.showToast({
title: "尝试建立对讲连接...",
icon: "none"
});
} catch (err) {
formatAppLog("error", "at pages/ceshianzhuo.nvue:225", "openTalk 调用失败", err);
uni.showToast({
title: "openTalk 调用失败",
icon: "none"
});
}
},
// 5. 停止对讲(调用)
doStopTalk() {
if (!this.$refs.monitor || !this.$refs.monitor.stopTalk) {
uni.showToast({
title: "组件不支持 stopTalk()",
icon: "none"
});
return;
}
try {
this.$refs.monitor.stopTalk((res) => {
formatAppLog("log", "at pages/ceshianzhuo.nvue:244", "stopTalk callback:", res);
});
this.isTalking = false;
} catch (err) {
formatAppLog("error", "at pages/ceshianzhuo.nvue:250", "stopTalk 调用失败", err);
uni.showToast({
title: "stopTalk 调用失败",
icon: "none"
});
}
},
/* ------------------ 事件回调处理(来自原生推送的事件) ------------------ */
// 处理来自模板 @onSnapShot 的事件event.detail
handleSnapShotEvent(event) {
formatAppLog("log", "at pages/ceshianzhuo.nvue:263", "onSnapShot event:", event && event.detail ? event.detail : event);
this._handleSnapshotResultFromNative(event && event.detail ? event.detail : event);
},
// 处理来自模板 @onRecord 的事件event.detail
handleRecordEvent(event) {
formatAppLog("log", "at pages/ceshianzhuo.nvue:270", "onRecord event:", event && event.detail ? event.detail : event);
this._handleRecordResultFromNative(event && event.detail ? event.detail : event);
},
// 处理来自模板 @onTalkStatus 的事件
handleTalkEvent(event) {
const payload = event && event.detail ? event.detail : event;
formatAppLog("log", "at pages/ceshianzhuo.nvue:278", "onTalkStatus event:", payload);
const status = payload && payload.talkStatus;
const tips = payload && payload.tips;
switch ((status || "").toLowerCase()) {
case "loading":
uni.showToast({
title: tips || "对讲连接中...",
icon: "none"
});
this.isTalking = true;
break;
case "playing":
uni.showToast({
title: tips || "对讲已连接",
icon: "none"
});
this.isTalking = true;
break;
case "stopped":
uni.showToast({
title: tips || "对讲已停止",
icon: "none"
});
this.isTalking = false;
break;
case "failed":
uni.showToast({
title: tips || "对讲失败",
icon: "none"
});
this.isTalking = false;
break;
default:
uni.showToast({
title: tips || "对讲状态: " + (status || "unknown"),
icon: "none"
});
break;
}
},
/* ------------------ 原生结果的内部处理函数(统一处理 callback / event ------------------ */
_handleSnapshotResultFromNative(res) {
if (!res) {
uni.showToast({
title: "截图没有返回数据",
icon: "none"
});
return;
}
let payload = res;
if (res.detail)
payload = res.detail;
formatAppLog("log", "at pages/ceshianzhuo.nvue:337", "snapshot payload normalized:", payload);
if (payload.snapShotResult === true || payload.snapShotResult === "true") {
const url = payload.snapShotUrl || payload.snapShotPath || payload.url;
uni.showToast({
title: "截图成功",
icon: "success",
duration: 1200
});
formatAppLog("log", "at pages/ceshianzhuo.nvue:345", "截图地址:", url);
if (url) {
uni.previewImage({
urls: [url]
});
}
} else {
const err = payload.snapShotErrorCode || payload.error || "unknown";
uni.showToast({
title: "截图失败: " + err,
icon: "none",
duration: 2e3
});
formatAppLog("warn", "at pages/ceshianzhuo.nvue:360", "snapshot failed reason:", err, payload);
}
},
_handleRecordResultFromNative(res) {
if (!res) {
uni.showToast({
title: "录屏没有返回数据",
icon: "none"
});
this.isRecording = false;
return;
}
let payload = res;
if (res.detail)
payload = res.detail;
formatAppLog("log", "at pages/ceshianzhuo.nvue:377", "record payload normalized:", payload);
if (payload.recordUrl) {
uni.showToast({
title: "录屏完成",
icon: "success",
duration: 1400
});
formatAppLog("log", "at pages/ceshianzhuo.nvue:386", "录屏地址:", payload.recordUrl);
this.isRecording = false;
} else if (payload.recordFailedReason) {
uni.showToast({
title: "录屏失败: " + payload.recordFailedReason,
icon: "none",
duration: 2e3
});
formatAppLog("warn", "at pages/ceshianzhuo.nvue:395", "record failed reason:", payload.recordFailedReason);
this.isRecording = false;
} else {
if (payload.snapShotResult === true) {
uni.showToast({
title: "录屏操作已完成(返回未知)",
icon: "none"
});
}
this.isRecording = false;
}
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_MonitorView = resolveComponent("MonitorView");
const _component_MonitorControlView = resolveComponent("MonitorControlView");
const _component_button = resolveComponent("button");
return openBlock(), createElementBlock("scroll-view", {
scrollY: true,
showScrollbar: true,
enableBackToTop: true,
bubble: "true",
style: { flexDirection: "column" }
}, [
createElementVNode("div", { class: "center-column" }, [
createVNode(_component_MonitorView, {
ref: "monitor",
init: "5",
style: { "width": "300px", "height": "200px", "margin-top": "20px" },
onOnTel: $options.handleTelEvent,
onOnSnapShot: $options.handleSnapShotEvent,
onOnRecord: $options.handleRecordEvent,
onOnTalkStatus: $options.handleTalkEvent
}, null, 8, ["onOnTel", "onOnSnapShot", "onOnRecord", "onOnTalkStatus"]),
createElementVNode("view", { style: { "display": "flex", "flex-direction": "row", "align-items": "flex-start" } }, [
createVNode(_component_MonitorControlView, {
ref: "control",
init: "5",
style: { "width": "300px", "height": "300px", "margin-top": "20px" }
}, null, 512),
createElementVNode("div", { class: "button-group" }, [
createVNode(_component_button, {
class: "button",
onClick: _cache[0] || (_cache[0] = ($event) => $options.switchDisplay(0))
}, {
default: withCtx(() => [
createTextVNode("原图")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[1] || (_cache[1] = ($event) => $options.switchDisplay(1))
}, {
default: withCtx(() => [
createTextVNode("四分屏")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[2] || (_cache[2] = ($event) => $options.switchDisplay(2))
}, {
default: withCtx(() => [
createTextVNode("180°全景")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[3] || (_cache[3] = ($event) => $options.switchDisplay(3))
}, {
default: withCtx(() => [
createTextVNode("360°全景")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[4] || (_cache[4] = ($event) => $options.switchDisplay(4))
}, {
default: withCtx(() => [
createTextVNode("环状全景")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: $options.startAlarm
}, {
default: withCtx(() => [
createTextVNode("开启手动报警")
]),
_: 1
}, 8, ["onClick"]),
createVNode(_component_button, {
class: "button",
onClick: $options.stopAlarm
}, {
default: withCtx(() => [
createTextVNode("停止手动报警")
]),
_: 1
}, 8, ["onClick"]),
createVNode(_component_button, {
class: "button",
onClick: _cache[5] || (_cache[5] = ($event) => $options.flipImage(0))
}, {
default: withCtx(() => [
createTextVNode("左右翻转")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[6] || (_cache[6] = ($event) => $options.flipImage(1))
}, {
default: withCtx(() => [
createTextVNode("上下翻转")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[7] || (_cache[7] = ($event) => $options.flipImage(2))
}, {
default: withCtx(() => [
createTextVNode("中心翻转")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[8] || (_cache[8] = ($event) => $options.flipImage(3))
}, {
default: withCtx(() => [
createTextVNode("顺时针90°")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[9] || (_cache[9] = ($event) => $options.flipImage(4))
}, {
default: withCtx(() => [
createTextVNode("逆时针90°")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[10] || (_cache[10] = ($event) => $options.flipImage(5))
}, {
default: withCtx(() => [
createTextVNode("逆时针180°")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: _cache[11] || (_cache[11] = ($event) => $options.flipImage(6))
}, {
default: withCtx(() => [
createTextVNode("不翻转")
]),
_: 1
}),
createVNode(_component_button, {
class: "button",
onClick: $options.resumeOrPause
}, {
default: withCtx(() => [
createTextVNode("暂停/继续")
]),
_: 1
}, 8, ["onClick"]),
createVNode(_component_button, {
class: "button",
onClick: $options.changeQuality
}, {
default: withCtx(() => [
createTextVNode("切换清晰度")
]),
_: 1
}, 8, ["onClick"]),
createVNode(_component_button, {
class: "button",
onClick: $options.doSnapshot
}, {
default: withCtx(() => [
createTextVNode("截图")
]),
_: 1
}, 8, ["onClick"]),
createVNode(_component_button, {
class: "button",
disabled: $data.isRecording,
onClick: $options.doStartRecord
}, {
default: withCtx(() => [
createTextVNode(" 开始录屏 ")
]),
_: 1
}, 8, ["disabled", "onClick"]),
createVNode(_component_button, {
class: "button",
disabled: !$data.isRecording,
onClick: $options.doStopRecord
}, {
default: withCtx(() => [
createTextVNode(" 结束录屏 ")
]),
_: 1
}, 8, ["disabled", "onClick"]),
createVNode(_component_button, {
class: "button",
disabled: $data.isTalking,
onClick: $options.doOpenTalk
}, {
default: withCtx(() => [
createTextVNode(" 开始对讲 ")
]),
_: 1
}, 8, ["disabled", "onClick"]),
createVNode(_component_button, {
class: "button",
disabled: !$data.isTalking,
onClick: $options.doStopTalk
}, {
default: withCtx(() => [
createTextVNode(" 结束对讲 ")
]),
_: 1
}, 8, ["disabled", "onClick"]),
createVNode(_component_button, {
class: "button",
onClick: $options.test
}, {
default: withCtx(() => [
createTextVNode("test")
]),
_: 1
}, 8, ["onClick"])
])
])
])
]);
}
const ceshianzhuo = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]]]);
export {
ceshianzhuo as default
};

View File

@ -1,36 +0,0 @@
import { resolveComponent, openBlock, createElementBlock, createElementVNode, createVNode } from "vue";
import { _ as _export_sfc } from "../_plugin-vue_export-helper.js";
const _style_0 = { "center-column": { "": { "width": 170, "height": 170, "borderRadius": 80 } } };
const _sfc_main = {
data() {
return {};
},
onLoad() {
},
methods: {}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_MonitorControlView = resolveComponent("MonitorControlView");
return openBlock(), createElementBlock("scroll-view", {
scrollY: true,
showScrollbar: true,
enableBackToTop: true,
bubble: "true",
style: { flexDirection: "column" }
}, [
createElementVNode("div", {
class: "center-column",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.jumptonve && _ctx.jumptonve(...args))
}, [
createVNode(_component_MonitorControlView, {
ref: "monitor",
init: "5",
style: { "width": "170px", "height": "170px" }
}, null, 512)
])
]);
}
const option = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]]]);
export {
option as default
};

View File

@ -1,15 +0,0 @@
import "vue";
function requireNativePlugin(name) {
return weex.requireModule(name);
}
function formatAppLog(type, filename, ...args) {
if (uni.__log__) {
uni.__log__(type, filename, ...args);
} else {
console[type].apply(console, [...args, filename]);
}
}
export {
formatAppLog as f,
requireNativePlugin as r
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -7,8 +7,8 @@
"id": "__UNI__FB2D473",
"name": "护理单元",
"version": {
"name": "1.6.0",
"code": 160
"name": "1.6.1",
"code": 161
},
"description": "护理单元",
"developer": {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,32 +0,0 @@
"use weex:vue";
if (typeof Promise !== 'undefined' && !Promise.prototype.finally) {
Promise.prototype.finally = function(callback) {
const promise = this.constructor
return this.then(
value => promise.resolve(callback()).then(() => value),
reason => promise.resolve(callback()).then(() => {
throw reason
})
)
}
};
if (typeof uni !== 'undefined' && uni && uni.requireGlobal) {
const global = uni.requireGlobal()
ArrayBuffer = global.ArrayBuffer
Int8Array = global.Int8Array
Uint8Array = global.Uint8Array
Uint8ClampedArray = global.Uint8ClampedArray
Int16Array = global.Int16Array
Uint16Array = global.Uint16Array
Int32Array = global.Int32Array
Uint32Array = global.Uint32Array
Float32Array = global.Float32Array
Float64Array = global.Float64Array
BigInt64Array = global.BigInt64Array
BigUint64Array = global.BigUint64Array
};
(()=>{var d=Object.create;var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var v=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var b=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of y(t))!w.call(e,n)&&n!==o&&c(e,n,{get:()=>t[n],enumerable:!(s=f(t,n))||s.enumerable});return e};var h=(e,t,o)=>(o=e!=null?d(g(e)):{},b(t||!e||!e.__esModule?c(o,"default",{value:e,enumerable:!0}):o,e));var i=v((S,a)=>{a.exports=Vue});var r=h(i());var u=(e,t)=>{let o=e.__vccOpts||e;for(let[s,n]of t)o[s]=n;return o};var x={"center-column":{"":{width:170,height:170,borderRadius:80}}},V={data(){return{}},onLoad(){},methods:{}};function C(e,t,o,s,n,$){let _=(0,r.resolveComponent)("MonitorControlView");return(0,r.openBlock)(),(0,r.createElementBlock)("scroll-view",{scrollY:!0,showScrollbar:!0,enableBackToTop:!0,bubble:"true",style:{flexDirection:"column"}},[(0,r.createElementVNode)("div",{class:"center-column",onClick:t[0]||(t[0]=(...m)=>e.jumptonve&&e.jumptonve(...m))},[(0,r.createVNode)(_,{ref:"monitor",init:"5",style:{width:"170px",height:"170px"}},null,512)])])}var p=u(V,[["render",C],["styles",[x]]]);var l=plus.webview.currentWebview();if(l){let e=parseInt(l.id),t="pages/option",o={};try{o=JSON.parse(l.__query__)}catch(n){}p.mpType="page";let s=Vue.createPageApp(p,{$store:getApp({allowDefault:!0}).$store,__pageId:e,__pagePath:t,__pageQuery:o});s.provide("__globalStyles",Vue.useCssStyles([...__uniConfig.styles,...p.styles||[]])),s.mount("#root")}})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Some files were not shown because too many files have changed in this diff Show More