ProcessInstanceChildrenTaskList.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <el-drawer v-model="drawerVisible" title="子任务" size="70%">
  3. <template #header>
  4. <h4>【{{ baseTask.name }} 】审批人:{{ baseTask.assigneeUser?.nickname }}</h4>
  5. <el-button style="margin-left: 5px" v-if="showSubSignButton(baseTask)" type="danger" plain @click="handleSubSign(baseTask)">
  6. <Icon icon="ep:remove" />
  7. 减签
  8. </el-button>
  9. </template>
  10. <el-table :data="tableData" style="width: 100%" row-key="id" border>
  11. <el-table-column prop="assigneeUser.nickname" label="审批人" />
  12. <el-table-column prop="assigneeUser.deptName" label="所在部门" />
  13. <el-table-column label="审批状态" prop="result">
  14. <template #default="scope">
  15. <dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result" />
  16. </template>
  17. </el-table-column>
  18. <el-table-column
  19. label="提交时间"
  20. align="center"
  21. prop="createTime"
  22. width="180"
  23. :formatter="dateFormatter"
  24. />
  25. <el-table-column
  26. label="结束时间"
  27. align="center"
  28. prop="endTime"
  29. width="180"
  30. :formatter="dateFormatter"
  31. />
  32. <el-table-column label="操作" prop="operation">
  33. <template #default="scope">
  34. <el-button
  35. v-if="showSubSignButton(scope.row)"
  36. type="danger"
  37. plain
  38. @click="handleSubSign(scope.row)"
  39. >
  40. <Icon icon="ep:remove" />
  41. 减签
  42. </el-button>
  43. </template>
  44. </el-table-column>
  45. </el-table>
  46. <!-- 减签 -->
  47. <TaskSubSignDialogForm ref="taskSubSignDialogForm" />
  48. </el-drawer>
  49. </template>
  50. <script lang="ts" setup>
  51. import { isEmpty } from '@/utils/is'
  52. import { DICT_TYPE } from '@/utils/dict'
  53. import { dateFormatter } from '@/utils/formatTime'
  54. import TaskSubSignDialogForm from './TaskSubSignDialogForm.vue'
  55. const message = useMessage() // 消息弹窗
  56. defineOptions({ name: 'ProcessInstancechildrenList' })
  57. const drawerVisible = ref(false) // 抽屉的是否展示
  58. const tableData = ref<any[]>([]) //表格数据
  59. const baseTask = ref<object>({})
  60. /** 打开弹窗 */
  61. const open = async (task: any) => {
  62. if (isEmpty(task.children)) {
  63. message.warning('该任务没有子任务')
  64. return
  65. }
  66. baseTask.value = task
  67. //设置表格数据
  68. tableData.value = task.children
  69. //展开抽屉
  70. drawerVisible.value = true
  71. }
  72. defineExpose({ open }) // 提供 openModal 方法,用于打开弹窗
  73. const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
  74. /**
  75. * 减签
  76. */
  77. const taskSubSignDialogForm = ref()
  78. const handleSubSign = (item) => {
  79. taskSubSignDialogForm.value.open(item.id)
  80. }
  81. /**
  82. * 显示减签按钮
  83. * @param task
  84. */
  85. const showSubSignButton = (task:any) => {
  86. if(!isEmpty(task.children)){
  87. //有子任务,且子任务有任意一个是 待处理 和 待前置任务完成 则显示减签按钮
  88. const subTask = task.children.find((item) => item.result === 1 || item.result === 9)
  89. return !isEmpty(subTask)
  90. }
  91. return false
  92. }
  93. </script>