|
|
@@ -0,0 +1,140 @@
|
|
|
+<template>
|
|
|
+ <div class="disaster-precaution-container">
|
|
|
+ <header class="disaster-precaution-container__header">
|
|
|
+ <img :src="BackIcon" alt="back" class="back-icon" @click="router.back()" />
|
|
|
+ <span class="disaster-precaution-container__title">灾害损失记录明细</span>
|
|
|
+ </header>
|
|
|
+ <TaskInfoSection :task-name="taskName" @export-loss-detail="exportLossDetail" />
|
|
|
+ <main class="disaster-precaution-container__main">
|
|
|
+ <section class="info-container">
|
|
|
+ <CollapseItem
|
|
|
+ v-for="item in [1, 2, 3]"
|
|
|
+ :key="item"
|
|
|
+ :name="`上报单位:${item}`"
|
|
|
+ :isActive="activeId === item"
|
|
|
+ @toggle="handleCollapseToggle(item)"
|
|
|
+ >
|
|
|
+ <template #view-operation>
|
|
|
+ <div class="rectification-info">
|
|
|
+ <span class="num">26</span>
|
|
|
+ <span>条,整改完成16条</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template #right-header>
|
|
|
+ <span class="collapse-item__header--right">{{ activeId === item ? '收起' : '立即查看' }}</span>
|
|
|
+ </template>
|
|
|
+ <template #main-table>
|
|
|
+ <div class="rectification-table">
|
|
|
+ <section class="damaged-list-container">
|
|
|
+ <DamagedList :damagedList="damagedList" :activeId="0" />
|
|
|
+ </section>
|
|
|
+ <section class="disaster-info-container">
|
|
|
+ <DisasterInfo :LossReportItemFormData="LossReportItemFormData" v-if="LossReportItemFormData?.isLoss" />
|
|
|
+ <Rectification :rectificationList="rectificationList" />
|
|
|
+ </section>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </CollapseItem>
|
|
|
+ </section>
|
|
|
+ </main>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+ import BackIcon from 'assets/svg/back.svg';
|
|
|
+ import { useRoute, useRouter } from 'vue-router';
|
|
|
+ import { onMounted, ref } from 'vue';
|
|
|
+ import { ElMessage } from 'element-plus';
|
|
|
+ import TaskInfoSection from './src/components/TaskInfoSection.vue';
|
|
|
+ import CollapseItem from './src/components/CollapseItem.vue';
|
|
|
+ import DamagedList from './src/components/DamagedList.vue';
|
|
|
+ import DisasterInfo from './src/components/DisasterInfo.vue';
|
|
|
+ import Rectification from './src/components/Rectification.vue';
|
|
|
+ import type { disasterReportRecordDetailListResponse, DisposalRectificationFormData } from '@/types/disaster-control';
|
|
|
+ import { getRectificationList } from '@/api/disaster-control';
|
|
|
+
|
|
|
+ const router = useRouter();
|
|
|
+ const route = useRoute();
|
|
|
+ const handleTaskId = Number(route.params.id);
|
|
|
+ const { taskName, lossTaskId, fixTaskId } = route.query as unknown as {
|
|
|
+ taskName: string;
|
|
|
+ lossTaskId: number;
|
|
|
+ fixTaskId: number;
|
|
|
+ };
|
|
|
+ const exportLossDetail = () => {
|
|
|
+ ElMessage.warning('暂未开放');
|
|
|
+ };
|
|
|
+ const activeId = ref<number | null>(1);
|
|
|
+ const handleCollapseToggle = (itemId: number) => {
|
|
|
+ if (activeId.value === itemId) {
|
|
|
+ activeId.value = null;
|
|
|
+ } else {
|
|
|
+ activeId.value = itemId;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ const LossReportItemFormData: disasterReportRecordDetailListResponse = {
|
|
|
+ affectedItems: 'hahah',
|
|
|
+ buildingNo: '16',
|
|
|
+ description: '测试',
|
|
|
+ estimatedLoss: null,
|
|
|
+ fixStatus: 1,
|
|
|
+ fixTaskId: 98,
|
|
|
+ fixerList: '[70]',
|
|
|
+ floorNo: '17',
|
|
|
+ id: 162,
|
|
|
+ images:
|
|
|
+ '["./skyeye-file-upload/sfysecurity/ATTACHMENT/attachment_avatar.jpg","./skyeye-file-upload/sfysecurity/ATTACHMENT/attachment_pig.jpg","./skyeye-file-upload/sfysecurity/ATTACHMENT/attachment_R-C.jpg"]',
|
|
|
+ isAffectWork: 0,
|
|
|
+ isFixPrincipal: true,
|
|
|
+ isLoss: 1,
|
|
|
+ priority: 'urgent',
|
|
|
+ remark: '',
|
|
|
+ responsibleDeptName: '综合计划部',
|
|
|
+ roomNo: '18',
|
|
|
+ safetyLevel: 'mild',
|
|
|
+ updatedAt: '2025-06-13 10:29:06',
|
|
|
+ userGroupList: '[13]',
|
|
|
+ createdBy: '70',
|
|
|
+ };
|
|
|
+ const damagedList: string[] = [
|
|
|
+ '玻璃破损6处',
|
|
|
+ '树木倒伏',
|
|
|
+ '道闸杆',
|
|
|
+ '摄像机支架',
|
|
|
+ '支架鸭嘴(不锈钢)',
|
|
|
+ '遥控器',
|
|
|
+ '室外防水设备箱',
|
|
|
+ ];
|
|
|
+ const rectificationList = ref<DisposalRectificationFormData[]>([]);
|
|
|
+ onMounted(async () => {
|
|
|
+ const res = await getRectificationList([lossTaskId]);
|
|
|
+ rectificationList.value = res[0].disasterLossFixRecordList;
|
|
|
+ });
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+ @use '../style/disaster.scss' as *;
|
|
|
+ @use './src/style/common.scss' as *;
|
|
|
+ @use '@/views/disaster/style/info-container.scss' as *;
|
|
|
+ .rectification-info {
|
|
|
+ font-size: 16px;
|
|
|
+ font-family: 0;
|
|
|
+ .num {
|
|
|
+ color: $primary-color;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .collapse-item__header--right {
|
|
|
+ font-size: 16px;
|
|
|
+ color: $primary-color;
|
|
|
+ }
|
|
|
+ .rectification-table {
|
|
|
+ display: flex;
|
|
|
+ gap: 10px;
|
|
|
+ }
|
|
|
+ .disaster-info-container {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 10px;
|
|
|
+ flex: 1;
|
|
|
+ }
|
|
|
+</style>
|