|
|
|
|
@ -1,30 +1,14 @@
|
|
|
|
|
<template>
|
|
|
|
|
<ContentWrap>
|
|
|
|
|
<!-- 搜索工作栏 -->
|
|
|
|
|
<el-form
|
|
|
|
|
class="-mb-15px"
|
|
|
|
|
:model="queryParams"
|
|
|
|
|
ref="queryFormRef"
|
|
|
|
|
:inline="true"
|
|
|
|
|
label-width="68px"
|
|
|
|
|
>
|
|
|
|
|
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
|
|
|
|
|
<el-form-item label="设备编号" prop="deviceCode">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="queryParams.deviceCode"
|
|
|
|
|
placeholder="请输入设备编号"
|
|
|
|
|
clearable
|
|
|
|
|
@keyup.enter="handleQuery"
|
|
|
|
|
class="!w-240px"
|
|
|
|
|
/>
|
|
|
|
|
<el-input v-model="queryParams.deviceCode" placeholder="请输入设备编号" clearable @keyup.enter="handleQuery"
|
|
|
|
|
class="!w-240px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="设备名称" prop="deviceName">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="queryParams.deviceName"
|
|
|
|
|
placeholder="请输入设备名称"
|
|
|
|
|
clearable
|
|
|
|
|
@keyup.enter="handleQuery"
|
|
|
|
|
class="!w-240px"
|
|
|
|
|
/>
|
|
|
|
|
<el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable @keyup.enter="handleQuery"
|
|
|
|
|
class="!w-240px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
<!-- <el-form-item label="连接状态" prop="status">
|
|
|
|
|
@ -55,23 +39,17 @@
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item> -->
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
|
|
|
|
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
type="primary"
|
|
|
|
|
plain
|
|
|
|
|
@click="openForm('create')"
|
|
|
|
|
v-hasPermi="['iot:device:create']"
|
|
|
|
|
>
|
|
|
|
|
<el-button @click="handleQuery">
|
|
|
|
|
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button @click="resetQuery">
|
|
|
|
|
<Icon icon="ep:refresh" class="mr-5px" /> 重置
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['iot:device:create']">
|
|
|
|
|
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
type="success"
|
|
|
|
|
plain
|
|
|
|
|
@click="handleExport"
|
|
|
|
|
:loading="exportLoading"
|
|
|
|
|
v-hasPermi="['iot:device:export']"
|
|
|
|
|
>
|
|
|
|
|
<el-button type="success" plain @click="handleExport" :loading="exportLoading"
|
|
|
|
|
v-hasPermi="['iot:device:export']">
|
|
|
|
|
<Icon icon="ep:download" class="mr-5px" /> 导出
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button type="danger" plain @click="handleBatchDelete" v-hasPermi="['iot:device:delete']">
|
|
|
|
|
@ -83,23 +61,16 @@
|
|
|
|
|
|
|
|
|
|
<!-- 列表 -->
|
|
|
|
|
<ContentWrap>
|
|
|
|
|
<el-table
|
|
|
|
|
ref="tableRef"
|
|
|
|
|
v-loading="loading"
|
|
|
|
|
:data="list"
|
|
|
|
|
:stripe="true"
|
|
|
|
|
:show-overflow-tooltip="true"
|
|
|
|
|
row-key="id"
|
|
|
|
|
@selection-change="handleSelectionChange"
|
|
|
|
|
>
|
|
|
|
|
<el-table ref="tableRef" v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" row-key="id"
|
|
|
|
|
@selection-change="handleSelectionChange">
|
|
|
|
|
<el-table-column type="selection" width="55" reserve-selection />
|
|
|
|
|
<el-table-column label="设备编号" align="left" prop="deviceCode"/>
|
|
|
|
|
<el-table-column label="设备名称" align="left" prop="deviceName"/>
|
|
|
|
|
<el-table-column label="设备编号" align="left" prop="deviceCode" />
|
|
|
|
|
<el-table-column label="设备名称" align="left" prop="deviceName" />
|
|
|
|
|
<!-- <el-table-column label="设备类型" align="left" prop="deviceType" width="150px"> -->
|
|
|
|
|
<!-- <template #default="scope">
|
|
|
|
|
<!-- <template #default="scope">
|
|
|
|
|
<dict-tag :type="DICT_TYPE.IOT_DEVICE_TYPE" :value="scope.row.deviceType" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column> -->
|
|
|
|
|
</el-table-column> -->
|
|
|
|
|
<el-table-column label="采集协议" align="left" prop="protocol" width="250px">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<dict-tag :type="DICT_TYPE.IOT_PROTOCOL" :value="scope.row.protocol" />
|
|
|
|
|
@ -110,12 +81,12 @@
|
|
|
|
|
<dict-tag :type="DICT_TYPE.IOT_GATEWAY_STATUS" :value="scope.row.status" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="采集周期(s)" align="left" prop="sampleCycle" width="200px"/>
|
|
|
|
|
|
|
|
|
|
<el-table-column label="采集周期(s)" align="left" prop="sampleCycle" width="200px" />
|
|
|
|
|
|
|
|
|
|
<!-- <el-table-column label="读主题" align="center" prop="readTopic" />
|
|
|
|
|
<el-table-column label="写主题" align="center" prop="writeTopic" />
|
|
|
|
|
<el-table-column label="网关id" align="center" prop="gatewayId" /> -->
|
|
|
|
|
<!-- <el-table-column label="设备品牌id" align="center" prop="deviceBrandId" />-->
|
|
|
|
|
<!-- <el-table-column label="设备品牌id" align="center" prop="deviceBrandId" />-->
|
|
|
|
|
<!-- <el-table-column label="离线间隔" align="center" prop="offLineDuration" /> -->
|
|
|
|
|
<!-- <el-table-column
|
|
|
|
|
label="最后上线时间"
|
|
|
|
|
@ -132,7 +103,7 @@
|
|
|
|
|
:formatter="dateFormatter"
|
|
|
|
|
width="170px"
|
|
|
|
|
/> -->
|
|
|
|
|
<el-table-column label="是否启用" align="center" prop="isEnable" fixed="right" width="200px">
|
|
|
|
|
<el-table-column label="是否启用" align="center" prop="isEnable" fixed="right" width="200px">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.isEnable" />
|
|
|
|
|
</template>
|
|
|
|
|
@ -140,56 +111,28 @@
|
|
|
|
|
<el-table-column label="操作" align="center" fixed="right" width="380px">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button link type="primary" @click.stop="handleShowAttribute(scope.row)">点位</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
link
|
|
|
|
|
type="primary"
|
|
|
|
|
@click="openForm('setting', scope.row.id)"
|
|
|
|
|
v-hasPermi="['iot:device:update']"
|
|
|
|
|
>
|
|
|
|
|
<el-button link type="primary" @click="openForm('setting', scope.row.id)" v-hasPermi="['iot:device:update']">
|
|
|
|
|
设置
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
link
|
|
|
|
|
type="primary"
|
|
|
|
|
@click="handleCopy(scope.row.id)"
|
|
|
|
|
v-hasPermi="['iot:device:create']"
|
|
|
|
|
>
|
|
|
|
|
<el-button link type="primary" @click="handleCopy(scope.row.id)" v-hasPermi="['iot:device:create']">
|
|
|
|
|
复制
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
link
|
|
|
|
|
type="primary"
|
|
|
|
|
@click.stop="handleEdit(scope.row)"
|
|
|
|
|
v-hasPermi="['iot:device:update']"
|
|
|
|
|
>
|
|
|
|
|
<el-button link type="primary" @click.stop="handleEdit(scope.row)" v-hasPermi="['iot:device:update']">
|
|
|
|
|
编辑
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
link
|
|
|
|
|
:type="isRowConnected(scope.row) ? 'warning' : 'success'"
|
|
|
|
|
:loading="!!connectLoadingMap[scope.row.id]"
|
|
|
|
|
@click.stop="handleToggleConnect(scope.row)"
|
|
|
|
|
>
|
|
|
|
|
<el-button link :type="isRowConnected(scope.row) ? 'warning' : 'success'"
|
|
|
|
|
:loading="!!connectLoadingMap[scope.row.id]" @click.stop="handleToggleConnect(scope.row)">
|
|
|
|
|
{{ isRowConnected(scope.row) ? '断开连接' : '连接' }}
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
link
|
|
|
|
|
type="danger"
|
|
|
|
|
@click="handleDelete(scope.row.id)"
|
|
|
|
|
v-hasPermi="['iot:device:delete']"
|
|
|
|
|
>
|
|
|
|
|
<el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['iot:device:delete']">
|
|
|
|
|
删除
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<!-- 分页 -->
|
|
|
|
|
<Pagination
|
|
|
|
|
:total="total"
|
|
|
|
|
v-model:page="queryParams.pageNo"
|
|
|
|
|
v-model:limit="queryParams.pageSize"
|
|
|
|
|
@pagination="getList"
|
|
|
|
|
/>
|
|
|
|
|
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
|
|
|
|
@pagination="getList" />
|
|
|
|
|
</ContentWrap>
|
|
|
|
|
|
|
|
|
|
<!-- 表单弹窗:添加/修改 -->
|
|
|
|
|
@ -301,7 +244,7 @@ const handleDelete = async (ids: number | number[]) => {
|
|
|
|
|
}
|
|
|
|
|
// 刷新列表
|
|
|
|
|
await getList()
|
|
|
|
|
} catch {}
|
|
|
|
|
} catch { }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleBatchDelete = async () => {
|
|
|
|
|
@ -317,7 +260,7 @@ const handleCopy = async (id: number) => {
|
|
|
|
|
await DeviceApi.copyDevice(id)
|
|
|
|
|
message.success('复制成功')
|
|
|
|
|
await getList()
|
|
|
|
|
} catch {}
|
|
|
|
|
} catch { }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 导出按钮操作 */
|
|
|
|
|
|