Commit 9a2a559f747b4d6a29f4a3717d8d7cda860cbed3

Authored by xp.Huang
2 parents 36bebfb5 e467311e

Merge branch 'fix/device-things-model' into 'main_dev'

fix: 修复设备物模型筛选后的物模型无法接收socket数据

See merge request yunteng/thingskit-front!845
@@ -39,6 +39,7 @@ @@ -39,6 +39,7 @@
39 type?: string; 39 type?: string;
40 boolClose?: string; 40 boolClose?: string;
41 boolOpen?: string; 41 boolOpen?: string;
  42 + name?: string;
42 detail: DeviceModelOfMatterAttrs; 43 detail: DeviceModelOfMatterAttrs;
43 } 44 }
44 45
@@ -61,23 +62,27 @@ @@ -61,23 +62,27 @@
61 showQuickJumper: true, 62 showQuickJumper: true,
62 hideOnSinglePage: false, 63 hideOnSinglePage: false,
63 showTotal: (total: number) => `共${total}条数据`, 64 showTotal: (total: number) => `共${total}条数据`,
64 - onChange: handleChange,  
65 - onShowSizeChange: handleChange, 65 + onChange: handleFilterChange,
  66 + onShowSizeChange: handleFilterChange,
66 }); 67 });
67 68
68 const socketInfo = reactive({ 69 const socketInfo = reactive({
69 cmdId: 0, 70 cmdId: 0,
70 origin: `${socketUrl}${token}`, 71 origin: `${socketUrl}${token}`,
71 attr: undefined as string | undefined, 72 attr: undefined as string | undefined,
72 - originData: [] as DataSource[],  
73 dataSource: [] as DataSource[], 73 dataSource: [] as DataSource[],
74 message: {} as ReceiveMessage['data'], 74 message: {} as ReceiveMessage['data'],
75 attrKeys: [] as DeviceModelOfMatterAttrs[], 75 attrKeys: [] as DeviceModelOfMatterAttrs[],
  76 + filterAttrKeys: [] as DeviceModelOfMatterAttrs[],
76 }); 77 });
77 78
78 const getPaginationAttrkey = computed<DeviceModelOfMatterAttrs[]>(() => { 79 const getPaginationAttrkey = computed<DeviceModelOfMatterAttrs[]>(() => {
79 const { current = 1, pageSize = 10 } = pagination; 80 const { current = 1, pageSize = 10 } = pagination;
80 - return socketInfo.attrKeys.slice(current * pageSize - pageSize, current * pageSize); 81 + return (
  82 + socketInfo.filterAttrKeys && socketInfo.filterAttrKeys.length
  83 + ? socketInfo.filterAttrKeys
  84 + : socketInfo.attrKeys
  85 + ).slice(current * pageSize - pageSize, current * pageSize);
81 }); 86 });
82 87
83 function createUnsubscribeMessage(cmdId: number) { 88 function createUnsubscribeMessage(cmdId: number) {
@@ -107,6 +112,22 @@ @@ -107,6 +112,22 @@
107 }; 112 };
108 }); 113 });
109 114
  115 + const getFilterSendValue = computed(() => {
  116 + return {
  117 + tsSubCmds: [
  118 + {
  119 + entityType: 'DEVICE',
  120 + entityId: props.deviceDetail!.tbDeviceId,
  121 + scope: 'LATEST_TELEMETRY',
  122 + cmdId: socketInfo.cmdId,
  123 + keys: unref(getPaginationAttrkey)
  124 + .map((item) => item.identifier)
  125 + .join(','),
  126 + },
  127 + ],
  128 + };
  129 + });
  130 +
110 const [registerForm, { getFieldsValue }] = useForm({ 131 const [registerForm, { getFieldsValue }] = useForm({
111 schemas: [ 132 schemas: [
112 { 133 {
@@ -125,20 +146,29 @@ @@ -125,20 +146,29 @@
125 submitFunc: async () => { 146 submitFunc: async () => {
126 try { 147 try {
127 const { value } = getFieldsValue() || {}; 148 const { value } = getFieldsValue() || {};
128 - if (!value) setTableData(socketInfo.originData);  
129 - const data = unref(socketInfo.originData).filter(  
130 - (item) => item.key?.includes(value) || item.value?.includes(value)  
131 - ); 149 +
  150 + pagination.current = 1;
  151 +
  152 + socketInfo.filterAttrKeys = value
  153 + ? unref(socketInfo.attrKeys).filter(
  154 + (item) =>
  155 + item.identifier?.toUpperCase().includes(value.toUpperCase()) ||
  156 + item.name?.toUpperCase().includes(value.toUpperCase())
  157 + )
  158 + : socketInfo.attrKeys;
  159 +
132 await nextTick(); 160 await nextTick();
133 - socketInfo.dataSource = data;  
134 161
135 - setTableData(data); 162 + handleFilterChange();
  163 +
  164 + unref(mode) === EnumTableCardMode.TABLE && setTableData(socketInfo.dataSource);
136 } catch (error) {} 165 } catch (error) {}
137 }, 166 },
138 resetFunc: async () => { 167 resetFunc: async () => {
139 try { 168 try {
140 - socketInfo.dataSource = socketInfo.originData;  
141 - setTableData(socketInfo.originData); 169 + socketInfo.filterAttrKeys = [];
  170 + handleFilterChange();
  171 + unref(mode) === EnumTableCardMode.TABLE && setTableData(socketInfo.dataSource);
142 } catch (error) {} 172 } catch (error) {}
143 }, 173 },
144 }); 174 });
@@ -148,15 +178,19 @@ @@ -148,15 +178,19 @@
148 showTableSetting: true, 178 showTableSetting: true,
149 pagination: pagination as any, 179 pagination: pagination as any,
150 bordered: true, 180 bordered: true,
  181 + resizeHeightOffset: 16,
151 showIndexColumn: false, 182 showIndexColumn: false,
152 }); 183 });
153 184
154 - function handleChange(page: number, pageSize: number) { 185 + function handleFilterChange(
  186 + page: number = pagination.current || 1,
  187 + pageSize: number = pagination.pageSize || 10
  188 + ) {
155 pagination.current = page; 189 pagination.current = page;
156 pagination.pageSize = pageSize; 190 pagination.pageSize = pageSize;
157 send(JSON.stringify(createUnsubscribeMessage(socketInfo.cmdId))); 191 send(JSON.stringify(createUnsubscribeMessage(socketInfo.cmdId)));
158 socketInfo.cmdId = socketInfo.cmdId + 1; 192 socketInfo.cmdId = socketInfo.cmdId + 1;
159 - send(JSON.stringify(unref(getSendValue))); 193 + send(JSON.stringify(unref(getFilterSendValue)));
160 } 194 }
161 195
162 const [registerModal, { openModal }] = useModal(); 196 const [registerModal, { openModal }] = useModal();
@@ -166,8 +200,8 @@ @@ -166,8 +200,8 @@
166 const switchMode = async (value: EnumTableCardMode) => { 200 const switchMode = async (value: EnumTableCardMode) => {
167 mode.value = value; 201 mode.value = value;
168 await nextTick(); 202 await nextTick();
169 - setTableData(socketInfo.originData);  
170 - socketInfo.dataSource = socketInfo.originData; 203 + unref(mode) === EnumTableCardMode.TABLE && setTableData(socketInfo.dataSource);
  204 + socketInfo.filterAttrKeys = [];
171 }; 205 };
172 206
173 const { createMessage } = useMessage(); 207 const { createMessage } = useMessage();
@@ -190,10 +224,15 @@ @@ -190,10 +224,15 @@
190 }; 224 };
191 225
192 const setDataSource = () => { 226 const setDataSource = () => {
193 - socketInfo.originData = socketInfo.dataSource = socketInfo.attrKeys.map((item) => { 227 + socketInfo.dataSource = (
  228 + socketInfo.filterAttrKeys && socketInfo.filterAttrKeys.length
  229 + ? socketInfo.filterAttrKeys
  230 + : socketInfo.attrKeys
  231 + ).map((item) => {
194 const { identifier: key, name, detail, accessMode } = item; 232 const { identifier: key, name, detail, accessMode } = item;
195 const { unit, boolClose, boolOpen, type } = getUnit(detail); 233 const { unit, boolClose, boolOpen, type } = getUnit(detail);
196 - const dataInfo = socketInfo.attrKeys.find((item) => item.identifier === key); 234 + const dataInfo = socketInfo.filterAttrKeys.find((item) => item.identifier === key);
  235 +
197 let time: number | undefined; 236 let time: number | undefined;
198 let value: any | undefined; 237 let value: any | undefined;
199 const message = socketInfo.message[key]; 238 const message = socketInfo.message[key];
@@ -240,7 +279,8 @@ @@ -240,7 +279,8 @@
240 setDataSource(); 279 setDataSource();
241 280
242 await nextTick(); 281 await nextTick();
243 - setTableData(socketInfo.dataSource); 282 +
  283 + unref(mode) === EnumTableCardMode.TABLE && setTableData(socketInfo.dataSource);
244 } 284 }
245 } catch (error) {} 285 } catch (error) {}
246 }, 286 },