ruoyi-plus-vben5/apps/web-antd/src/views/workflow/components/approval-timeline.vue

43 lines
1.2 KiB
Vue
Raw Normal View History

2024-11-25 15:02:01 +08:00
<script setup lang="ts">
2024-12-12 16:07:42 +08:00
import type { Flow } from '#/api/workflow/instance/model';
2024-11-25 15:02:01 +08:00
import { Timeline, TimelineItem } from 'ant-design-vue';
/**
* TODO: 仅为demo 后期会替换
*/
2024-12-12 16:07:42 +08:00
import { VbenAvatar } from '@vben/common-ui';
2024-12-16 09:45:00 +08:00
import { DictEnum } from '@vben/constants';
import { renderDict } from '#/utils/render';
2024-11-25 15:02:01 +08:00
const props = defineProps<{
2024-12-12 16:07:42 +08:00
list: Flow[];
2024-11-25 15:02:01 +08:00
}>();
</script>
<template>
<Timeline>
<TimelineItem v-for="item in props.list" :key="item.id">
<template #dot>
<div class="relative rounded-full border">
2024-12-12 16:07:42 +08:00
<VbenAvatar :alt="item.approveName" class="size-[36px]" src="" />
2024-11-25 15:02:01 +08:00
</div>
</template>
2024-12-12 16:07:42 +08:00
<div class="ml-2 flex flex-col gap-0.5">
2024-12-16 09:45:00 +08:00
<div class="flex items-center gap-1">
<div class="font-bold">{{ item.nodeName }}</div>
<component
:is="renderDict(item.flowStatus, DictEnum.WF_TASK_STATUS)"
/>
</div>
2024-12-12 16:07:42 +08:00
<div>{{ item.approveName }}</div>
<div>{{ item.updateTime }}</div>
<div v-if="item.message" class="rounded-lg border p-1">
<span class="opacity-70">{{ item.message }}</span>
2024-11-25 15:02:01 +08:00
</div>
</div>
</TimelineItem>
</Timeline>
</template>