ProblemArea.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /* 问题区 */
  2. <template>
  3. <gy-card
  4. title="问题区"
  5. area-style="problem"
  6. circle-style="green"
  7. content-style="89"
  8. @parentRun="run"
  9. @contextmenu="contextmenu"
  10. >
  11. <MatrixCard title="故障" :datas="ls.malfunction"></MatrixCard>
  12. <MatrixCard title="维护" :datas="ls.maintain"></MatrixCard>
  13. <MatrixCard title="离线" :datas="ls.offline"></MatrixCard>
  14. <MatrixCard title="挂牌" :datas="ls.lockd"></MatrixCard>
  15. </gy-card>
  16. </template>
  17. <script>
  18. import MatrixCard from "./windturbine/MatrixCard.vue";
  19. import MessageBridge from "../../assets/script/MessageBridge";
  20. import BackgroundData from "../../assets/script/BackgroundData";
  21. export default {
  22. name: "ProblemArea",
  23. components: {
  24. MatrixCard,
  25. },
  26. props: {},
  27. data() {
  28. return {
  29. ls: {
  30. maintain: { key: "维护", value: [] },
  31. malfunction: { key: "故障", value: [] },
  32. offline: { key: "离线", value: [] },
  33. lockd: { key: "挂牌", value: [] },
  34. },
  35. datas: new Array(),
  36. };
  37. },
  38. computed: {},
  39. created: function () {
  40. this.initData();
  41. },
  42. methods: {
  43. initData: function () {
  44. var mb = MessageBridge.getInstance();
  45. var vs = [{ key: "/topic/windturbine", action: this.windturbineMessage }];
  46. mb.register(vs);
  47. },
  48. windturbineMessage(msg) {
  49. var ll = {
  50. maintain: { key: "维护", value: [] },
  51. malfunction: { key: "故障", value: [] },
  52. offline: { key: "离线", value: [] },
  53. lockd: { key: "挂牌", value: [] },
  54. };
  55. var mmsg = JSON.parse(msg);
  56. for (var id in mmsg) {
  57. var val = mmsg[id];
  58. if (val.status == 6) {
  59. // 维护
  60. ll.maintain.value.push(val);
  61. } else if (val.status == 7) {
  62. // 离线
  63. ll.offline.value.push(val);
  64. } else if (val.status == 5) {
  65. // 故障
  66. ll.malfunction.value.push(val);
  67. }
  68. if (val.lockValue > 0) {
  69. // 挂牌
  70. ll.lockd.value.push(val);
  71. }
  72. }
  73. this.ls = ll;
  74. },
  75. /* 右键菜单 */
  76. contextmenu() {
  77. const { remote } = require("electron");
  78. var that = this;
  79. const menuTemplate = [
  80. {
  81. label: "标注",
  82. click() {
  83. that.menuClicked({ type: "marking" });
  84. },
  85. },
  86. {
  87. label: "挂牌",
  88. submenu: [
  89. {
  90. label: "检修",
  91. click() {
  92. that.menuClicked({ type: "lock", value: 8 });
  93. },
  94. },
  95. {
  96. label: "故障维修",
  97. click() {
  98. that.menuClicked({ type: "lock", value: 7 });
  99. },
  100. },
  101. {
  102. label: "场内受累检修",
  103. click() {
  104. that.menuClicked({ type: "lock", value: 2 });
  105. },
  106. },
  107. {
  108. label: "场内受累故障",
  109. click() {
  110. that.menuClicked({ type: "lock", value: 3 });
  111. },
  112. },
  113. {
  114. label: "场外受累电网",
  115. click() {
  116. that.menuClicked({ type: "lock", value: 4 });
  117. },
  118. },
  119. {
  120. label: "场外受累天气",
  121. click() {
  122. that.menuClicked({ type: "lock", value: 5 });
  123. },
  124. },
  125. ],
  126. },
  127. {
  128. label: "取消挂牌",
  129. click() {
  130. that.menuClicked({ type: "unlock" });
  131. },
  132. },
  133. ];
  134. const menu = remote.Menu.buildFromTemplate(menuTemplate);
  135. menu.popup(remote.getCurrentWindow());
  136. },
  137. menuClicked(msg) {
  138. var bd = BackgroundData.getInstance();
  139. if (!bd.LoginUser) {
  140. bd.showdialog("提示", "控制出现错误:", "未登录");
  141. return;
  142. }
  143. if (msg.type == "lock") {
  144. // 挂牌
  145. } else if (msg.type == "unlock") {
  146. // 取消挂牌
  147. } else if (msg.type == "marking") {
  148. // 标注
  149. }
  150. },
  151. },
  152. };
  153. </script>