设备控制,设备实时上报状态
This commit is contained in:
@ -5,7 +5,7 @@ VITE_APP_TITLE = 云平台管理系统
|
|||||||
VITE_APP_ENV = 'development'
|
VITE_APP_ENV = 'development'
|
||||||
|
|
||||||
# 开发环境
|
# 开发环境
|
||||||
VITE_APP_BASE_API = 'http://192.168.2.34:8000'
|
VITE_APP_BASE_API = 'http://47.120.79.150/backend'
|
||||||
|
|
||||||
# 应用访问路径 例如使用前缀 /admin/
|
# 应用访问路径 例如使用前缀 /admin/
|
||||||
VITE_APP_CONTEXT_PATH = '/'
|
VITE_APP_CONTEXT_PATH = '/'
|
||||||
|
@ -66,14 +66,23 @@ export const sendAlarmMessage = (data: any) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
// 获取设备实时状态
|
// 获取设备实时状态
|
||||||
export const deviceRealTimeStatus = (data: any) => {
|
export const deviceRealTimeStatus = (params: any) => {
|
||||||
return request({
|
return request({
|
||||||
url: `/api/device/realTimeStatus`,
|
url: `/api/device/realTimeStatus`,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 发送信息
|
||||||
|
export const deviceSendMessage = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/api/bjq/device/sendMessage`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
devicegroupList,
|
devicegroupList,
|
||||||
deviceControlCenterList,
|
deviceControlCenterList,
|
||||||
@ -83,5 +92,6 @@ export default {
|
|||||||
lightModeSettings,
|
lightModeSettings,
|
||||||
laserModeSettings,
|
laserModeSettings,
|
||||||
sendAlarmMessage,
|
sendAlarmMessage,
|
||||||
deviceRealTimeStatus
|
deviceRealTimeStatus,
|
||||||
|
deviceSendMessage
|
||||||
};
|
};
|
@ -8,7 +8,6 @@ export interface deviceQuery {
|
|||||||
deviceImei: string;
|
deviceImei: string;
|
||||||
currentOwnerId: string;
|
currentOwnerId: string;
|
||||||
communicationMode: string;
|
communicationMode: string;
|
||||||
queryParams: string;
|
|
||||||
pageSize: Number;
|
pageSize: Number;
|
||||||
deviceType: string
|
deviceType: string
|
||||||
|
|
||||||
|
@ -46,9 +46,13 @@
|
|||||||
<el-input class="inputTFT" v-model="deviceDetail.lightBrightness" :min="0" :max="100"
|
<el-input class="inputTFT" v-model="deviceDetail.lightBrightness" :min="0" :max="100"
|
||||||
:step="1" size="small" />
|
:step="1" size="small" />
|
||||||
<span class="brightness-value">%</span>
|
<span class="brightness-value">%</span>
|
||||||
<el-button type="primary" class="save-btn" @click="saveBtn">保存</el-button>
|
<el-button type="primary" class="save-btn" @click="saveBtn" :loading="lightModesLoading"
|
||||||
|
:loading-text="lightModesLoading ? '保存中...' : '保存'"> {{
|
||||||
|
lightModesLoading ? '保存中' : '保存' }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-button type="danger" class="alarm-btn" @click="forceAlarm">强制报警</el-button>
|
<el-button type="danger" class="alarm-btn" @click="forceAlarm" :loading="forceAlarmLoading"
|
||||||
|
:loading-text="forceAlarmLoading ? '报警中...' : '强制报警'"> {{
|
||||||
|
forceAlarmLoading ? '报警中' : '强制报警' }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-card_gps">
|
<div class="content-card_gps">
|
||||||
<h4 class="section-title">位置信息</h4>
|
<h4 class="section-title">位置信息</h4>
|
||||||
@ -96,7 +100,9 @@
|
|||||||
<el-input v-if="deviceDetail" placeholder="请输入ID"
|
<el-input v-if="deviceDetail" placeholder="请输入ID"
|
||||||
v-model="deviceDetail.personnelInfo.code" />
|
v-model="deviceDetail.personnelInfo.code" />
|
||||||
</div>
|
</div>
|
||||||
<el-button type="primary" class="register-btn" @click="registerPostInit">登记</el-button>
|
<el-button type="primary" class="register-btn" @click="registerPostInit"
|
||||||
|
:loading="fullscreenLoading" :loading-text="fullscreenLoading ? '登记中...' : '登记'"> {{
|
||||||
|
fullscreenLoading ? '登记中' : '登记' }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -106,7 +112,9 @@
|
|||||||
<div class="message-content">
|
<div class="message-content">
|
||||||
<el-input type="textarea" class="textareaTFT" :rows="4" placeholder="现场危险,停止救援!紧急撤离至安全区域!"
|
<el-input type="textarea" class="textareaTFT" :rows="4" placeholder="现场危险,停止救援!紧急撤离至安全区域!"
|
||||||
v-model="deviceDetail.sendMsg" resize="none" />
|
v-model="deviceDetail.sendMsg" resize="none" />
|
||||||
<el-button type="primary" class="send-btn" @click="send">发送</el-button>
|
<el-button type="primary" class="send-btn" @click="sendTextMessage"
|
||||||
|
:loading="sendTextLoading" :loading-text="sendTextLoading ? '发送中...' : '发送'"> {{
|
||||||
|
sendTextLoading ? '发送中' : '发送' }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -133,7 +141,11 @@ import laserLightDefault from '@/assets/images/laser-light.png';
|
|||||||
import laserLightActive from '@/assets/images/laser-light_HL.png';
|
import laserLightActive from '@/assets/images/laser-light_HL.png';
|
||||||
import closeDefault from '@/assets/images/close.png';
|
import closeDefault from '@/assets/images/close.png';
|
||||||
import closeActive from '@/assets/images/close_HL.png';
|
import closeActive from '@/assets/images/close_HL.png';
|
||||||
import { send } from 'vite';
|
const fullscreenLoading = ref(false)
|
||||||
|
const forceAlarmLoading = ref(false) //强制报警
|
||||||
|
const sendTextLoading =ref(false)
|
||||||
|
const lightModesLoading =ref(false)
|
||||||
|
|
||||||
// 灯光模式数据(引用导入的图片)
|
// 灯光模式数据(引用导入的图片)
|
||||||
const lightModes = ref<LightMode[]>([
|
const lightModes = ref<LightMode[]>([
|
||||||
{
|
{
|
||||||
@ -350,18 +362,22 @@ const registerPostInit = () => {
|
|||||||
deviceId: route.params.deviceId,
|
deviceId: route.params.deviceId,
|
||||||
deviceImei: deviceDetail.value.deviceImei
|
deviceImei: deviceDetail.value.deviceImei
|
||||||
}
|
}
|
||||||
|
fullscreenLoading.value = true
|
||||||
api.registerPersonInfo(data).then((res) => {
|
api.registerPersonInfo(data).then((res) => {
|
||||||
console.log(res, 'res');
|
console.log(res, 'res');
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
|
fullscreenLoading.value = false
|
||||||
proxy?.$modal.msgSuccess(res.msg);
|
proxy?.$modal.msgSuccess(res.msg);
|
||||||
getList();
|
getList();
|
||||||
} else {
|
} else {
|
||||||
|
fullscreenLoading.value = false
|
||||||
proxy?.$modal.msgError(res.msg);
|
proxy?.$modal.msgError(res.msg);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 灯光亮度
|
// 灯光亮度
|
||||||
const saveBtn = () => {
|
const saveBtn = () => {
|
||||||
|
lightModesLoading.value = true
|
||||||
let data = {
|
let data = {
|
||||||
deviceId: route.params.deviceId,
|
deviceId: route.params.deviceId,
|
||||||
instructValue: deviceDetail.value.lightBrightness + '.00',
|
instructValue: deviceDetail.value.lightBrightness + '.00',
|
||||||
@ -369,9 +385,11 @@ const saveBtn = () => {
|
|||||||
}
|
}
|
||||||
api.lightBrightnessSettings(data).then((res) => {
|
api.lightBrightnessSettings(data).then((res) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
|
lightModesLoading.value = false
|
||||||
proxy?.$modal.msgSuccess(res.msg);
|
proxy?.$modal.msgSuccess(res.msg);
|
||||||
getList();
|
getList();
|
||||||
} else {
|
} else {
|
||||||
|
lightModesLoading.value = false
|
||||||
proxy?.$modal.msgError(res.msg);
|
proxy?.$modal.msgError(res.msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -380,6 +398,7 @@ const saveBtn = () => {
|
|||||||
// 强制报警
|
// 强制报警
|
||||||
const forceAlarm = async () => {
|
const forceAlarm = async () => {
|
||||||
try {
|
try {
|
||||||
|
forceAlarmLoading.value = true
|
||||||
// 2. 准备请求数据
|
// 2. 准备请求数据
|
||||||
const batchId = generateShortId();
|
const batchId = generateShortId();
|
||||||
let data = {
|
let data = {
|
||||||
@ -390,15 +409,81 @@ const forceAlarm = async () => {
|
|||||||
instructValue: '1', //强制报警1,解除报警0
|
instructValue: '1', //强制报警1,解除报警0
|
||||||
}
|
}
|
||||||
const registerRes = await api.sendAlarmMessage(data);
|
const registerRes = await api.sendAlarmMessage(data);
|
||||||
if (registerRes.code == 200) {
|
if (registerRes.code !== 200) {
|
||||||
proxy?.$modal.msgSuccess(registerRes.msg);
|
proxy?.$modal.msgWarning(registerRes.msg)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 4. 获取设备状态
|
||||||
|
let deviceImei = deviceDetail.value.deviceImei
|
||||||
|
let typeName = deviceDetail.value.typeName
|
||||||
|
const statusRes = await getDeviceStatus({
|
||||||
|
functionMode: 2,
|
||||||
|
batchId,
|
||||||
|
typeName,
|
||||||
|
deviceImei,
|
||||||
|
interval: 500
|
||||||
|
},
|
||||||
|
api.deviceRealTimeStatus
|
||||||
|
);
|
||||||
|
// 只有当状态为'OK'时才显示成功弹窗
|
||||||
|
if (statusRes.data.functionAccess === 'OK') {
|
||||||
|
proxy?.$modal.msgSuccess(statusRes.msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (error:any) {
|
} catch (error: any) {
|
||||||
proxy?.$modal.msgError(error.msg);
|
proxy?.$modal.msgWarning(error.msg)
|
||||||
|
|
||||||
} finally {}
|
} finally {
|
||||||
|
forceAlarmLoading.value = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// 发送文本消息
|
||||||
|
const sendTextMessage = async () => {
|
||||||
|
// 防重复提交
|
||||||
|
if (!deviceDetail.value.sendMsg) {
|
||||||
|
proxy?.$modal.msgWarning('发送信息不能为空');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
sendTextLoading.value = true;
|
||||||
|
// 2. 准备请求数据
|
||||||
|
const batchId = generateShortId();
|
||||||
|
const data = {
|
||||||
|
sendMsg: deviceDetail.value.sendMsg,
|
||||||
|
deviceIds: [route.params.deviceId],
|
||||||
|
typeName: deviceDetail.value.typeName,
|
||||||
|
batchId: batchId,
|
||||||
|
deviceImeiList: [deviceDetail.value.deviceImei],
|
||||||
|
};
|
||||||
|
// 3.人员信息
|
||||||
|
const registerRes = await api.deviceSendMessage(data);
|
||||||
|
if (registerRes.code !== 200) {
|
||||||
|
proxy?.$modal.msgWarning(registerRes.msg)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 4. 获取设备状态
|
||||||
|
let deviceImei = deviceDetail.value.deviceImei
|
||||||
|
let typeName = deviceDetail.value.typeName
|
||||||
|
const statusRes = await getDeviceStatus({
|
||||||
|
functionMode: 2,
|
||||||
|
batchId,
|
||||||
|
typeName,
|
||||||
|
deviceImei,
|
||||||
|
interval: 500
|
||||||
|
},
|
||||||
|
api.deviceRealTimeStatus
|
||||||
|
);
|
||||||
|
// 只有当状态为'OK'时才显示成功弹窗
|
||||||
|
if (statusRes.data.functionAccess === 'OK') {
|
||||||
|
proxy?.$modal.msgSuccess(statusRes.msg);
|
||||||
|
}
|
||||||
|
} catch (error: any) {
|
||||||
|
proxy?.$modal.msgWarning(error.msg)
|
||||||
|
} finally {
|
||||||
|
sendTextLoading.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
getList();
|
||||||
|
@ -156,7 +156,6 @@ const initData: PageData<'', deviceQuery> = {
|
|||||||
deviceImei: '',
|
deviceImei: '',
|
||||||
currentOwnerId: '',
|
currentOwnerId: '',
|
||||||
communicationMode: '',
|
communicationMode: '',
|
||||||
queryParams: '',
|
|
||||||
groupId: '',
|
groupId: '',
|
||||||
deviceType: ''
|
deviceType: ''
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user