DrillActivity.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <div class="drill-activity-container">
  3. <div class="drill-container__title">
  4. <div class="drill-container--line"></div>
  5. <span>演练活动</span>
  6. </div>
  7. <div class="drill-container__content">
  8. <el-row :gutter="20">
  9. <el-col :span="8">
  10. <div class="drill-container__content--item">
  11. <span class="label">演练规模:</span>
  12. <span class="value">{{ getDrillScope(drillPlanItemDetail.drillScope) }}</span>
  13. </div>
  14. </el-col>
  15. <el-col :span="8">
  16. <div class="drill-container__content--item">
  17. <span class="label">演练内容:</span>
  18. <span class="value">{{ drillPlanItemDetail.drillContent }}</span>
  19. </div>
  20. </el-col>
  21. <el-col :span="8">
  22. <div class="drill-container__content--item">
  23. <span class="label">计划完成时间:</span>
  24. <span class="value">{{ drillPlanItemDetail.dueCompleteTime }}</span>
  25. </div>
  26. </el-col>
  27. </el-row>
  28. <el-row :gutter="20">
  29. <el-col :span="8">
  30. <div class="drill-container__content--item">
  31. <span class="label">责任部门:</span>
  32. <span class="value">
  33. <template
  34. v-for="(dept, index) in safatyJsonParse(drillPlanItemDetail.responsibleDeptNameList)"
  35. :key="index"
  36. >
  37. {{ dept }}
  38. <span v-if="index !== safatyJsonParse(drillPlanItemDetail.responsibleDeptNameList).length - 1">、</span>
  39. </template>
  40. </span>
  41. </div>
  42. </el-col>
  43. <el-col :span="8">
  44. <div class="drill-container__content--item" v-if="drillPlanItemDetail.coordinateDeptNameList">
  45. <span class="label">配合部门:</span>
  46. <span class="value">
  47. <template
  48. v-for="(dept, index) in safatyJsonParse(drillPlanItemDetail.coordinateDeptNameList)"
  49. :key="index"
  50. >
  51. {{ dept }}
  52. <span v-if="index !== safatyJsonParse(drillPlanItemDetail.coordinateDeptNameList).length - 1">、</span>
  53. </template>
  54. </span>
  55. </div>
  56. </el-col>
  57. <el-col :span="8">
  58. <div class="drill-container__content--item">
  59. <span class="label">关联应急预案:</span>
  60. <span class="value font-primary">应急预案还没做</span>
  61. </div>
  62. </el-col>
  63. </el-row>
  64. <el-row :gutter="20">
  65. <el-col>
  66. <div class="drill-container__content--item">
  67. <span class="label">审批流程:</span>
  68. <span class="value">{{ getApprovalName(drillPlanItemDetail.approvalTemplateId) }}</span>
  69. </div>
  70. </el-col>
  71. </el-row>
  72. </div>
  73. </div>
  74. </template>
  75. <script setup lang="ts">
  76. import { ref, onMounted } from 'vue';
  77. import { useEmergencyDrillHook } from '../hook';
  78. import { DrillPlanItemDetail } from '../types';
  79. import { ApprovalInstanceType } from '@/views/system/approval/types';
  80. import { getAllApproval } from '@/api/approval/approval';
  81. const approvalList = ref<ApprovalInstanceType[]>([]);
  82. const { getDrillScopeDict, getDrillScope } = useEmergencyDrillHook();
  83. const safatyJsonParse = (str: string) => {
  84. return str.slice(1, -1).split(',');
  85. };
  86. const getApprovalList = async () => {
  87. approvalList.value = await getAllApproval();
  88. };
  89. const getApprovalName = (id: number) => {
  90. return approvalList.value.find((item) => item.id === id)?.templateName;
  91. };
  92. defineProps<{
  93. drillPlanItemDetail: DrillPlanItemDetail;
  94. }>();
  95. onMounted(() => {
  96. getDrillScopeDict();
  97. getApprovalList();
  98. });
  99. </script>
  100. <style lang="scss" scoped>
  101. @use '../style/common.scss' as *;
  102. </style>