装备定位

This commit is contained in:
bb_pan 2026-01-28 10:54:32 +08:00
parent 00656162f7
commit 1f6445fbb7
1 changed files with 259 additions and 396 deletions

View File

@ -2,94 +2,135 @@
<div class="app-container">
<!-- 简化版搜索表单 -->
<div class="search-wrapper">
<el-form
:inline="true"
label-width="130px"
label-position="right"
ref="searchFormRef"
:model="searchParams"
class="search-form"
v-show="showSearch"
<el-form label-width="130px" ref="searchFormRef" :model="searchParams" v-show="showSearch">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item prop="iotName" label="定位设备名称:">
<el-input clearable placeholder="请输入定位设备名称" v-model="searchParams.iotName" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="iotCode" label="定位设备编码:">
<el-input clearable placeholder="请输入定位设备编码" v-model="searchParams.iotCode" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="typeId" label="装备类目:">
<el-select
v-model="searchParams.typeId"
placeholder="请选择定位设备状态"
clearable
filterable
style="width: 100%"
>
<el-form-item prop="keyWord" label="定位设备名称:">
<el-input
clearable
placeholder="请输入定位设备名称"
v-model="searchParams.keyWord"
style="width: 200px"
/>
</el-form-item>
<el-form-item prop="keyWord" label="定位设备编码:">
<el-input
clearable
placeholder="请输入定位设备编码"
v-model="searchParams.keyWord"
style="width: 200px"
/>
</el-form-item>
<el-form-item prop="keyWord" label="装备名称:">
<el-input
clearable
placeholder="请输入装备名称"
v-model="searchParams.keyWord"
style="width: 200px"
<el-option
v-for="(item, index) in categoryList"
:key="index"
:label="item.equipmentName"
:value="item.typeId"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<div v-if="searchExpanded">
<el-form-item prop="keyWord" label="装备编码:">
<el-input
clearable
placeholder="请输入装备编码"
v-model="searchParams.keyWord"
style="width: 200px"
/>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item prop="typeName" label="装备名称:">
<el-input clearable placeholder="请输入装备名称" v-model="searchParams.typeName" style="width: 100%" />
</el-form-item>
<el-form-item prop="keyWord" label="装备状态:">
<el-input
clearable
placeholder="请输入装备状态"
v-model="searchParams.keyWord"
style="width: 200px"
/>
</el-col>
<el-col :span="8">
<el-form-item prop="maCode" label="装备编码:">
<el-input clearable placeholder="请输入装备编码" v-model="searchParams.maCode" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="proName" label="使用项目:">
<el-input clearable placeholder="请输入使用项目" v-model="searchParams.proName" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="maStatus" label="装备状态:">
<el-select
v-model="searchParams.maStatus"
placeholder="请选择装备状态"
clearable
filterable
style="width: 100%"
>
<el-option v-for="(item, index) in statusList" :key="index" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<!-- 设备状态 -->
<el-form-item prop="iotStatus" label="设备状态:">
<el-select
v-model="searchParams.iotStatus"
placeholder="请选择设备状态"
clearable
filterable
style="width: 100%"
>
<el-option label="在线" value="0" />
<el-option label="下线" value="1" />
</el-select>
</el-form-item>
</el-col>
<!-- 绑定状态 -->
<el-col :span="8">
<el-form-item prop="bindStatus" label="绑定状态:">
<el-select
v-model="searchParams.bindStatus"
placeholder="请选择绑定状态"
clearable
filterable
style="width: 100%"
>
<el-option label="已绑定" value="0" />
<el-option label="未绑定" value="1" />
</el-select>
</el-form-item>
</el-col>
<!-- 绑定人 -->
<el-col :span="8">
<el-form-item prop="iotManager" label="绑定人:">
<el-input clearable placeholder="请输入绑定人" v-model="searchParams.iotManager" style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</div>
<!-- 状态统计和操作按钮 - 固定定位 -->
<div class="status-operation-bar sticky-bar">
<div class="operation-buttons">
<el-button type="text" size="mini" style="float: right;line-height: 30px;" @click="toggleSearch" class="search-toggle-btn">
<el-button
type="text"
size="mini"
style="float: right; line-height: 30px"
@click="toggleSearch"
class="search-toggle-btn"
>
<i :class="searchExpanded ? 'el-icon-up' : 'el-icon-down'"></i>
{{ searchExpanded ? '收起' : '展开' }}
</el-button>
<el-button @click="handleQuery" icon="el-icon-search" type="primary" style="float: right" >
查询
</el-button>
<el-button @click="handleQuery" icon="el-icon-search" type="primary" style="float: right"> 查询 </el-button>
<el-button @click="onReset" icon="el-icon-refresh" style="margin-left: 8px; float: right">重置</el-button>
</div>
</div>
<!-- 数据列表 -->
<div class="table-wrapper">
<div class="table-header">
<el-button @click="addDevice(null)" type="primary" style="float: right;margin-right: 10px;">
新增
</el-button>
<el-button @click="addDevice(null)" type="primary" style="float: right; margin-right: 10px"> 新增 </el-button>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getDeviceList"
:columns="columns"
></right-toolbar>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getDeviceList" :columns="columns"></right-toolbar>
</div>
<!-- 表格容器限制高度 + 隐藏滚动条 -->
@ -104,8 +145,6 @@
:show-overflow-tooltip="true"
height="100%"
>
<!--复选列-->
<!-- <el-table-column type="selection" width="50" align="center"/>-->
<!--序号列-->
<el-table-column align="center" label="序号" type="index" width="60" />
@ -137,125 +176,33 @@
</template>
</el-table-column>
<!-- 核心字段列 - 统一设置换行样式 -->
<!-- <el-table-column align="center" prop="iotName" label="定位设备名称" width="180">
<template slot-scope="scope">
<el-tooltip
:content="scope.row.iotName"
placement="top"
:disabled="!isOverflow(scope.row.iotName, 2, 180)"
>
<div class="cell-text-ellipsis">
{{ scope.row.iotName }}
</div>
</el-tooltip>
</template>
</el-table-column>
<el-table-column align="center" prop="iotCode" label="定位设备编码" min-width="120">
<template slot-scope="scope">
<el-tooltip
:content="scope.row.iotCode"
placement="top"
:disabled="!isOverflow(scope.row.iotCode, 2, 180)"
>
<div class="cell-text-ellipsis">{{ scope.row.iotCode }}</div>
</el-tooltip>
</template>
</el-table-column>
<el-table-column align="center" prop="typeName" label="装备名称" width="180">
<template slot-scope="scope">
<el-tooltip
:content="scope.row.typeName"
placement="top"
:disabled="!isOverflow(scope.row.typeName, 2, 180)"
>
<div class="cell-text-ellipsis">{{ scope.row.typeName }}</div>
</el-tooltip>
</template>
</el-table-column>
<el-table-column align="center" prop="maCode" label="装备编码" min-width="120">
<template slot-scope="scope">
<el-tooltip
:content="scope.row.maCode"
placement="top"
:disabled="!isOverflow(scope.row.maCode, 2, 180)"
>
<div class="cell-text-ellipsis">{{ scope.row.maCode }}</div>
</el-tooltip>
</template>
</el-table-column>
<el-table-column align="center" label="设备状态" width="80">
<template slot-scope="{ row }">
<el-tag size="mini" type="success" v-if="row.iotStatus === 0">在线</el-tag>
<el-tag size="mini" type="warning" v-if="row.iotStatus === 1">离线</el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="绑定状态" width="80">
<template slot-scope="{ row }">
<el-tag size="mini" type="success" v-if="row.bindStatus === 0">已绑定</el-tag>
<el-tag size="mini" type="warning" v-if="row.bindStatus === 1">未绑定</el-tag>
</template>
</el-table-column>
<el-table-column align="center" prop="address" label="设备地图" width="80">
<template slot-scope="{ row }">
<i
class="el-icon-location location-icon"
@click="handleMap(row)"
v-if="row.bindStatus === 0"
/>
</template>
</el-table-column>
<el-table-column align="center" prop="iotManager" label="设备负责人" width="100">
<template slot-scope="scope">
<el-tooltip
:content="scope.row.iotManager"
placement="top"
:disabled="!isOverflow(scope.row.iotManager, 2, 180)"
>
<div class="cell-text-ellipsis">
{{ scope.row.iotManager }}
</div>
</el-tooltip>
</template>
</el-table-column>
<el-table-column align="center" prop="bindTime" label="绑定时间" min-width="110"/>
<el-table-column align="center" prop="unBindTime" label="解绑时间" min-width="110"/>-->
<!--操作列仅修改绑定按钮的传参其余完全保留-->
<el-table-column align="center" label="操作" width="250">
<template slot-scope="{ row }">
<el-button
type="text"
icon="el-icon-tickets"
@click="handleViewRecord(row.iotId)"
>记录</el-button>
<el-button type="text" icon="el-icon-tickets" @click="handleViewRecord(row.iotId)">记录</el-button>
<el-button
type="text"
icon="el-icon-delete"
style="color: #f56c6c"
@click="handleDeleteAndUnbind(row, 1)"
v-if="row.bindStatus === 1"
>删除</el-button>
>删除</el-button
>
<el-button
type="text"
icon="el-icon-edit"
style="color: #67c23a"
@click="addDevice(row)"
v-if="row.bindStatus === 1"
>修改</el-button>
>修改</el-button
>
<el-button
type="text"
icon="el-icon-document-delete"
style="color: #e6a23c"
@click="handleDeleteAndUnbind(row, 2)"
v-if="row.bindStatus === 0"
>解绑</el-button>
>解绑</el-button
>
<!-- 仅修改这行传参改为row其余样式/图标/颜色完全保留 -->
<el-button
type="text"
@ -263,7 +210,8 @@
style="color: #e6a23c"
@click="handleBind(row)"
v-if="row.bindStatus === 1"
>绑定</el-button>
>绑定</el-button
>
</template>
</el-table-column>
</el-table>
@ -307,10 +255,7 @@
<el-form-item label="定位设备负责人:" prop="iotManager">
<el-input v-model="addOrEditForm.iotManager" placeholder="输入内容" maxlength="50" show-word-limit />
</el-form-item>
<!-- <el-form-item label="地址:" prop="address">-->
<!-- <el-input v-model="addOrEditForm.address" placeholder="输入内容" maxlength="50" show-word-limit/>-->
<!-- </el-form-item>-->
<!-- 设备状态开关 -->
<el-form-item label="定位设备状态:">
<el-switch
size="large"
@ -321,19 +266,16 @@
inactive-value="1"
/>
</el-form-item>
<!-- &lt;!&ndash; 绑定状态开关 &ndash;&gt;-->
<!-- <el-form-item label="绑定状态:">-->
<!-- <el-switch-->
<!-- size="large"-->
<!-- v-model="addOrEditForm.bindStatus"-->
<!-- active-color="#13ce66"-->
<!-- inactive-color="#cccccc"-->
<!-- active-value="0"-->
<!-- inactive-value="1"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="备注:" prop="remark">
<el-input type="textarea" v-model="addOrEditForm.remark" placeholder="请输入备注" rows="2" maxlength="100" show-word-limit/>
<el-input
type="textarea"
v-model="addOrEditForm.remark"
placeholder="请输入备注"
rows="2"
maxlength="100"
show-word-limit
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -344,44 +286,6 @@
</div>
</el-dialog>
<!--绑定弹窗仅修改3处逻辑prop/取消按钮/隐藏iotId样式完全保留-->
<!-- <el-dialog
width="600px"
@close="handleBindDialogClose"
destroy-on-close
:title="bindDialogTitle"
:visible.sync="bindDialogVisible"
>
<el-form
label-width="100px"
label-position="right"
ref="bindFormRef"
:model="bindForm"
:rules="bindFormRules"
>
&lt;!&ndash; 新增隐藏存储iotId无样式修改 &ndash;&gt;
<el-form-item prop="iotId" style="display: none;">
<el-input v-model="bindForm.iotId"/>
</el-form-item>
&lt;!&ndash; 仅修改prop为typeNamelabel/样式完全保留 &ndash;&gt;
<el-form-item label="装备名称:" prop="typeName">
<el-input v-model="bindForm.typeName" placeholder="输入内容" maxlength="50" show-word-limit/>
</el-form-item>
&lt;!&ndash; 仅修改prop为typeCodelabel/样式完全保留 &ndash;&gt;
<el-form-item label="装备编码:" prop="maCode">
<el-input v-model="bindForm.maCode" placeholder="输入内容" maxlength="50" show-word-limit/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
&lt;!&ndash; 仅修改这行取消按钮关闭绑定弹窗其余完全保留 &ndash;&gt;
<el-button @click="bindDialogVisible = false">取消</el-button>
<el-button type="primary" @click="bindSubmit" :loading="submitLoading">
绑定
</el-button>
</div>
</el-dialog>-->
<el-dialog
title="设备绑定"
@close="handleBindDialogClose"
@ -394,20 +298,18 @@
<div class="instance-dialog-container">
<!-- 筛选条件 -->
<div class="search-form">
<el-form :inline="true" :model="searchForm" class="demo-form-inline">
<el-form-item label="装备名称">
<el-input
v-model="searchForm.equipmentName"
placeholder="请输入装备名称"
clearable
size="small"
/>
<el-input v-model="searchForm.equipmentName" placeholder="请输入装备名称" clearable size="small" />
</el-form-item>
<el-form-item label="装备分类">
<el-select v-model="searchForm.type" placeholder="请选择分类"
style="width: 100%;"
clearable filterable @change="handleCategoryChange"
<el-select
v-model="searchForm.type"
placeholder="请选择分类"
style="width: 100%"
clearable
filterable
@change="handleCategoryChange"
>
<el-option
v-for="item in categoryList"
@ -417,13 +319,8 @@
/>
</el-select>
</el-form-item>
<el-form-item label="规格型号">
<el-input
v-model="searchForm.specModel"
placeholder="请输入规格型号"
clearable
size="small"
/>
<el-form-item label="原始编码">
<el-input v-model="searchForm.originalEncoding" placeholder="请输入原始编码" clearable size="small" />
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="handleOwnSearch">查询</el-button>
@ -443,13 +340,9 @@
:highlight-current-row="true"
>
<el-table-column width="55" align="center">
<template slot-scope="scope"> <!-- Element UI slot-scope 而非 v-slot -->
<el-radio
v-model="selectedRowId"
:label="scope.row.id"
size="small"
class="radio-no-text"
/>
<template slot-scope="scope">
<!-- Element UI slot-scope 而非 v-slot -->
<el-radio v-model="selectedRowId" :label="scope.row.id" size="small" class="radio-no-text" />
</template>
</el-table-column>
<el-table-column
@ -475,7 +368,7 @@
:page-size="tableData.own.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="tableData.own.total"
style="margin-top: 15px; text-align: right;"
style="margin-top: 15px; text-align: right"
>
</el-pagination>
</div>
@ -483,39 +376,19 @@
<template #footer>
<div class="dialog-footer">
<el-button @click="ownOpen = false">取消</el-button>
<el-button
type="primary"
@click="handleOwnConfirm"
:disabled="!selectedRowId"
>
确认选择
</el-button>
<el-button type="primary" @click="handleOwnConfirm" :disabled="!selectedRowId"> 确认选择 </el-button>
</div>
</template>
</el-dialog>
<!-- 弹框 -->
<DialogModel
:dialogConfig="dialogConfig"
@closeDialogOuter="closeDialogOuter"
>
<DialogModel :dialogConfig="dialogConfig" @closeDialogOuter="closeDialogOuter">
<!-- 设备添加表单 -->
<template slot="outerContent">
<template v-if="dialogConfig.outerTitle !== '绑定记录'">
<el-form
label-width="80px"
:model="addDeviceParams"
:rules="addDeviceRules"
ref="addDeviceParamsRef"
>
<el-form label-width="80px" :model="addDeviceParams" :rules="addDeviceRules" ref="addDeviceParamsRef">
<el-form-item label="设备类型" prop="iotType">
<el-select
style="width: 100%"
placeholder="请选择设备类型"
clearable
v-model="addDeviceParams.iotType"
>
<el-select style="width: 100%" placeholder="请选择设备类型" clearable v-model="addDeviceParams.iotType">
<el-option
v-for="item in deviceTypeList"
:key="item.iotTypeId"
@ -525,18 +398,10 @@
</el-select>
</el-form-item>
<el-form-item label="设备编号" prop="iotCode">
<el-input
placeholder="请输入设备编号"
clearable
v-model="addDeviceParams.iotCode"
/>
<el-input placeholder="请输入设备编号" clearable v-model="addDeviceParams.iotCode" />
</el-form-item>
<el-form-item
label="设备状态: "
prop="iotStatus"
v-if="dialogConfig.outerTitle === '修改设备'"
>
<el-form-item label="设备状态: " prop="iotStatus" v-if="dialogConfig.outerTitle === '修改设备'">
<el-switch
v-model="addDeviceParams.iotStatus"
active-text="在线"
@ -548,30 +413,14 @@
</el-form>
<el-row style="margin-top: 20px; text-align: right">
<el-button
size="mini"
type="primary"
@click="handleSubmit()"
> </el-button
>
<el-button
size="mini"
type="warning"
@click="handleCancel()"
> </el-button
>
<el-button size="mini" type="primary" @click="handleSubmit()"> </el-button>
<el-button size="mini" type="warning" @click="handleCancel()"> </el-button>
</el-row>
</template>
<TableModel
:config="dialogConfig"
:sendParams="sendParams"
:sendApi="getDeviceBindRecordApi"
v-else
/>
<TableModel :config="dialogConfig" :sendParams="sendParams" :sendApi="getDeviceBindRecordApi" v-else />
</template>
</DialogModel>
<MapDialog
v-if="mapDialogVisible"
:deviceName="deviceName"
@ -590,12 +439,11 @@ import {
unbindDeviceApi,
getDeviceBindRecordApi,
getDeviceBindDetailsApi,
addOrUpdate,
getIotList,
unbindIot,
getCategoryList,
getEquipment
getEquipment,
} from '@/api/iotDevice'
import { dialogConfig } from './config'
import DialogModel from '@/components/DialogModel' //
@ -611,7 +459,7 @@ export default {
components: {
DialogModel,
TableModel,
MapDialog
MapDialog,
},
data() {
return {
@ -621,13 +469,22 @@ export default {
...dialogConfig, // config.js
outerVisible: false, //
outerWidth: '50%',
outerTitle: ''
outerTitle: '',
},
//
searchParams: {
pageNum: 1,
pageSize: 10,
keyWord: '',
iotName: '',
iotCode: '',
typeId: '',
typeName: '',
maCode: '',
proName: '',
maStatus: '',
iotStatus: '',
bindStatus: '',
iotManager: '',
},
//
projectList: [],
@ -649,7 +506,7 @@ export default {
address: '',
iotManager: '',
iotStatus: '1', // 线
remark: ''
remark: '',
},
//
addOrEditFormRules: {
@ -661,28 +518,30 @@ export default {
iotId: '', // ID
typeName: '',
maCode: '',
maId:''
maId: '',
},
//
bindFormRules: {
typeName: [{ required: true, message: '请输入装备名称', trigger: 'blur' }],
maCode: [{ required: true, message: '请输入装备编码', trigger: 'blur' }],
iotId: [{ required: true, message: '缺少设备ID', trigger: 'blur' }]
iotId: [{ required: true, message: '缺少设备ID', trigger: 'blur' }],
},
// /
sendParams: {
iotId: ''
iotId: '',
},
// 2
deviceTypeList: [], // el-select
addDeviceParams: { // el-form
addDeviceParams: {
// el-form
iotType: '',
iotCode: '',
iotStatus: 0
iotStatus: 0,
},
addDeviceRules: { // el-form
addDeviceRules: {
// el-form
iotType: [{ required: true, message: '请选择设备类型', trigger: 'change' }],
iotCode: [{ required: true, message: '请输入设备编号', trigger: 'blur' }]
iotCode: [{ required: true, message: '请输入设备编号', trigger: 'blur' }],
},
//
qrCode: '',
@ -699,21 +558,26 @@ export default {
showSearch: true,
//
columns: [
{ key: 1, label: `定位设备名称`, prop: 'iotName', visible: true, },
{ key: 2, label: `定位设备编码`, prop: 'iotCode', visible: true, },
{ key: 3, label: `装备类目`, prop: 'type',width: 300, visible: true, },
{ key: 4, label: `装备名称`, prop: 'typeName',width: 300, visible: true, },
{ key: 5, label: `装备编码`, prop: 'maCode', visible: true, },
{ key: 6, label: `使用项目`, prop: 'propertyUnit', visible: true, },
{ key: 7, label: `装备状态`, prop: 'maStatus', visible: true, },
{ key: 8, label: `设备状态`, prop: 'iotStatus', visible: true, },
{ key: 9, label: `绑定状态`, prop: 'bindStatus', visible: true, },
{ key: 10, label: `设备地图`, prop: 'address', visible: true, },
{ key: 11, label: `设备负责人`, prop: 'iotManager', visible: true, },
{ key: 12, label: `绑定时间`, prop: 'bindTime', visible: true, },
{ key: 13, label: `解绑时间`, prop: 'unBindTime', visible: true, },
{ key: 1, label: `定位设备名称`, prop: 'iotName', visible: true },
{ key: 2, label: `定位设备编码`, prop: 'iotCode', visible: true },
{ key: 3, label: `装备类目`, prop: 'type', width: 300, visible: true },
{ key: 4, label: `装备名称`, prop: 'typeName', width: 300, visible: true },
{ key: 5, label: `装备编码`, prop: 'maCode', visible: true },
{ key: 6, label: `使用项目`, prop: 'proName', visible: true },
{ key: 7, label: `装备状态`, prop: 'maStatus', visible: true },
{ key: 8, label: `设备状态`, prop: 'iotStatus', visible: true },
{ key: 9, label: `绑定状态`, prop: 'bindStatus', visible: true },
{ key: 10, label: `设备地图`, prop: 'address', visible: true },
{ key: 11, label: `设备负责人`, prop: 'iotManager', visible: true },
{ key: 12, label: `绑定时间`, prop: 'bindTime', visible: true },
{ key: 13, label: `解绑时间`, prop: 'unBindTime', visible: true },
],
statusList: [
{ label: '在库', value: '1' },
{ label: '自用', value: '2' },
{ label: '共享', value: '3' },
{ label: '维修', value: '5' },
],
//
searchForm: {
@ -737,10 +601,12 @@ export default {
{ label: '设备编码', prop: 'deviceCode', minWidth: 120 },
{ label: '装备名称', prop: 'name', minWidth: 150 },
{ label: '原始编码', prop: 'originalEncoding', minWidth: 120 },
{ label: '装备状态', prop: 'maStatus', minWidth: 120,
dictMap: { 1: '在库', 2: '自用', 3: '共享', 5: '维修' }
{
label: '装备状态',
prop: 'maStatus',
minWidth: 120,
dictMap: { 1: '在库', 2: '自用', 3: '共享', 5: '维修' },
},
],
},
ownOpen: false, //
@ -751,15 +617,15 @@ export default {
created() {
this.getDeviceList()
//this.getDeviceTypeList()
this.getCategoryList()
},
methods: {
async getCategoryList() {
const res = await getCategoryList()
if (res.code === 200) {
this.categoryList = res.data.map(item => ({
this.categoryList = res.data.map((item) => ({
...item,
uniqueKey: `${item.typeId}-${item.type}`
uniqueKey: `${item.typeId}-${item.type}`,
}))
}
},
@ -841,7 +707,6 @@ export default {
/** 添加/编辑设备 */
addDevice(row) {
this.getCategoryList()
// 1.
this.$refs.addOrEditFormRef?.resetFields()
@ -854,7 +719,7 @@ export default {
this.addOrEditForm = {
...row,
iotStatus: String(row.iotStatus), //
bindStatus: String(row.bindStatus)
bindStatus: String(row.bindStatus),
}
} else {
this.isAdd = true
@ -869,7 +734,7 @@ export default {
address: '',
iotManager: '', // iotPersoniotManager
iotStatus: '1',
remark: ''
remark: '',
}
}
@ -879,8 +744,8 @@ export default {
/** 绑定设备 */
handleBind(row) {
this.selectedRowId ='';
this.getCategoryList();
this.selectedRowId = ''
this.getCategoryList()
this.loadOwnEquipmentData()
this.$refs.bindFormRef?.resetFields()
this.bindForm = {
@ -890,7 +755,7 @@ export default {
maId: '',
}
this.bindDialogTitle = '设备绑定' //
this.bindDialogVisible = true;
this.bindDialogVisible = true
},
/** 复选框选择事件 */
@ -954,7 +819,7 @@ export default {
address: '',
iotManager: '',
iotStatus: '1',
remark: ''
remark: '',
}
},
@ -972,7 +837,7 @@ export default {
/** 查看记录(强化:确保弹窗参数正确) */
handleViewRecord(id) {
this.dialogConfig.outerWidth = '70%'
this.dialogConfig.outerTitle = "绑定记录"
this.dialogConfig.outerTitle = '绑定记录'
this.sendParams.iotId = id
this.dialogConfig.outerVisible = true //
console.log('记录弹窗参数:', this.dialogConfig, this.sendParams) //
@ -991,7 +856,8 @@ export default {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
})
.then(async () => {
try {
if (type === 1) {
const res = await deleteDeviceApi(row.iotId)
@ -1010,7 +876,8 @@ export default {
this.$message.error(`${title}失败`)
console.error(`${title}失败:`, err)
}
}).catch(() => {
})
.catch(() => {
this.$message.info('已取消操作')
})
},
@ -1076,9 +943,7 @@ export default {
this.formData.classificationForm.category = ''
return
}
const selectedItem = this.categoryList.find(
item => item.typeId === selectedTypeId
)
const selectedItem = this.categoryList.find((item) => item.typeId === selectedTypeId)
if (selectedItem) {
this.formData.classificationForm.matchingName = selectedItem.typeId
this.formData.classificationForm.category = selectedItem.type
@ -1094,7 +959,7 @@ export default {
this.searchForm.own = {
name: '',
type: '',
specificationModel: ''
specificationModel: '',
}
this.tableData.own.pageNum = 1
this.loadOwnEquipmentData()
@ -1110,7 +975,7 @@ export default {
//
handleRowClick(row) {
this.selectedRowId = row.id; // row.key
this.selectedRowId = row.id // row.key
this.bindForm = {
iotId: this.bindForm.iotId,
@ -1135,7 +1000,7 @@ export default {
const queryParams = {
...this.searchForm.own,
pageNum: tabConfig.pageNum,
pageSize: tabConfig.pageSize
pageSize: tabConfig.pageSize,
}
const res = await getEquipment(queryParams)
tabConfig.list = res.rows || []
@ -1148,9 +1013,8 @@ export default {
} finally {
tabConfig.loading = false
}
}
}
},
},
}
</script>
@ -1258,7 +1122,6 @@ export default {
word-break: break-all;
}
/* 分页组件:固定右下 */
.pagination-wrapper {
margin-top: 12px;
@ -1295,7 +1158,7 @@ export default {
/* 搜索区域收起/展开按钮 */
.search-toggle-btn {
color: #2CBAB2;
color: #2cbab2;
padding: 5px 10px;
font-size: 16px;
font-weight: 300;
@ -1314,12 +1177,12 @@ export default {
}
.el-button--text {
color: #2CBAB2;
color: #2cbab2;
}
.el-button--primary {
background-color: #2CBAB2;
border-color: #2CBAB2;
background-color: #2cbab2;
border-color: #2cbab2;
}
/* 隐藏el-radio的文本部分 */