切换主题
打开单个监控
打开单个监控/云控制示例
<script setup name="OpenMonitor">
import { ref, reactive } from 'vue'
import {ElMessage} from 'element-plus'
import { checkInstance, getInstanceFCC } from '../../use-fcc'
import { setLog } from '../../use-log'
const loading = ref(false)
const deviceInfo = reactive({
resId: '04747446080631100101#ea4941185b69472b8e216f2d35118ae0',
name: '设备一',
x: '480',
y: '50',
width: 640,
height: 640
})
// 云控制
const controlForm = reactive({
winId: '0000',
resId: '04747446080631100101#ea4941185b69472b8e216f2d35118ae0',
controlCode:'PTZ_STOP' ,
controlValue: 2
})
const controlOptions = [{
value: 'PTZ_STOP',
label: '停止'
}, {
value: 'PTZ_UP',
label: '向上'
}, {
value: 'PTZ_DOWN',
label: '向下'
}, {
value: 'PTZ_LEFT',
label: '向左'
}, {
value: 'PTZ_RIGHT',
label: '向右'
}, {
value: 'PTZ_LEND_FOCAL_NEAT',
label: '焦距近'
}, {
value: 'PTZ_LEND_FOCAL_FAR',
label: '远焦距'
}]
const controlCamera = async () => {
const params = {
winId: controlForm.winId,
resId: controlForm.resId,
controlCode: controlForm.controlCode,
controlValue: controlForm.controlValue + ''
}
let result = await getInstanceFCC().PTZControl(params)
setLog({
name: '云控制操作结果',
msg: result
})
if (result.status == 200) {
ElMessage({
message: '云控制操作成功',
type: 'success'
})
} else {
ElMessage({
message: result.msg,
type: 'info'
})
}
}
// 确认打开监控
const confirmOpenMonitor= async () => {
setLog({
name: '开始打开监控'
})
if (loading.vue) {
setLog({
name: '打开监控结果',
msg: '请先实例化'
})
return
}
if (!await checkInstance()) {
setLog({
name: '打开监控',
msg: '请先实例化'
})
ElMessage({
message: '请先实例化',
type: 'warning'
})
return
}
loading.vue = true
let result = await getInstanceFCC().openMonitor(deviceInfo)
setLog({
name: '打开监控结果',
msg: result
})
loading.vue = false
if (result.status == 200) {
ElMessage({
message: '打开监控成功',
type: 'success'
})
} else {
ElMessage({
message: result.msg,
type: 'info'
})
}
}
// 关闭监控
const offMonitoring = async () => {
let result = await getInstanceFCC().offMonitoring({
winId: '0000', // 0000”在主窗口关闭监控, “0301”在矩阵中关闭监控, “0401”在场所中关闭监控 以此类推, 不传默认为”0000”
resId: deviceInfo.resId // 设备编码
})
setLog({
name: '关闭监控结果',
msg: result
})
loading.vue = false
if (result.status == 200) {
ElMessage({
message: '关闭监控成功',
type: 'success'
})
} else {
ElMessage({
message: result.msg,
type: 'info'
})
}
}
</script>
<template>
<el-form :model="deviceInfo">
<div>监控设备信息</div>
<div>
<el-row>
<el-col :span="7">
<el-form-item label="X轴偏移量:">
<el-input v-model="deviceInfo.x" placeholder="X轴偏移量"></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="Y轴偏移量:">
<el-input v-model="deviceInfo.y" placeholder="Y轴偏移量"></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="宽度:">
<el-input v-model.number="deviceInfo.width" placeholder="宽度"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="7">
<el-form-item label="高度:">
<el-input v-model.number="deviceInfo.height" placeholder="高度"></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="设备编码:">
<el-input v-model="deviceInfo.resId" placeholder="设备编码"></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="设备名称:">
<el-input v-model="deviceInfo.name" placeholder="设备名称"></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
<el-form-item>
<el-button type="primary" @click="confirmOpenMonitor" v-loading="loading">打开监控</el-button>
<el-button type="primary" @click="offMonitoring">关闭监控</el-button>
</el-form-item>
</el-form>
<div class="bottom-line"></div>
<el-form :model="deviceInfo">
<div>摄像头云控制</div>
<el-row>
<el-col :span="11">
<el-form-item label="窗口id" prop="winId">
<el-input v-model="controlForm.winId" placeholder="窗口id"></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="设备id" prop="resId">
<el-input v-model="controlForm.resId" placeholder="设备id"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="方向/焦距" prop="controlCode">
<el-select v-model="controlForm.controlCode" placeholder="请选择">
<el-option
v-for="item in controlOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="步长" prop="controlValue">
<el-input-number v-model="controlForm.controlValue" :min="1" :max="10" label="步长"></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-from-item>
<el-button type="primary" @click="controlCamera">确定</el-button>
</el-from-item>
</el-form>
</template>
<style scoped>
.el-col {
margin-right: 16px;
}
</style>使用方法
typescript
// 查看某个监控设备的监控画面
let params = {
height: 400,
name: "办公A区西北",
resId: "08594172951682810101#f549ae3dca014060b2b7cf3d17d03b32",
resType: "0",
width: 600,
x: "500",
y: "500"
}
let result = await fcc.openMonitor(params)
.then(back => {
console.log('tag', back)
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
入参说明
| 参数名 | 数据类型 | 选取原则 | 说明 |
|---|---|---|---|
| resId | string | 必选 | 设备编码 |
| resType | string | 非必选 | 设备类型 |
| name | string | 非必选 | 查看监控的窗口名称,默认为 resId |
| x | string | 非必选 | 监控窗口到屏幕左边的距离(单位:px),默认 0 |
| y | string | 非必选 | 监控窗口到屏幕上边的距离(单位:px),默认 0 |
| width | number | 非必选 | 监控窗口的宽度(单位:px),默认 600 |
| height | number | 非必选 | 监控窗口的高度(单位:px),默认 400 |
出参说明
| 出参名称 | 数据类型 | 说明 |
|---|---|---|
| status | number | 调用其接口返回结果的状态码,其含义请参考融合通讯中台通用状态码 |
| msg | string | 给开发者的文字提示信息 |
| data | object | monitorSno 监控号码 |
