|
@@ -142,44 +142,59 @@
|
|
<!-- 物模型 -->
|
|
<!-- 物模型 -->
|
|
<el-tab-pane :label="$t('message.device.thingModel')" name="2">
|
|
<el-tab-pane :label="$t('message.device.thingModel')" name="2">
|
|
<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="属性定义" name="attr">
|
|
|
|
|
|
+ <!-- 属性定义 -->
|
|
|
|
+ <el-tab-pane :label="$t('message.device.productDetail.propertyDefinition')" name="attr">
|
|
<div class="wu-title">
|
|
<div class="wu-title">
|
|
<div class="title"></div>
|
|
<div class="title"></div>
|
|
|
|
+ <!-- 新增 -->
|
|
<div>
|
|
<div>
|
|
- <el-button size="small" :disabled="!canEdit" type="primary" v-auth="'add'" @click="onOpenEditAttr()">添加</el-button>
|
|
|
|
|
|
+ <el-button size="small" :disabled="!canEdit" type="primary" v-auth="'add'" @click="onOpenEditAttr()">{{$t('message.tableI18nAction.add')}}</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<el-table style="width: 100%" :data="tableData.data" v-loading="tableLoading" v-if="activetab == 'attr'">
|
|
<el-table style="width: 100%" :data="tableData.data" v-loading="tableLoading" 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-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="100" 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="decimals" label="精度" width="60" align="center">
|
|
|
|
|
|
+ <!-- 精度 -->
|
|
|
|
+ <el-table-column prop="decimals" :label="$t('message.device.productDetail.precision')" :width="currentLang == 'en' ? '100' : '60'" align="center">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<span>{{ scope.row.valueType?.decimals }}</span>
|
|
<span>{{ scope.row.valueType?.decimals }}</span>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="unit" label="单位" width="60" align="center">
|
|
|
|
|
|
+ <!-- 单位 -->
|
|
|
|
+ <el-table-column prop="unit" :label="$t('message.device.productDetail.unit')" width="60" align="center">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<span>{{ scope.row.valueType.unit }}</span>
|
|
<span>{{ scope.row.valueType.unit }}</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="150" 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="150" align="center" fixed="right">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button size="small" text type="primary" :disabled="!canEdit" v-auth="'edit'" v-if="!scope.row.accessMode" @click="setAttr(scope.row)">设置属性</el-button>
|
|
|
|
- <el-button size="small" text type="warning" :disabled="!canEdit" v-auth="'edit'" @click="onEditAttr(scope.row)">修改</el-button>
|
|
|
|
- <el-button size="small" text type="danger" :disabled="!canEdit" v-auth="'del'" @click="onRowDel(scope.row.key, 'attr')">删除</el-button>
|
|
|
|
|
|
+ <!-- 设置属性 -->
|
|
|
|
+ <el-button size="small" text type="primary" :disabled="!canEdit" v-auth="'edit'" v-if="!scope.row.accessMode" @click="setAttr(scope.row)">{{ $t('message.device.formI18nButton.setAttr') }}</el-button>
|
|
|
|
+ <!-- 编辑 -->
|
|
|
|
+ <el-button size="small" text type="warning" :disabled="!canEdit" v-auth="'edit'" @click="onEditAttr(scope.row)">{{ $t('message.tableI18nAction.edit') }}</el-button>
|
|
|
|
+ <!-- 删除 -->
|
|
|
|
+ <el-button size="small" text type="danger" :disabled="!canEdit" v-auth="'del'" @click="onRowDel(scope.row.key, 'attr')">{{ $t('message.tableI18nAction.delete') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -443,6 +458,7 @@ import datahub from "/@/api/datahub";
|
|
import FromData from "/@/views/iot/property/dossier/component/from.vue";
|
|
import FromData from "/@/views/iot/property/dossier/component/from.vue";
|
|
import EditAssetRef from "/@/views/iot/property/dossier/edit.vue";
|
|
import EditAssetRef from "/@/views/iot/property/dossier/edit.vue";
|
|
import { useRoute } from "vue-router";
|
|
import { useRoute } from "vue-router";
|
|
|
|
+import { useI18n } from 'vue-i18n';
|
|
|
|
|
|
interface TableDataState {
|
|
interface TableDataState {
|
|
isShowDialog: boolean;
|
|
isShowDialog: boolean;
|
|
@@ -491,7 +507,8 @@ export default defineComponent({
|
|
deviceKey: String,
|
|
deviceKey: String,
|
|
},
|
|
},
|
|
setup(props, context) {
|
|
setup(props, context) {
|
|
-
|
|
|
|
|
|
+ const { locale, t } = useI18n();
|
|
|
|
+ const currentLang = computed(() => locale.value);
|
|
const canEdit = computed(() => state.areaData.status===0);
|
|
const canEdit = computed(() => state.areaData.status===0);
|
|
let timer: any;
|
|
let timer: any;
|
|
|
|
|
|
@@ -1074,6 +1091,7 @@ export default defineComponent({
|
|
};
|
|
};
|
|
|
|
|
|
return {
|
|
return {
|
|
|
|
+ currentLang,
|
|
canEdit,
|
|
canEdit,
|
|
topicData,
|
|
topicData,
|
|
initData,
|
|
initData,
|