|
@@ -2,154 +2,209 @@
|
|
|
<div class="page bg page-full">
|
|
|
<div class="content">
|
|
|
<div class="cont_box" style="align-items: center;">
|
|
|
- <div class="title">产品:{{ detail.name }}</div>
|
|
|
+ <!-- 产品 -->
|
|
|
+ <div class="title">{{ `${$t('message.device.product')}:${detail.name}` }}</div>
|
|
|
<!-- <el-tag :type="developer_status == 1 ? 'success' : 'danger'" style="margin:0 20px;">{{ developer_status == 1 ? '已发布' : '未发布' }}</el-tag> -->
|
|
|
- <el-switch v-auth="'startOrStop'" style="margin:0 20px;" v-model="developer_status" inline-prompt :active-value="1" :inactive-value="0" active-text="启用" inactive-text="停用" @change="CkOption"></el-switch>
|
|
|
+ <el-switch v-auth="'startOrStop'" style="margin:0 20px;" v-model="developer_status" inline-prompt :active-value="1" :inactive-value="0" :active-text="$t('message.device.producDetail.enable')" :inactive-text="$t('message.device.producDetail.disable')" @change="CkOption"></el-switch>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<el-tabs v-model="activeName" style="padding: 0 20px;" @tab-click="handleClick">
|
|
|
- <el-tab-pane label="产品信息" name="1">
|
|
|
+ <!-- 产品信息 -->
|
|
|
+ <el-tab-pane :label="$t('message.device.producDetail.productInfo')" name="1">
|
|
|
<div class="pro-box">
|
|
|
- <div class="protitle">产品信息</div>
|
|
|
- <el-button type="" :icon="Edit" class="buttonedit" v-auth="'edit'" @click="onOpenEditDic(detail)">编辑</el-button>
|
|
|
+ <div class="protitle">{{$t('message.device.producDetail.productInfo')}}</div>
|
|
|
+ <!-- 编辑 -->
|
|
|
+ <el-button type="" :icon="Edit" class="buttonedit" v-auth="'edit'" @click="onOpenEditDic(detail)">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
|
</div>
|
|
|
|
|
|
<el-descriptions class="margin-top" :column="3" border>
|
|
|
- <el-descriptions-item label="产品标识"><copy :text="detail.key"></copy></el-descriptions-item>
|
|
|
- <el-descriptions-item label="产品分类">{{ detail.categoryName }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="设备类型">{{ detail.deviceType }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="产品图片">
|
|
|
+ <!-- 产品标识 -->
|
|
|
+ <el-descriptions-item :label="$t('message.device.producDetail.productIdentifier')"><copy :text="detail.key"></copy></el-descriptions-item>
|
|
|
+ <!-- 产品分类 -->
|
|
|
+ <el-descriptions-item :label="$t('message.device.producDetail.productCategory')">{{ detail.categoryName }}</el-descriptions-item>
|
|
|
+ <!-- 设备类型 -->
|
|
|
+ <el-descriptions-item :label="$t('message.device.producDetail.deviceType')">{{ detail.deviceType }}</el-descriptions-item>
|
|
|
+ <!-- 产品图片 -->
|
|
|
+ <el-descriptions-item :label="$t('message.device.producDetail.productImage')">
|
|
|
<el-image style="width: 80px; height: 80px" :src="detail.icon" :previewSrcList="[detail.icon]" fit="contain">
|
|
|
<template #error>
|
|
|
<div class="image-slot">
|
|
|
<ele-Picture style="width: 30px;" />
|
|
|
- 加载失败
|
|
|
+ <!-- 加载失败 -->
|
|
|
+ {{ $t('message.device.producDetail.loadFailed') }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-image>
|
|
|
</el-descriptions-item>
|
|
|
- <el-descriptions-item label="消息协议">{{ detail.messageProtocol }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="接入方式">{{ detail.transportProtocol }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="描述">{{ detail.desc }}</el-descriptions-item>
|
|
|
+ <!-- 消息协议 -->
|
|
|
+ <el-descriptions-item :label="$t('message.device.producDetail.messageProtocol')">{{ detail.messageProtocol }}</el-descriptions-item>
|
|
|
+ <!-- 接入方式 -->
|
|
|
+ <el-descriptions-item :label="$t('message.device.tableI18nColumn.transportProtocol')">{{ detail.transportProtocol }}</el-descriptions-item>
|
|
|
+ <!-- 描述 -->
|
|
|
+ <el-descriptions-item :label="$t('message.tableI18nColumn.des')">{{ detail.desc }}</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="物模型" name="2">
|
|
|
+ <!-- 物模型 -->
|
|
|
+ <el-tab-pane :label="$t('message.device.producDetail.thingModel')" name="2">
|
|
|
<el-tabs type="border-card" v-model="activetab" @tab-click="wuhandleClick">
|
|
|
- <el-tab-pane label="属性定义" name="attr">
|
|
|
+ <!-- 属性定义 -->
|
|
|
+ <el-tab-pane :label="$t('message.device.producDetail.propertyDefinition')" name="attr">
|
|
|
<div class="wu-title">
|
|
|
- <div class="title">属性定义</div>
|
|
|
- <div><el-button size="small" type="primary" v-auth="'edit'" @click="onOpenEditAttr()">添加</el-button>
|
|
|
+ <div class="title">{{$t('message.device.producDetail.propertyDefinition')}}</div>
|
|
|
+ <!-- 新增 -->
|
|
|
+ <div>
|
|
|
+ <el-button size="small" type="primary" v-auth="'edit'" @click="onOpenEditAttr()">{{$t('message.tableI18nAction.add')}}</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <el-table style="width: 100%" :data="tableData.data" v-if="activetab == 'attr'">
|
|
|
- <el-table-column label="属性标识" align="center" prop="key" />
|
|
|
- <el-table-column label="属性名称" prop="name" show-overflow-tooltip />
|
|
|
- <el-table-column prop="valueType" label="数据类型" width="100" align="center">
|
|
|
+ <el-table style="width: 100%" :data="tableData.data" v-loading="tableData.loading" v-if="activetab == 'attr'">
|
|
|
+ <!-- 属性标识 -->
|
|
|
+ <el-table-column :label="$t('message.device.producDetail.propertyIdentifier')" align="center" prop="key" />
|
|
|
+ <!-- 属性名称 -->
|
|
|
+ <el-table-column :label="$t('message.device.producDetail.propertyName')" prop="name" show-overflow-tooltip />
|
|
|
+ <!-- 数据类型 -->
|
|
|
+ <el-table-column prop="valueType" :label="$t('message.device.producDetail.dataType')" width="100" align="center">
|
|
|
<template #default="scope">
|
|
|
<span>{{ scope.row.valueType.type }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="decimals" label="精度" width="60" align="center">
|
|
|
+ <!-- 精度 -->
|
|
|
+ <el-table-column prop="decimals" :label="$t('message.device.producDetail.precision')" :width="currentLang == 'en' ? '100' : '60'" align="center">
|
|
|
<template #default="scope">
|
|
|
<span>{{ scope.row.valueType.decimals }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="unit" label="单位" width="60" align="center">
|
|
|
+ <!-- 单位 -->
|
|
|
+ <el-table-column prop="unit" :label="$t('message.device.producDetail.unit')" width="60" align="center">
|
|
|
<template #default="scope">
|
|
|
<span>{{ scope.row.valueType.unit }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="accessMode" label="是否只读" width="120" align="center">
|
|
|
+ <!-- 是否只读 -->
|
|
|
+ <el-table-column prop="accessMode" :label="$t('message.device.producDetail.readOnly')" width="120" align="center">
|
|
|
<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.producDetail.readonly') }}</el-tag>
|
|
|
+ <!-- 读写 -->
|
|
|
+ <el-tag type="success" size="small" v-else>{{ $t('message.device.producDetail.readWrite') }}</el-tag>
|
|
|
</template>
|
|
|
</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.producDetail.remark')" prop="desc" show-overflow-tooltip />
|
|
|
+ <!-- 操作 -->
|
|
|
+ <el-table-column :label="$t('message.tableI18nColumn.operation')" width="120" align="center" fixed="right">
|
|
|
<template #default="scope">
|
|
|
- <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditAttr(scope.row)">修改</el-button>
|
|
|
- <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'attr')">删除</el-button>
|
|
|
+ <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditAttr(scope.row)">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
|
+ <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'attr')">{{ $t('message.tableI18nAction.delete') }}</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="功能定义" name="fun">
|
|
|
+ <!-- 功能定义 -->
|
|
|
+ <el-tab-pane :label="$t('message.device.producDetail.functionDefinition')" name="fun">
|
|
|
<div class="wu-title">
|
|
|
- <div class="title">功能定义</div>
|
|
|
- <div><el-button size="small" type="primary" v-auth="'add'" @click="onOpenEditFun()">添加</el-button>
|
|
|
+ <div class="title">{{$t('message.device.producDetail.functionDefinition')}}</div>
|
|
|
+ <!-- 新增 -->
|
|
|
+ <div>
|
|
|
+ <el-button size="small" type="primary" v-auth="'add'" @click="onOpenEditFun()">{{$t('message.tableI18nAction.add')}}</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<el-table style="width: 100%" :data="tableData.data" 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.producDetail.functionIdentifier')" align="center" prop="key" />
|
|
|
+ <el-table-column :label="$t('message.device.producDetail.name')" prop="name" show-overflow-tooltip />
|
|
|
+ <!-- 描述 -->
|
|
|
+ <el-table-column :label="$t('message.tableI18nColumn.des')" prop="desc" show-overflow-tooltip />
|
|
|
+ <!-- 操作 -->
|
|
|
+ <el-table-column :label="$t('message.tableI18nColumn.operation')" width="120" align="center" fixed="right">
|
|
|
<template #default="scope">
|
|
|
- <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditFun(scope.row)">修改</el-button>
|
|
|
- <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'fun')">删除</el-button>
|
|
|
+ <!-- 编辑 -->
|
|
|
+ <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditFun(scope.row)">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
|
+ <!-- 删除 -->
|
|
|
+ <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'fun')">{{ $t('message.tableI18nAction.delete') }}</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="事件定义" name="event">
|
|
|
+ <!-- 事件定义 -->
|
|
|
+ <el-tab-pane :label="$t('message.device.producDetail.eventDefinition')" name="event">
|
|
|
<div class="wu-title">
|
|
|
- <div class="title">事件定义</div>
|
|
|
+ <div class="title">{{$t('message.device.producDetail.eventDefinition')}}</div>
|
|
|
<div>
|
|
|
- <el-button size="small" type="primary" v-auth="'add'" @click="onOpenEditEvent()">添加</el-button>
|
|
|
+ <el-button size="small" type="primary" v-auth="'add'" @click="onOpenEditEvent()">{{$t('message.tableI18nAction.add')}}</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<el-table style="width: 100%" :data="tableData.data" 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.producDetail.eventIdentifier')" align="center" prop="key" />
|
|
|
+ <!-- 事件名称 -->
|
|
|
+ <el-table-column :label="$t('message.device.producDetail.name')" prop="name" show-overflow-tooltip />
|
|
|
+ <!-- 事件级别 -->
|
|
|
+ <el-table-column prop="level" :label="$t('message.device.producDetail.eventLevel')" width="120" align="center">
|
|
|
<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.producDetail.normal') }}</el-tag>
|
|
|
+ <!-- 警告 -->
|
|
|
+ <el-tag type="warning" size="small" v-if="scope.row.level == 1">{{ $t('message.device.producDetail.warning') }}</el-tag>
|
|
|
+ <!-- 紧急 -->
|
|
|
+ <el-tag type="danger" size="small" v-if="scope.row.level == 2">{{ $t('message.device.producDetail.urgent') }}</el-tag>
|
|
|
</template>
|
|
|
</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.tableI18nColumn.des')" prop="desc" show-overflow-tooltip />
|
|
|
+ <!-- 操作 -->
|
|
|
+ <el-table-column :label="$t('message.tableI18nColumn.operation')" width="120" align="center" fixed="right">
|
|
|
<template #default="scope">
|
|
|
- <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditEvent(scope.row)">修改</el-button>
|
|
|
- <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'event')">删除</el-button>
|
|
|
+ <!-- 编辑 -->
|
|
|
+ <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditEvent(scope.row)">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
|
+ <!-- 删除 -->
|
|
|
+ <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'event')">{{ $t('message.tableI18nAction.delete') }}</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="标签定义" name="tab">
|
|
|
+ <!-- 标签定义 -->
|
|
|
+ <el-tab-pane :label="$t('message.device.producDetail.tagDefinition')" name="tab">
|
|
|
<div class="wu-title">
|
|
|
- <div class="title">标签定义</div>
|
|
|
- <div><el-button size="small" type="primary" v-auth="'add'" @click="onOpenEditTab()">添加</el-button>
|
|
|
+ <!-- 标签定义 -->
|
|
|
+ <div class="title">{{ $t('message.device.producDetail.tagDefinition') }}</div>
|
|
|
+ <!-- 添加 -->
|
|
|
+ <div>
|
|
|
+ <el-button size="small" type="primary" v-auth="'add'" @click="onOpenEditTab()">{{ $t('message.tableI18nAction.add') }}</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<el-table style="width: 100%" :data="tableData.data" 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.producDetail.propertyIdentifier')" align="center" prop="key" />
|
|
|
+ <!-- 属性名称 -->
|
|
|
+ <el-table-column :label="$t('message.device.producDetail.propertyName')" prop="name" show-overflow-tooltip />
|
|
|
+ <!-- 数据类型 -->
|
|
|
+ <el-table-column prop="valueType" :label="$t('message.device.producDetail.dataType')" width="120" align="center">
|
|
|
<template #default="scope">
|
|
|
<span>{{ scope.row.valueType.type }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="accessMode" label="是否只读" width="120" align="center">
|
|
|
+ <!-- 是否只读 -->
|
|
|
+ <el-table-column prop="accessMode" :label="$t('message.device.producDetail.readOnly')" width="120" align="center">
|
|
|
<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.producDetail.readonly') }}</el-tag>
|
|
|
+ <!-- 读写 -->
|
|
|
+ <el-tag type="success" size="small" v-else>{{ $t('message.device.producDetail.readWrite') }}</el-tag>
|
|
|
</template>
|
|
|
</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.tableI18nColumn.des')" prop="desc" show-overflow-tooltip />
|
|
|
+ <!-- 操作 -->
|
|
|
+ <el-table-column :label="$t('message.tableI18nColumn.operation')" width="120" align="center" fixed="right">
|
|
|
<template #default="scope">
|
|
|
- <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditTag(scope.row)">修改</el-button>
|
|
|
- <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'tab')">删除</el-button>
|
|
|
+ <!-- 编辑 -->
|
|
|
+ <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditTag(scope.row)">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
|
+ <!-- 删除 -->
|
|
|
+ <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'tab')">{{ $t('message.tableI18nAction.delete') }}</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -158,25 +213,29 @@
|
|
|
<div class="import">
|
|
|
<div class="row_bet">
|
|
|
<el-upload accept="json" :show-file-list="false" :limit="1" :data="{ productKey: detail.key }" :headers="headers" :action="uploadUrl" :on-success="updateImg">
|
|
|
+ <!-- 导入物模型 -->
|
|
|
<el-button size="small">
|
|
|
<el-icon> <ele-Upload /> </el-icon>
|
|
|
- 导入物模型
|
|
|
+ {{ $t('message.device.producDetail.importModel') }}
|
|
|
</el-button>
|
|
|
</el-upload>
|
|
|
+ <!-- 导出物模型 -->
|
|
|
<el-button size="small" type="default" class="ml10" @click="onRowExport()">
|
|
|
<el-icon>
|
|
|
<ele-Download />
|
|
|
</el-icon>
|
|
|
- 导出物模型
|
|
|
+ {{ $t('message.device.producDetail.exportModel') }}
|
|
|
</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<pagination v-show="tableData.total > 0" :total="tableData.total" v-model:page="tableData.param.pageNum" v-model:limit="tableData.param.pageSize" @pagination="getList()" />
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="设备接入" name="3">
|
|
|
+ <!-- 设备接入 -->
|
|
|
+ <el-tab-pane :label="$t('message.device.producDetail.deviceAccess')" name="3">
|
|
|
<deviceIn></deviceIn>
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="数据解析" name="4" lazy>
|
|
|
+ <!-- 数据解析 -->
|
|
|
+ <el-tab-pane :label="$t('message.device.producDetail.dataParsing')" name="4" lazy>
|
|
|
<dataParse v-if="activeName === '4'" :script="detail.scriptInfo" @updateScript="updateScript">
|
|
|
</dataParse>
|
|
|
</el-tab-pane>
|
|
@@ -188,13 +247,13 @@
|
|
|
<EditTab ref="editTabRef" @typeList="gettab" />
|
|
|
</div>
|
|
|
</template>
|
|
|
-<script lang="ts">
|
|
|
-import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
|
|
|
+<script lang="ts" setup>
|
|
|
+import { toRefs, reactive, onMounted, ref, defineComponent, computed } from 'vue';
|
|
|
import { Edit } from '@element-plus/icons-vue';
|
|
|
import { ElMessageBox, ElMessage, FormInstance } from 'element-plus';
|
|
|
import downloadFile from '/@/utils/download';
|
|
|
import getOrigin from '/@/utils/origin';
|
|
|
-
|
|
|
+import { useI18n } from 'vue-i18n';
|
|
|
|
|
|
import EditDic from './component/editPro.vue';
|
|
|
import deviceIn from './component/deviceIn.vue';
|
|
@@ -208,32 +267,36 @@ import { useRoute } from 'vue-router';
|
|
|
|
|
|
import api from '/@/api/device';
|
|
|
|
|
|
-interface TableDataState {
|
|
|
- isShowDialog: boolean;
|
|
|
- detail: any;
|
|
|
- developer_status: number;
|
|
|
- activeName: string;
|
|
|
- activetab: string;
|
|
|
- tableData: {
|
|
|
- data: [];
|
|
|
- total: number;
|
|
|
- loading: boolean;
|
|
|
- param: {
|
|
|
- pageNum: number;
|
|
|
- pageSize: number;
|
|
|
- name: string;
|
|
|
- productKey: string | string[];
|
|
|
- deviceType: string;
|
|
|
- status: string;
|
|
|
- dateRange: string[];
|
|
|
- } | any;
|
|
|
- };
|
|
|
-}
|
|
|
-export default defineComponent({
|
|
|
- name: 'deviceEditPro',
|
|
|
- components: { EditDic, EditAttr, EditFun, EditEvent, EditTab, deviceIn, dataParse },
|
|
|
-
|
|
|
- setup(prop, context) {
|
|
|
+const { locale } = useI18n();
|
|
|
+
|
|
|
+const currentLang = computed(() => locale.value);
|
|
|
+
|
|
|
+// interface TableDataState {
|
|
|
+// isShowDialog: boolean;
|
|
|
+// detail: any;
|
|
|
+// developer_status: number;
|
|
|
+// activeName: string;
|
|
|
+// activetab: string;
|
|
|
+// tableData: {
|
|
|
+// data: [];
|
|
|
+// total: number;
|
|
|
+// loading: boolean;
|
|
|
+// param: {
|
|
|
+// pageNum: number;
|
|
|
+// pageSize: number;
|
|
|
+// name: string;
|
|
|
+// productKey: string | string[];
|
|
|
+// deviceType: string;
|
|
|
+// status: string;
|
|
|
+// dateRange: string[];
|
|
|
+// } | any;
|
|
|
+// };
|
|
|
+// }
|
|
|
+// export default defineComponent({
|
|
|
+// name: 'deviceEditPro',
|
|
|
+// components: { EditDic, EditAttr, EditFun, EditEvent, EditTab, deviceIn, dataParse },
|
|
|
+
|
|
|
+// setup(prop, context) {
|
|
|
|
|
|
const uploadUrl: string = getOrigin("/product/tsl/import");
|
|
|
const headers = {
|
|
@@ -245,40 +308,54 @@ export default defineComponent({
|
|
|
const editFunRef = ref();
|
|
|
const editEventRef = ref();
|
|
|
const editTabRef = ref();
|
|
|
- const state = reactive<TableDataState>({
|
|
|
- isShowDialog: false,
|
|
|
- activeName: '1', // 分类数据
|
|
|
- activetab: 'attr', // 分类数据
|
|
|
- detail: {},
|
|
|
- developer_status: 0,
|
|
|
- tableData: {
|
|
|
- data: [],
|
|
|
- total: 0,
|
|
|
- loading: false,
|
|
|
- param: {
|
|
|
- pageNum: 1,
|
|
|
- productKey: route.params?.id,
|
|
|
- pageSize: 20,
|
|
|
- status: '',
|
|
|
- dateRange: [],
|
|
|
- },
|
|
|
+ const activeName = ref('1');// 分类数据
|
|
|
+ const activetab = ref('attr');// 分类数据
|
|
|
+ const detail = ref<any>({});
|
|
|
+ const developer_status = ref(0);
|
|
|
+ const tableData = ref({
|
|
|
+ data: [],
|
|
|
+ total: 0,
|
|
|
+ loading: false,
|
|
|
+ param: {
|
|
|
+ pageNum: 1,
|
|
|
+ productKey: route.params?.id,
|
|
|
+ pageSize: 20,
|
|
|
+ status: '',
|
|
|
+ dateRange: [],
|
|
|
},
|
|
|
});
|
|
|
+ // const state = reactive<TableDataState>({
|
|
|
+ // activeName: '1', // 分类数据
|
|
|
+ // activetab: 'attr', // 分类数据
|
|
|
+ // detail: {},
|
|
|
+ // developer_status: 0,
|
|
|
+ // tableData: {
|
|
|
+ // data: [],
|
|
|
+ // total: 0,
|
|
|
+ // loading: false,
|
|
|
+ // param: {
|
|
|
+ // pageNum: 1,
|
|
|
+ // productKey: route.params?.id,
|
|
|
+ // pageSize: 20,
|
|
|
+ // status: '',
|
|
|
+ // dateRange: [],
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // });
|
|
|
|
|
|
onMounted(() => {
|
|
|
productDetail()
|
|
|
//第一次加载
|
|
|
- api.model.property(state.tableData.param).then((res: any) => {
|
|
|
- state.tableData.data = res.Data;
|
|
|
- state.tableData.total = res.Total;
|
|
|
+ api.model.property(tableData.value.param).then((res: any) => {
|
|
|
+ tableData.value.data = res.Data;
|
|
|
+ tableData.value.total = res.Total;
|
|
|
});
|
|
|
});
|
|
|
-
|
|
|
function productDetail() {
|
|
|
const productKey = route.params?.id;
|
|
|
api.product.detail(productKey).then((res: any) => {
|
|
|
- state.detail = res.data;
|
|
|
- state.developer_status = res.data.status
|
|
|
+ detail.value = res.data;
|
|
|
+ developer_status.value = res.data.status
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -375,7 +452,7 @@ export default defineComponent({
|
|
|
|
|
|
//根据不同类型获取列表
|
|
|
const getList = () => {
|
|
|
- switch (state.activetab) {
|
|
|
+ switch (activetab.value) {
|
|
|
case 'attr':
|
|
|
getproperty();
|
|
|
break;
|
|
@@ -392,34 +469,34 @@ export default defineComponent({
|
|
|
};
|
|
|
|
|
|
const getproperty = () => {
|
|
|
- api.model.property(state.tableData.param).then((res: any) => {
|
|
|
- state.tableData.data = res.Data;
|
|
|
- state.tableData.total = res.Total;
|
|
|
+ api.model.property(tableData.value.param).then((res: any) => {
|
|
|
+ tableData.value.data = res.Data;
|
|
|
+ tableData.value.total = res.Total;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
const getfunction = () => {
|
|
|
- api.model.function(state.tableData.param).then((res: any) => {
|
|
|
- state.tableData.data = res.Data;
|
|
|
- state.tableData.total = res.Total;
|
|
|
+ api.model.function(tableData.value.param).then((res: any) => {
|
|
|
+ tableData.value.data = res.Data;
|
|
|
+ tableData.value.total = res.Total;
|
|
|
});
|
|
|
};
|
|
|
const getevent = () => {
|
|
|
- api.model.event(state.tableData.param).then((res: any) => {
|
|
|
- state.tableData.data = res.Data;
|
|
|
- state.tableData.total = res.Total;
|
|
|
+ api.model.event(tableData.value.param).then((res: any) => {
|
|
|
+ tableData.value.data = res.Data;
|
|
|
+ tableData.value.total = res.Total;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
const gettab = () => {
|
|
|
- api.model.tag(state.tableData.param).then((res: any) => {
|
|
|
- state.tableData.data = res.Data;
|
|
|
- state.tableData.total = res.Total;
|
|
|
+ api.model.tag(tableData.value.param).then((res: any) => {
|
|
|
+ tableData.value.data = res.Data;
|
|
|
+ tableData.value.total = res.Total;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
const wuhandleClick = (tab: any) => {
|
|
|
- state.activetab = tab.props.name;
|
|
|
+ activetab.value = tab.props.name;
|
|
|
switch (tab.props.name) {
|
|
|
case 'attr':
|
|
|
getproperty();
|
|
@@ -440,27 +517,27 @@ export default defineComponent({
|
|
|
};
|
|
|
|
|
|
const updateScript = (scriptInfo: string) => {
|
|
|
- state.detail.scriptInfo = scriptInfo
|
|
|
+ detail.value.scriptInfo = scriptInfo
|
|
|
};
|
|
|
|
|
|
- const CkOption = (developer_status: number) => {
|
|
|
- if (developer_status == 0) {
|
|
|
+ const CkOption = (developerStatus: number) => {
|
|
|
+ if (developerStatus == 0) {
|
|
|
api.product.undeploy(route.params.id).then((res: any) => {
|
|
|
ElMessage.success('操作成功');
|
|
|
- state.developer_status = 0;
|
|
|
- }).catch(() => state.developer_status = 1)
|
|
|
+ developer_status.value = 0;
|
|
|
+ }).catch(() => developer_status.value = 1)
|
|
|
} else {
|
|
|
api.product.deploy(route.params.id).then((res: any) => {
|
|
|
ElMessage.success('操作成功');
|
|
|
- state.developer_status = 1;
|
|
|
- }).catch(() => state.developer_status = 0)
|
|
|
+ developer_status.value = 1;
|
|
|
+ }).catch(() => developer_status.value = 0)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 导出
|
|
|
const onRowExport = () => {
|
|
|
|
|
|
- api.product.export({ productKey: state.detail.key }).then((res: any) => downloadFile(res, "TSL-" + state.detail.key + "-" + getCurrentTime() + ".json"))
|
|
|
+ api.product.export({ productKey: detail.value.key }).then((res: any) => downloadFile(res, "TSL-" + detail.value.key + "-" + getCurrentTime() + ".json"))
|
|
|
};
|
|
|
|
|
|
|
|
@@ -482,42 +559,42 @@ export default defineComponent({
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- return {
|
|
|
- updateImg,
|
|
|
- headers,
|
|
|
- uploadUrl,
|
|
|
- getCurrentTime,
|
|
|
- onRowExport,
|
|
|
- Edit,
|
|
|
- updateScript,
|
|
|
- editDicRef,
|
|
|
- editAttrRef,
|
|
|
- editFunRef,
|
|
|
- editEventRef,
|
|
|
- editTabRef,
|
|
|
- CkOption,
|
|
|
- onRowDel,
|
|
|
- onEditFun,
|
|
|
- onEditEvent,
|
|
|
- onEditTag,
|
|
|
- onEditAttr,
|
|
|
- getList,
|
|
|
- getproperty,
|
|
|
- getfunction,
|
|
|
- getevent,
|
|
|
- gettab,
|
|
|
- wuhandleClick,
|
|
|
- onOpenEditTab,
|
|
|
- onOpenEditEvent,
|
|
|
- productDetail,
|
|
|
- onOpenEditAttr,
|
|
|
- onOpenEditFun,
|
|
|
- onOpenEditDic,
|
|
|
- handleClick,
|
|
|
- ...toRefs(state),
|
|
|
- };
|
|
|
- },
|
|
|
-});
|
|
|
+// return {
|
|
|
+// updateImg,
|
|
|
+// headers,
|
|
|
+// uploadUrl,
|
|
|
+// getCurrentTime,
|
|
|
+// onRowExport,
|
|
|
+// Edit,
|
|
|
+// updateScript,
|
|
|
+// editDicRef,
|
|
|
+// editAttrRef,
|
|
|
+// editFunRef,
|
|
|
+// editEventRef,
|
|
|
+// editTabRef,
|
|
|
+// CkOption,
|
|
|
+// onRowDel,
|
|
|
+// onEditFun,
|
|
|
+// onEditEvent,
|
|
|
+// onEditTag,
|
|
|
+// onEditAttr,
|
|
|
+// getList,
|
|
|
+// getproperty,
|
|
|
+// getfunction,
|
|
|
+// getevent,
|
|
|
+// gettab,
|
|
|
+// wuhandleClick,
|
|
|
+// onOpenEditTab,
|
|
|
+// onOpenEditEvent,
|
|
|
+// productDetail,
|
|
|
+// onOpenEditAttr,
|
|
|
+// onOpenEditFun,
|
|
|
+// onOpenEditDic,
|
|
|
+// handleClick,
|
|
|
+// ...toRefs(state),
|
|
|
+// };
|
|
|
+// },
|
|
|
+// });
|
|
|
</script>
|
|
|
<style scoped>
|
|
|
.import {
|