Index.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <template>
  2. <div id="app-base-jobs">
  3. <div class="one-block-1">
  4. <span>
  5. 1. 任务 / 并发任务
  6. </span>
  7. </div>
  8. <div class="one-block-2">
  9. <a-space>
  10. <a-button @click="runJob(1, 'create')">执行任务1</a-button>
  11. 进度:{{ progress1 }} , 进程pid:{{ progress1_pid }}
  12. <a-button @click="runJob(1, 'close')">关闭</a-button>
  13. </a-space>
  14. <p></p>
  15. <a-space>
  16. <a-button @click="runJob(2, 'create')">执行任务2</a-button>
  17. 进度:{{ progress2 }} , 进程pid:{{ progress2_pid }}
  18. <a-button @click="runJob(2, 'close')">关闭</a-button>
  19. </a-space>
  20. </div>
  21. <div class="one-block-1">
  22. <span>
  23. 2. 任务池 / 并发任务
  24. </span>
  25. </div>
  26. <div class="one-block-2">
  27. <a-space>
  28. <a-button @click="createPool()">创建进程池</a-button>
  29. 进程pids:{{ processPids }}
  30. </a-space>
  31. <p></p>
  32. <a-space>
  33. <a-button @click="runJobByPool(3, 'run')">执行任务3</a-button>
  34. 进度:{{ progress3 }} , 进程pid:{{ progress3_pid }}
  35. <a-button @click="runJob(3, 'close')">关闭</a-button>
  36. </a-space>
  37. <p></p>
  38. <a-space>
  39. <a-button @click="runJobByPool(4, 'run')">执行任务4</a-button>
  40. 进度:{{ progress4 }} , 进程pid:{{ progress4_pid }}
  41. <a-button @click="runJob(4, 'close')">关闭</a-button>
  42. </a-space>
  43. </div>
  44. </div>
  45. </template>
  46. <script>
  47. import { ipcApiRoute } from '@/api/main'
  48. export default {
  49. data() {
  50. return {
  51. progress1: 0,
  52. progress1_pid: 0,
  53. progress2: 0,
  54. progress2_pid: 0,
  55. progress3: 0,
  56. progress3_pid: 0,
  57. progress4: 0,
  58. progress4_pid: 0,
  59. processPids: '',
  60. }
  61. },
  62. mounted () {
  63. this.init();
  64. },
  65. methods: {
  66. init () {
  67. // 避免重复监听,或者将 on 功能写到一个统一的地方,只加载一次
  68. this.$ipc.removeAllListeners(ipcApiRoute.timerJobProgress);
  69. this.$ipc.removeAllListeners(ipcApiRoute.createPoolNotice);
  70. // 监听任务进度
  71. this.$ipc.on(ipcApiRoute.timerJobProgress, (event, result) => {
  72. switch (result.jobId) {
  73. case 1:
  74. this.progress1 = result.number;
  75. this.progress1_pid = result.pid == 0 ? result.pid : this.progress1_pid;
  76. break;
  77. case 2:
  78. this.progress2 = result.number;
  79. this.progress2_pid = result.pid == 0 ? result.pid : this.progress2_pid;
  80. break;
  81. case 3:
  82. this.progress3 = result.number;
  83. this.progress3_pid = result.pid == 0 ? result.pid : this.progress3_pid;
  84. break;
  85. case 4:
  86. this.progress4 = result.number;
  87. this.progress4_pid = result.pid == 0 ? result.pid : this.progress4_pid;
  88. break;
  89. }
  90. })
  91. // 监听pool
  92. this.$ipc.on(ipcApiRoute.createPoolNotice, (event, result) => {
  93. let pidsStr = JSON.stringify(result);
  94. this.processPids = pidsStr;
  95. })
  96. },
  97. runJob(jobId, operation) {
  98. let params = {
  99. id: jobId,
  100. type: 'timer',
  101. action: operation
  102. }
  103. this.$ipc.invoke(ipcApiRoute.someJob, params).then(data => {
  104. switch (data.jobId) {
  105. case 1:
  106. if (data.action == 'create') {
  107. this.progress1_pid = data.result.pid;
  108. }
  109. break;
  110. case 2:
  111. if (data.action == 'create') {
  112. this.progress2_pid = data.result.pid;
  113. }
  114. break;
  115. }
  116. })
  117. },
  118. createPool() {
  119. let params = {
  120. number: 3,
  121. }
  122. this.$ipc.send(ipcApiRoute.createPool, params);
  123. },
  124. runJobByPool(jobId, operation) {
  125. let params = {
  126. id: jobId,
  127. type: 'timer',
  128. action: operation
  129. }
  130. this.$ipc.invoke(ipcApiRoute.someJobByPool, params).then(data => {
  131. switch (data.jobId) {
  132. case 3:
  133. if (data.action == 'run') {
  134. this.progress3_pid = data.result.pid;
  135. }
  136. break;
  137. case 4:
  138. if (data.action == 'run') {
  139. this.progress4_pid = data.result.pid;
  140. }
  141. break;
  142. }
  143. })
  144. },
  145. }
  146. }
  147. </script>
  148. <style lang="less" scoped>
  149. #app-base-jobs {
  150. padding: 0px 10px;
  151. text-align: left;
  152. width: 100%;
  153. .one-block-1 {
  154. font-size: 16px;
  155. padding-top: 10px;
  156. }
  157. .one-block-2 {
  158. padding-top: 10px;
  159. }
  160. }
  161. </style>