Explorar el Código

修改设备详情枚举和优化应用管理

yukai hace 2 años
padre
commit
66a5472c0a

+ 76 - 4
src/views/iot/device/instance/detail.vue

@@ -50,11 +50,17 @@
                   </div>
                 </div>
 
-                <div class="statusname" v-if="item.type != 'object'">{{ item.value }}{{ item.unit }}</div>
+                <div class="statusname" v-if="item.type != 'object'">
+
+                  {{getValueText(item.key,item.value)}}
+                  <!-- {{ item.value }}{{ item.unit }} -->
+                  
+                </div>
                 <div v-else>
                   <div class="oblist" v-for="(vare, name) in item.value">
-                    <div class="name">{{ name }}:</div>
-                    <div class="name">{{ vare }}</div>
+                    <div> {{getStatusText(name,vare)}}</div>
+                    <!-- <div class="name">{{ name }}:</div>
+                    <div class="name">{{ vare }}</div> -->
                   </div>
                 </div>
                 <div class="">
@@ -442,6 +448,7 @@ export default defineComponent({
   components: { SubDeviceMutipleBind, SubDevice, EditDic, EditAttr, EditFun, EditEvent, EditTab, devantd, ListDic, functionCom, setAttr },
 
   setup(prop, context) {
+    const array_list=ref([]);
     const route = useRoute();
     const editDicRef = ref();
     const setAttrRef = ref();
@@ -509,16 +516,19 @@ export default defineComponent({
         state.developer_status = res.data.status;
         state.tableData.param.productId = res.data.product.id;
         state.product_id = res.data.product.id;
-        getrunData();
         api.product.detail(res.data.product.id).then((res: any) => {
           state.prodetail = res.data;
         });
 
         //第一次加载
         api.model.property(state.tableData.param).then((res: any) => {
+
           state.tableData.data = res.Data;
           state.tableData.total = res.Total;
+          array_list.value=res.Data;
         });
+        getrunData();
+
         getDeviceTableData()
       });
 
@@ -552,6 +562,7 @@ export default defineComponent({
       state.deviceTableData.param.gatewayKey = state.detail.key;
       api.device.getList(state.deviceTableData.param).then((res: any) => {
         state.deviceTableData.data = res.list;
+
         state.deviceTableData.total = res.Total;
       });
     };
@@ -704,6 +715,7 @@ export default defineComponent({
     const getproperty = () => {
       api.model.property(state.tableData.param).then((res: any) => {
         state.tableData.data = res.Data;
+
         state.tableData.total = res.Total;
       });
     };
@@ -724,6 +736,7 @@ export default defineComponent({
     const gettab = () => {
       api.model.tag(state.tableData.param).then((res: any) => {
         state.tableData.data = res.Data;
+
         state.tableData.total = res.Total;
       });
     };
@@ -757,8 +770,60 @@ export default defineComponent({
         getrunData();
       }
     };
+ 
+    const getValueText=(key, value)=>{
+      let data =array_list.value;
+      for (let i = 0; i < data.length; i++) {
+        const item = data[i];
+        if (item.key === key) {
+          if (item.valueType.type === "enum") {
+            const option = item.valueType.elements.find((element) => element.value === value.toString());
+            if (option) {
+              return option.text;
+            }
+          } else {
+            return value;
+          }
+        }
+      }
+
+      return value;
+    }
+    const getStatusText=(name, value) =>{
+      let data =array_list.value;
+      for (let i = 0; i < data.length; i++) {
+        const field = data[i];
+        if (field.valueType.type === "object") {
+          for (let j = 0; j < field.valueType.properties.length; j++) {
+            const property = field.valueType.properties[j];
+            if (property.key === name) {
+              if (property.valueType.type === "enum") {
+                const element = property.valueType.elements.find((element) => element.value === value.toString());
+                if (element) {
+                  return `${property.name}: ${element.text}`;
+                }
+              } else {
+                return `${property.name}: ${value}`;
+              }
+            }
+          }
+        } else if (field.key === name) {
+          if (field.valueType.type === "enum") {
+            const element = field.valueType.elements.find((element) => element.value === value.toString());
+            if (element) {
+              return `${field.name}: ${element.text}`;
+            }
+          } else {
+            return `${field.name}: ${value}`;
+          }
+        }
+      }
+
+      return name+':'+value;
+    }
 
     const getrunData = () => {
+      
       api.instance.getrun_status({ id: state.detail.id }).then((res: any) => {
         state.areaData = res
         let properties = state.areaData.properties || [];
@@ -766,6 +831,7 @@ export default defineComponent({
         var temp = new Array();
 
         properties.forEach(function (item, index) {
+          
           let datalist = item.list || [];
           temp[index] = [];
           var temps = new Array();
@@ -779,6 +845,10 @@ export default defineComponent({
             item.value = JSON.parse(item.value);
           }
 
+
+
+
+
           temp[index]['name'] = item.name
           temp[index]['key'] = item.key
           temp[index]['type'] = item.type
@@ -842,6 +912,8 @@ export default defineComponent({
       setAttrRef.value.show(row)
     }
     return {
+      getStatusText,
+      getValueText,
       onlineTimeoutUpdate,
       setAttr,
       tinyAreas,

+ 4 - 3
src/views/system/application/edit.vue

@@ -2,9 +2,9 @@
 	<el-dialog class="api-edit" v-model="showDialog" :title="`${formData.id ? '编辑应用' : '新增应用'}`" width="600px"
 		:close-on-click-modal="false" :close-on-press-escape="false">
 		<el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="80px">
-			<!-- <el-form-item label="应用标识" prop="appId">
-				<el-input v-model="formData.appId" placeholder="请输入应用标识" />
-			</el-form-item> -->
+			<el-form-item label="应用标识" prop="appId" v-if="formData.id">
+				<el-input v-model="formData.appId" placeholder="请输入应用标识"  disabled/>
+			</el-form-item>
 			<el-form-item label="应用名称" prop="name">
 				<el-input v-model="formData.name" placeholder="请输入应用名称" />
 			</el-form-item>
@@ -80,6 +80,7 @@ const props = defineProps({
 })
 const baseForm = {
 	id: undefined,
+	appId:'',
 	name: '',
 	icon: '',
 	accessKey: '',

+ 4 - 3
src/views/system/application/index.vue

@@ -33,14 +33,15 @@
 		<el-table :data="tableData" style="width: 100%" row-key="id" v-loading="loading">
 			<el-table-column prop="id" label="ID" width="60" show-overflow-tooltip></el-table-column>
 			<el-table-column prop="appId" label="应用标识" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="name" label="应用名称" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="status" label="应用状态" align="center">
+			<el-table-column prop="name" label="应用名称"  show-overflow-tooltip></el-table-column>
+			<el-table-column prop="desc" label="描述"  show-overflow-tooltip></el-table-column>
+			<el-table-column prop="status" label="应用状态"  width="80" align="center">
 				<template #default="scope">
 					<el-tag size="small" type="success" v-if="scope.row.status == 1">启用</el-tag>
 					<el-tag size="small" type="info" v-if="scope.row.status == 0">未启用</el-tag>
 				</template>
 			</el-table-column>
-			<el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
+			<el-table-column prop="createdAt" label="创建时间" width="160" align="center"></el-table-column>
 			<el-table-column label="操作" width="200" align="center">
 				<template #default="scope">
 					<el-button size="small" text type="success" @click="onActionStatus(scope.row)"