yangyuxuan 1 місяць тому
батько
коміт
7973f776d6

+ 0 - 26
src/types/components.d.ts

@@ -24,24 +24,15 @@ declare module 'vue' {
     DistributionMap: typeof import('./../components/Map/YztMap/DistributionMap.vue')['default']
     DrawMap: typeof import('./../components/Map/YztMap/DrawMap.vue')['default']
     Editor: typeof import('./../components/Editor/index.vue')['default']
-    ElAnchor: typeof import('element-plus/es')['ElAnchor']
-    ElAnchorLink: typeof import('element-plus/es')['ElAnchorLink']
     ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete']
     ElBadge: typeof import('element-plus/es')['ElBadge']
     ElButton: typeof import('element-plus/es')['ElButton']
-    ElCard: typeof import('element-plus/es')['ElCard']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
-    ElCheckboxButton: typeof import('element-plus/es')['ElCheckboxButton']
     ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
     ElCol: typeof import('element-plus/es')['ElCol']
-    ElCollapse: typeof import('element-plus/es')['ElCollapse']
-    ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
     ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
-    ElContainer: typeof import('element-plus/es')['ElContainer']
     ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
-    ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
-    ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
     ElDialog: typeof import('element-plus/es')['ElDialog']
     ElDivider: typeof import('element-plus/es')['ElDivider']
     ElDrawer: typeof import('element-plus/es')['ElDrawer']
@@ -51,45 +42,31 @@ declare module 'vue' {
     ElEmpty: typeof import('element-plus/es')['ElEmpty']
     ElForm: typeof import('element-plus/es')['ElForm']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
-    ElHeader: typeof import('element-plus/es')['ElHeader']
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElImage: typeof import('element-plus/es')['ElImage']
     ElInput: typeof import('element-plus/es')['ElInput']
     ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
-    ElLink: typeof import('element-plus/es')['ElLink']
-    ElMain: typeof import('element-plus/es')['ElMain']
     ElMenu: typeof import('element-plus/es')['ElMenu']
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElOption: typeof import('element-plus/es')['ElOption']
     ElPagination: typeof import('element-plus/es')['ElPagination']
     ElPopover: typeof import('element-plus/es')['ElPopover']
-    ElRadio: typeof import('element-plus/es')['ElRadio']
-    ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
-    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
-    ElSegmented: typeof import('element-plus/es')['ElSegmented']
     ElSelect: typeof import('element-plus/es')['ElSelect']
     ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
     ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem']
     ElSlider: typeof import('element-plus/es')['ElSlider']
-    ElSpace: typeof import('element-plus/es')['ElSpace']
-    ElStep: typeof import('element-plus/es')['ElStep']
-    ElSteps: typeof import('element-plus/es')['ElSteps']
     ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
     ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
-    ElTabPane: typeof import('element-plus/es')['ElTabPane']
-    ElTabs: typeof import('element-plus/es')['ElTabs']
     ElTag: typeof import('element-plus/es')['ElTag']
     ElText: typeof import('element-plus/es')['ElText']
     ElTimeline: typeof import('element-plus/es')['ElTimeline']
     ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
-    ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTree: typeof import('element-plus/es')['ElTree']
-    ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
     ElUpload: typeof import('element-plus/es')['ElUpload']
     ExcelEditor: typeof import('./../components/ExcelEditor/index.vue')['default']
     FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
@@ -102,9 +79,6 @@ declare module 'vue' {
     HikvisionPlayer: typeof import('./../components/HKVideo/hikvision-player.vue')['default']
     HKVideo: typeof import('./../components/HKVideo/index.vue')['default']
     IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
-    IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
-    IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
-    IEpUploadFilled: typeof import('~icons/ep/upload-filled')['default']
     IFrame: typeof import('./../components/iFrame/index.vue')['default']
     ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
     ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']

+ 119 - 31
src/views/duty/eventing/CloseEventDialog.vue

@@ -3,37 +3,50 @@
     <el-form ref="formRef" :model="form" :rules="rules" label-width="80px">
       <el-row>
         <el-col :span="24">
-          <el-form-item label="伤亡情况:">
-            <el-row>
-              <el-col :span="8">
-                <div class="flex">
-                  <span>死亡:</span>
-                  <el-form-item prop="deaths">
-                    <el-input v-model="form.deaths" />
-                  </el-form-item>
-                  <span style="margin: 0 24px 0 8px">人</span>
-                </div>
-              </el-col>
-              <el-col :span="8">
-                <div class="flex">
-                  <span>受伤:</span>
-                  <el-form-item prop="injuries">
-                    <el-input v-model="form.injuries" />
-                  </el-form-item>
-                  <span style="margin: 0 24px 0 8px">人</span>
-                </div>
-              </el-col>
-              <el-col :span="8">
-                <div class="flex">
-                  <span>失联:</span>
-                  <el-form-item prop="missing">
-                    <el-input v-model="form.missing" />
-                  </el-form-item>
-                  <span style="margin: 0 24px 0 8px">人</span>
-                </div>
-              </el-col>
-            </el-row>
-          </el-form-item>
+          <el-table :data="eventList" style="margin-bottom: 10px">
+            <el-table-column label="行政区划" align="center" prop="data1" />
+
+            <el-table-column label="受灾人数(人)" align="center">
+              <template #default="{ row }">
+                <el-input v-model.number="row.data2" />
+              </template>
+            </el-table-column>
+
+            <el-table-column label="失踪人数(人)" align="center">
+              <template #default="{ row }">
+                <el-input v-model.number="row.data3" />
+              </template>
+            </el-table-column>
+
+            <el-table-column label="死亡人数(人)" align="center">
+              <template #default="{ row }">
+                <el-input v-model.number="row.data4" />
+              </template>
+            </el-table-column>
+
+            <el-table-column label="紧急转移(人)" align="center">
+              <template #default="{ row }">
+                <el-input v-model.number="row.data5" />
+              </template>
+            </el-table-column>
+
+            <el-table-column label="直接经济损失(万元)" align="center">
+              <template #default="{ row }">
+                <el-input v-model.number="row.data6" />
+              </template>
+            </el-table-column>
+
+            <template #append>
+              <tr class="summary-row">
+                <td>合计</td>
+                <td>{{ calculateTotal('data2') }}</td>
+                <td>{{ calculateTotal('data3') }}</td>
+                <td>{{ calculateTotal('data4') }}</td>
+                <td>{{ calculateTotal('data5') }}</td>
+                <td>{{ calculateTotal('data6') }}</td>
+              </tr>
+            </template>
+          </el-table>
         </el-col>
         <el-col :span="24">
           <el-form-item label="总结报告:" prop="fileNames">
@@ -53,6 +66,7 @@
 
 <script lang="ts" setup>
 import { closeEvent } from '@/api/duty/eventing';
+import { ref, computed } from 'vue';
 
 interface Form {
   eventId: string;
@@ -66,6 +80,62 @@ interface Props {
   eventId: string;
   data: Form;
 }
+const eventList = ref([
+  {
+    data1: "茂名市",
+    data2: 0,
+    data3: 0,
+    data4: 0,
+    data5: 0,
+    data6: 0
+  },
+  {
+    data1: "茂南区",
+    data2: 0,
+    data3: 0,
+    data4: 0,
+    data5: 0,
+    data6: 0
+  },
+  {
+    data1: "电白区",
+    data2: 0,
+    data3: 0,
+    data4: 0,
+    data5: 0,
+    data6: 0
+  },
+  {
+    data1: "化州市",
+    data2: 0,
+    data3: 0,
+    data4: 0,
+    data5: 0,
+    data6: 0
+  },
+  {
+    data1: "高州市",
+    data2: 0,
+    data3: 0,
+    data4: 0,
+    data5: 0,
+    data6: 0
+  },
+  {
+    data1: "信宜市",
+    data2: 0,
+    data3: 0,
+    data4: 0,
+    data5: 0,
+    data6: 0
+  },
+])
+
+// 计算合计的方法
+const calculateTotal = (prop: string) => {
+  return eventList.value.reduce((sum, item) => sum + (item[prop] || 0), 0);
+};
+
 const props = withDefaults(defineProps<Props>(), {
   modelValue: false
 });
@@ -120,6 +190,13 @@ const submitForm = () => {
 };
 
 const closeDialog = () => {
+  eventList.value.forEach(item => {
+    item.data2 = 0
+    item.data3 = 0
+    item.data4 = 0
+    item.data5 = 0
+    item.data6 = 0
+  })
   form.value.fileNames = [];
   emits('update:modelValue');
 };
@@ -132,4 +209,15 @@ const closeDialog = () => {
     white-space: nowrap;
   }
 }
+
+.summary-row {
+  font-weight: bold;
+
+  td {
+    text-align: center;
+    padding: 18px 10px;
+    width: 115px;
+    word-break: break-all;
+  }
+}
 </style>

+ 34 - 10
src/views/duty/eventing/eventDetails.vue

@@ -42,16 +42,16 @@
         <div class="common-info-item">事发地点:{{ detailData.address }}</div>
         <div class="common-info-item">事发时间:{{ detailData.event_time }}</div>
         <div class="common-info-item">上报时间:{{ detailData.report_time }}</div>
-        <div class="common-info-item">
-          伤亡情况:
-          <div v-if="detailData.casualties == '0'" class="flex">
-            <span>未上报</span>
-            <span class="link" style="margin-left: 20px" @click="uploadeCasualties">去上报</span>
-          </div>
-          <div v-if="detailData.casualties == '1'" class="flex">
-            <span>已上报</span>
-          </div>
-        </div>
+<!--        <div class="common-info-item">-->
+<!--          伤亡情况:-->
+<!--          <div v-if="detailData.casualties == '0'" class="flex">-->
+<!--            <span>未上报</span>-->
+<!--            <span class="link" style="margin-left: 20px" @click="uploadeCasualties">去上报</span>-->
+<!--          </div>-->
+<!--          <div v-if="detailData.casualties == '1'" class="flex">-->
+<!--            <span>已上报</span>-->
+<!--          </div>-->
+<!--        </div>-->
         <div class="common-info-item">登记人:{{ detailData.reported_by }}</div>
         <div class="common-info-item">登记时间:{{ detailData.report_time }}</div>
         <div class="common-info-item">联系方式:{{ detailData.contact }}</div>
@@ -74,6 +74,20 @@
         <Step :step-data="eventTrackState" />
       </div>
     </div>
+    <div class="common-info-box">
+      <div class="common-info-header">
+        <i class="line-icon" />
+        <div class="common-info-title">伤亡情况</div>
+      </div>
+      <el-table :data="eventList">
+        <el-table-column label="行政区划" align="center" prop="data1" />
+        <el-table-column label="受灾人数(人)" align="center" prop="data2" />
+        <el-table-column label="失踪人数(人)" align="center" prop="data3" />
+        <el-table-column label="死亡人数(人)" align="center" prop="data4" />
+        <el-table-column label="紧急转移(人)" align="center" prop="data5" />
+        <el-table-column label="直接经济损失(万元)" align="center" prop="data6" />
+      </el-table>
+    </div>
     <div class="common-info-box">
       <div class="common-info-header">
         <i class="line-icon" />
@@ -179,6 +193,16 @@ let eventLevelState = reactive({
   show: false,
   data: []
 });
+const eventList = ref([
+  {
+    data1: "茂名市",
+    data2: 0,
+    data3: 0,
+    data4: 0,
+    data5: 0,
+    data6: 0
+  }
+])
 
 const handleEventLevelOpen = () => {
   eventLevelState.show = true;