ZYC_web/test.vue
2025-05-22 16:27:24 +08:00

183 lines
7.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 区域控制对话框 -->
<!-- 弹窗 -->
<el-dialog :visible.sync="dialogVisible" width="600px" title="区域控制">
<div style="display: flex;">
<!-- 左侧菜单 -->
<el-menu :default-active="activeMenu" class="el-menu-vertical-demo" @select="handleMenuSelect"
style="width: 100px;">
<el-menu-item index="1">安全王</el-menu-item>
<el-menu-item index="2">单灯控</el-menu-item>
</el-menu>
<!-- 右侧内容区域 -->
<div style="flex: 1; padding-left: 10px;">
<div v-if="activeMenu === '1'">
<el-form label-position="left">
<!-- 参数上传时间间隔 -->
<el-form-item label="参数上传时间间隔">
<el-input v-model="paramUploadInterval" placeholder="请输入参数上传时间间隔" clearable
class="right-aligned" />
</el-form-item>
<!-- 接地电阻测试周期 -->
<el-form-item label="接地电阻测试周期">
<el-input v-model="groundResistanceTestInterval" placeholder="请输入接地电阻测试周期" clearable
class="right-aligned" />
</el-form-item>
<!-- 发送按钮居中 -->
<el-form-item>
<div style="text-align: center;">
<el-button type="success" @click="submitFormreglin(Security_King)">发送</el-button>
</div>
</el-form-item>
</el-form>
</div>
<div v-if="activeMenu === '2'">
<div style="text-align: center;">
<span>开始时间:</span>
<el-time-picker v-model="startTime" style="margin-left: 10px;margin-bottom: 10px;"
placeholder="Start time" />
</div>
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="segment" label="持续时长" width="100">
<template #default="{ row }">
<span>{{ row.segment }}</span>
</template>
</el-table-column>
<el-table-column label="时分" width="180">
<template #default="{ row }">
<el-time-picker v-model="row.time" placeholder="选择时分" format="HH:mm"
value-format="HH:mm" :is-range="false" size="default" style="width: 150px;" />
</template>
</el-table-column>
<el-table-column label="亮度%" width="180">
<template #default="{ row }">
<el-input v-model="row.brightness" placeholder="输入亮度" type="number" :min="0"
:max="100" suffix-icon="el-icon-s-unlock" style="width: 150px;" />
</template>
</el-table-column>
</el-table>
<div style="text-align: center; margin-top: 20px">
<el-button type="success" @click="submitlightcontrol(Single_lightcontrol)">发送</el-button>
</div>
</div>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="dialogVisible = false">确定</el-button>
</span>
</el-dialog>
Security_King: [],
Single_lightcontrol: [],
tableData: [
{ segment: '第一段', time: '', brightness: '' },
{ segment: '第二段', time: '', brightness: '' },
{ segment: '第三段', time: '', brightness: '' },
{ segment: '第四段', time: '', brightness: '' }
],
startTime: '',
paramUploadInterval: '',
groundResistanceTestInterval: '',
dialogVisible: false, // 控制对话框显示的变量
activeMenu: '1', // 默认选中的菜单项
getGroupdeviceList(groupId) {
this.dialogVisible = true; // 打开对话框
const GroupListqueryParams = {
pageNum: 1,
pageSize: 12,
showChild: true,
groupId: groupId,
};
listDeviceShort(GroupListqueryParams).then((response) => {
this.deviceList = response.rows;
this.total = response.total;
// 按 productId 分成两个数组
const product138Devices = this.deviceList.filter(device => device.productId === 138);
const otherDevices = this.deviceList.filter(device => device.productId !== 138);
// this.mqttSubscribe(product138Devices);
// this.mqttSubscribe(otherDevices);
this.Security_King = product138Devices;
this.Single_lightcontrol = otherDevices;
console.log("Product ID 138 Devices:", JSON.stringify(product138Devices));
console.log("Other Devices:", JSON.stringify(otherDevices));
});
},
DivideDevices(deviceList) {
const product138Devices = deviceList.filter(device => device.productId === 138);
const otherDevices = deviceList.filter(device => device.productId !== 138);
return { product138Devices, otherDevices };
},
submitFormreglin(devicelist) {
console.log('提交的数据:', {
paramUploadInterval: this.paramUploadInterval,
groundResistanceTestInterval: this.groundResistanceTestInterval,
});
let message = JSON.stringify({
paramUploadInterval: this.paramUploadInterval,
groundResistanceTestInterval: this.groundResistanceTestInterval,
});
this.mqttSubscribe(devicelist, message);
},
submitlightcontrol(devicelist) {
console.log('提交的数据:', {
paramUploadInterval: this.paramUploadInterval,
groundResistanceTestInterval: this.groundResistanceTestInterval,
});
let message = JSON.stringify({
paramUploadInterval: this.paramUploadInterval,
groundResistanceTestInterval: this.groundResistanceTestInterval,
});
this.mqttSubscribe(devicelist, message);
},
openDialog() {
console.log('打开对话框');
},
handleConfirm() {
// 处理确认按钮点击事件
this.dialogVisible = false;
// 在这里可以执行删除逻辑或者其他操作
},
handleMenuSelect(index) {
this.activeMenu = index; // 切换菜单项
console.log('选择的菜单项:', index);
},
AreamqttSubscribe(list, message) {
// 订阅当前页面设备的服务主题
let topics = [];
for (let i = 0; i < list.length; i++) {
let topicService = '/' + list[i].productId + '/' + list[i].serialNumber + '/property/post';
topics.push(topicService);
// 订阅主题
this.$mqttTool.subscribe([topicService]);
// 下发消息
// let message = JSON.stringify({ data: "Your initial data" }); // 自定义消息内容
this.$mqttTool.publish(topicService, message, list[i].serialNumber)
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
}
console.log("Subscribe Topics:", JSON.stringify(topics));
},