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

View File

@ -7,11 +7,35 @@
</CameraPreviewForm> </CameraPreviewForm>
</div> </div>
<template #footer> <template #footer>
<view style="display: flex;align-items: center; width: 100%;justify-content: space-between;"> <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"/> --> <!-- <img src="../../../../../assets/iot/monitor_1.png" class="buttonImg"/> -->
<span class="buttonSpan djImg" @click="startPhone" v-show="!izPhone"><span <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'; import JModal from '/@/components/Modal/src/JModal/JModal.vue';
const title = ref<string>(''); const title = ref<string>('');
const width = ref<string>('70%'); const width = ref<string>('1100');
const visible = ref<boolean>(false); const visible = ref<boolean>(false);
const showCamera = ref<boolean>(false); const showCamera = ref<boolean>(false);
const disableSubmit = ref<boolean>(false); const disableSubmit = ref<boolean>(false);
@ -84,7 +108,7 @@ import {
getMultitransUrl, getMultitransUrl,
requestBidirectionStream, requestBidirectionStream,
getPreviewUrl, getPreviewUrl,
testAudio testAudio, motionCtrl
} from "../camera.api"; } from "../camera.api";
const props = defineProps({ 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 { .hmxzImg:hover {
background: url('../../../../../assets/iot/monitor_7_1.png') left/contain no-repeat; 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> </style>

View File

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

View File

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

View File

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

View File

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