warningCard.vue 5.0 KB

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