设备管理BUG调整

This commit is contained in:
曹磊 2026-03-24 09:55:57 +08:00
parent c49b432cd1
commit 1dfae1d353
6 changed files with 134 additions and 41 deletions

View File

@ -2,37 +2,37 @@
<!-- <a-spin :spinning="confirmLoading">-->
<a-row>
<a-col :span="24">
<div id="video-container-preview" style="min-height: 400px;"
<div id="video-container-preview" style="width: 1075px;"
@mousedown="onCameraMouseDown" @mousemove="onCameraMouseMove" @mouseup="onCameraMouseUp"
@mouseleave="onCameraMouseLeave" @wheel="onCameraWheel" @contextmenu.prevent
></div>
<div id="videopreview" style="height:0px;"></div>
</a-col>
<!-- <a-col :span="24" style="margin-top: -120px;margin-left:40px;" v-show="formData.ptz == '1'"> -->
<a-col :span="24" style="margin-top: -120px;" >
<table style="width: 130px;height:96px;margin: 5px 0px 5px 0px;">
<tbody>
<tr>
<td></td>
<td style="width:100px;text-align:center;">
<div class="fxjImgUp" @mousedown="moveCtrl(1,1,1)" @mouseup="moveCtrl(1,0,1)"></div>
</td>
<td></td>
</tr>
<tr>
<td style="width:90px;text-align:center;">
<div class="fxjImgLeft" @mousedown="moveCtrl(3,1,1)" @mouseup="moveCtrl(3,0,1)"></div>
</td>
<td style="width:100px;text-align:center;">
<div class="fxjImgDown" @mousedown="moveCtrl(7,1,1)" @mouseup="moveCtrl(7,0,1)"></div>
</td>
<td style="width:100px;text-align:center;">
<div class="fxjImgRight" @mousedown="moveCtrl(5,1,1)" @mouseup="moveCtrl(5,0,1)"></div>
</td>
</tr>
</tbody>
</table>
</a-col>
<!-- <a-col :span="24" style="margin-top: -120px;" >-->
<!-- <table style="width: 130px;height:96px;margin: 5px 0px 5px 0px;">-->
<!-- <tbody>-->
<!-- <tr>-->
<!-- <td></td>-->
<!-- <td style="width:100px;text-align:center;">-->
<!-- <div class="fxjImgUp" @mousedown="moveCtrl(1,1,1)" @mouseup="moveCtrl(1,0,1)"></div>-->
<!-- </td>-->
<!-- <td></td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <td style="width:90px;text-align:center;">-->
<!-- <div class="fxjImgLeft" @mousedown="moveCtrl(3,1,1)" @mouseup="moveCtrl(3,0,1)"></div>-->
<!-- </td>-->
<!-- <td style="width:100px;text-align:center;">-->
<!-- <div class="fxjImgDown" @mousedown="moveCtrl(7,1,1)" @mouseup="moveCtrl(7,0,1)"></div>-->
<!-- </td>-->
<!-- <td style="width:100px;text-align:center;">-->
<!-- <div class="fxjImgRight" @mousedown="moveCtrl(5,1,1)" @mouseup="moveCtrl(5,0,1)"></div>-->
<!-- </td>-->
<!-- </tr>-->
<!-- </tbody>-->
<!-- </table>-->
<!-- </a-col>-->
<!-- <a-col :span="24">

View File

@ -7,11 +7,35 @@
</CameraPreviewForm>
</div>
<template #footer>
<view style="display: flex;align-items: center; width: 100%;justify-content: space-between;">
<a-col :span="20" style="text-align: center;margin-top: 15px;margin-bottom: 15px;">
<!-- <a-col :span="20" style="text-align: center;margin-top: 15px;margin-bottom: 15px;">-->
<a-col :span="20" style="text-align: center;">
<span class="buttonSpan">
<table style="width: 130px;height:96px;margin: 5px 0px 5px 0px;">
<tbody>
<tr>
<td></td>
<td style="width:100px;text-align:center;">
<div class="fxjImgUp" @mousedown="moveCtrl(1,1,1)" @mouseup="moveCtrl(1,0,1)"></div>
</td>
<td></td>
</tr>
<tr>
<td style="width:90px;text-align:center;">
<div class="fxjImgLeft" @mousedown="moveCtrl(3,1,1)" @mouseup="moveCtrl(3,0,1)"></div>
</td>
<td style="width:100px;text-align:center;">
<div class="fxjImgDown" @mousedown="moveCtrl(7,1,1)" @mouseup="moveCtrl(7,0,1)"></div>
</td>
<td style="width:100px;text-align:center;">
<div class="fxjImgRight" @mousedown="moveCtrl(5,1,1)" @mouseup="moveCtrl(5,0,1)"></div>
</td>
</tr>
</tbody>
</table>
</span>
<!-- 对讲停止对讲 切换 -->
<!-- <img src="../../../../../assets/iot/monitor_1.png" class="buttonImg"/> -->
<span class="buttonSpan djImg" @click="startPhone" v-show="!izPhone"><span
@ -66,7 +90,7 @@ import CameraPreviewForm from './CameraPreviewForm.vue'
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
const title = ref<string>('');
const width = ref<string>('70%');
const width = ref<string>('1100');
const visible = ref<boolean>(false);
const showCamera = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
@ -84,7 +108,7 @@ import {
getMultitransUrl,
requestBidirectionStream,
getPreviewUrl,
testAudio
testAudio, motionCtrl
} from "../camera.api";
const props = defineProps({
@ -367,6 +391,34 @@ function recordingEnd() {
});
}
/**
* 控制球机移动
*/
function moveCtrl(direction, startOrNot, speed) {
if (!formData.deviceIndex) return;
let params = {
"deviceIndex": formData.deviceIndex,
"direction": direction,
"startOrNot": startOrNot,
"speed": speed,
};
motionCtrl(params);
if (startOrNot === 1) {
const directions = {
1: '上',
3: '左',
5: '右',
7: '下',
9: '缩小',
10: '放大',
11: '对焦'
};
const action = startOrNot === 1 ? '开始' : '停止';
}
}
/**
* 销毁
*/
@ -481,4 +533,40 @@ defineExpose({
.hmxzImg:hover {
background: url('../../../../../assets/iot/monitor_7_1.png') left/contain no-repeat;
}
.fxjImgUp{
width:50px;height: 50px;
margin-right:10px;vertical-align: bottom;
cursor: pointer;
border-radius: 5px;transform: rotate(270deg);
background: url('../../../../../assets/iot/fxj.png') center/contain no-repeat;
}
.fxjImgUp:hover{
background: url('../../../../../assets/iot/fxj_blue.png') center/contain no-repeat;
}
.fxjImgLeft{
width:50px;height: 50px;margin-right:10px;vertical-align: bottom;transform: rotate(180deg);
cursor: pointer;
background: url('../../../../../assets/iot/fxj.png') center/contain no-repeat;
}
.fxjImgLeft:hover{
background: url('../../../../../assets/iot/fxj_blue.png') center/contain no-repeat;
}
.fxjImgDown{
width:50px;height: 50px;margin-right:10px;vertical-align: bottom;transform: rotate(90deg);
cursor: pointer;
background: url('../../../../../assets/iot/fxj.png') center/contain no-repeat;
}
.fxjImgDown:hover{
background: url('../../../../../assets/iot/fxj_blue.png') center/contain no-repeat;
}
.fxjImgRight{
width:50px;height: 50px;margin-right:10px;vertical-align: bottom;
cursor: pointer;
background: url('../../../../../assets/iot/fxj.png') center/contain no-repeat;
}
.fxjImgRight:hover{
background: url('../../../../../assets/iot/fxj_blue.png') center/contain no-repeat;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<a-drawer :title="title" v-model:visible="visible" :closable="true"
<a-drawer :title="title" :width="width" v-model:visible="visible" :closable="true"
:footer-style="{ textAlign: 'right' }" :bodyStyle="{ padding: '14px' }" @close="handleCancel">
<RemarksList ref="remarksList" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></RemarksList>
<template #footer>
@ -14,7 +14,7 @@ import RemarksList from './RemarksList.vue'
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
const title = ref<string>('');
const width = ref<number>(1200);
const width = ref<number>('1200');
const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
const remarksList = ref();

View File

@ -16,7 +16,7 @@ import ApiLogAlarmList from './ApiLogAlarmList.vue'
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
const title = ref<string>('');
const width = ref<string>('80%');
const width = ref<string>('1200');
const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
const registerForm = ref();

View File

@ -48,7 +48,7 @@
import { ref, reactive, defineExpose, nextTick, defineProps, computed, onMounted } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { getValueType } from '/@/utils';
import { updateBindDevice,nulist } from '../manager.api';
import {updateBindDevice, nulist, addOrgBatch} from '../manager.api';
import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
import { useMessage } from '/@/hooks/web/useMessage';
@ -60,7 +60,7 @@ const props = defineProps({
formBpm: { type: Boolean, default: true }
});
const formRef = ref();
const nuInfos = ref();
const nuInfos = ref([]);
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
const formData = reactive<Record<string, any>>({
@ -110,6 +110,7 @@ function add() {
* 编辑
*/
function edit(record) {
getNuInfos(record.orgCode);
record.oldNuId = record.nuId;
record.oldDimension = record.dimension;
nextTick(() => {
@ -124,7 +125,16 @@ function edit(record) {
//
Object.assign(formData, tmpData);
});
getNuInfos();
}
function getNuInfos(orgCode){
let params = {'orgCode': orgCode};
nulist(params)
.then((res) => {
nuInfos.value = res;
}).catch(() =>{})
.finally(() => {
});
}
/**
@ -192,11 +202,6 @@ async function handleOk(){
});
}
async function getNuInfos(){
var params = {"orgCode":formData.orgCode};
nuInfos.value = await nulist({params});
}
defineExpose({
add,
edit,

View File

@ -170,7 +170,7 @@ function handleOrgUnbind(record: Recordable){
title: '机构解绑',
width: '500px',
icon: createVNode(ExclamationCircleOutlined),
content: createVNode('div', { style: 'color:red;' }, '解除当前机构已绑定的所有设备,确定要解绑该机构吗?'),
content: createVNode('div', { style: 'color:red;' }, '当前操作只适合于机构解约,回收设备,重新分配设备使用!不会影响业务平台的设备绑定关系,确定要此操作吗?'),
okText: '确定',
onOk() {
unbindAll(record);