Commit 7fc23aa19a236290f336e4f754da94f11da5d3e7

Authored by fengwotao
1 parent ce43e301

perf: 优化告警记录里的告警详情和设备列表里的告警详情内容展示

@@ -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({