aiTask.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <a-card title="任务管理" >
  3. <table-pro
  4. :service='AiboxCloudController.task'
  5. :columns="columns"
  6. ref="tableProDom"
  7. @add="openModal('add')"
  8. >
  9. <template #render="{ column, record }">
  10. <template v-if="column.key === 'taskAbility'">
  11. <a-tag :key="item.value" v-for="item in abilityList.filter( able => record.taskAbility.includes(able.value))" >
  12. {{item.label}}
  13. </a-tag>
  14. </template>
  15. <template v-if="column.key === 'taskState'">
  16. <a-tag :color="taskStateMap.get(record.taskState)?.color" >
  17. {{taskStateMap.get(record.taskState)?.label}}
  18. </a-tag>
  19. </template>
  20. <template v-if="column.key === 'action'">
  21. <a-space>
  22. <a @click="updateTaskStatus('start', record.taskNum)" >启动任务</a>
  23. <a @click="updateTaskStatus('stop', record.taskNum)" >停止任务</a>
  24. <a @click="openModal('update', record)" >编辑</a>
  25. <!-- <a @click="openDisposeModal(record)" >配置区域</a> -->
  26. <a-popconfirm
  27. title="确定要删除这个任务吗"
  28. ok-text="Yes"
  29. cancel-text="No"
  30. @confirm="delTask(record.taskNum)"
  31. >
  32. <a >删除</a>
  33. </a-popconfirm>
  34. </a-space>
  35. </template>
  36. </template>
  37. </table-pro>
  38. </a-card>
  39. <RealView
  40. :title="state.opraState === 'add' ? '新增任务' : '编辑任务'"
  41. :open="state.visible"
  42. @cancel='state.visible = false'
  43. @ok='submit'
  44. footer
  45. >
  46. <add-form ref="addFormRef" :opra-state="state.opraState" :item-data="state.taskState" />
  47. </RealView>
  48. </template>
  49. <script lang='ts' setup >
  50. import { AiboxCloudController } from '@/controller'
  51. import { computed, onMounted, reactive, ref } from 'vue'
  52. import { RealView } from '@/components/RealView/index'
  53. import AddForm from './components/add.vue'
  54. const columns = [
  55. {
  56. title: '任务编号',
  57. dataIndex: 'taskNum',
  58. key: 'taskNum'
  59. },
  60. {
  61. title: '任务名称',
  62. dataIndex: 'taskID',
  63. key: 'taskID'
  64. },
  65. {
  66. title: '任务流',
  67. dataIndex: 'taskStream',
  68. key: 'taskStream'
  69. },
  70. {
  71. title: '算法配置',
  72. dataIndex: 'taskAbility',
  73. key: 'taskAbility'
  74. },
  75. {
  76. title: '任务描述',
  77. dataIndex: 'taskDescribe',
  78. key: 'taskDescribe'
  79. },
  80. {
  81. title: '任务状态',
  82. dataIndex: 'taskState',
  83. key: 'taskState'
  84. },
  85. {
  86. title: '操作',
  87. dataIndex: 'action',
  88. key: 'action'
  89. }
  90. ]
  91. const tableProDom = ref()
  92. const addFormRef = ref()
  93. const state = reactive<{
  94. loading: boolean,
  95. visible: boolean,
  96. dataSource: any,
  97. opraState: 'add' | 'update',
  98. taskState: any
  99. }>({
  100. loading: false,
  101. visible: false,
  102. dataSource: [],
  103. opraState: 'add',
  104. taskState: {}
  105. })
  106. const openModal = (type: 'add' | 'update', record = {}) => {
  107. state.opraState = type
  108. state.visible = true
  109. state.taskState = record
  110. }
  111. const submit = () => {
  112. addFormRef.value.submit()
  113. }
  114. const updateTaskStatus = async (status: 'start' | 'stop', taskNum: number) => {
  115. await AiboxCloudController.updateTaskStatus(status, taskNum)
  116. tableProDom.value.reload()
  117. }
  118. const delTask = async (taskNum: number) => {
  119. await AiboxCloudController.delTask(taskNum)
  120. tableProDom.value.reload()
  121. }
  122. </script>
  123. <style lang='less' scoped >
  124. </style>