|
|
|
|
@ -1,5 +1,30 @@
|
|
|
|
|
<template>
|
|
|
|
|
<div class="p-2">
|
|
|
|
|
<el-row :gutter="10">
|
|
|
|
|
<el-col :span="5">
|
|
|
|
|
<el-card shadow="hover">
|
|
|
|
|
<template #header>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="treeFilterText"
|
|
|
|
|
placeholder="请输入位置名称"
|
|
|
|
|
clearable
|
|
|
|
|
size="small"
|
|
|
|
|
@input="handleLocationFilterInput"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
<el-tree
|
|
|
|
|
ref="locationTreeRef"
|
|
|
|
|
:data="locationOptions"
|
|
|
|
|
node-key="id"
|
|
|
|
|
:props="{ label: 'locationAlias', children: 'children' }"
|
|
|
|
|
default-expand-all
|
|
|
|
|
highlight-current
|
|
|
|
|
:filter-node-method="filterLocationTreeNode"
|
|
|
|
|
@node-click="handleLocationTreeClick"
|
|
|
|
|
/>
|
|
|
|
|
</el-card>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="19">
|
|
|
|
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
|
|
|
|
<div v-show="showSearch" class="mb-[10px]">
|
|
|
|
|
<el-card shadow="hover">
|
|
|
|
|
@ -10,7 +35,7 @@
|
|
|
|
|
<el-form-item label="设备名称" prop="deviceName">
|
|
|
|
|
<el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable @keyup.enter="handleQuery" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="所在位置" prop="locationId">
|
|
|
|
|
<!-- <el-form-item label="所在位置" prop="locationId">
|
|
|
|
|
<el-tree-select
|
|
|
|
|
v-model="queryParams.locationId"
|
|
|
|
|
:data="locationOptions"
|
|
|
|
|
@ -20,7 +45,7 @@
|
|
|
|
|
check-strictly
|
|
|
|
|
clearable
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form-item> -->
|
|
|
|
|
<!-- 以下为不常用搜索条件,按需开放 -->
|
|
|
|
|
<!--
|
|
|
|
|
<el-form-item label="设备地址" prop="deviceAddress">
|
|
|
|
|
@ -33,16 +58,16 @@
|
|
|
|
|
<el-input-number v-model="queryParams.readFrequency" :min="0" placeholder="请输入读取频率" controls-position="right" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
-->
|
|
|
|
|
<el-form-item label="在线状态" prop="onlineStatus">
|
|
|
|
|
<!-- <el-form-item label="在线状态" prop="onlineStatus">
|
|
|
|
|
<el-select v-model="queryParams.onlineStatus" placeholder="请选择在线状态" clearable >
|
|
|
|
|
<el-option v-for="dict in online_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="告警状态" prop="alarmStatus">
|
|
|
|
|
</el-form-item> -->
|
|
|
|
|
<!-- <el-form-item label="告警状态" prop="alarmStatus">
|
|
|
|
|
<el-select v-model="queryParams.alarmStatus" placeholder="请选择告警状态" clearable >
|
|
|
|
|
<el-option v-for="dict in alarm_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form-item> -->
|
|
|
|
|
<el-form-item label="是否标识" prop="isMarked">
|
|
|
|
|
<el-select v-model="queryParams.isMarked" placeholder="请选择是否标识" clearable >
|
|
|
|
|
<el-option v-for="dict in is_marked" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
|
|
|
|
@ -127,6 +152,8 @@
|
|
|
|
|
|
|
|
|
|
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
|
|
|
|
</el-card>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<!-- 添加或修改设备信息对话框 -->
|
|
|
|
|
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
|
|
|
|
<el-form ref="rfidDeviceFormRef" :model="form" :rules="rules" label-width="80px">
|
|
|
|
|
@ -245,6 +272,9 @@ const single = ref(true);
|
|
|
|
|
const multiple = ref(true);
|
|
|
|
|
const total = ref(0);
|
|
|
|
|
|
|
|
|
|
const treeFilterText = ref('');
|
|
|
|
|
const locationTreeRef = ref();
|
|
|
|
|
|
|
|
|
|
const locationOptions = ref<RfidLocationOption[]>([]);
|
|
|
|
|
|
|
|
|
|
// 列显隐信息
|
|
|
|
|
@ -255,7 +285,7 @@ const columns = ref<FieldOption[]>([
|
|
|
|
|
{ key: 3, label: '设备地址', visible: true },
|
|
|
|
|
{ key: 4, label: '设备端口', visible: true },
|
|
|
|
|
{ key: 5, label: '读取频率', visible: true },
|
|
|
|
|
{ key: 6, label: '在线状态', visible: true },
|
|
|
|
|
{ key: 6, label: '在线状态', visible: false },
|
|
|
|
|
{ key: 7, label: '告警状态', visible: true },
|
|
|
|
|
{ key: 8, label: '是否标识', visible: false },
|
|
|
|
|
{ key: 9, label: '备注', visible: false },
|
|
|
|
|
@ -350,6 +380,32 @@ const loadLocationOptions = async () => {
|
|
|
|
|
locationOptions.value.push(root);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleLocationTreeClick = (data: RfidLocationOption) => {
|
|
|
|
|
if (data.id === 0) {
|
|
|
|
|
queryParams.value.locationId = undefined;
|
|
|
|
|
} else {
|
|
|
|
|
queryParams.value.locationId = data.id;
|
|
|
|
|
}
|
|
|
|
|
handleQuery();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const filterLocationTreeNode = (value: string, data: RfidLocationOption) => {
|
|
|
|
|
if (!value) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (data.id === 0) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return data.locationAlias?.includes(value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleLocationFilterInput = (value: string) => {
|
|
|
|
|
if (!locationTreeRef.value) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
locationTreeRef.value.filter(value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 取消按钮 */
|
|
|
|
|
const cancel = () => {
|
|
|
|
|
reset();
|
|
|
|
|
|