index1.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <template>
  2. <div class="device-manager-box">
  3. <BasicTable @register="registerTable" :rowSelection="rowSelection">
  4. <template #tableTitle>
  5. <a-button preIcon="ant-design:plus-outlined" type="primary" @click="handleAdd" style="margin-right: 5px">新增</a-button>
  6. <a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
  7. <j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
  8. <a-dropdown v-if="selectedRowKeys.length > 0">
  9. <template #overlay>
  10. <a-menu>
  11. <a-menu-item key="1" @click="batchHandleDelete">
  12. <Icon icon="ant-design:delete-outlined" />
  13. 删除
  14. </a-menu-item>
  15. </a-menu>
  16. </template>
  17. <a-button
  18. >批量操作
  19. <Icon icon="mdi:chevron-down" />
  20. </a-button>
  21. </a-dropdown>
  22. </template>
  23. <template #action="{ record }">
  24. <div class="vent-row-center">
  25. <a-popconfirm v-if="record.status == -1" title="是否启动选中任务?" @confirm="handlerResume(record)" style="display: inline-block">
  26. <a class="table-action-link">启动</a>
  27. </a-popconfirm>
  28. <a-popconfirm v-if="record.status == 0" title="是否暂停选中任务?" @confirm="handlerPause(record)" style="display: inline-block">
  29. <a class="table-action-link">停止</a>
  30. </a-popconfirm>
  31. <TableAction :dropDownActions="getDropDownAction(record)" />
  32. </div>
  33. </template>
  34. </BasicTable>
  35. <QuartzModal @register="registerModal" @success="reload" />
  36. </div>
  37. </template>
  38. <script lang="ts" name="monitor-quartz" setup>
  39. import { ref } from 'vue';
  40. import { BasicTable, TableAction } from '/@/components/Table';
  41. import { useModal } from '/@/components/Modal';
  42. import { useListPage } from '/@/hooks/system/useListPage';
  43. import {
  44. getDataCenterList,
  45. deleteDataCenterQuartz,
  46. batchDataCenterDeleteQuartz,
  47. resumeDataCenterJob,
  48. pauseDataCenterJob,
  49. excuteDataCenterJob,
  50. } from './quartz.api';
  51. import { dataCenterColumns, searchFormSchema } from './quartz.data';
  52. import QuartzModal from './QuartzModal1.vue';
  53. import { useMessage } from '/@/hooks/web/useMessage';
  54. const { createMessage } = useMessage();
  55. const [registerModal, { openModal }] = useModal();
  56. // 列表页面公共参数、方法
  57. const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
  58. designScope: 'quartz-template',
  59. tableProps: {
  60. title: '任务列表',
  61. api: getDataCenterList,
  62. columns: dataCenterColumns,
  63. actionColumn: {
  64. width: 180,
  65. },
  66. formConfig: {
  67. labelWidth: 120,
  68. schemas: searchFormSchema,
  69. fieldMapToTime: [['fieldTime', ['beginDate', 'endDate'], 'YYYY-MM-DD HH:mm:ss']],
  70. },
  71. },
  72. });
  73. const [registerTable, { reload }, { rowSelection, selectedRowKeys }] = tableContext;
  74. /**
  75. * 操作列定义
  76. * @param record
  77. */
  78. function getActions(record) {
  79. return [
  80. {
  81. label: '启动',
  82. popConfirm: {
  83. title: '是否启动选中任务?',
  84. confirm: handlerResume.bind(null, record),
  85. },
  86. ifShow: (_action) => {
  87. return record.status == -1;
  88. },
  89. },
  90. {
  91. label: '停止',
  92. popConfirm: {
  93. title: '是否暂停选中任务?',
  94. confirm: handlerPause.bind(null, record),
  95. },
  96. ifShow: (_action) => {
  97. return record.status == 0;
  98. },
  99. },
  100. ];
  101. }
  102. /**
  103. * 下拉操作栏
  104. */
  105. function getDropDownAction(record) {
  106. return [
  107. {
  108. label: '立即执行',
  109. popConfirm: {
  110. title: '是否立即执行任务?',
  111. confirm: handlerExecute.bind(null, record),
  112. },
  113. },
  114. {
  115. label: '编辑',
  116. onClick: handleEdit.bind(null, record),
  117. },
  118. {
  119. label: '删除',
  120. popConfirm: {
  121. title: '是否确认删除',
  122. confirm: handleDelete.bind(null, record),
  123. },
  124. },
  125. ];
  126. }
  127. /**
  128. * 新增事件
  129. */
  130. function handleAdd() {
  131. openModal(true, {
  132. isUpdate: false,
  133. });
  134. }
  135. /**
  136. * 编辑事件
  137. */
  138. function handleEdit(record) {
  139. openModal(true, {
  140. record,
  141. isUpdate: true,
  142. });
  143. }
  144. /**
  145. * 删除事件
  146. */
  147. async function handleDelete(record) {
  148. await deleteDataCenterQuartz({ id: record.id }, reload);
  149. }
  150. /**
  151. * 立即执行
  152. */
  153. async function handlerExecute(record) {
  154. if (record.sysType == 'collect') {
  155. await excuteDataCenterJob({ id: record.id }, record.sysType, 'execute', reload);
  156. } else if (record.sysType == 'compute') {
  157. await excuteDataCenterJob({ id: record.id }, record.sysType, 'execute', reload);
  158. } else if (record.sysType == 'monitor') {
  159. await excuteDataCenterJob({ id: record.id }, record.sysType, 'execute', reload);
  160. } else {
  161. // await collectJob({ id: record.id }, reload);
  162. }
  163. }
  164. /**
  165. * 暂停
  166. */
  167. async function handlerPause(record) {
  168. if (record.sysType == 'collect') {
  169. await pauseDataCenterJob({ id: record.id }, record.sysType, 'pause', reload);
  170. } else if (record.sysType == 'compute') {
  171. await pauseDataCenterJob({ id: record.id }, record.sysType, 'pause', reload);
  172. } else if (record.sysType == 'monitor') {
  173. await pauseDataCenterJob({ id: record.id }, record.sysType, 'pause', reload);
  174. } else {
  175. // await collectJob({ id: record.id }, reload);
  176. }
  177. }
  178. /**
  179. * 启动
  180. */
  181. async function handlerResume(record) {
  182. if (record.sysType == 'collect') {
  183. await resumeDataCenterJob({ id: record.id }, record.sysType, 'resume', reload);
  184. } else if (record.sysType == 'compute') {
  185. await resumeDataCenterJob({ id: record.id }, record.sysType, 'resume', reload);
  186. } else if (record.sysType == 'monitor') {
  187. await resumeDataCenterJob({ id: record.id }, record.sysType, 'resume', reload);
  188. } else {
  189. // await collectJob({ id: record.id }, reload);
  190. }
  191. }
  192. /**
  193. * 批量删除事件
  194. */
  195. async function batchHandleDelete() {
  196. await batchDataCenterDeleteQuartz({ ids: selectedRowKeys.value }, reload);
  197. }
  198. </script>