Showing
2 changed files
with
121 additions
and
50 deletions
@@ -119,45 +119,81 @@ | @@ -119,45 +119,81 @@ | ||
119 | const handleSuccess = () => { | 119 | const handleSuccess = () => { |
120 | reload(); | 120 | reload(); |
121 | }; | 121 | }; |
122 | + | ||
123 | + const findName = (item: any, curr: any) => { | ||
124 | + return item.attribute.find((item) => item.identifier === curr.key)?.name; | ||
125 | + }; | ||
126 | + | ||
127 | + const findLogin = (curr: any) => { | ||
128 | + return [...operationNumber_OR_TIME, ...operationString, ...operationBoolean].find( | ||
129 | + (item) => item.value === curr.logic | ||
130 | + )?.symbol; | ||
131 | + }; | ||
132 | + | ||
133 | + const findAttribute = (item: any, curr: any) => { | ||
134 | + item.attribute.find((findItem) => findItem.identifier === curr.key); | ||
135 | + }; | ||
136 | + | ||
137 | + const findValue = (item: any, curr: any) => { | ||
138 | + return { | ||
139 | + ['触发属性']: findName(item, curr), | ||
140 | + ['触发条件']: `${findLogin(curr)}${curr.logicValue}`, | ||
141 | + ['触发值']: `${curr.realValue}${ | ||
142 | + findAttribute(item, curr)?.detail?.dataType?.specs?.unit?.key ?? '' | ||
143 | + }`, | ||
144 | + }; | ||
145 | + }; | ||
146 | + | ||
147 | + const handleAlarmText = (text: string) => (text === 'triggerData' ? '触发器' : '执行条件'); | ||
148 | + | ||
122 | const handleViewAlarmDetails = async (record: Recordable) => { | 149 | const handleViewAlarmDetails = async (record: Recordable) => { |
123 | await nextTick(); | 150 | await nextTick(); |
124 | const { details } = record; | 151 | const { details } = record; |
152 | + if (!details) return; | ||
125 | const deviceIdKeys = Object.keys(details); | 153 | const deviceIdKeys = Object.keys(details); |
126 | const detailObject = deviceIdKeys.map((key) => ({ label: key, value: details[key] })); | 154 | const detailObject = deviceIdKeys.map((key) => ({ label: key, value: details[key] })); |
127 | const dataFormat = await handleAlarmDetailFormat(deviceIdKeys); | 155 | const dataFormat = await handleAlarmDetailFormat(deviceIdKeys); |
128 | - const dataFormats = detailObject.reduce((acc: any, curr: any) => { | 156 | + const dataFormats = detailObject.reduce((acc: Recordable[], curr: Recordable) => { |
157 | + let currentObj: Recordable = {}; | ||
129 | dataFormat.forEach((item) => { | 158 | dataFormat.forEach((item) => { |
130 | if (item.tbDeviceId === curr.label) { | 159 | if (item.tbDeviceId === curr.label) { |
131 | - const findName = item.attribute.find( | ||
132 | - (item) => item.identifier === curr.value.key | ||
133 | - )?.name; | ||
134 | - const findLogin = [ | ||
135 | - ...operationNumber_OR_TIME, | ||
136 | - ...operationString, | ||
137 | - ...operationBoolean, | ||
138 | - ].find((item) => item.value === curr.value.logic)?.symbol; | ||
139 | - const findAttribute = item.attribute.find( | ||
140 | - (findItem) => findItem.identifier === curr.value.key | ||
141 | - ); | ||
142 | - const value = { | ||
143 | - ['触发属性']: findName, | ||
144 | - ['触发条件']: `${findLogin}${curr.value.logicValue}`, | ||
145 | - ['触发值']: `${curr.value.realValue}${ | ||
146 | - findAttribute.detail?.dataType?.specs?.unit?.key ?? '' | ||
147 | - }`, | ||
148 | - }; | ||
149 | - const data = { | ||
150 | - [item.name]: value, | ||
151 | - }; | ||
152 | - acc.push(data); | 160 | + const { triggerData, conditionData } = curr.value; |
161 | + if (triggerData || conditionData) { | ||
162 | + for (let currItem in curr.value) { | ||
163 | + const value = findValue(item, curr.value[currItem]); | ||
164 | + currentObj = { | ||
165 | + [item.name]: { | ||
166 | + [handleAlarmText(currItem)]: value, | ||
167 | + }, | ||
168 | + }; | ||
169 | + acc.push(currentObj); | ||
170 | + } | ||
171 | + } else { | ||
172 | + const value = findValue(item, curr.value); | ||
173 | + currentObj = { | ||
174 | + [item.name]: value, | ||
175 | + }; | ||
176 | + acc.push(currentObj); | ||
177 | + } | ||
153 | } | 178 | } |
154 | }); | 179 | }); |
155 | return [...acc]; | 180 | return [...acc]; |
156 | }, []); | 181 | }, []); |
157 | - const objectFormat = dataFormats.reduce((acc: any, curr: any) => { | 182 | + let tempList: Recordable[] = []; |
183 | + const objectFormat = dataFormats.reduce((acc: Recordable, curr: Recordable) => { | ||
184 | + const keys = Object.keys(curr); | ||
185 | + const values = Object.values(curr); | ||
186 | + tempList.push(...values); | ||
187 | + acc = { | ||
188 | + [keys[0]]: tempList.reduce((acc: Recordable, curr: Recordable) => { | ||
189 | + return { | ||
190 | + ...acc, | ||
191 | + ...curr, | ||
192 | + }; | ||
193 | + }, {}), | ||
194 | + }; | ||
158 | return { | 195 | return { |
159 | ...acc, | 196 | ...acc, |
160 | - ...curr, | ||
161 | }; | 197 | }; |
162 | }, {}); | 198 | }, {}); |
163 | Modal.info({ | 199 | Modal.info({ |
@@ -80,45 +80,80 @@ | @@ -80,45 +80,80 @@ | ||
80 | const handleSuccess = () => { | 80 | const handleSuccess = () => { |
81 | reload(); | 81 | reload(); |
82 | }; | 82 | }; |
83 | + const findName = (item: any, curr: any) => { | ||
84 | + return item.attribute.find((item) => item.identifier === curr.key)?.name; | ||
85 | + }; | ||
86 | + | ||
87 | + const findLogin = (curr: any) => { | ||
88 | + return [...operationNumber_OR_TIME, ...operationString, ...operationBoolean].find( | ||
89 | + (item) => item.value === curr.logic | ||
90 | + )?.symbol; | ||
91 | + }; | ||
92 | + | ||
93 | + const findAttribute = (item: any, curr: any) => { | ||
94 | + item.attribute.find((findItem) => findItem.identifier === curr.key); | ||
95 | + }; | ||
96 | + | ||
97 | + const findValue = (item: any, curr: any) => { | ||
98 | + return { | ||
99 | + ['触发属性']: findName(item, curr), | ||
100 | + ['触发条件']: `${findLogin(curr)}${curr.logicValue}`, | ||
101 | + ['触发值']: `${curr.realValue}${ | ||
102 | + findAttribute(item, curr)?.detail?.dataType?.specs?.unit?.key ?? '' | ||
103 | + }`, | ||
104 | + }; | ||
105 | + }; | ||
106 | + | ||
107 | + const handleAlarmText = (text: string) => (text === 'triggerData' ? '触发器' : '执行条件'); | ||
108 | + | ||
83 | const handleViewAlarmDetails = async (record: Recordable) => { | 109 | const handleViewAlarmDetails = async (record: Recordable) => { |
84 | await nextTick(); | 110 | await nextTick(); |
85 | const { details } = record; | 111 | const { details } = record; |
112 | + if (!details) return; | ||
86 | const deviceIdKeys = Object.keys(details); | 113 | const deviceIdKeys = Object.keys(details); |
87 | const detailObject = deviceIdKeys.map((key) => ({ label: key, value: details[key] })); | 114 | const detailObject = deviceIdKeys.map((key) => ({ label: key, value: details[key] })); |
88 | const dataFormat = await handleAlarmDetailFormat(deviceIdKeys); | 115 | const dataFormat = await handleAlarmDetailFormat(deviceIdKeys); |
89 | - const dataFormats = detailObject.reduce((acc: any, curr: any) => { | 116 | + const dataFormats = detailObject.reduce((acc: Recordable[], curr: Recordable) => { |
117 | + let currentObj: Recordable = {}; | ||
90 | dataFormat.forEach((item) => { | 118 | dataFormat.forEach((item) => { |
91 | if (item.tbDeviceId === curr.label) { | 119 | if (item.tbDeviceId === curr.label) { |
92 | - const findName = item.attribute.find( | ||
93 | - (item) => item.identifier === curr.value.key | ||
94 | - )?.name; | ||
95 | - const findLogin = [ | ||
96 | - ...operationNumber_OR_TIME, | ||
97 | - ...operationString, | ||
98 | - ...operationBoolean, | ||
99 | - ].find((item) => item.value === curr.value.logic)?.symbol; | ||
100 | - const findAttribute = item.attribute.find( | ||
101 | - (findItem) => findItem.identifier === curr.value.key | ||
102 | - ); | ||
103 | - const value = { | ||
104 | - ['触发属性']: findName, | ||
105 | - ['触发条件']: `${findLogin}${curr.value.logicValue}`, | ||
106 | - ['触发值']: `${curr.value.realValue}${ | ||
107 | - findAttribute.detail?.dataType?.specs?.unit?.key ?? '' | ||
108 | - }`, | ||
109 | - }; | ||
110 | - const data = { | ||
111 | - [item.name]: value, | ||
112 | - }; | ||
113 | - acc.push(data); | 120 | + const { triggerData, conditionData } = curr.value; |
121 | + if (triggerData || conditionData) { | ||
122 | + for (let currItem in curr.value) { | ||
123 | + const value = findValue(item, curr.value[currItem]); | ||
124 | + currentObj = { | ||
125 | + [item.name]: { | ||
126 | + [handleAlarmText(currItem)]: value, | ||
127 | + }, | ||
128 | + }; | ||
129 | + acc.push(currentObj); | ||
130 | + } | ||
131 | + } else { | ||
132 | + const value = findValue(item, curr.value); | ||
133 | + currentObj = { | ||
134 | + [item.name]: value, | ||
135 | + }; | ||
136 | + acc.push(currentObj); | ||
137 | + } | ||
114 | } | 138 | } |
115 | }); | 139 | }); |
116 | return [...acc]; | 140 | return [...acc]; |
117 | }, []); | 141 | }, []); |
118 | - const objectFormat = dataFormats.reduce((acc: any, curr: any) => { | 142 | + let tempList: Recordable[] = []; |
143 | + const objectFormat = dataFormats.reduce((acc: Recordable, curr: Recordable) => { | ||
144 | + const keys = Object.keys(curr); | ||
145 | + const values = Object.values(curr); | ||
146 | + tempList.push(...values); | ||
147 | + acc = { | ||
148 | + [keys[0]]: tempList.reduce((acc: Recordable, curr: Recordable) => { | ||
149 | + return { | ||
150 | + ...acc, | ||
151 | + ...curr, | ||
152 | + }; | ||
153 | + }, {}), | ||
154 | + }; | ||
119 | return { | 155 | return { |
120 | ...acc, | 156 | ...acc, |
121 | - ...curr, | ||
122 | }; | 157 | }; |
123 | }, {}); | 158 | }, {}); |
124 | Modal.info({ | 159 | Modal.info({ |