xuziqiang 4 months ago
parent
commit
5993621c21
  1. 4
      hx-ai-intelligent/src/api/alarmManagement/equipmentAlarm.ts
  2. 6
      hx-ai-intelligent/src/api/dict.ts
  3. 6
      hx-ai-intelligent/src/icon/status-0.svg
  4. 4
      hx-ai-intelligent/src/icon/status-1.svg
  5. 6
      hx-ai-intelligent/src/icon/status-2.svg
  6. 4
      hx-ai-intelligent/src/icon/status-3.svg
  7. 4
      hx-ai-intelligent/src/icon/status-4.svg
  8. 6
      hx-ai-intelligent/src/icon/status-5.svg
  9. 1
      hx-ai-intelligent/src/icon/zidian.svg
  10. 15
      hx-ai-intelligent/src/router/dict.ts
  11. 4
      hx-ai-intelligent/src/view/alarmManagement/alarmOverview/index.vue
  12. 24
      hx-ai-intelligent/src/view/alarmManagement/alarmSettings/energyAlarm/configureEnergyAlarms.vue
  13. 1
      hx-ai-intelligent/src/view/alarmManagement/alarmSettings/equipmentAlarm/configureDeviceAlarms.vue
  14. 9
      hx-ai-intelligent/src/view/alarmManagement/alarmSettings/equipmentAlarm/editConfigureDeviceAlarm.vue
  15. 2
      hx-ai-intelligent/src/view/alarmManagement/alarmSettings/index.vue
  16. 9
      hx-ai-intelligent/src/view/alarmManagement/alarmSettings/notificationManagement/index.vue
  17. 63
      hx-ai-intelligent/src/view/alarmManagement/alarmSettings/notificationManagement/linkPeople/index.vue
  18. 4
      hx-ai-intelligent/src/view/alarmManagement/alarmSettings/ts/energyAlarmConfig.ts
  19. 4
      hx-ai-intelligent/src/view/alarmManagement/alarmSettings/ts/equipmentAlarmConfig.ts
  20. 15
      hx-ai-intelligent/src/view/alarmManagement/equipmentAlarm/index.vue
  21. 50
      hx-ai-intelligent/src/view/alarmManagement/equipmentAlarm/look.vue
  22. 99
      hx-ai-intelligent/src/view/alarmManagement/equipmentAlarm/status.vue
  23. 56
      hx-ai-intelligent/src/view/alarmManagement/equipmentAlarm/ts/config.ts
  24. 39
      hx-ai-intelligent/src/view/alarmManagement/gatewayAlarm/status.vue
  25. 51
      hx-ai-intelligent/src/view/dict/config.ts
  26. 316
      hx-ai-intelligent/src/view/dict/index.vue

4
hx-ai-intelligent/src/api/alarmManagement/equipmentAlarm.ts

@ -0,0 +1,4 @@
export enum equipmentAlarmApi {
getTableList = '/carbon-smart/api/AlarmEquipmentLog/selectAlarmEquipmentLog', //设备告警 列表
getCodeList = '/carbon-smart/api/AlarmEquipmentLog/selectErrorCodeList', //设备告警 列表
}

6
hx-ai-intelligent/src/api/dict.ts

@ -0,0 +1,6 @@
export enum dict {
dictionaryUnitManagement = '/carbon-smart/client/dict/dictionaryUnitManagement',
updateDictionary = '/carbon-smart/client/dict/updateDictionary',
createDictionary = '/carbon-smart/client/dict/createDictionary',
delDictionary = '/carbon-smart/client/dict/delDictionary',
}

6
hx-ai-intelligent/src/icon/status-0.svg

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -305 -366 )">
<path d="M 8.03885714285714 0.641142857142857 L 8.03885714285714 0.64 C 12.1181901007502 0.64 15.4251428571429 3.94695275639267 15.4251428571429 8.02628571428571 C 15.4251430928625 8.02704758957974 15.4251432107223 8.02780946489393 15.4251432107223 8.02857134022442 C 15.4251432107223 12.1085354806887 12.117678779758 15.415999911653 8.03771463929375 15.415999911653 C 3.95775049882947 15.415999911653 0.650286067865178 12.1085354806887 0.650286067865178 8.02857134022442 C 0.650286067865178 3.94860719976014 3.95775049882947 0.64114276879585 8.03771463929375 0.64114276879585 C 8.03809547381657 0.64114276879585 8.03847630833888 0.641142798244853 8.03885714285714 0.641142857142857 Z M 8 6.85714285714286 C 7.36881742876481 6.85714285714286 6.85714285714286 7.36881742876481 6.85714285714286 8 C 6.85714285714286 8.63118257123519 7.36881742876481 9.14285714285714 8 9.14285714285714 C 8.63118257123519 9.14285714285714 9.14285714285714 8.63118257123519 9.14285714285714 8 C 9.14285714285714 7.36881742876481 8.63118257123519 6.85714285714286 8 6.85714285714286 Z M 11.4285714285714 6.85714285714286 C 10.7973888573362 6.85714285714286 10.2857142857143 7.36881742876481 10.2857142857143 8 C 10.2857142857143 8.63118257123519 10.7973888573362 9.14285714285714 11.4285714285714 9.14285714285714 C 12.0597539998066 9.14285714285714 12.5714285714286 8.63118257123519 12.5714285714286 8 C 12.5714285714286 7.36881742876481 12.0597539998066 6.85714285714286 11.4285714285714 6.85714285714286 Z M 4.57142857142857 6.85714285714286 C 3.94024600019338 6.85714285714286 3.42857142857143 7.36881742876481 3.42857142857143 8 C 3.42857142857143 8.63118257123519 3.94024600019338 9.14285714285714 4.57142857142857 9.14285714285714 C 5.20261114266376 9.14285714285714 5.71428571428571 8.63118257123519 5.71428571428571 8 C 5.71428571428571 7.36881742876481 5.20261114266376 6.85714285714286 4.57142857142857 6.85714285714286 Z " fill-rule="nonzero" fill="#ff7602" stroke="none" transform="matrix(1 0 0 1 305 366 )" />
</g>
</svg>

4
hx-ai-intelligent/src/icon/status-1.svg

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -305 -340 )">
<path d="M 15.52 8 C 15.52 3.848 12.152 0.48 8 0.48 C 3.848 0.48 0.48 3.848 0.48 8 C 0.48 12.152 3.848 15.52 8 15.52 C 12.152 15.52 15.52 12.152 15.52 8 Z M 11.608 9.256 C 11.84 9.368 11.936 9.648 11.832 9.88 C 11.72 10.112 11.44 10.216 11.208 10.104 L 7.8 8.48 C 7.632 8.392 7.52 8.216 7.512 8.024 L 7.512 2.648 C 7.512 2.392 7.72 2.176 7.984 2.176 C 8.24 2.176 8.456 2.384 8.456 2.648 L 8.456 7.752 L 11.608 9.256 Z " fill-rule="nonzero" fill="#009de1" stroke="none" transform="matrix(1 0 0 1 305 340 )" />
<g transform="matrix(1 0 0 1 -305 -366 )">
<path d="M 8.03885714285714 0.641142857142857 L 8.03885714285714 0.64 C 12.1181901007502 0.64 15.4251428571429 3.94695275639267 15.4251428571429 8.02628571428571 C 15.4251430928625 8.02704758957974 15.4251432107223 8.02780946489393 15.4251432107223 8.02857134022442 C 15.4251432107223 12.1085354806887 12.117678779758 15.415999911653 8.03771463929375 15.415999911653 C 3.95775049882947 15.415999911653 0.650286067865178 12.1085354806887 0.650286067865178 8.02857134022442 C 0.650286067865178 3.94860719976014 3.95775049882947 0.64114276879585 8.03771463929375 0.64114276879585 C 8.03809547381657 0.64114276879585 8.03847630833888 0.641142798244853 8.03885714285714 0.641142857142857 Z M 8 6.85714285714286 C 7.36881742876481 6.85714285714286 6.85714285714286 7.36881742876481 6.85714285714286 8 C 6.85714285714286 8.63118257123519 7.36881742876481 9.14285714285714 8 9.14285714285714 C 8.63118257123519 9.14285714285714 9.14285714285714 8.63118257123519 9.14285714285714 8 C 9.14285714285714 7.36881742876481 8.63118257123519 6.85714285714286 8 6.85714285714286 Z M 11.4285714285714 6.85714285714286 C 10.7973888573362 6.85714285714286 10.2857142857143 7.36881742876481 10.2857142857143 8 C 10.2857142857143 8.63118257123519 10.7973888573362 9.14285714285714 11.4285714285714 9.14285714285714 C 12.0597539998066 9.14285714285714 12.5714285714286 8.63118257123519 12.5714285714286 8 C 12.5714285714286 7.36881742876481 12.0597539998066 6.85714285714286 11.4285714285714 6.85714285714286 Z M 4.57142857142857 6.85714285714286 C 3.94024600019338 6.85714285714286 3.42857142857143 7.36881742876481 3.42857142857143 8 C 3.42857142857143 8.63118257123519 3.94024600019338 9.14285714285714 4.57142857142857 9.14285714285714 C 5.20261114266376 9.14285714285714 5.71428571428571 8.63118257123519 5.71428571428571 8 C 5.71428571428571 7.36881742876481 5.20261114266376 6.85714285714286 4.57142857142857 6.85714285714286 Z " fill-rule="nonzero" fill="#ff7602" stroke="none" transform="matrix(1 0 0 1 305 366 )" />
</g>
</svg>

6
hx-ai-intelligent/src/icon/status-2.svg

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="15px" height="15px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -305 -264 )">
<path d="M 12.8044865917969 12.8044945019531 C 15.7317833056641 9.87949759277344 15.7317833056641 5.12019596191406 12.8044865917969 2.19521370117188 C 11.3984961283515 0.787326048146557 9.48966705506673 -0.00260805552580251 7.4999560546875 3.046875E-05 C 5.50996955094545 -0.00406567496305449 3.60061659376305 0.786091774555939 2.19546946289063 2.19521370117188 C -0.731548930664062 5.12021061035156 -0.731548930664062 9.87951224121094 2.19546946289063 12.8044945019531 C 3.60067093003941 14.2135352022771 5.50998850312976 15.0036780086136 7.4999560546875 14.999677734375 C 9.49029165514025 15.0054765279533 11.4002873723065 14.2150596299848 12.8044865917969 12.8044945019531 Z M 11.9376369140625 5.54019552246094 L 6.89940004394531 10.9003754150391 C 6.87578802320076 10.9269018017654 6.84623229984903 10.9474623058395 6.81315013183594 10.9603753564453 C 6.78748609863281 10.9776751464844 6.77046462890625 10.9949895849609 6.73585041503906 11.003060859375 C 6.67362025830789 11.0304200226738 6.60651003916783 11.0449431326059 6.53853616699219 11.0457610107422 C 6.47426031328986 11.0436752198275 6.41062363711127 11.0323076485925 6.34960082519531 11.0120110400391 L 6.28960088378906 10.9773821777344 C 6.25364523541476 10.9604965742554 6.21927871922921 10.9404159360992 6.18691545410156 10.9173822363281 L 3.30259719726562 8.07866452148437 C 3.20194835437246 7.98256406662991 3.14591207112094 7.8488594603371 3.14796845214844 7.70971472167969 C 3.14796845214844 7.57240041503906 3.20046839355469 7.43510075683594 3.29421830566406 7.34076490722656 C 3.50055541080613 7.14332002945278 3.8257661663423 7.14332002945278 4.03210327148437 7.34076490722656 L 6.52210063476562 9.79326232910156 L 11.1824668212891 4.83721775390625 C 11.3839239859071 4.63706235688665 11.705600292055 4.62599539544477 11.9203371386719 4.81183204101562 C 12.0250169736047 4.90583460723342 12.0845359910269 5.04009087589488 12.0839014160156 5.18078184082031 C 12.0834323759743 5.31515796660418 12.0310295272497 5.44414958696638 11.9376515625 5.54078145996094 Z " fill-rule="nonzero" fill="#04d719" stroke="none" transform="matrix(1 0 0 1 305 264 )" />
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -305 -340 )">
<path d="M 15.52 8 C 15.52 3.848 12.152 0.48 8 0.48 C 3.848 0.48 0.48 3.848 0.48 8 C 0.48 12.152 3.848 15.52 8 15.52 C 12.152 15.52 15.52 12.152 15.52 8 Z M 11.608 9.256 C 11.84 9.368 11.936 9.648 11.832 9.88 C 11.72 10.112 11.44 10.216 11.208 10.104 L 7.8 8.48 C 7.632 8.392 7.52 8.216 7.512 8.024 L 7.512 2.648 C 7.512 2.392 7.72 2.176 7.984 2.176 C 8.24 2.176 8.456 2.384 8.456 2.648 L 8.456 7.752 L 11.608 9.256 Z " fill-rule="nonzero" fill="#009de1" stroke="none" transform="matrix(1 0 0 1 305 340 )" />
</g>
</svg>

4
hx-ai-intelligent/src/icon/status-3.svg

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="15px" height="15px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -305 -315 )">
<path d="M 15 7.5 C 15 3.358125 11.641875 0 7.5 0 C 3.358125 0 0 3.358125 0 7.5 C 0 11.641875 3.358125 15 7.5 15 C 11.641875 15 15 11.641875 15 7.5 Z M 6.96437500488281 8.4375 L 6.96437500488281 3.8840625 C 6.96454594411788 3.81021458429416 7.02427767945776 3.75034328445354 7.09812499511719 3.75 L 7.90187500488281 3.75 C 7.97572232054224 3.75034328445354 8.03545405588212 3.81021458429416 8.03562499511719 3.8840625 L 8.03562499511719 8.4375 C 8.03545405588212 8.51134791570584 7.97572232054224 8.57121921554647 7.90187500488281 8.5715625 L 7.09812499511719 8.5715625 C 7.02427767945776 8.57121921554647 6.96454594411788 8.51134791570584 6.96437500488281 8.4375 Z M 7.5 11.25 C 7.05616214821327 11.2499137187178 6.69640622993007 10.8900878577318 6.69640622993007 10.4462499975586 C 6.69640622993007 10.0023511201461 7.05625737014613 9.64249997993007 7.50015624755859 9.64249997993007 C 7.94415034690392 9.64258627639936 8.30390626518712 10.0024121373854 8.30390626518712 10.4462499975586 C 8.30390626518712 10.8901488749711 7.94405512497106 11.2500000151871 7.50015624755859 11.2500000151871 Z " fill-rule="nonzero" fill="#d8001b" stroke="none" transform="matrix(1 0 0 1 305 315 )" />
<g transform="matrix(1 0 0 1 -305 -264 )">
<path d="M 12.8044865917969 12.8044945019531 C 15.7317833056641 9.87949759277344 15.7317833056641 5.12019596191406 12.8044865917969 2.19521370117188 C 11.3984961283515 0.787326048146557 9.48966705506673 -0.00260805552580251 7.4999560546875 3.046875E-05 C 5.50996955094545 -0.00406567496305449 3.60061659376305 0.786091774555939 2.19546946289063 2.19521370117188 C -0.731548930664062 5.12021061035156 -0.731548930664062 9.87951224121094 2.19546946289063 12.8044945019531 C 3.60067093003941 14.2135352022771 5.50998850312976 15.0036780086136 7.4999560546875 14.999677734375 C 9.49029165514025 15.0054765279533 11.4002873723065 14.2150596299848 12.8044865917969 12.8044945019531 Z M 11.9376369140625 5.54019552246094 L 6.89940004394531 10.9003754150391 C 6.87578802320076 10.9269018017654 6.84623229984903 10.9474623058395 6.81315013183594 10.9603753564453 C 6.78748609863281 10.9776751464844 6.77046462890625 10.9949895849609 6.73585041503906 11.003060859375 C 6.67362025830789 11.0304200226738 6.60651003916783 11.0449431326059 6.53853616699219 11.0457610107422 C 6.47426031328986 11.0436752198275 6.41062363711127 11.0323076485925 6.34960082519531 11.0120110400391 L 6.28960088378906 10.9773821777344 C 6.25364523541476 10.9604965742554 6.21927871922921 10.9404159360992 6.18691545410156 10.9173822363281 L 3.30259719726562 8.07866452148437 C 3.20194835437246 7.98256406662991 3.14591207112094 7.8488594603371 3.14796845214844 7.70971472167969 C 3.14796845214844 7.57240041503906 3.20046839355469 7.43510075683594 3.29421830566406 7.34076490722656 C 3.50055541080613 7.14332002945278 3.8257661663423 7.14332002945278 4.03210327148437 7.34076490722656 L 6.52210063476562 9.79326232910156 L 11.1824668212891 4.83721775390625 C 11.3839239859071 4.63706235688665 11.705600292055 4.62599539544477 11.9203371386719 4.81183204101562 C 12.0250169736047 4.90583460723342 12.0845359910269 5.04009087589488 12.0839014160156 5.18078184082031 C 12.0834323759743 5.31515796660418 12.0310295272497 5.44414958696638 11.9376515625 5.54078145996094 Z " fill-rule="nonzero" fill="#04d719" stroke="none" transform="matrix(1 0 0 1 305 264 )" />
</g>
</svg>

4
hx-ai-intelligent/src/icon/status-4.svg

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="15px" height="15px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -305 -289 )">
<path d="M 14.8828125 7.5 C 14.8828125 3.42891475341797 11.571085246582 0.1171875 7.5 0.1171875 C 3.42942502441406 0.1171875 0.1171875 3.42891475341797 0.1171875 7.5 C 0.1171875 11.571085246582 3.42891475341797 14.8828125 7.5 14.8828125 C 11.5705749755859 14.8828125 14.8828125 11.571085246582 14.8828125 7.5 Z M 8.24725339416504 7.50209775695801 L 10.5116636334229 9.77390681030273 C 10.717328404541 9.98062045166015 10.7167897888184 10.3139079473877 10.5106147631836 10.5195727185059 C 10.4077965582275 10.6218806689453 10.2733136187744 10.6735590710449 10.1383204248047 10.6735590710449 C 10.0027886151123 10.6735590710449 9.86779542114258 10.6218806524658 9.76494885498047 10.5185238317871 L 7.49736364379883 8.24407840576172 L 5.22240794677735 10.4947965600586 C 5.11958974182129 10.5960556237793 4.98561707336426 10.6471954266357 4.85167274963379 10.6471954266357 C 4.71563066894531 10.6471954266357 4.58009887573242 10.5949784088135 4.47674203857422 10.490572701416 C 4.27212613769531 10.2833204443359 4.27371362365723 9.9500329486084 4.4809658972168 9.74490679321289 L 6.75328522155762 7.49736362731933 L 4.4893852532959 5.22609317321777 C 4.28372048217773 5.01988978637695 4.28425909790039 4.68609203613281 4.49043412353516 4.48042726501465 C 4.69663751037598 4.27422387817383 5.02989664489746 4.27530110961914 5.23610003173828 4.4814761352539 L 7.50314662719727 6.75538294555664 L 9.77810232421875 4.50469313598633 C 9.98481596557617 4.29956698059082 10.319152331543 4.30166472106934 10.5237682324219 4.5089169946289 C 10.7288943878174 4.71616925170898 10.7267966473389 5.04996700195312 10.5195443737793 5.25458290283203 L 8.24725339416504 7.50209775695801 Z " fill-rule="nonzero" fill="#a6a6a6" stroke="none" transform="matrix(1 0 0 1 305 289 )" />
<g transform="matrix(1 0 0 1 -305 -315 )">
<path d="M 15 7.5 C 15 3.358125 11.641875 0 7.5 0 C 3.358125 0 0 3.358125 0 7.5 C 0 11.641875 3.358125 15 7.5 15 C 11.641875 15 15 11.641875 15 7.5 Z M 6.96437500488281 8.4375 L 6.96437500488281 3.8840625 C 6.96454594411788 3.81021458429416 7.02427767945776 3.75034328445354 7.09812499511719 3.75 L 7.90187500488281 3.75 C 7.97572232054224 3.75034328445354 8.03545405588212 3.81021458429416 8.03562499511719 3.8840625 L 8.03562499511719 8.4375 C 8.03545405588212 8.51134791570584 7.97572232054224 8.57121921554647 7.90187500488281 8.5715625 L 7.09812499511719 8.5715625 C 7.02427767945776 8.57121921554647 6.96454594411788 8.51134791570584 6.96437500488281 8.4375 Z M 7.5 11.25 C 7.05616214821327 11.2499137187178 6.69640622993007 10.8900878577318 6.69640622993007 10.4462499975586 C 6.69640622993007 10.0023511201461 7.05625737014613 9.64249997993007 7.50015624755859 9.64249997993007 C 7.94415034690392 9.64258627639936 8.30390626518712 10.0024121373854 8.30390626518712 10.4462499975586 C 8.30390626518712 10.8901488749711 7.94405512497106 11.2500000151871 7.50015624755859 11.2500000151871 Z " fill-rule="nonzero" fill="#d8001b" stroke="none" transform="matrix(1 0 0 1 305 315 )" />
</g>
</svg>

6
hx-ai-intelligent/src/icon/status-5.svg

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="15px" height="15px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -305 -289 )">
<path d="M 14.8828125 7.5 C 14.8828125 3.42891475341797 11.571085246582 0.1171875 7.5 0.1171875 C 3.42942502441406 0.1171875 0.1171875 3.42891475341797 0.1171875 7.5 C 0.1171875 11.571085246582 3.42891475341797 14.8828125 7.5 14.8828125 C 11.5705749755859 14.8828125 14.8828125 11.571085246582 14.8828125 7.5 Z M 8.24725339416504 7.50209775695801 L 10.5116636334229 9.77390681030273 C 10.717328404541 9.98062045166015 10.7167897888184 10.3139079473877 10.5106147631836 10.5195727185059 C 10.4077965582275 10.6218806689453 10.2733136187744 10.6735590710449 10.1383204248047 10.6735590710449 C 10.0027886151123 10.6735590710449 9.86779542114258 10.6218806524658 9.76494885498047 10.5185238317871 L 7.49736364379883 8.24407840576172 L 5.22240794677735 10.4947965600586 C 5.11958974182129 10.5960556237793 4.98561707336426 10.6471954266357 4.85167274963379 10.6471954266357 C 4.71563066894531 10.6471954266357 4.58009887573242 10.5949784088135 4.47674203857422 10.490572701416 C 4.27212613769531 10.2833204443359 4.27371362365723 9.9500329486084 4.4809658972168 9.74490679321289 L 6.75328522155762 7.49736362731933 L 4.4893852532959 5.22609317321777 C 4.28372048217773 5.01988978637695 4.28425909790039 4.68609203613281 4.49043412353516 4.48042726501465 C 4.69663751037598 4.27422387817383 5.02989664489746 4.27530110961914 5.23610003173828 4.4814761352539 L 7.50314662719727 6.75538294555664 L 9.77810232421875 4.50469313598633 C 9.98481596557617 4.29956698059082 10.319152331543 4.30166472106934 10.5237682324219 4.5089169946289 C 10.7288943878174 4.71616925170898 10.7267966473389 5.04996700195312 10.5195443737793 5.25458290283203 L 8.24725339416504 7.50209775695801 Z " fill-rule="nonzero" fill="#a6a6a6" stroke="none" transform="matrix(1 0 0 1 305 289 )" />
</g>
</svg>

1
hx-ai-intelligent/src/icon/zidian.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1721271548889" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4319" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><path d="M966.632727 253.602909c-18.850909 0-34.117818 15.266909-34.117818 34.094546v537.94909H602.926545A123.136 123.136 0 0 0 512 866.048a123.182545 123.182545 0 0 0-90.926545-40.401455H91.485091V287.697455a34.117818 34.117818 0 0 0-68.189091 0v549.632c0 32.209455 25.460364 58.414545 56.785455 58.414545h340.992c24.273455 0 45.009455 15.709091 53.154909 37.748364 4.677818 12.660364 17.175273 20.689455 30.673454 20.689454h14.196364c13.498182 0 25.995636-8.029091 30.673454-20.689454 8.145455-22.039273 28.881455-37.748364 53.154909-37.748364h340.968728c31.348364 0 56.832-26.205091 56.832-58.414545V287.697455c0-18.827636-15.266909-34.094545-34.094546-34.094546zM221.230545 139.938909h199.84291c31.325091 0 56.832 21.573818 56.832 48.104727v493.614546a130.443636 130.443636 0 0 0-56.832-12.8H221.230545V139.938909zM475.694545 775.168l2.21091 24.413091h68.18909l2.187637-24.413091c6.609455-21.317818 29.090909-36.212364 54.644363-36.212364h268.055273v-216.133818a34.117818 34.117818 0 0 0-68.189091 0v146.036364h-199.866182c-20.386909 0-39.726545 4.538182-56.832 12.8V188.043636c0-26.530909 25.483636-48.104727 56.832-48.104727h199.84291v244.875636a34.094545 34.094545 0 0 0 68.212363 0V116.363636a46.545455 46.545455 0 0 0-46.545454-46.545454h-221.509819c-35.84 0-68.119273 14.405818-90.926545 37.329454A128 128 0 0 0 421.073455 69.818182H199.563636a46.545455 46.545455 0 0 0-46.545454 46.545454v622.592h268.055273c25.553455 0 48.034909 14.894545 54.62109 36.212364z" p-id="4320"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

15
hx-ai-intelligent/src/router/dict.ts

@ -0,0 +1,15 @@
const dict = {
path: '/dict',
name: 'dict',
meta: { title: '字典', icon: 'zidian', index: 7, hideChildren: true },
redirect: { name: 'dictIndex' },
children: [
{
path: 'index',
name: 'dictIndex',
meta: { title: '字典', hideChildren: true, icon: 'zidian' },
component: () => import('/@/view/dict/index.vue'),
},
],
};
export default dict;

4
hx-ai-intelligent/src/view/alarmManagement/alarmOverview/index.vue

@ -48,7 +48,6 @@
name: 'alarmOverviewIndex', // name
});
const info = ref({});
let chartInstance: echarts.ECharts | null = null;
let chartInstanceOne: echarts.ECharts | null = null;
let chartInstanceTow: echarts.ECharts | null = null;
@ -57,8 +56,11 @@
const echartPieTow = ref(null);
const getGraphChart = () => {
let dayData = [];
//
let energyAlarm = [];
//
let wgAlarm = [];
//
let equipmentAlarm = [];
let total = [];

24
hx-ai-intelligent/src/view/alarmManagement/alarmSettings/energyAlarm/configureEnergyAlarms.vue

@ -26,7 +26,6 @@
import editConfigureEnergyAlarm from './editConfigureEnergyAlarm.vue';
import { energyAlarms } from '/@/api/alarmManagement/alarmSettings/energyAlarm';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { device } from '/@/api/deviceManage';
import { dict } from '/@/api';
export default {
@ -229,29 +228,6 @@
formConfig: {
title: value.errorCode,
schemas: [
// {
// field: 'deviceNode',
// label: '',
// component: 'nsSelectApi',
// componentProps: {
// api: device.queryDevicePage,
// allowClear: true,
// params: {
// orgId: orgId.value,
// pageNum: 1,
// pageSize: 99,
// },
// placeholder: '',
// resultField: 'data.records',
// labelField: 'deviceName',
// valueField: 'id',
// showSearch: true,
// filterOption: (input: string, option: any) => {
// return option.deviceName.toLowerCase().indexOf(input.toLowerCase()) >= 0;
// },
// // autoAddLink: true, //
// },
// },
{
field: 'deviceName',
label: '设备信息/节点信息',

1
hx-ai-intelligent/src/view/alarmManagement/alarmSettings/equipmentAlarm/configureDeviceAlarms.vue

@ -42,6 +42,7 @@
const orgId = ref('');
const result = JSON.parse(sessionStorage.getItem('ORGID')!);
orgId.value = result;
//
const clickSwitch = (data: any) => {
NsModal.confirm({
title: '启用状态',

9
hx-ai-intelligent/src/view/alarmManagement/alarmSettings/equipmentAlarm/editConfigureDeviceAlarm.vue

@ -213,6 +213,7 @@
http.post(device.queryDevicePoint, value).then((res) => {
if (res.msg === 'success') {
res.data.forEach((item: any) => {
//
devicePointData.value.push({
value: item.id,
label: item.code + ' ( ' + item.unit + ' ) ',
@ -336,10 +337,13 @@
item.logic = item.logic.value;
});
}
infoObject.value.valueType = infoObject.value.valueType.value;
infoObject.value.alarmList = infoObject.value.hxAlarmRuleLogicList || [];
delete infoObject.value.hxAlarmRuleLogicList;
//
infoObject.value.deviceType = selectDevice;
infoObject.value.valueType = infoObject.value.valueType.value;
//
infoObject.value.ruleType = infoObject.value.ruleType + '';
}
});
@ -450,6 +454,8 @@
abnormalDescription: null,
deviceType: [],
devicePoint: null,
valueType: null,
deviceId: null,
enableRules: 0,
alarmList: [{ logic: null, num: null, isDelete: 0 }],
};
@ -470,6 +476,7 @@
// index
if (index < infoObject.value.alarmList.length && index >= 0) {
const alarmItemToDelete = infoObject.value.alarmList[index];
//
if (alarmItemToDelete?.id) {
// delAlarmList
delAlarmList.value.push({ ...alarmItemToDelete, isDelete: 1 });

2
hx-ai-intelligent/src/view/alarmManagement/alarmSettings/index.vue

@ -274,10 +274,12 @@
//
const editObject = () => {
mainRefEquipmentAlarm.value?.nsTableRef.reload();
mainRef.value?.nsTableRef.reload();
};
//
const editeEnergyAlarmInfo = () => {
mainEnergyAlarmConfig.value?.nsTableRef.reload();
mainRef.value?.nsTableRef.reload();
};
return {
notificationConfig,

9
hx-ai-intelligent/src/view/alarmManagement/alarmSettings/notificationManagement/index.vue

@ -133,7 +133,7 @@
pageSize: 10,
showQuickJumper: true,
showLessItems: true,
// showSizeChanger: true,
// showSizeChanger: true, //
showTotal: (total: number, range: any) =>
total && range ? `显示第${range[0]}${range[1]}条记录,共 ${total} 条记录` : '',
onChange: handleChangePage,
@ -145,6 +145,7 @@
dataSource.value.forEach((item) => {
ids.push(item.userId);
});
//
linkPeoples.value.getData({ id: ids, data: dataSource.value });
};
//
@ -194,14 +195,17 @@
})
.then((res) => {
infoObject.value = res.data;
//
if (infoObject.value.notificationMethod) {
infoObject.value.notificationMethod = infoObject.value.notificationMethod.split(',');
} else {
infoObject.value.notificationMethod = [];
}
//
dataSource.value = res.data.hxAlarmNotifyUserList;
});
} else {
dataSource.value = [];
infoObject.value = {
enableNotifications: 0,
notificationMethod: [],
@ -236,6 +240,7 @@
obj.notificationMethod = infoObject.value.notificationMethod.toString();
obj.id = infoObject.value.id;
obj.enableNotifications = infoObject.value.enableNotifications;
//
dataSource.value.forEach((item) => {
obj.hxAlarmNotifyUserList.push({
userId: item.userId,
@ -247,6 +252,7 @@
if (res.msg === 'success') {
NsMessage.success('操作成功');
visible.value = false;
dataSource.value = [];
emit('updNotification', null);
}
});
@ -257,6 +263,7 @@
formRef.value.resetFields();
visible.value = false;
visibleModel.value = false;
dataSource.value = [];
};
defineExpose({
toggle,

63
hx-ai-intelligent/src/view/alarmManagement/alarmSettings/notificationManagement/linkPeople/index.vue

@ -69,15 +69,14 @@
</template>
<script lang="ts">
import { ref, watch, computed } from 'vue';
import { ref, watch } from 'vue';
import { defineComponent } from 'vue';
import type { TreeProps } from 'ant-design-vue';
import { origanizemanage } from '/@/api/origanizemanage';
import { department } from '/@/api/origanizemanage';
import { http } from '/nerv-lib/util';
// import { editTreeConfig } from './config';
//
//
const dataList: TreeProps['treeData'] = [];
const generateList = (data: TreeProps['treeData']) => {
for (let i = 0; i < data.length; i++) {
@ -126,16 +125,20 @@
const deptTreeData = ref([]);
//
const selectOrgId = ref('');
//
selectOrgId.value = result;
//
const selectDeptId = ref('');
const show = ref(false);
//
const onSearch = () => {
pagination.value.current = 1;
getList();
};
//
const onSelect = (selectedKeys: any, info: any) => {
selectedKeys.value = selectedKeys;
//
if (info.node.dataRef.deptInfo) {
selectDeptId.value = info.node.dataRef.deptInfo.deptId;
selectOrgId.value = info.node.dataRef.deptInfo.orgId;
@ -189,7 +192,7 @@
orgId: selectOrgId.value,
deptId: selectDeptId.value,
realName: realName.value,
userStatus: 0,
userStatus: 0, //
})
.then((res) => {
dataSource.value = res.data.records;
@ -197,12 +200,24 @@
loading.value = false;
});
};
//
const handleChangePage = (current: number, pageSize: number) => {
pagination.value.current = current;
pagination.value.pageSize = pageSize;
getList();
};
const pagination = ref({
total: 0,
size: 'small',
current: 1,
pageSize: 10,
showQuickJumper: true,
showLessItems: true,
// showSizeChanger: true,
showTotal: (total: number, range: any) =>
total && range ? `显示第${range[0]}${range[1]}条记录,共 ${total} 条记录` : '',
onChange: handleChangePage,
});
const onSelectChange = (selectedRowKeys: any, selectedRows: any) => {
selectedRowKey.value = selectedRowKeys;
// 使 forEach selectedRows
@ -225,18 +240,6 @@
selectedRowKeys.includes(existingRow.userId),
);
};
const pagination = ref({
total: 0,
size: 'small',
current: 1,
pageSize: 10,
showQuickJumper: true,
showLessItems: true,
// showSizeChanger: true,
showTotal: (total: number, range: any) =>
total && range ? `显示第${range[0]}${range[1]}条记录,共 ${total} 条记录` : '',
onChange: handleChangePage,
});
const columns = [
{
title: '序号',
@ -262,15 +265,21 @@
dataIndex: 'address',
},
];
const handleOk = () => {
//
emit('handleOk', { id: selectedRowKey.value, data: selectedRow.value });
const reback = () => {
show.value = false;
pagination.value.current = 1;
realName.value = null;
searchValue.value = '';
selectDeptId.value = '';
selectOrgId.value = orgId.value;
selectedRow.value = [];
selectedRowKey.value = [];
};
const handleOk = () => {
//
emit('handleOk', { id: selectedRowKey.value, data: selectedRow.value });
//
reback();
};
const getData = (data: any) => {
selectedRow.value = data.data;
@ -281,17 +290,12 @@
//
getTreeData();
};
const show = ref(false);
const handleCancel = () => {
//
emit('handleCancel', null);
show.value = false;
pagination.value.current = 1;
realName.value = null;
searchValue.value = '';
selectDeptId.value = '';
selectOrgId.value = orgId.value;
reback();
};
//
watch(searchValue, (value) => {
const expanded = dataList
.map((item: TreeProps['treeData'][number]) => {
@ -324,6 +328,7 @@
onSelectChange,
pagination,
handleOk,
reback,
show,
getData,
getTreeData,

4
hx-ai-intelligent/src/view/alarmManagement/alarmSettings/ts/energyAlarmConfig.ts

@ -117,9 +117,7 @@ export const energyAlarmConfigs = (
if (obj.monitorFrequency) {
obj.monitorFrequency = data.monitorFrequency.value;
}
if (obj.createWorkOrder) {
obj.createWorkOrder = data.createWorkOrder + '';
}
obj.createWorkOrder = obj.createWorkOrder + '';
if (obj.alarmFrequency !== 2) {
obj.repetitions = null;
obj.intervalDuration = null;

4
hx-ai-intelligent/src/view/alarmManagement/alarmSettings/ts/equipmentAlarmConfig.ts

@ -114,9 +114,7 @@ export const equipmentAlarmTableConfig = (
if (obj.intervalDurationUnit) {
obj.intervalDurationUnit = data.intervalDurationUnit.value;
}
if (obj.createWorkOrder) {
obj.createWorkOrder = data.createWorkOrder + '';
}
obj.createWorkOrder = obj.createWorkOrder + '';
if (obj.alarmFrequency !== 2) {
obj.repetitions = null;
obj.intervalDuration = null;

15
hx-ai-intelligent/src/view/alarmManagement/equipmentAlarm/index.vue

@ -1,5 +1,18 @@
<template>
<ns-view-list-table v-bind="config" ref="mainRef" />
<ns-view-list-table v-bind="config" ref="mainRef">
<template #bodyCell="{ record, column }">
<template v-if="column.dataIndex === 'alarmTitle'">
<div style="color: #2778ff">{{ record.alarmTitle }}</div>
{{ record.abnormalDescription }}
</template>
<template v-if="column.dataIndex === 'priority'">
{{ record.priority ? record.priority.label : '' }}
</template>
<template v-if="column.dataIndex === 'alarmLogState'">
{{ record.alarmLogState ? record.alarmLogState.label : '' }}
</template>
</template>
</ns-view-list-table>
<!-- 详情页面 -->
<Look ref="look" />
<!-- 状态页面 -->

50
hx-ai-intelligent/src/view/alarmManagement/equipmentAlarm/look.vue

@ -13,10 +13,10 @@
<div class="box">
<div class="card"></div>
<div style="left: 25px; position: absolute; height: 35px; line-height: 35px">
告警编号20230310001
告警编号{{ infoObject.alarmCode }}
</div>
<div style="right: 20px; position: absolute; height: 35px; line-height: 35px">
2024-03-10 15:08:10
{{ infoObject.updateTime }}
</div>
</div>
<!-- center -->
@ -26,14 +26,21 @@
<!-- bottom -->
<div style="width: 100%; margin-top: 10px">
<a-descriptions :column="1" bordered>
<a-descriptions-item label="优先级">紧急</a-descriptions-item>
<a-descriptions-item label="状态">新告警</a-descriptions-item>
<a-descriptions-item label="错误码">C003</a-descriptions-item>
<a-descriptions-item label="告警描述"
><div style="color: #2778ff">用电量超标</div> 当日用电量超出预设值</a-descriptions-item
<a-descriptions-item label="优先级">{{
infoObject.priority ? infoObject.priority.label : ''
}}</a-descriptions-item>
<a-descriptions-item label="状态">{{
infoObject.alarmLogState ? infoObject.alarmLogState.label : ''
}}</a-descriptions-item>
<a-descriptions-item label="错误码">{{ infoObject.errorCode }}</a-descriptions-item>
<a-descriptions-item label="告警描述">
<div style="color: #2778ff">{{ infoObject.alarmTitle }}</div>
{{ infoObject.abnormalDescription }}</a-descriptions-item
>
<a-descriptions-item label="设备信息"> 1栋10层低压柜 </a-descriptions-item>
<a-descriptions-item label="重复次数"> 0 </a-descriptions-item>
<a-descriptions-item label="设备信息"> {{ infoObject.deviceInfo }} </a-descriptions-item>
<a-descriptions-item label="重复次数">
{{ infoObject.alarmRepetitions }}
</a-descriptions-item>
</a-descriptions>
</div>
</div>
@ -51,16 +58,37 @@
let chartInstance: echarts.ECharts | null = null;
const graphChart = ref(null);
const infoObject = ref({
priority: null,
alarmCode: null,
alarmLogState: null,
errorCode: null,
alarmTitle: null,
abnormalDescription: null,
deviceInfo: null,
alarmRepetitions: null,
updateTime: null,
});
const visible = ref(false);
const handleClose = () => {
visible.value = false;
infoObject.value = {
priority: null,
alarmCode: null,
alarmLogState: null,
errorCode: null,
alarmTitle: null,
abnormalDescription: null,
deviceInfo: null,
alarmRepetitions: null,
updateTime: null,
};
};
const btnClick = () => {
console.log('btnClick');
handleClose();
};
const toggle = (data: any) => {
console.log(data, 'data');
infoObject.value = data;
visible.value = true;
setTimeout(() => {
getChatr();

99
hx-ai-intelligent/src/view/alarmManagement/equipmentAlarm/status.vue

@ -39,21 +39,22 @@
</div>
</a-tab-pane>
<a-tab-pane key="2" tab="状态流程">
<NsSteps v-bind="config" />
<!-- 自动生成工单 -->
<div v-if="infoObject.createWorkOrder === 1"> xxxx </div>
<!-- 没有自动生成工单 -->
<NsSteps v-else v-bind="config" />
</a-tab-pane>
</a-tabs>
<template #footer>
<!-- <a-button style="margin-right: 8px" type="primary" @click="createOrder">创建工单</a-button> -->
<a-button type="primary" @click="btnClick">确定</a-button>
</template>
</ns-drawer>
</template>
<script>
import { defineComponent } from 'vue';
import { ref, createVNode } from 'vue';
import { ref } from 'vue';
import NsSteps from '/@/components/ns-steps.vue';
import { NsMessage, NsModal } from '/nerv-lib/component';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { NsMessage } from '/nerv-lib/component';
export default defineComponent({
components: { NsSteps },
@ -62,19 +63,14 @@
const visible = ref(false);
const showEdit = ref(true);
const infoObject = ref({});
const statusOptions = ref([
{ value: '0', label: '待处理' },
{ value: '1', label: '处理中' },
{ value: '2', label: '已完成' },
{ value: '3', label: '超时' },
{ value: '4', label: '已关闭' },
]);
const equipmentAlarm = ref({});
const statusOptions = ref();
const logList = ref([
{ name: '李四', status: '2', time: '2024-03-10 10:00:00', desc: '完成' },
{ name: '王五', status: '4', time: '2024-03-10 10:00:00' },
{ name: '王五', status: '3', time: '2024-03-10 10:00:00' },
{ name: '王五', status: '1', time: '2024-03-10 10:00:00', desc: '创建工单' },
{ name: '赵六', status: '0', time: '2024-03-10 10:00:00' },
{ name: '李四', status: 3, time: '2024-03-10 10:00:00', desc: '完成' },
{ name: '王五', status: 5, time: '2024-03-10 10:00:00' },
{ name: '王五', status: 4, time: '2024-03-10 10:00:00' },
{ name: '王五', status: 2, time: '2024-03-10 10:00:00', desc: '创建工单' },
{ name: '赵六', status: 1, time: '2024-03-10 10:00:00' },
]);
const config = ref({
size: logList.value.length,
@ -84,23 +80,44 @@
visible.value = false;
};
const btnClick = () => {
NsMessage.success('操作成功');
delete infoObject.value.time;
console.log(infoObject.value, equipmentAlarm.value, '操作');
console.log('btnClick');
};
const toggle = (data) => {
console.log(data, '数据');
equipmentAlarm.value = data;
infoObject.value = { ...logList.value[0] };
if (equipmentAlarm.value.createWorkOrder === 1) {
statusOptions.value = [
{ value: 1, label: '待处理' },
{ value: 2, label: '处理中' },
{ value: 3, label: '已完成' },
{ value: 4, label: '超时' },
{ value: 5, label: '已关闭' },
];
} else {
statusOptions.value = [
{ value: 1, label: '待处理' },
{ value: 2, label: '处理中' },
{ value: 3, label: '已完成' },
{ value: 5, label: '已关闭' },
];
}
let statusMap = {
0: '待处理',
1: '处理中',
2: '已完成',
3: '超时',
4: '已关闭',
1: '待处理',
2: '处理中',
3: '已完成',
4: '超时',
5: '已关闭',
};
let colorMap = {
0: '#ff7602',
1: '#00a1e6',
2: '#04d919',
3: '#d9001b',
4: '#a6a6a6',
1: '#ff7602',
2: '#00a1e6',
3: '#04d919',
4: '#d9001b',
5: '#a6a6a6',
};
logList.value.forEach((item) => {
item.statusName = statusMap[item.status];
@ -109,38 +126,12 @@
});
visible.value = true;
};
const createOrder = () => {
NsModal.confirm({
title: '提示',
icon: createVNode(ExclamationCircleOutlined),
content: '是否创建工单',
okText: '确认',
okType: 'primary',
cancelText: '取消',
onOk() {
NsModal.confirm({
title: '提示',
icon: createVNode(ExclamationCircleOutlined),
content: '工单创建成功,工单号xxxxxxxxx',
okText: '确认',
okType: 'primary',
cancelButtonProps: { style: { display: 'none' } }, //
onOk() {
console.log('创建工单');
},
});
},
onCancel() {
console.log('Cancel');
},
});
};
return {
infoObject,
showEdit,
equipmentAlarm,
statusOptions,
btnClick,
createOrder,
visible,
logList,
config,

56
hx-ai-intelligent/src/view/alarmManagement/equipmentAlarm/ts/config.ts

@ -1,6 +1,8 @@
import { dateUtil } from '/nerv-lib/util/date-util';
import data from '../notificationManagementMock.json';
import { http } from '/nerv-lib/util';
import { equipmentAlarmApi } from '/@/api/alarmManagement/equipmentAlarm';
import { ref } from 'vue';
const tableKeyMap = [
{
@ -12,45 +14,45 @@ const tableKeyMap = [
},
{
title: '告警编号',
dataIndex: 'id',
dataIndex: 'alarmCode',
},
{
title: '告警描述',
dataIndex: 'deviceCode',
dataIndex: 'alarmTitle',
},
{
title: '优先级',
dataIndex: 'deviceName',
dataIndex: 'priority',
},
{
title: '状态',
dataIndex: 'position',
dataIndex: 'alarmLogState',
},
{
title: '错误码',
dataIndex: 'position',
textEllipsis: true,
dataIndex: 'errorCode',
},
{
title: '设备信息',
dataIndex: 'position',
dataIndex: 'deviceInfo',
},
{
title: '更新时间',
dataIndex: 'enableRules',
dataIndex: 'updateTime',
},
{
title: '重复次数',
dataIndex: 'enableRules',
dataIndex: 'alarmRepetitions',
},
];
const mockData = ref(data.listData);
export const notificationtableConfig = (look: any, status: any) => {
return {
title: '告警记录',
// api: '/carbon_emission/device/getDeviceList',
api: equipmentAlarmApi.getTableList,
value: mockData.value,
headerActions: [{}],
scroll: { x: 2000 },
columns: tableKeyMap,
// rowSelection: null, 选择按钮
columnActions: {
@ -61,7 +63,6 @@ export const notificationtableConfig = (look: any, status: any) => {
name: 'FeedBackDetail',
dynamicParams: ['uuid', 'appealType'],
handle: (data: any) => {
console.log(look.value);
look.value.toggle(data);
},
},
@ -79,29 +80,29 @@ export const notificationtableConfig = (look: any, status: any) => {
formConfig: {
schemas: [
{
field: 'name',
label: '告警类型',
field: 'priority',
label: '优先级',
component: 'NsSelect',
componentProps: {
placeholder: '请选择告警优先级',
options: [
{
label: '紧急',
value: '1',
value: 1,
},
{
label: '重要',
value: '2',
value: 2,
},
{
label: '一般',
value: '3',
value: 3,
},
],
},
},
{
field: 'provider',
field: 'alarmLogState',
label: '状态',
component: 'NsSelect',
componentProps: {
@ -109,33 +110,38 @@ export const notificationtableConfig = (look: any, status: any) => {
options: [
{
label: '待处理',
value: '1',
value: 1,
},
{
label: '处理中',
value: '2',
value: 2,
},
{
label: '已完成',
value: '3',
value: 3,
},
{
label: '超时',
value: '4',
value: 4,
},
{
label: '关闭',
value: '5',
value: 5,
},
],
},
},
{
field: 'provider',
field: 'errorCode',
label: '错误码',
component: 'NsInput',
component: 'NsSelectApi',
componentProps: {
placeholder: '请输入告警错误码',
placeholder: '请选择错误码',
autoSelectFirst: false,
api: equipmentAlarmApi.getCodeList,
resultField: 'data',
labelField: 'errorCode',
valueField: 'errorCode',
},
},
{

39
hx-ai-intelligent/src/view/alarmManagement/gatewayAlarm/status.vue

@ -34,6 +34,7 @@
</div>
</a-tab-pane>
<a-tab-pane key="2" tab="状态流程">
<!-- 只有创建工单流程 -->
<NsSteps v-bind="config" />
</a-tab-pane>
</a-tabs>
@ -56,18 +57,18 @@
const visible = ref(false);
const infoObject = ref({});
const statusOptions = ref([
{ value: '0', label: '待处理' },
{ value: '1', label: '处理中' },
{ value: '2', label: '已完成' },
{ value: '3', label: '超时' },
{ value: '4', label: '已关闭' },
{ value: '1', label: '待处理' },
{ value: '2', label: '处理中' },
{ value: '3', label: '已完成' },
{ value: '4', label: '超时' },
{ value: '5', label: '已关闭' },
]);
const logList = ref([
{ name: '李四', status: '2', time: '2024-03-10 10:00:00', desc: '完成' },
{ name: '李四', status: '3', time: '2024-03-10 10:00:00', desc: '完成' },
{ name: '王五', status: '5', time: '2024-03-10 10:00:00' },
{ name: '王五', status: '4', time: '2024-03-10 10:00:00' },
{ name: '王五', status: '3', time: '2024-03-10 10:00:00' },
{ name: '王五', status: '1', time: '2024-03-10 10:00:00', desc: '创建工单' },
{ name: '赵六', status: '0', time: '2024-03-10 10:00:00' },
{ name: '王五', status: '2', time: '2024-03-10 10:00:00', desc: '创建工单' },
{ name: '赵六', status: '1', time: '2024-03-10 10:00:00' },
]);
const config = ref({
size: logList.value.length,
@ -82,18 +83,18 @@
const toggle = (data) => {
infoObject.value = { ...logList.value[0] };
let statusMap = {
0: '待处理',
1: '处理中',
2: '已完成',
3: '超时',
4: '已关闭',
1: '待处理',
2: '处理中',
3: '已完成',
4: '超时',
5: '已关闭',
};
let colorMap = {
0: '#ff7602',
1: '#00a1e6',
2: '#04d919',
3: '#d9001b',
4: '#a6a6a6',
1: '#ff7602',
2: '#00a1e6',
3: '#04d919',
4: '#d9001b',
5: '#a6a6a6',
};
logList.value.forEach((item) => {
item.statusName = statusMap[item.status];

51
hx-ai-intelligent/src/view/dict/config.ts

@ -0,0 +1,51 @@
export const tableColumns = [
// {
// title: '序号',
// customRender: (text: any) => {
// return text.index + 1;
// },
// },
{
title: 'id',
dataIndex: 'id',
},
{
title: '字典组名',
dataIndex: 'grp',
},
{
title: '字典组名描述',
dataIndex: 'grpDesc',
},
{
title: '字典Key',
dataIndex: 'dicKey',
},
{
title: '字典中文Value',
dataIndex: 'cnValue',
},
{
title: '字典英文Value',
dataIndex: 'enValue',
},
{
title: '字典描述',
dataIndex: 'description',
},
{
title: '父级ID',
dataIndex: 'parentId',
},
{
title: '排序数字',
dataIndex: 'seq',
},
{
title: '是否展示',
dataIndex: 'showed',
},
{
title: '操作',
},
];

316
hx-ai-intelligent/src/view/dict/index.vue

@ -0,0 +1,316 @@
<!-- eslint-disable vue/multi-word-component-names -->
<template>
<div>
<a-table
:columns="tableColumns"
:data-source="data"
bordered
:pagination="false"
:scroll="{ y: 530 }">
<template #bodyCell="{ text, column, record }">
<template v-if="column.dataIndex === 'showed'">
<a-switch
:checked="text"
:checked-value="0"
:unCheckedValue="1"
@change="(checked) => updateShowed(record, true)" />
</template>
<template v-if="column.title === '操作'">
<a-button type="link" @click="updateDict(record)">编辑</a-button>
<a-button type="link" @click="deleteDict(record)">删除</a-button>
</template>
</template>
<template #title>
<div
style="display: flex; align-items: center; justify-content: space-between; width: 100%">
<div style="display: flex; align-items: center; width: 85%">
<div style="width: 10%">数据报表</div>
<a-input
v-model:value="queryParams.grp"
placeholder="请输入字典组名"
style="width: 15%" />
<a-input
v-model:value="queryParams.grpDesc"
placeholder="请输入字典组名描述"
style="width: 15%; margin-left: 10px" />
<a-input
v-model:value="queryParams.dicKey"
placeholder="请输入字典Key"
style="width: 15%; margin-left: 10px" />
<a-input
v-model:value="queryParams.cnValue"
placeholder="请输入字典中文Value"
style="width: 15%; margin-left: 10px" />
<a-button type="primary" style="margin-left: 10px" @click="getTableList">
查询
</a-button>
</div>
<a-button type="primary" style="margin-left: 10px" @click="addDict"> 新增 </a-button>
</div>
</template>
</a-table>
<a-drawer
:width="600"
:visible="visible"
:title="updateInfo && updateInfo.id ? '编辑' : '新增'"
:body-style="{ paddingBottom: '80px' }"
:footer-style="{ textAlign: 'right' }"
destroyOnClose
@close="onClose">
<a-form
ref="formRef"
:model="updateInfo"
:rules="rules"
:label-col="labelCol"
:wrapper-col="wrapperCol">
<a-form-item ref="grp" label="字典组名" name="grp">
<a-input v-model:value="updateInfo.grp" placeholder="请输入字典组名" />
</a-form-item>
<a-form-item ref="grpDesc" label="字典组名描述" name="grpDesc">
<a-input v-model:value="updateInfo.grpDesc" placeholder="请输入字典组名描述" />
</a-form-item>
<a-form-item ref="dicKey" label="字典Key" name="dicKey">
<a-input v-model:value="updateInfo.dicKey" placeholder="请输入字典Key" />
</a-form-item>
<a-form-item ref="cnValue" label="字典中文Value" name="cnValue">
<a-input v-model:value="updateInfo.cnValue" placeholder="请输入字典中文Value" />
</a-form-item>
<a-form-item ref="enValue" label="字典英文Value" name="enValue">
<a-input v-model:value="updateInfo.enValue" placeholder="请输入字典英文Value" />
</a-form-item>
<a-form-item ref="description" label="字典描述" name="description">
<a-input v-model:value="updateInfo.description" placeholder="请输入字典描述" />
</a-form-item>
<a-form-item ref="parentId" label="父级ID" name="parentId">
<a-input v-model:value="updateInfo.parentId" placeholder="请输入父级ID" />
</a-form-item>
<a-form-item ref="seq" label="排序数字" name="seq">
<a-input v-model:value="updateInfo.seq" placeholder="请输入排序数字" />
</a-form-item>
<a-form-item ref="showed" label="是否展示" name="showed">
<!-- <a-input v-model:value="updateInfo.showed" placeholder="请输入是否展示" /> -->
<a-switch
:checked="updateInfo.showed"
:checked-value="0"
:unCheckedValue="1"
@change="updateShowed(updateInfo, false)" />
</a-form-item>
<!-- <a-form-item label="计量单位" name="unit">
<a-cascader v-model:value="formState.unit" :options="measurementUnit" />
</a-form-item>
<a-form-item label="自动采集节点" name="collectionNode">
<a-tree-select
v-model:value="formState.collectionNode"
:tree-line="true"
:tree-data="treeData" />
</a-form-item>
<a-form-item label="计算碳排" name="isComputeCarbon">
<a-radio-group v-model:value="formState.isComputeCarbon" @change="changeRadio">
<a-radio :value="0"></a-radio>
<a-radio :value="1"></a-radio>
</a-radio-group>
</a-form-item>
<a-form-item label="排放类型" name="emissionType" :required="isRequired">
<a-select v-model:value="formState.emissionType" placeholder="请选择排放类型">
<a-select-option v-for="(item, index) in emissionTypeDic" :key="index" :value="item.id">
{{ item.cnValue }}
</a-select-option>
</a-select>
</a-form-item> -->
</a-form>
<template #footer>
<a-button style="margin-right: 8px" @click="onClose">取消</a-button>
<a-button type="primary" @click="onSubmit">确定</a-button>
</template>
</a-drawer>
</div>
</template>
<script lang="ts" setup>
import { ref, onMounted, defineOptions } from 'vue';
import { http } from '/nerv-lib/util/http';
import type { FormInstance, Rule } from 'ant-design-vue/es/form';
import { tableColumns } from './config';
import { dict } from '/@/api/dict';
import { NsMessage } from '/nerv-lib/component';
import { Modal } from 'ant-design-vue';
defineOptions({
energyType: 'dictIndex', // name
});
const data = ref([]);
const updateInfo = ref({});
const formRef = ref<FormInstance | null>(null);
const queryParams = ref({
grp: '',
grpDesc: '',
dicKey: '',
cnValue: '',
});
const orgId = ref('');
const result = JSON.parse(sessionStorage.getItem('ORGID')!);
orgId.value = result;
const fetch = (api, params = { orgId }) => {
return http.post(api, params);
};
//
const getTableList = () => {
fetch(dict.dictionaryUnitManagement, queryParams.value).then((res) => {
data.value = res.data;
});
};
//
const updateShowed = (record: any, falg: Boolean) => {
if (record.showed == 0) {
record.showed = 1;
} else {
record.showed = 0;
}
if (falg) {
fetch(dict.updateDictionary, record).then((res) => {
getTableList();
});
} else {
}
};
const visible = ref(false);
// const formState = ref({
// orgId: orgId.value,
// });
const labelCol = { span: 5 };
const wrapperCol = { span: 19 };
// form
const rules: Record<string, Rule[]> = {
grp: [{ required: true, message: '请输入字典组名', trigger: 'change' }],
grpDesc: [{ required: true, message: '请输入字典组名描述', trigger: 'change' }],
dicKey: [{ required: true, message: '请输入字典Key', trigger: 'change' }],
cnValue: [{ required: true, message: '请输入字典中文Value', trigger: 'change' }],
seq: [{ required: true, message: '请输入排序数字', trigger: 'change' }],
showed: [{ required: true, message: '请输入是否展示', trigger: 'change' }],
};
// interface FormState {
// energyType: string;
// unit: string;
// collectionNode: string;
// emissionType: string | undefined;
// isComputeCarbon: string;
// janFlag: string;
// febFlag: string;
// marFlag: string;
// aprFlag: string;
// mayFlag: string;
// junFlag: string;
// julFlag: string;
// augFlag: string;
// sepFlag: string;
// octFlag: string;
// novFlag: string;
// decFlag: string;
// }
//
const onClose = () => {
visible.value = false;
// formState.value = {
// orgId: orgId.value,
// };
// formRef.value.resetFields();
};
//
const updateDict = (record: any) => {
updateInfo.value = record;
visible.value = true;
// todo
};
//
const addDict = () => {
updateInfo.value = {};
updateInfo.value.showed = 1;
visible.value = true;
// todo
};
//
const onSubmit = () => {
debugger;
formRef.value
?.validate()
.then((valid) => {
if (valid) {
if (updateInfo.value.id) {
fetch(dict.updateDictionary, updateInfo.value).then((res) => {
if (res.retcode == 0) {
visible.value = false;
NsMessage.success('保存成功');
getTableList();
}
});
} else {
fetch(dict.createDictionary, updateInfo.value).then((res) => {
if (res.retcode == 0) {
visible.value = false;
NsMessage.success('保存成功');
getTableList();
}
});
}
} else {
console.log('表单验证失败');
}
})
.catch((error) => {
console.log('表单验证失败', error);
});
};
//
const deleteDict = (record: any) => {
Modal.confirm({
title: '警告',
// icon: createVNode(ExclamationCircleOutlined),
content: '确定要删除么?',
okText: '确认',
okType: 'primary',
cancelText: '取消',
onOk() {
// let params = ;
// // http.post(dict.delDictionary, params).then((res) => {
// // if (res.retcode == 0) {
// // visible.value = false;
// // NsMessage.success('');
// // getTableList();
// // }
// // });
fetch(dict.delDictionary, { id: record.id }).then((res) => {
if (res.retcode == 0) {
visible.value = false;
NsMessage.success('删除成功');
getTableList();
}
});
},
onCancel() {
console.log('Cancel');
},
});
};
onMounted(() => {
getTableList();
});
</script>
<style scoped lang="less">
::v-deep .ant-table-title {
display: flex;
}
::v-deep .ant-table-container {
padding: 0px 16px;
}
</style>
<style scoped>
th.column-money,
td.column-money {
text-align: right !important;
}
</style>
Loading…
Cancel
Save