Quellcode durchsuchen

优化升级包操作选择设备时,只选择对应产品设备。优化档案列表多次查询问题

Xiahai vor 1 Jahr
Ursprung
Commit
fdf46b7f5c

+ 1 - 1
src/api/device/index.ts

@@ -114,7 +114,7 @@ export default {
   },
   dev_asset_metadata:{
     getList: (params: object) => get('/product/dev_asset_metadata/list', params),
-    getprokey: (params: object) => get('/product/dev_asset_metadata/key', params),
+    getProKey: (params: object) => get('/product/dev_asset_metadata/key', params),
     add: (params: object) => post('/product/dev_asset_metadata/add', params),
     edit: (params: object) => put('/product/dev_asset_metadata/edit', params),
     detail: (params: object) => get('/product/dev_asset_metadata/get', params),

+ 1 - 1
src/views/iot/ota-update/update/component/check.vue

@@ -255,7 +255,7 @@ export default defineComponent({
     };
     // 打开设备列表
     const onOpenDevice = () => {
-      deviceRef.value.openDialog(state.ruleForm.devices);
+      deviceRef.value.openDialog(state.ruleForm.devices, state.ruleForm.productId);
     };
     return {
       deviceRef,

+ 4 - 1
src/views/iot/ota-update/update/component/deviceBind.vue

@@ -56,6 +56,7 @@ interface TableDataState {
       pageNum: number
       pageSize: number
       name: string
+      productId: number
     }
   },
   ruleForm: {
@@ -84,6 +85,7 @@ export default defineComponent({
           pageNum: 1,
           pageSize: 10,
           name: '',
+          productId: 0,
         },
       },
       ruleForm: {
@@ -119,8 +121,9 @@ export default defineComponent({
       });
     };
 
-    const openDialog = (checkIdData: any) => {
+    const openDialog = (checkIdData: any, productId: any) => {
       state.checkIdList = checkIdData;
+      state.tableData.param.productId = productId;
       getDeviceList()
     };
 

+ 40 - 13
src/views/iot/property/attribute/index.vue

@@ -30,14 +30,16 @@
 			</el-form>
 			<el-row :gutter="16">
 				<el-col :span="6">
-					<el-tree :data="mergedData" :props="defaultProps" accordion default-expand-all @node-click="handleNodeClick" style="border: 1px solid #eee;padding: 10px;margin-right: 10px;">
+					<el-tree :data="mergedData" :props="defaultProps" accordion default-expand-all @node-click="handleNodeClick" style="border: 1px solid #eee;padding: 10px;margin-right: 10px;" class="mt-4" :default-expand-all="true" :node-key="'id'" highlight-current>
 						<template #default="{ node, data }">
-							<span :style="data.is_type === '2' ? { color: '#409eff' } : {}">
-								<el-icon v-if="data.is_type == '2'">
-									<Expand />
-								</el-icon>
-								{{ node.label }}
-							</span>
+              <div class="custom-tree-node">
+                  <span class="tree-label">
+                    <el-icon v-if="data.is_type == '2'">
+                      <Expand />
+                    </el-icon>
+                    {{ node.label }}
+                  </span>
+              </div>
 						</template>
 					</el-tree>
 				</el-col>
@@ -112,7 +114,6 @@ const addOrEdit = async (row?: any) => {
 	}
 }
 
-
 const getCateList = () => {
 	device.category.getList({}).then((res: any) => {
 		cateData.value = res.category;
@@ -122,20 +123,22 @@ const getCateList = () => {
 			params.productKey = res.product[0].key
 			getList()
 			mergedData.value = matchProductsToCategories(productData.value, cateData.value);
-		})
 
+      // 默认加载第一个设备对应属性
+      if (productData.value.length > 0) {
+        handleNodeClick(mergedData.value[0].children[0])
+      }
+    });
 	})
 }
 
 const handleNodeClick = (data: any) => {
-	if (data.is_type === '2') {
+  if (data.is_type === '2') {
 		productIno.value = data;
 		params.productKey = data.key
 		getList()
-
 	} else {
 		productIno.value = '';
-
 	}
 }
 
@@ -199,6 +202,30 @@ const del = (row: any) => {
 		getList()
 	})
 }
-getCateList()
 
 </script>
+<style scoped lang="scss">
+.custom-tree-node {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  padding-right: 8px;
+  overflow: hidden;
+
+  .tree-label {
+    width: 100%;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    margin-right: 10px;
+  }
+
+  &:hover {
+    .tree-options {
+      display: block;
+    }
+  }
+}
+</style>

+ 1 - 1
src/views/iot/property/dossier/edit.vue

@@ -80,7 +80,7 @@
         </el-col>
       </el-row>
 
-      <el-divider content-position="left" v-if="Datalist && Datalist.length > 0">自定义属性</el-divider>
+      <el-divider content-position="left" v-if="Datalist">自定义属性</el-divider>
         <FromData :Datalist="Datalist" @SetSaveData="SetSaveData" v-if="Datalist && Datalist.length > 0"></FromData>
     </el-form>
     <template #footer>

+ 38 - 11
src/views/iot/property/dossier/index.vue

@@ -39,16 +39,18 @@
 			</el-form>
 			<el-row :gutter="16">
 				<el-col :span="6">
-					<el-tree :data="mergedData" :props="defaultProps" accordion default-expand-all @node-click="handleNodeClick" style="border: 1px solid #eee; padding: 10px; margin-right: 10px">
-						<template #default="{ node, data }">
-							<span :style="data.is_type === '2' ? { color: '#409eff' } : {}">
-								<el-icon v-if="data.is_type == '2'">
-									<Check />
-								</el-icon>
-								{{ node.label }}
-							</span>
-						</template>
-					</el-tree>
+          <el-tree :data="mergedData" :props="defaultProps" accordion default-expand-all @node-click="handleNodeClick" style="border: 1px solid #eee;padding: 10px;margin-right: 10px;" class="mt-4" :default-expand-all="true" :node-key="'id'" highlight-current>
+            <template #default="{ node, data }">
+              <div class="custom-tree-node">
+                  <span class="tree-label">
+                    <el-icon v-if="data.is_type == '2'">
+                      <Check />
+                    </el-icon>
+                    {{ node.label }}
+                  </span>
+              </div>
+            </template>
+          </el-tree>
 				</el-col>
 				<el-col :span="18"><el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" row-key="id" v-loading="loading">
 						<el-table-column type="selection" width="55" align="center" />
@@ -205,5 +207,30 @@ const del = (row: any) => {
 }
 
 
-getCateList()
+// getCateList()
 </script>
+<style scoped lang="scss">
+.custom-tree-node {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  padding-right: 8px;
+  overflow: hidden;
+
+  .tree-label {
+    width: 100%;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    margin-right: 10px;
+  }
+
+  &:hover {
+    .tree-options {
+      display: block;
+    }
+  }
+}
+</style>