warningCard.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. /* 告警区 */
  2. <template>
  3. <div style="padding-left: 5px; padding-right: 5px">
  4. <el-table :data="values" class="table" height="20vh" :header-cell-style="{
  5. background: '#000000',
  6. color: 'rgb(220,220,220)',
  7. padding: '4px',
  8. fontSize: '14px',
  9. 'border-bottom': 'solid 1px black',
  10. }" :cell-style="{
  11. background: 'rgb(30,30,30)',
  12. color: 'rgb(220,220,220)',
  13. padding: '3px',
  14. fontSize: '12px',
  15. }" @row-dblclick="itemDblclick">
  16. <el-table-column prop="lastUpdateTime" align="center" label="时间" width="150">
  17. </el-table-column>
  18. <el-table-column prop="alertText" align="center" label="描述" width="280">
  19. </el-table-column>
  20. <el-table-column prop="isSelected" align="center" label="确认">
  21. <template v-slot="scope">
  22. <input type="checkbox" v-model="scope.row.isSelected" @click="itemChecked(scope.row)" />
  23. </template>
  24. </el-table-column>
  25. </el-table>
  26. </div>
  27. <WindturbineDetailPages v-model="dialogVisible" :windturbine="currentWindturbine" :showSvg="showSvg"
  28. :stationName="stationName" :svgWeb="svgWeb" @close="close"></WindturbineDetailPages>
  29. </template>
  30. <script>
  31. import MessageBridge from "utils/MessageBridge";
  32. import WindturbineDetailPages from "../WindturbineDetailPages.vue";
  33. import BackgroundData from "utils/BackgroundData";
  34. import api from "api/index";
  35. // import Sbdl from "../BoosterStation/sbdl.vue";
  36. export default {
  37. name: "AlarmArea",
  38. components: {
  39. WindturbineDetailPages,
  40. // Sbdl,
  41. },
  42. created: function () {
  43. this.initData()
  44. this.faultMessage()
  45. },
  46. props: {},
  47. data() {
  48. return {
  49. values: ["-"],
  50. dialogVisible: false,
  51. showSvg: false,
  52. svgWeb: '',
  53. stationName: '',
  54. currentWindturbine: {},
  55. };
  56. },
  57. methods: {
  58. initData() {
  59. var mb = MessageBridge.getInstance();
  60. var vs = [{
  61. key: "/topic/fault-popup",
  62. action: this.faultMessage
  63. }];
  64. mb.register(vs);
  65. },
  66. faultMessage(json) {
  67. let val = json?JSON.parse(json):this.$store.state.warning
  68. if (Object.keys(val).length>0) {
  69. var sleected = {};
  70. this.values.forEach((it) => {
  71. if (it.isSelected) {
  72. sleected[it.id] = 0;
  73. }
  74. });
  75. this.values = new Array();
  76. for (var v in val) {
  77. var vl = val[v];
  78. if (vl.stationId != "QS_FDC" && vl.category1 == "FJ") {
  79. vl.alertText = vl.windturbineName + "-" + vl.alertText;
  80. }
  81. if (sleected[vl.id] == 0 && BackgroundData.getInstance().LoginUser) {
  82. vl.isSelected = true;
  83. }
  84. this.values.push(vl);
  85. }
  86. }
  87. },
  88. /* 行双击 */
  89. itemDblclick(row) {
  90. this.dialogVisible = true;
  91. if (row.category1 === "FJ") {
  92. this.showSvg = false;
  93. this.currentWindturbine = row;
  94. } else {
  95. this.svgWeb = row.stationId;
  96. this.showSvg = true;
  97. this.stationName = row.stationName
  98. }
  99. },
  100. close() {
  101. this.dialogVisible = false;
  102. },
  103. /* 报警确认 */
  104. itemChecked(row) {
  105. if (row.isSelected == true) {
  106. row.isSelected = false;
  107. return;
  108. }
  109. var bd = BackgroundData.getInstance();
  110. if (!bd.LoginUser) {
  111. this.$notify({
  112. title: "请登录",
  113. message: "确认报警需要先登录!",
  114. type: "warning",
  115. position: "bottom-right",
  116. offset: 60,
  117. duration: 3000,
  118. });
  119. row.isSelected = false;
  120. return;
  121. }
  122. row.isSelected = true;
  123. this.confirm(row);
  124. },
  125. confirm(item) {
  126. api.sendWarning({
  127. snapID: item.snapIDString,
  128. faultID: item.idString,
  129. userName: BackgroundData.getInstance().LoginUser.name,
  130. }).then(msg => {
  131. var mms = msg.data > 0 ? "报警确认成功!" : "报警确认出现错误!";
  132. var tp = msg.data > 0 ? "success" : "error";
  133. msg.data === 0 ? (item.isSelected = false) : '';
  134. this.$notify({
  135. title: "报警",
  136. message: mms,
  137. type: tp,
  138. position: "bottom-right",
  139. offset: 60,
  140. duration: 3000,
  141. });
  142. })
  143. },
  144. },
  145. };
  146. </script>
  147. <style scoped>
  148. .el-table::before {
  149. width: 0;
  150. }
  151. .table {
  152. background-color: #000000;
  153. }
  154. :deep(.el-table__body-wrapper::-webkit-scrollbar) {
  155. width: 8px;
  156. height: 0px;
  157. background-color: black;
  158. }
  159. :deep(.el-table__body-wrapper::-webkit-scrollbar-thumb) {
  160. background-color: #292929;
  161. border-radius: 6px;
  162. }
  163. :deep(.el-table td, .el-table th) {
  164. border-bottom: 2px solid black;
  165. }
  166. tr {
  167. line-height: 1.5;
  168. background: #1e1e1e;
  169. margin-bottom: 2px;
  170. border-radius: 5px;
  171. }
  172. /* .ToolBar {
  173. position: absolute;
  174. right: 12px;
  175. width: 586px;
  176. text-align: center;
  177. z-index: 2;
  178. font-size: 14px;
  179. height: 28px;
  180. margin: 5px;
  181. background: #1e1e1e;
  182. } */
  183. .table-main {
  184. font-size: 14px;
  185. width: 600px;
  186. text-align: center;
  187. background: #000000;
  188. margin: 5px;
  189. border-collapse: separate;
  190. border-spacing: 0px 5px;
  191. }
  192. </style>