|
@@ -144,7 +144,7 @@
|
|
<el-tabs type="border-card" v-model="activetab" @tab-click="wuhandleClick">
|
|
<el-tabs type="border-card" v-model="activetab" @tab-click="wuhandleClick">
|
|
<!-- 属性定义 -->
|
|
<!-- 属性定义 -->
|
|
<el-tab-pane :label="$t('message.device.productDetail.propertyDefinition')" name="attr">
|
|
<el-tab-pane :label="$t('message.device.productDetail.propertyDefinition')" name="attr">
|
|
- <div class="wu-title">
|
|
|
|
|
|
+ <div class="wu-title pane-btn-wrap">
|
|
<div class="title"></div>
|
|
<div class="title"></div>
|
|
<!-- 新增 -->
|
|
<!-- 新增 -->
|
|
<div>
|
|
<div>
|
|
@@ -199,82 +199,112 @@
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
- <el-tab-pane label="功能定义" name="fun">
|
|
|
|
- <div class="wu-title">
|
|
|
|
|
|
+ <!-- 功能定义 -->
|
|
|
|
+ <el-tab-pane :label="$t('message.device.productDetail.functionDefinition')" name="fun">
|
|
|
|
+ <div class="wu-title pane-btn-wrap">
|
|
<div class="title"></div>
|
|
<div class="title"></div>
|
|
<div>
|
|
<div>
|
|
- <el-button size="small" type="primary" v-auth="'add'" :disabled="!canEdit" @click="onOpenEditFun()">添加</el-button>
|
|
|
|
|
|
+ <el-button size="small" type="primary" v-auth="'add'" :disabled="!canEdit" @click="onOpenEditFun()">{{$t('message.tableI18nAction.add')}}</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<el-table style="width: 100%" :data="tableData.data" v-loading="tableLoading" v-if="activetab == 'fun'">
|
|
<el-table style="width: 100%" :data="tableData.data" v-loading="tableLoading" v-if="activetab == 'fun'">
|
|
- <el-table-column label="功能标识" align="center" prop="key" />
|
|
|
|
- <el-table-column label="名称" prop="name" show-overflow-tooltip />
|
|
|
|
-
|
|
|
|
- <el-table-column label="描述" prop="desc" show-overflow-tooltip />
|
|
|
|
- <el-table-column label="操作" width="300" align="center" fixed="right">
|
|
|
|
|
|
+ <!-- 功能标识 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.productDetail.functionIdentifier')" align="center" prop="key" />
|
|
|
|
+ <!-- 名称 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.productDetail.name')" prop="name" show-overflow-tooltip />
|
|
|
|
+ <!-- 描述 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.productDetail.remark')" prop="desc" show-overflow-tooltip />
|
|
|
|
+ <!-- 操作 -->
|
|
|
|
+ <el-table-column :label="$t('message.tableI18nColumn.operation')" width="300" align="center" fixed="right">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button size="small" text type="warning" v-auth="'edit'" :disabled="!canEdit" @click="onEditFun(scope.row)">修改</el-button>
|
|
|
|
- <el-button size="small" text type="danger" v-auth="'del'" :disabled="!canEdit" @click="onRowDel(scope.row.key, 'fun')">删除</el-button>
|
|
|
|
|
|
+ <!-- 编辑 -->
|
|
|
|
+ <el-button size="small" text type="warning" v-auth="'edit'" :disabled="!canEdit" @click="onEditFun(scope.row)">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
|
|
+ <!-- 删除 -->
|
|
|
|
+ <el-button size="small" text type="danger" v-auth="'del'" :disabled="!canEdit" @click="onRowDel(scope.row.key, 'fun')">{{ $t('message.tableI18nAction.delete') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
- <el-tab-pane label="事件定义" name="event">
|
|
|
|
- <div class="wu-title">
|
|
|
|
|
|
+ <!-- 事件定义 -->
|
|
|
|
+ <el-tab-pane :label="$t('message.device.productDetail.eventDefinition')" name="event">
|
|
|
|
+ <div class="wu-title pane-btn-wrap">
|
|
<div class="title"></div>
|
|
<div class="title"></div>
|
|
<div>
|
|
<div>
|
|
- <el-button type="primary" size="small" v-auth="'add'" :disabled="!canEdit" @click="onOpenEditEvent()">添加</el-button>
|
|
|
|
|
|
+ <!-- 新增 -->
|
|
|
|
+ <el-button type="primary" size="small" v-auth="'add'" :disabled="!canEdit" @click="onOpenEditEvent()">{{ $t('message.tableI18nAction.add') }}</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<el-table style="width: 100%" :data="tableData.data" v-loading="tableLoading" v-if="activetab == 'event'">
|
|
<el-table style="width: 100%" :data="tableData.data" v-loading="tableLoading" v-if="activetab == 'event'">
|
|
- <el-table-column label="事件标识" align="center" prop="key" />
|
|
|
|
- <el-table-column label="名称" prop="name" show-overflow-tooltip />
|
|
|
|
- <el-table-column prop="level" label="事件级别" width="120" align="center">
|
|
|
|
|
|
+ <!-- 事件标识 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.productDetail.eventIdentifier')" align="center" prop="key" />
|
|
|
|
+ <!-- 名称 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.productDetail.name')" prop="name" show-overflow-tooltip />
|
|
|
|
+ <!-- 事件级别 -->
|
|
|
|
+ <el-table-column prop="level" :label="$t('message.device.productDetail.eventLevel')" width="120" align="center">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-tag size="small" v-if="scope.row.level == 0">普通</el-tag>
|
|
|
|
- <el-tag type="warning" size="small" v-if="scope.row.level == 1">警告</el-tag>
|
|
|
|
- <el-tag type="danger" size="small" v-if="scope.row.level == 2">紧急</el-tag>
|
|
|
|
|
|
+ <!-- 普通 -->
|
|
|
|
+ <el-tag size="small" v-if="scope.row.level == 0">{{ $t('message.device.productDetail.normal') }}</el-tag>
|
|
|
|
+ <!-- 警告 -->
|
|
|
|
+ <el-tag type="warning" size="small" v-if="scope.row.level == 1">{{ $t('message.device.productDetail.warning') }}</el-tag>
|
|
|
|
+ <!-- 紧急 -->
|
|
|
|
+ <el-tag type="danger" size="small" v-if="scope.row.level == 2">{{ $t('message.device.productDetail.urgent') }}</el-tag>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="描述" prop="desc" show-overflow-tooltip />
|
|
|
|
-
|
|
|
|
- <el-table-column label="操作" width="300" align="center" fixed="right">
|
|
|
|
|
|
+ <!-- 描述 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.productDetail.remark')" prop="desc" show-overflow-tooltip />
|
|
|
|
+ <!-- 操作 -->
|
|
|
|
+ <el-table-column :label="$t('message.tableI18nColumn.operation')" width="300" align="center" fixed="right">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button size="small" text type="warning" v-auth="'edit'" :disabled="!canEdit" @click="onEditEvent(scope.row)">修改</el-button>
|
|
|
|
- <el-button size="small" text type="danger" v-auth="'del'" :disabled="!canEdit" @click="onRowDel(scope.row.key, 'event')">删除</el-button>
|
|
|
|
|
|
+ <!-- 编辑 -->
|
|
|
|
+ <!-- :disabled="!canEdit" -->
|
|
|
|
+ <el-button size="small" text type="warning" v-auth="'edit'" :disabled="!canEdit" @click="onEditEvent(scope.row)">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
|
|
+ <!-- 删除 -->
|
|
|
|
+ <el-button size="small" text type="danger" v-auth="'del'" :disabled="!canEdit" @click="onRowDel(scope.row.key, 'event')">{{ $t('message.tableI18nAction.delete') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
- <el-tab-pane label="标签定义" name="tab">
|
|
|
|
- <div class="wu-title">
|
|
|
|
|
|
+ <!-- 标签定义 -->
|
|
|
|
+ <el-tab-pane :label="$t('message.device.productDetail.tagDefinition')" name="tab">
|
|
|
|
+ <div class="wu-title pane-btn-wrap">
|
|
<div class="title"></div>
|
|
<div class="title"></div>
|
|
<div>
|
|
<div>
|
|
- <el-button size="small" type="primary" v-auth="'add'" :disabled="!canEdit" @click="onOpenEditTab()">添加</el-button>
|
|
|
|
|
|
+ <!-- 新增 -->
|
|
|
|
+ <el-button size="small" type="primary" v-auth="'add'" :disabled="!canEdit" @click="onOpenEditTab()">{{ $t('message.tableI18nAction.add') }}</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<el-table style="width: 100%" :data="tableData.data" v-loading="tableLoading" v-if="activetab == 'tab'">
|
|
<el-table style="width: 100%" :data="tableData.data" v-loading="tableLoading" v-if="activetab == 'tab'">
|
|
- <el-table-column label="属性标识" align="center" prop="key" />
|
|
|
|
- <el-table-column label="属性名称" prop="name" show-overflow-tooltip />
|
|
|
|
- <el-table-column prop="valueType" label="数据类型" width="120" align="center">
|
|
|
|
|
|
+ <!-- 属性标识 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.productDetail.propertyIdentifier')" align="center" prop="key" />
|
|
|
|
+ <!-- 属性名称 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.productDetail.propertyName')" prop="name" show-overflow-tooltip />
|
|
|
|
+ <!-- 数据类型 -->
|
|
|
|
+ <el-table-column prop="valueType" :label="$t('message.device.productDetail.dataType')" width="120" align="center">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<span>{{ scope.row.valueType?.type }}</span>
|
|
<span>{{ scope.row.valueType?.type }}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="accessMode" label="是否只读" width="120" align="center">
|
|
|
|
|
|
+ <!-- 是否只读 -->
|
|
|
|
+ <el-table-column prop="accessMode" :label="$t('message.device.productDetail.readOnly')" width="120" align="center">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-tag type="info" size="small" v-if="scope.row.accessMode">只读</el-tag>
|
|
|
|
- <el-tag type="success" size="small" v-else>读写</el-tag>
|
|
|
|
|
|
+ <!-- 只读 -->
|
|
|
|
+ <el-tag type="info" size="small" v-if="scope.row.accessMode">{{ $t('message.device.productDetail.readonly') }}</el-tag>
|
|
|
|
+ <!-- 读写 -->
|
|
|
|
+ <el-tag type="success" size="small" v-else>{{ $t('message.device.productDetail.readWrite') }}</el-tag>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="描述" prop="desc" show-overflow-tooltip />
|
|
|
|
- <el-table-column label="操作" width="300" align="center" fixed="right">
|
|
|
|
|
|
+ <!-- 描述 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.productDetail.remark')" prop="desc" show-overflow-tooltip />
|
|
|
|
+ <!-- 操作 -->
|
|
|
|
+ <el-table-column :label="$t('message.tableI18nColumn.operation')" width="300" align="center" fixed="right">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button size="small" text type="warning" v-auth="'edit'" :disabled="!canEdit" @click="onEditTag(scope.row)">修改</el-button>
|
|
|
|
- <el-button size="small" text type="danger" v-auth="'del'" :disabled="!canEdit" @click="onRowDel(scope.row.key, 'tab')">删除</el-button>
|
|
|
|
|
|
+ <!-- 编辑 -->
|
|
|
|
+ <el-button size="small" text type="warning" v-auth="'edit'" :disabled="!canEdit" @click="onEditTag(scope.row)">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
|
|
+ <!-- 删除 -->
|
|
|
|
+ <el-button size="small" text type="danger" v-auth="'del'" :disabled="!canEdit" @click="onRowDel(scope.row.key, 'tab')">{{ $t('message.tableI18nAction.delete') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -289,39 +319,49 @@
|
|
<!-- 日志管理 -->
|
|
<!-- 日志管理 -->
|
|
<el-tab-pane :label="$t('message.device.logManagement')" name="4">
|
|
<el-tab-pane :label="$t('message.device.logManagement')" name="4">
|
|
<div class="system-user-search mb15">
|
|
<div class="system-user-search mb15">
|
|
- <el-form :model="logtableData.param" ref="logqueryRef" inline label-width="68px">
|
|
|
|
- <el-form-item label="日志类型" prop="types">
|
|
|
|
- <el-select v-model="logtableData.param.types" placeholder="日志类型" clearable>
|
|
|
|
|
|
+ <el-form :model="logtableData.param" ref="logqueryRef" inline :label-width="currentLang === 'en' ? '70px' : '68px'">
|
|
|
|
+ <!-- 日志类型 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.logManagementModule.logType')" prop="types">
|
|
|
|
+ <!-- 日志类型 -->
|
|
|
|
+ <el-select v-model="logtableData.param.types" :placeholder="$t('message.device.logManagementModule.logType')" clearable>
|
|
<el-option v-for="item in logTypeData" :key="item" :label="item" :value="item" />
|
|
<el-option v-for="item in logTypeData" :key="item" :label="item" :value="item" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="创建时间" prop="dateRange">
|
|
|
|
- <el-date-picker v-model="logtableData.param.dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
|
|
|
|
|
|
+ <!-- 创建时间 -->
|
|
|
|
+ <el-form-item :label="$t('message.device.logManagementModule.createdTime')" prop="dateRange" :label-width="currentLang === 'en' ? '110px' : '68px'">
|
|
|
|
+ <!-- 开始日期/结束日期 -->
|
|
|
|
+ <el-date-picker v-model="logtableData.param.dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-" :start-placeholder="$t('message.device.logManagementModule.startDate')" :end-placeholder="$t('message.device.logManagementModule.endDate')"></el-date-picker>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
|
+ <!-- 查询 -->
|
|
<el-button type="primary" class="ml10" @click="getlog">
|
|
<el-button type="primary" class="ml10" @click="getlog">
|
|
<el-icon>
|
|
<el-icon>
|
|
<ele-Search />
|
|
<ele-Search />
|
|
</el-icon>
|
|
</el-icon>
|
|
- 查询
|
|
|
|
|
|
+ {{ $t('message.device.logManagementModule.search') }}
|
|
</el-button>
|
|
</el-button>
|
|
|
|
+ <!-- 重置 -->
|
|
<el-button @click="resetQuery(logqueryRef)">
|
|
<el-button @click="resetQuery(logqueryRef)">
|
|
<el-icon>
|
|
<el-icon>
|
|
<ele-Refresh />
|
|
<ele-Refresh />
|
|
</el-icon>
|
|
</el-icon>
|
|
- 重置
|
|
|
|
|
|
+ {{ $t('message.device.logManagementModule.reset') }}
|
|
</el-button>
|
|
</el-button>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
<el-table style="width: 100%" :data="logtableData.data">
|
|
<el-table style="width: 100%" :data="logtableData.data">
|
|
- <el-table-column label="类型" align="center" prop="type" />
|
|
|
|
- <el-table-column label="时间" prop="ts" show-overflow-tooltip />
|
|
|
|
-
|
|
|
|
- <el-table-column label="内容" prop="content" show-overflow-tooltip />
|
|
|
|
- <el-table-column label="操作" width="300" align="center" fixed="right">
|
|
|
|
|
|
+ <!-- 类型 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.logManagementModule.type')" align="center" prop="type" />
|
|
|
|
+ <!-- 时间 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.logManagementModule.time')" prop="ts" show-overflow-tooltip />
|
|
|
|
+ <!-- 内容 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.logManagementModule.content')" prop="content" show-overflow-tooltip />
|
|
|
|
+ <!-- 操作 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.logManagementModule.action')" width="300" align="center" fixed="right">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button size="small" text type="warning" @click="onLogDetail(scope.row)">查看</el-button>
|
|
|
|
|
|
+ <!-- 查看 -->
|
|
|
|
+ <el-button size="small" text type="warning" @click="onLogDetail(scope.row)">{{ $t('message.device.logManagementModule.view') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -330,11 +370,15 @@
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
<!-- Topic列表 -->
|
|
<!-- Topic列表 -->
|
|
<el-tab-pane :label="$t('message.device.topicList')" name="topic">
|
|
<el-tab-pane :label="$t('message.device.topicList')" name="topic">
|
|
- SagooMqtt协议 ,涉及的topic如下:
|
|
|
|
|
|
+ <!-- SagooMqtt协议 ,涉及的topic如下: -->
|
|
|
|
+ {{$t('message.device.topicListModule.tips')}}
|
|
<el-table style="width: 100%; margin-top: 20px" :data="topicData" border>
|
|
<el-table style="width: 100%; margin-top: 20px" :data="topicData" border>
|
|
- <el-table-column label="描述" prop="info" width="250" />
|
|
|
|
- <el-table-column label="类型" prop="type" width="80" align="center" />
|
|
|
|
- <el-table-column label="Topic类" prop="url">
|
|
|
|
|
|
+ <!-- 描述 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.topicListModule.description')" prop="info" width="250" />
|
|
|
|
+ <!-- 类型 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.topicListModule.type')" prop="type" width="80" align="center" />
|
|
|
|
+ <!-- Topic类 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.topicListModule.topicClass')" prop="url">
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
<copy :text="row.url"></copy>
|
|
<copy :text="row.url"></copy>
|
|
</template>
|
|
</template>
|
|
@@ -342,39 +386,51 @@
|
|
</el-table>
|
|
</el-table>
|
|
<pagination v-show="logtableData.total > 0" :total="logtableData.total" v-model:page="logtableData.param.pageNum" v-model:limit="logtableData.param.pageSize" @pagination="getlog" />
|
|
<pagination v-show="logtableData.total > 0" :total="logtableData.total" v-model:page="logtableData.param.pageNum" v-model:limit="logtableData.param.pageSize" @pagination="getlog" />
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
- <el-tab-pane v-if="prodetail.deviceType == '网关'" label="子设备" name="6">
|
|
|
|
|
|
+ <!-- 子设备 -->
|
|
|
|
+ <el-tab-pane v-if="prodetail.deviceType == '网关'" :label="$t('message.device.subDeviceModule.subDevice')" name="6">
|
|
<div class="wu-box">
|
|
<div class="wu-box">
|
|
- <div class="wu-title">
|
|
|
|
- <div class="title">子设备列表</div>
|
|
|
|
|
|
+ <div class="wu-title pane-btn-wrap">
|
|
|
|
+ <!-- 子设备列表 -->
|
|
|
|
+ <div class="title">{{$t('message.device.subDeviceModule.subDeviceList')}}</div>
|
|
<div>
|
|
<div>
|
|
- <el-button v-auth="'mutipleBind'" type="primary" @click="onOpenMutipleBind()">批量绑定</el-button>
|
|
|
|
- <el-button v-auth="'cancleMutipleBind'" :disabled="!deviceKeyList.length" type="primary" @click="mutipleUnbind()">批量解绑</el-button>
|
|
|
|
|
|
+ <el-button v-auth="'mutipleBind'" type="primary" @click="onOpenMutipleBind()">{{$t('message.device.subDeviceModule.batchBinding')}}</el-button>
|
|
|
|
+ <el-button v-auth="'cancleMutipleBind'" :disabled="!deviceKeyList.length" type="primary" @click="mutipleUnbind()">{{$t('message.device.subDeviceModule.batchUnbinding')}}</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<el-table :data="deviceTableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="deviceTableData.loading">
|
|
<el-table :data="deviceTableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="deviceTableData.loading">
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
- <el-table-column label="标识" prop="key" width="130" show-overflow-tooltip>
|
|
|
|
|
|
+ <!-- 标识 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.subDeviceModule.identifier')" prop="key" width="130" show-overflow-tooltip>
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
<copy :text="row.key"></copy>
|
|
<copy :text="row.key"></copy>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="设备名称" prop="name" show-overflow-tooltip />
|
|
|
|
- <el-table-column label="产品名称" prop="productName" show-overflow-tooltip />
|
|
|
|
-
|
|
|
|
- <el-table-column prop="status" label="状态" width="100" align="center">
|
|
|
|
|
|
+ <!-- 设备名称 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.subDeviceModule.deviceName')" prop="name" show-overflow-tooltip />
|
|
|
|
+ <!-- 产品名称 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.subDeviceModule.productName')" prop="productName" show-overflow-tooltip />
|
|
|
|
+ <!-- 状态 -->
|
|
|
|
+ <el-table-column prop="status" :label="$t('message.device.subDeviceModule.status')" width="100" align="center">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-tag type="info" size="small" v-if="scope.row.status == 1">离线</el-tag>
|
|
|
|
- <el-tag type="success" size="small" v-if="scope.row.status == 2">在线</el-tag>
|
|
|
|
- <el-tag type="info" size="small" v-if="scope.row.status == 0">未启用</el-tag>
|
|
|
|
|
|
+ <!-- 离线 -->
|
|
|
|
+ <el-tag type="info" size="small" v-if="scope.row.status == 1">{{ $t('message.device.subDeviceModule.offline') }}</el-tag>
|
|
|
|
+ <!-- 在线 -->
|
|
|
|
+ <el-tag type="success" size="small" v-if="scope.row.status == 2">{{ $t('message.device.subDeviceModule.online') }}</el-tag>
|
|
|
|
+ <!-- 未启用 -->
|
|
|
|
+ <el-tag type="info" size="small" v-if="scope.row.status == 0">{{ $t('message.device.subDeviceModule.disabled') }}</el-tag>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="registryTime" label="激活时间" align="center" width="150"></el-table-column>
|
|
|
|
- <el-table-column prop="desc" label="说明"></el-table-column>
|
|
|
|
-
|
|
|
|
- <el-table-column label="操作" width="160" align="center" fixed="right">
|
|
|
|
|
|
+ <!-- 激活时间 -->
|
|
|
|
+ <el-table-column prop="registryTime" :label="$t('message.device.subDeviceModule.activationTime')" align="center" width="150"></el-table-column>
|
|
|
|
+ <!-- 说明 -->
|
|
|
|
+ <el-table-column prop="desc" :label="$t('message.device.subDeviceModule.remark')"></el-table-column>
|
|
|
|
+ <!-- 操作 -->
|
|
|
|
+ <el-table-column :label="$t('message.device.subDeviceModule.action')" align="center" width="160" fixed="right">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button size="small" text type="danger" v-auth="'del'" @click="deleteSubDevice(scope.row)">删除</el-button>
|
|
|
|
- <el-button size="small" text type="warning" v-auth="'detail'" @click="onOpenDetail(scope.row)">详情</el-button>
|
|
|
|
|
|
+ <!-- 删除 -->
|
|
|
|
+ <el-button size="small" text type="danger" v-auth="'del'" @click="deleteSubDevice(scope.row)">{{ $t('message.device.subDeviceModule.delete') }}</el-button>
|
|
|
|
+ <!-- 详情 -->
|
|
|
|
+ <el-button size="small" text type="warning" v-auth="'detail'" @click="onOpenDetail(scope.row)">{{ $t('message.device.subDeviceModule.detail') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -385,9 +441,11 @@
|
|
<el-tab-pane :label="$t('message.device.deviceArchive')" name="7" v-if="deviceAssetData">
|
|
<el-tab-pane :label="$t('message.device.deviceArchive')" name="7" v-if="deviceAssetData">
|
|
<el-form label-width="110px">
|
|
<el-form label-width="110px">
|
|
<div class="pro-box">
|
|
<div class="pro-box">
|
|
- <div class="protitle">设备档案</div>
|
|
|
|
|
|
+ <!-- 设备档案 -->
|
|
|
|
+ <div class="protitle">{{ $t('message.device.deviceArchive') }}</div>
|
|
<div>
|
|
<div>
|
|
- <el-button size="small" type="primary" v-auth="'edit'" @click="onOpenEditAsset" :disabled="!canEdit">编辑</el-button>
|
|
|
|
|
|
+ <!-- 编辑 -->
|
|
|
|
+ <el-button size="small" type="primary" v-auth="'edit'" @click="onOpenEditAsset" :disabled="!canEdit">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@@ -426,12 +484,13 @@
|
|
<!-- 编辑设备档案 -->
|
|
<!-- 编辑设备档案 -->
|
|
<EditAssetRef ref="editAssetRef" @getList="getDeviceAssetMetadata"></EditAssetRef>
|
|
<EditAssetRef ref="editAssetRef" @getList="getDeviceAssetMetadata"></EditAssetRef>
|
|
|
|
|
|
- <el-dialog v-model="dialogVisible" title="日志数据内容" width="30%">
|
|
|
|
|
|
+ <!-- 日志数据内容 -->
|
|
|
|
+ <el-dialog v-model="dialogVisible" :title="$t('message.device.logManagementModule.viewContent')" width="30%">
|
|
<JsonViewer :value="jsonData" boxed sort theme="jv-dark" />
|
|
<JsonViewer :value="jsonData" boxed sort theme="jv-dark" />
|
|
|
|
|
|
<template #footer>
|
|
<template #footer>
|
|
<span class="dialog-footer">
|
|
<span class="dialog-footer">
|
|
- <el-button @click="dialogVisible = false">关闭</el-button>
|
|
|
|
|
|
+ <el-button @click="dialogVisible = false">{{ $t('message.device.logManagementModule.close') }}</el-button>
|
|
</span>
|
|
</span>
|
|
</template>
|
|
</template>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
@@ -625,35 +684,47 @@ export default defineComponent({
|
|
? [
|
|
? [
|
|
{
|
|
{
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/property/pack/post`,
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/property/pack/post`,
|
|
- info: "网关批量上传事件和属性(网关发起)",
|
|
|
|
- type: "请求",
|
|
|
|
|
|
+ // 网关批量上传事件和属性(网关发起)
|
|
|
|
+ info: t('message.device.topicListModule.topic1'),
|
|
|
|
+ // 请求
|
|
|
|
+ type: t('message.device.topicListModule.request'),
|
|
},
|
|
},
|
|
{
|
|
{
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/property/pack/post_reply`,
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/property/pack/post_reply`,
|
|
- info: "网关批量上传事件和属性(网关发起)",
|
|
|
|
- type: "响应",
|
|
|
|
|
|
+ // 网关批量上传事件和属性(网关发起)
|
|
|
|
+ info: t('message.device.topicListModule.topic1'),
|
|
|
|
+ // 响应
|
|
|
|
+ type: t('message.device.topicListModule.response'),
|
|
},
|
|
},
|
|
]
|
|
]
|
|
: [
|
|
: [
|
|
{
|
|
{
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/property/post`,
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/property/post`,
|
|
- info: "设备上报属性(设备端发起)",
|
|
|
|
- type: "请求",
|
|
|
|
|
|
+ // 设备上报属性(设备端发起)
|
|
|
|
+ info: t('message.device.topicListModule.topic2'),
|
|
|
|
+ // 请求
|
|
|
|
+ type: t('message.device.topicListModule.request'),
|
|
},
|
|
},
|
|
{
|
|
{
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/property/post_reply`,
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/property/post_reply`,
|
|
- info: "设备上报属性(设备端发起)",
|
|
|
|
- type: "响应",
|
|
|
|
|
|
+ // 设备上报属性(设备端发起)
|
|
|
|
+ info: t('message.device.topicListModule.topic2'),
|
|
|
|
+ // 响应
|
|
|
|
+ type: t('message.device.topicListModule.response'),
|
|
},
|
|
},
|
|
{
|
|
{
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/${"${eventIdentifier}"}/post`,
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/${"${eventIdentifier}"}/post`,
|
|
- info: "设备上报事件(设备端发起)",
|
|
|
|
- type: "请求",
|
|
|
|
|
|
+ // 设备上报事件(设备端发起)
|
|
|
|
+ info: t('message.device.topicListModule.topic3'),
|
|
|
|
+ // 请求
|
|
|
|
+ type: t('message.device.topicListModule.request'),
|
|
},
|
|
},
|
|
{
|
|
{
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/${"${eventIdentifier}"}/post_reply`,
|
|
url: `/sys/${res.data.productKey}/${deviceKey}/thing/event/${"${eventIdentifier}"}/post_reply`,
|
|
- info: "设备上报事件(设备端发起)",
|
|
|
|
- type: "响应",
|
|
|
|
|
|
+ // 设备上报事件(设备端发起)
|
|
|
|
+ info: t('message.device.topicListModule.topic3'),
|
|
|
|
+ // 响应
|
|
|
|
+ type: t('message.device.topicListModule.response'),
|
|
},
|
|
},
|
|
];
|
|
];
|
|
|
|
|
|
@@ -698,14 +769,17 @@ export default defineComponent({
|
|
};
|
|
};
|
|
|
|
|
|
const mutipleUnbind = () => {
|
|
const mutipleUnbind = () => {
|
|
- let msg = "是否进行批量解绑?";
|
|
|
|
|
|
+ // 是否进行批量解绑?
|
|
|
|
+ let msg = t('message.device.message.batchUnbind');
|
|
if (state.deviceKeyList.length === 0) {
|
|
if (state.deviceKeyList.length === 0) {
|
|
- ElMessage.error("请选择要批量解绑的数据。");
|
|
|
|
|
|
+ // 请选择要批量解绑的数据。
|
|
|
|
+ ElMessage.error(t('message.device.message.batchUnbindConfirm'));
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- ElMessageBox.confirm(msg, "提示", {
|
|
|
|
- confirmButtonText: "确认",
|
|
|
|
- cancelButtonText: "取消",
|
|
|
|
|
|
+ ElMessageBox.confirm(msg,
|
|
|
|
+ t('message.tableI18nConfirm.deleteTitle'), {
|
|
|
|
+ confirmButtonText: t('message.tableI18nConfirm.confirmText'),
|
|
|
|
+ cancelButtonText: t('message.tableI18nConfirm.cancelText'),
|
|
type: "warning",
|
|
type: "warning",
|
|
})
|
|
})
|
|
.then(() => {
|
|
.then(() => {
|
|
@@ -715,7 +789,8 @@ export default defineComponent({
|
|
subKeys: state.deviceKeyList,
|
|
subKeys: state.deviceKeyList,
|
|
})
|
|
})
|
|
.then(() => {
|
|
.then(() => {
|
|
- ElMessage.success("解绑成功");
|
|
|
|
|
|
+ // 解绑成功
|
|
|
|
+ ElMessage.success(t('message.device.message.batchUnbindSuccessfully'));
|
|
// typeList();
|
|
// typeList();
|
|
getDeviceTableData();
|
|
getDeviceTableData();
|
|
});
|
|
});
|
|
@@ -727,7 +802,7 @@ export default defineComponent({
|
|
state.deviceTableData.data = [];
|
|
state.deviceTableData.data = [];
|
|
state.deviceTableData.param.gatewayKey = state.detail.key;
|
|
state.deviceTableData.param.gatewayKey = state.detail.key;
|
|
api.device.getList(state.deviceTableData.param).then((res: any) => {
|
|
api.device.getList(state.deviceTableData.param).then((res: any) => {
|
|
- state.deviceTableData.data = res.list;
|
|
|
|
|
|
+ state.deviceTableData.data = res.lis;
|
|
state.deviceTableData.total = res.Total;
|
|
state.deviceTableData.total = res.Total;
|
|
});
|
|
});
|
|
};
|
|
};
|
|
@@ -744,13 +819,18 @@ export default defineComponent({
|
|
|
|
|
|
// 删除子设备
|
|
// 删除子设备
|
|
const deleteSubDevice = (row: any) => {
|
|
const deleteSubDevice = (row: any) => {
|
|
- ElMessageBox.confirm(`此操作将永久删除该子设备:${row.name}, 是否继续?`, "提示", {
|
|
|
|
- confirmButtonText: "删除",
|
|
|
|
- cancelButtonText: "取消",
|
|
|
|
- type: "warning",
|
|
|
|
- }).then(() => {
|
|
|
|
|
|
+ // 此操作将永久删除该子设备:${row.name}, 是否继续?
|
|
|
|
+ ElMessageBox.confirm(
|
|
|
|
+ t('message.device.message.deleteSubDevice', { name: row.name }),
|
|
|
|
+ t('message.tableI18nConfirm.deleteTitle'),
|
|
|
|
+ {
|
|
|
|
+ confirmButtonText: t('message.tableI18nConfirm.confirmText'),
|
|
|
|
+ cancelButtonText: t('message.tableI18nConfirm.cancelText'),
|
|
|
|
+ type: "warning",
|
|
|
|
+ }
|
|
|
|
+ ).then(() => {
|
|
api.product.deleteSubDevice(row.id).then(() => {
|
|
api.product.deleteSubDevice(row.id).then(() => {
|
|
- ElMessage.success("删除成功");
|
|
|
|
|
|
+ ElMessage.success(t('message.device.message.deleteSubDeviceSuccessfully'));
|
|
getDeviceTableData();
|
|
getDeviceTableData();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
@@ -826,39 +906,41 @@ export default defineComponent({
|
|
|
|
|
|
// 删除产品
|
|
// 删除产品
|
|
const onRowDel = (key: string, type: string) => {
|
|
const onRowDel = (key: string, type: string) => {
|
|
- let msg = `此操作将永久删除该数据,是否继续?`;
|
|
|
|
|
|
+ // 此操作将永久删除该数据,是否继续?
|
|
|
|
+ let msg = t('message.device.message.deleteMessage');
|
|
|
|
|
|
if (key.length === 0) {
|
|
if (key.length === 0) {
|
|
- ElMessage.error("请选择要删除的数据。");
|
|
|
|
|
|
+ // 请选择要删除的数据。
|
|
|
|
+ ElMessage.error(t('message.device.message.selectMessage'));
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- ElMessageBox.confirm(msg, "提示", {
|
|
|
|
- confirmButtonText: "确认",
|
|
|
|
- cancelButtonText: "取消",
|
|
|
|
|
|
+ ElMessageBox.confirm(msg, t('message.tableI18nConfirm.deleteTitle'), {
|
|
|
|
+ confirmButtonText: t('message.tableI18nConfirm.confirmText'),
|
|
|
|
+ cancelButtonText: t('message.tableI18nConfirm.cancelText'),
|
|
type: "warning",
|
|
type: "warning",
|
|
})
|
|
})
|
|
.then(() => {
|
|
.then(() => {
|
|
if (type == "attr") {
|
|
if (type == "attr") {
|
|
api.model.propertydel(state.productKey, key).then(() => {
|
|
api.model.propertydel(state.productKey, key).then(() => {
|
|
- ElMessage.success("删除成功");
|
|
|
|
|
|
+ ElMessage.success(t('message.device.message.deleteSubDeviceSuccessfully'));
|
|
getproperty();
|
|
getproperty();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
if (type == "fun") {
|
|
if (type == "fun") {
|
|
api.model.functiondel(state.productKey, key).then(() => {
|
|
api.model.functiondel(state.productKey, key).then(() => {
|
|
- ElMessage.success("删除成功");
|
|
|
|
|
|
+ ElMessage.success(t('message.device.message.deleteSubDeviceSuccessfully'));
|
|
getfunction();
|
|
getfunction();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
if (type == "event") {
|
|
if (type == "event") {
|
|
api.model.eventdel(state.productKey, key).then(() => {
|
|
api.model.eventdel(state.productKey, key).then(() => {
|
|
- ElMessage.success("删除成功");
|
|
|
|
|
|
+ ElMessage.success(t('message.device.message.deleteSubDeviceSuccessfully'));
|
|
getevent();
|
|
getevent();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
if (type == "tab") {
|
|
if (type == "tab") {
|
|
api.model.tagdel(state.productKey, key).then(() => {
|
|
api.model.tagdel(state.productKey, key).then(() => {
|
|
- ElMessage.success("删除成功");
|
|
|
|
|
|
+ ElMessage.success(t('message.device.message.deleteSubDeviceSuccessfully'));
|
|
gettab();
|
|
gettab();
|
|
});
|
|
});
|
|
}
|
|
}
|