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 39 type?: string;
40 40 boolClose?: string;
41 41 boolOpen?: string;
  42 + name?: string;
42 43 detail: DeviceModelOfMatterAttrs;
43 44 }
44 45
... ... @@ -61,23 +62,27 @@
61 62 showQuickJumper: true,
62 63 hideOnSinglePage: false,
63 64 showTotal: (total: number) => `共${total}条数据`,
64   - onChange: handleChange,
65   - onShowSizeChange: handleChange,
  65 + onChange: handleFilterChange,
  66 + onShowSizeChange: handleFilterChange,
66 67 });
67 68
68 69 const socketInfo = reactive({
69 70 cmdId: 0,
70 71 origin: `${socketUrl}${token}`,
71 72 attr: undefined as string | undefined,
72   - originData: [] as DataSource[],
73 73 dataSource: [] as DataSource[],
74 74 message: {} as ReceiveMessage['data'],
75 75 attrKeys: [] as DeviceModelOfMatterAttrs[],
  76 + filterAttrKeys: [] as DeviceModelOfMatterAttrs[],
76 77 });
77 78
78 79 const getPaginationAttrkey = computed<DeviceModelOfMatterAttrs[]>(() => {
79 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 88 function createUnsubscribeMessage(cmdId: number) {
... ... @@ -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 131 const [registerForm, { getFieldsValue }] = useForm({
111 132 schemas: [
112 133 {
... ... @@ -125,20 +146,29 @@
125 146 submitFunc: async () => {
126 147 try {
127 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 160 await nextTick();
133   - socketInfo.dataSource = data;
134 161
135   - setTableData(data);
  162 + handleFilterChange();
  163 +
  164 + unref(mode) === EnumTableCardMode.TABLE && setTableData(socketInfo.dataSource);
136 165 } catch (error) {}
137 166 },
138 167 resetFunc: async () => {
139 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 172 } catch (error) {}
143 173 },
144 174 });
... ... @@ -148,15 +178,19 @@
148 178 showTableSetting: true,
149 179 pagination: pagination as any,
150 180 bordered: true,
  181 + resizeHeightOffset: 16,
151 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 189 pagination.current = page;
156 190 pagination.pageSize = pageSize;
157 191 send(JSON.stringify(createUnsubscribeMessage(socketInfo.cmdId)));
158 192 socketInfo.cmdId = socketInfo.cmdId + 1;
159   - send(JSON.stringify(unref(getSendValue)));
  193 + send(JSON.stringify(unref(getFilterSendValue)));
160 194 }
161 195
162 196 const [registerModal, { openModal }] = useModal();
... ... @@ -166,8 +200,8 @@
166 200 const switchMode = async (value: EnumTableCardMode) => {
167 201 mode.value = value;
168 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 207 const { createMessage } = useMessage();
... ... @@ -190,10 +224,15 @@
190 224 };
191 225
192 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 232 const { identifier: key, name, detail, accessMode } = item;
195 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 236 let time: number | undefined;
198 237 let value: any | undefined;
199 238 const message = socketInfo.message[key];
... ... @@ -240,7 +279,8 @@
240 279 setDataSource();
241 280
242 281 await nextTick();
243   - setTableData(socketInfo.dataSource);
  282 +
  283 + unref(mode) === EnumTableCardMode.TABLE && setTableData(socketInfo.dataSource);
244 284 }
245 285 } catch (error) {}
246 286 },
... ...