|  | @@ -142,44 +142,59 @@
 | 
	
		
			
				|  |  |          <!-- 物模型 -->
 | 
	
		
			
				|  |  |          <el-tab-pane :label="$t('message.device.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.productDetail.propertyDefinition')" name="attr">
 | 
	
		
			
				|  |  |                <div class="wu-title">
 | 
	
		
			
				|  |  |                  <div class="title"></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>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                <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">
 | 
	
		
			
				|  |  |                      <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.productDetail.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.productDetail.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.productDetail.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.productDetail.readonly') }}</el-tag>
 | 
	
		
			
				|  |  | +                    <!-- 读写 -->
 | 
	
		
			
				|  |  | +                    <el-tag type="success" size="small" v-else>{{ $t('message.device.productDetail.readWrite') }}</el-tag>
 | 
	
		
			
				|  |  |                    </template>
 | 
	
		
			
				|  |  |                  </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">
 | 
	
		
			
				|  |  | -                    <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>
 | 
	
		
			
				|  |  |                  </el-table-column>
 | 
	
		
			
				|  |  |                </el-table>
 | 
	
	
		
			
				|  | @@ -443,6 +458,7 @@ import datahub from "/@/api/datahub";
 | 
	
		
			
				|  |  |  import FromData from "/@/views/iot/property/dossier/component/from.vue";
 | 
	
		
			
				|  |  |  import EditAssetRef from "/@/views/iot/property/dossier/edit.vue";
 | 
	
		
			
				|  |  |  import { useRoute } from "vue-router";
 | 
	
		
			
				|  |  | +import { useI18n } from 'vue-i18n';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  interface TableDataState {
 | 
	
		
			
				|  |  |    isShowDialog: boolean;
 | 
	
	
		
			
				|  | @@ -491,7 +507,8 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      deviceKey: String,
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    setup(props, context) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    const { locale, t } = useI18n();
 | 
	
		
			
				|  |  | +    const currentLang = computed(() => locale.value);
 | 
	
		
			
				|  |  |      const canEdit = computed(() => state.areaData.status===0);
 | 
	
		
			
				|  |  |      let timer: any;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1074,6 +1091,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  | +      currentLang,
 | 
	
		
			
				|  |  |        canEdit,
 | 
	
		
			
				|  |  |        topicData,
 | 
	
		
			
				|  |  |        initData,
 |