FlowTypeDot.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <div class="assignee-container">
  3. <!-- 类型 -->
  4. <template v-if="type === TaskTypeEnum.TRANSFER">
  5. <el-avatar :size="36" color="#FF9900" style="background-color: #ff9900">
  6. <svg-icon color="#FF9900" icon-class="transfer" class-name="svg-icon" />
  7. </el-avatar>
  8. </template>
  9. <template v-else>
  10. <flow-node-avatar :size="36" :show-name="false" />
  11. </template>
  12. <!-- 状态 -->
  13. <div class="badge">
  14. <template v-if="status === TaskStatusEnum.ACTIVE">
  15. <svg-icon color="#2A5EFF" icon-class="active" />
  16. </template>
  17. <template v-else-if="status === TaskStatusEnum.JUMP">
  18. <svg-icon color="#FF9900" icon-class="jump" />
  19. </template>
  20. <template v-else-if="status === TaskStatusEnum.COMPLETE">
  21. <svg-icon icon-class="approval" />
  22. </template>
  23. <template v-else-if="status === TaskStatusEnum.REJECT">
  24. <svg-icon icon-class="reject" />
  25. </template>
  26. </div>
  27. </div>
  28. </template>
  29. <script setup lang="ts">
  30. import SvgIcon from '../SvgIcon/index.vue'
  31. import FlowNodeAvatar from './FlowNodeAvatar.vue'
  32. import { TaskTypeEnum, TaskStatusEnum } from './enums'
  33. defineProps({
  34. status: { type: Number, default: 0 },
  35. type: { type: Number, default: 0 }
  36. })
  37. </script>
  38. <style lang="scss" scoped>
  39. .assignee-container {
  40. position: relative;
  41. top: -5px;
  42. left: -13px;
  43. .badge {
  44. $BadgeSize: 18px;
  45. $BadgeOffset: -4px;
  46. position: absolute;
  47. width: $BadgeSize;
  48. height: $BadgeSize;
  49. display: flex;
  50. align-items: center;
  51. justify-content: center;
  52. bottom: $BadgeOffset;
  53. right: $BadgeOffset;
  54. z-index: 999;
  55. border: 2px solid #fff;
  56. background-color: #fff;
  57. border-radius: 50%;
  58. overflow: hidden;
  59. }
  60. .svg-icon {
  61. font-size: 36px;
  62. }
  63. }
  64. </style>