index.tsx 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import { ref, defineComponent, onMounted, computed, onUnmounted } from 'vue';
  2. import { useRouter, useRoute } from 'vue-router';
  3. import './index.scss';
  4. import { useCommonStore, useIncidentStore } from '@/store';
  5. import {
  6. DropdownItemOption,
  7. NavBar,
  8. DropdownMenu,
  9. DropdownItem,
  10. Icon,
  11. PullRefresh,
  12. Sticky,
  13. Collapse,
  14. CollapseItem,
  15. Loading,
  16. } from 'vant';
  17. /** @ts-ignore */
  18. import icon_communication from '@/assets/icons/incident/communication@2x.png';
  19. /** @ts-ignore */
  20. import icon_detail from '@/assets/icons/incident/detail@2x.png';
  21. /** @ts-ignore */
  22. import icon_information from '@/assets/icons/incident/information@2x.png';
  23. /** @ts-ignore */
  24. import icon_plan from '@/assets/icons/incident/plan@2x.png';
  25. /** @ts-ignore */
  26. import icon_yjck from '@/assets/icons/incident/yjck@2x.png';
  27. /** @ts-ignore */
  28. import icon_yjya from '@/assets/icons/incident/yjya@2x.png';
  29. export default defineComponent({
  30. name: 'IncidentManagementDetail',
  31. setup() {
  32. const router = useRouter();
  33. const route = useRoute();
  34. const store = useIncidentStore();
  35. const commonStore = useCommonStore();
  36. const activeNames = ref([]);
  37. const planOptions = computed(
  38. () =>
  39. Object.keys(store.incidentDetail?.baseTask ?? {})
  40. .map((idx) => {
  41. const item = commonStore.globalDict['zhdd_incident_level']?.find(
  42. (i) =>
  43. i.dictValue ===
  44. store.incidentDetail?.baseTask?.[idx]?.[0].level?.toString(),
  45. );
  46. const desc = store.incidentDetail?.baseTask?.[idx]?.map(
  47. (i) => i.taskDes,
  48. );
  49. return {
  50. ...item,
  51. desc,
  52. };
  53. })
  54. ?.find(
  55. (item) =>
  56. item.dictValue?.toString() ===
  57. store.incidentDetail?.baseInfo?.level?.toString(),
  58. )?.desc,
  59. );
  60. onMounted(() => {
  61. commonStore.getGlobalDict('zhdd_incident_level');
  62. commonStore.getGlobalDict('zhdd_incident_type');
  63. commonStore.getGlobalDict('zhdd_incident_source');
  64. route.query.id && store.getIncidentItem(route.query.id as string);
  65. });
  66. onUnmounted(() => {
  67. store.incidentDetail = {};
  68. });
  69. return () => (
  70. <div class="incident-detail-container">
  71. <NavBar
  72. title="应急处置"
  73. left-arrow
  74. fixed
  75. onClick-left={() => router.push('/home')}
  76. />
  77. <Sticky>
  78. <div class="title">{store.incidentDetail?.baseInfo?.name}</div>
  79. </Sticky>
  80. <Collapse v-model={activeNames.value}>
  81. <CollapseItem
  82. title="事件信息"
  83. name="事件信息"
  84. v-slots={{ icon: <img class="icon-i" src={icon_information} /> }}>
  85. <p>
  86. 事件类型:
  87. {
  88. commonStore.globalDict['zhdd_incident_type']?.find(
  89. (o) =>
  90. o.dictValue.toString() ===
  91. store.incidentDetail?.baseInfo?.type?.toString(),
  92. )?.dictLabel
  93. }
  94. </p>
  95. <p>
  96. 事件等级:
  97. {
  98. commonStore.globalDict['zhdd_incident_level']?.find(
  99. (o) =>
  100. o.dictValue.toString() ===
  101. store.incidentDetail?.baseInfo?.level?.toString(),
  102. )?.dictLabel
  103. }
  104. </p>
  105. <p>事件时间:{store.incidentDetail?.baseInfo?.createTime}</p>
  106. <p>地点:{store.incidentDetail?.baseInfo?.addr}</p>
  107. <p>事件来源:{ commonStore.globalDict["zhdd_incident_source"]?.find(
  108. (i) =>
  109. i.dictValue?.toString() ===
  110. (
  111. store.incidentDetail?.baseInfo["source"]
  112. )?.toString()
  113. )?.dictLabel ?? "-" }</p>
  114. </CollapseItem>
  115. <CollapseItem
  116. title="应急预案"
  117. name="应急预案"
  118. v-slots={{ icon: <img class="icon-i" src={icon_yjya} /> }}>
  119. {planOptions.value?.map((d,index) => (
  120. <p>{ index+1 }、{d}</p>
  121. ))}
  122. </CollapseItem>
  123. <CollapseItem
  124. title="处置方案"
  125. name="处置方案"
  126. v-slots={{ icon: <img class="icon-i" src={icon_plan} /> }}>
  127. 123
  128. </CollapseItem>
  129. <CollapseItem
  130. title="处置详情"
  131. name="处置详情"
  132. v-slots={{ icon: <img class="icon-i" src={icon_detail} /> }}>
  133. 123
  134. </CollapseItem>
  135. <CollapseItem
  136. title="融合通信"
  137. name="融合通信"
  138. v-slots={{ icon: <img class="icon-i" src={icon_communication} /> }}>
  139. 123
  140. </CollapseItem>
  141. </Collapse>
  142. </div>
  143. );
  144. },
  145. });