libushang hace 13 horas
padre
commit
c009f3c51e

+ 18 - 0
src/api/duty/eventing.ts

@@ -207,3 +207,21 @@ export function getEventTypeCount(data) {
     data: data
     data: data
   });
   });
 }
 }
+
+// 事件伤亡情况
+export function getEventCasualties(data) {
+  return request({
+    url: '/api/event_management/event/get_casualties',
+    method: 'post',
+    data: data
+  });
+}
+
+// 上报伤亡情况
+export function uploadCasualties(data) {
+  return request({
+    url: "/api/event_management/event/upload_casualties",
+    method: "post",
+    data: data
+  });
+}

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

@@ -23,15 +23,24 @@ declare module 'vue' {
     DistributionMap: typeof import('./../components/Map/YztMap/DistributionMap.vue')['default']
     DistributionMap: typeof import('./../components/Map/YztMap/DistributionMap.vue')['default']
     DrawMap: typeof import('./../components/Map/YztMap/DrawMap.vue')['default']
     DrawMap: typeof import('./../components/Map/YztMap/DrawMap.vue')['default']
     Editor: typeof import('./../components/Editor/index.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']
     ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete']
     ElBadge: typeof import('element-plus/es')['ElBadge']
     ElBadge: typeof import('element-plus/es')['ElBadge']
     ElButton: typeof import('element-plus/es')['ElButton']
     ElButton: typeof import('element-plus/es')['ElButton']
+    ElCard: typeof import('element-plus/es')['ElCard']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
+    ElCheckboxButton: typeof import('element-plus/es')['ElCheckboxButton']
     ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
     ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
     ElCol: typeof import('element-plus/es')['ElCol']
     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']
     ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
+    ElContainer: typeof import('element-plus/es')['ElContainer']
     ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
     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']
     ElDialog: typeof import('element-plus/es')['ElDialog']
     ElDivider: typeof import('element-plus/es')['ElDivider']
     ElDivider: typeof import('element-plus/es')['ElDivider']
     ElDrawer: typeof import('element-plus/es')['ElDrawer']
     ElDrawer: typeof import('element-plus/es')['ElDrawer']
@@ -41,31 +50,42 @@ declare module 'vue' {
     ElEmpty: typeof import('element-plus/es')['ElEmpty']
     ElEmpty: typeof import('element-plus/es')['ElEmpty']
     ElForm: typeof import('element-plus/es')['ElForm']
     ElForm: typeof import('element-plus/es')['ElForm']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
+    ElHeader: typeof import('element-plus/es')['ElHeader']
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElImage: typeof import('element-plus/es')['ElImage']
     ElImage: typeof import('element-plus/es')['ElImage']
     ElInput: typeof import('element-plus/es')['ElInput']
     ElInput: typeof import('element-plus/es')['ElInput']
     ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
     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']
     ElMenu: typeof import('element-plus/es')['ElMenu']
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElOption: typeof import('element-plus/es')['ElOption']
     ElOption: typeof import('element-plus/es')['ElOption']
     ElPagination: typeof import('element-plus/es')['ElPagination']
     ElPagination: typeof import('element-plus/es')['ElPagination']
     ElPopover: typeof import('element-plus/es')['ElPopover']
     ElPopover: typeof import('element-plus/es')['ElPopover']
     ElRadio: typeof import('element-plus/es')['ElRadio']
     ElRadio: typeof import('element-plus/es')['ElRadio']
+    ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
     ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
+    ElSegmented: typeof import('element-plus/es')['ElSegmented']
     ElSelect: typeof import('element-plus/es')['ElSelect']
     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']
     ElSlider: typeof import('element-plus/es')['ElSlider']
+    ElSpace: typeof import('element-plus/es')['ElSpace']
     ElStep: typeof import('element-plus/es')['ElStep']
     ElStep: typeof import('element-plus/es')['ElStep']
     ElSteps: typeof import('element-plus/es')['ElSteps']
     ElSteps: typeof import('element-plus/es')['ElSteps']
     ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
     ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
     ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
     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']
     ElTag: typeof import('element-plus/es')['ElTag']
     ElText: typeof import('element-plus/es')['ElText']
     ElText: typeof import('element-plus/es')['ElText']
     ElTimeline: typeof import('element-plus/es')['ElTimeline']
     ElTimeline: typeof import('element-plus/es')['ElTimeline']
     ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
     ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
+    ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTree: typeof import('element-plus/es')['ElTree']
     ElTree: typeof import('element-plus/es')['ElTree']
     ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
     ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
@@ -81,6 +101,9 @@ declare module 'vue' {
     HikvisionPlayer: typeof import('./../components/HKVideo/hikvision-player.vue')['default']
     HikvisionPlayer: typeof import('./../components/HKVideo/hikvision-player.vue')['default']
     HKVideo: typeof import('./../components/HKVideo/index.vue')['default']
     HKVideo: typeof import('./../components/HKVideo/index.vue')['default']
     IconSelect: typeof import('./../components/IconSelect/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']
     IFrame: typeof import('./../components/iFrame/index.vue')['default']
     ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
     ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
     ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']
     ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']

+ 63 - 57
src/views/duty/eventing/CloseEventDialog.vue

@@ -3,47 +3,47 @@
     <el-form ref="formRef" :model="form" :rules="rules" label-width="80px">
     <el-form ref="formRef" :model="form" :rules="rules" label-width="80px">
       <el-row>
       <el-row>
         <el-col :span="24">
         <el-col :span="24">
-          <el-table :data="eventList" style="margin-bottom: 10px">
-            <el-table-column label="行政区划" align="center" prop="data1" />
+          <el-table :data="eventCasualties" style="margin-bottom: 10px">
+            <el-table-column label="行政区划" align="center" prop="area_name" />
 
 
             <el-table-column label="受灾人数(人)" align="center">
             <el-table-column label="受灾人数(人)" align="center">
               <template #default="{ row }">
               <template #default="{ row }">
-                <el-input type="number" :min="0" v-model="row.data2" />
+                <el-input type="number" :min="0" v-model="row.injuries" />
               </template>
               </template>
             </el-table-column>
             </el-table-column>
 
 
             <el-table-column label="失踪人数(人)" align="center">
             <el-table-column label="失踪人数(人)" align="center">
               <template #default="{ row }">
               <template #default="{ row }">
-                <el-input type="number" :min="0" v-model="row.data3" />
+                <el-input type="number" :min="0" v-model="row.missing" />
               </template>
               </template>
             </el-table-column>
             </el-table-column>
 
 
             <el-table-column label="死亡人数(人)" align="center">
             <el-table-column label="死亡人数(人)" align="center">
               <template #default="{ row }">
               <template #default="{ row }">
-                <el-input type="number" :min="0" v-model="row.data4" />
+                <el-input type="number" :min="0" v-model="row.deaths" />
               </template>
               </template>
             </el-table-column>
             </el-table-column>
 
 
             <el-table-column label="紧急转移(人)" align="center">
             <el-table-column label="紧急转移(人)" align="center">
               <template #default="{ row }">
               <template #default="{ row }">
-                <el-input type="number" :min="0" v-model="row.data5" />
+                <el-input type="number" :min="0" v-model="row.transfer" />
               </template>
               </template>
             </el-table-column>
             </el-table-column>
 
 
             <el-table-column label="直接经济损失(万元)" align="center">
             <el-table-column label="直接经济损失(万元)" align="center">
               <template #default="{ row }">
               <template #default="{ row }">
-                <el-input type="number" :min="0" v-model="row.data6" />
+                <el-input type="number" :min="0" v-model="row.economic_loss" />
               </template>
               </template>
             </el-table-column>
             </el-table-column>
 
 
             <template #append>
             <template #append>
               <tr class="summary-row">
               <tr class="summary-row">
                 <td>合计</td>
                 <td>合计</td>
-                <td>{{ calculateTotal('data2') }}</td>
-                <td>{{ calculateTotal('data3') }}</td>
-                <td>{{ calculateTotal('data4') }}</td>
-                <td>{{ calculateTotal('data5') }}</td>
-                <td>{{ calculateTotal('data6') }}</td>
+                <td>{{ calculateTotal('injuries') }}</td>
+                <td>{{ calculateTotal('missing') }}</td>
+                <td>{{ calculateTotal('deaths') }}</td>
+                <td>{{ calculateTotal('transfer') }}</td>
+                <td>{{ calculateTotal('economic_loss') }}</td>
               </tr>
               </tr>
             </template>
             </template>
           </el-table>
           </el-table>
@@ -81,60 +81,66 @@ interface Props {
   eventId: string;
   eventId: string;
   data: Form;
   data: Form;
 }
 }
-const eventList = ref([
+const eventCasualties = ref([
   {
   {
-    data1: "茂名市",
-    data2: 0,
-    data3: 0,
-    data4: 0,
-    data5: 0,
-    data6: 0
+    area_code: '440900000000',
+    area_name: "茂名市",
+    injuries: 0,
+    missing: 0,
+    deaths: 0,
+    transfer: 0,
+    economic_loss: 0
   },
   },
   {
   {
-    data1: "茂南区",
-    data2: 0,
-    data3: 0,
-    data4: 0,
-    data5: 0,
-    data6: 0
+    area_code: '440902000000',
+    area_name: "茂南区",
+    injuries: 0,
+    missing: 0,
+    deaths: 0,
+    transfer: 0,
+    economic_loss: 0
   },
   },
   {
   {
-    data1: "电白区",
-    data2: 0,
-    data3: 0,
-    data4: 0,
-    data5: 0,
-    data6: 0
+    area_code: '440904000000',
+    area_name: "电白区",
+    injuries: 0,
+    missing: 0,
+    deaths: 0,
+    transfer: 0,
+    economic_loss: 0
   },
   },
   {
   {
-    data1: "化州市",
-    data2: 0,
-    data3: 0,
-    data4: 0,
-    data5: 0,
-    data6: 0
+    area_code: '440982000000',
+    area_name: "化州市",
+    injuries: 0,
+    missing: 0,
+    deaths: 0,
+    transfer: 0,
+    economic_loss: 0
   },
   },
   {
   {
-    data1: "高州市",
-    data2: 0,
-    data3: 0,
-    data4: 0,
-    data5: 0,
-    data6: 0
+    area_code: '440981000000',
+    area_name: "高州市",
+    injuries: 0,
+    missing: 0,
+    deaths: 0,
+    transfer: 0,
+    economic_loss: 0
   },
   },
   {
   {
-    data1: "信宜市",
-    data2: 0,
-    data3: 0,
-    data4: 0,
-    data5: 0,
-    data6: 0
+    area_code: '440983000000',
+    area_name: "信宜市",
+    injuries: 0,
+    missing: 0,
+    deaths: 0,
+    transfer: 0,
+    economic_loss: 0
   },
   },
 ])
 ])
 
 
 // 计算合计的方法
 // 计算合计的方法
 const calculateTotal = (prop: string) => {
 const calculateTotal = (prop: string) => {
-  return eventList.value.reduce((sum, item) => {
+  return eventCasualties.value.reduce((sum, item) => {
     const currentValue = new BigNumber(item[prop] || 0);
     const currentValue = new BigNumber(item[prop] || 0);
     return sum.plus(currentValue);
     return sum.plus(currentValue);
   }, new BigNumber(0)).toNumber();
   }, new BigNumber(0)).toNumber();
@@ -185,7 +191,7 @@ const submitForm = () => {
   formRef.value?.validate(async (valid: boolean) => {
   formRef.value?.validate(async (valid: boolean) => {
     if (valid) {
     if (valid) {
       buttonLoading.value = true;
       buttonLoading.value = true;
-      closeEvent({ eventId: props.eventId, ...form.value }).then((res) => {
+      closeEvent({ eventId: props.eventId, ...form.value, 'eventCasualties': eventCasualties.value }).then((res) => {
         proxy?.$modal.msgSuccess(res.msg);
         proxy?.$modal.msgSuccess(res.msg);
         closeDialog();
         closeDialog();
       });
       });
@@ -194,12 +200,12 @@ const submitForm = () => {
 };
 };
 
 
 const closeDialog = () => {
 const closeDialog = () => {
-  eventList.value.forEach(item => {
-    item.data2 = 0
-    item.data3 = 0
-    item.data4 = 0
-    item.data5 = 0
-    item.data6 = 0
+  eventCasualties.value.forEach(item => {
+    item.injuries = 0
+    item.missing = 0
+    item.deaths = 0
+    item.transfer = 0
+    item.economic_loss = 0
   })
   })
   form.value.fileNames = [];
   form.value.fileNames = [];
   emits('update:modelValue');
   emits('update:modelValue');

+ 25 - 65
src/views/duty/eventing/eventDetails.vue

@@ -79,25 +79,25 @@
         <i class="line-icon" />
         <i class="line-icon" />
         <div class="common-info-title">伤亡情况</div>
         <div class="common-info-title">伤亡情况</div>
       </div>
       </div>
-      <el-table :data="eventList" style="margin-top: 10px">
-        <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 :data="eventCasualtiesList" style="margin-top: 10px">
+        <el-table-column label="行政区划" align="center" prop="area_name" />
+        <el-table-column label="受灾人数(人)" align="center" prop="injuries" />
+        <el-table-column label="失踪人数(人)" align="center" prop="missing" />
+        <el-table-column label="死亡人数(人)" align="center" prop="deaths" />
+        <el-table-column label="紧急转移(人)" align="center" prop="transfer" />
         <el-table-column label="直接经济损失(万元)" align="center">
         <el-table-column label="直接经济损失(万元)" align="center">
           <template #default="{ row }">
           <template #default="{ row }">
-            {{ new BigNumber(row.data6 || 0).toFormat() }}
+            {{ new BigNumber(row.economic_loss || 0).toFormat() }}
           </template>
           </template>
         </el-table-column>
         </el-table-column>
         <template #append>
         <template #append>
           <tr class="summary-row">
           <tr class="summary-row">
             <td>合计</td>
             <td>合计</td>
-            <td>{{ new BigNumber(calculateTotal('data2')).toFormat() }}</td>
-            <td>{{ new BigNumber(calculateTotal('data3')).toFormat() }}</td>
-            <td>{{ new BigNumber(calculateTotal('data4')).toFormat() }}</td>
-            <td>{{ new BigNumber(calculateTotal('data5')).toFormat() }}</td>
-            <td>{{ new BigNumber(calculateTotal('data6')).toFormat() }}</td>
+            <td>{{ new BigNumber(calculateTotal('injuries')).toFormat() }}</td>
+            <td>{{ new BigNumber(calculateTotal('missing')).toFormat() }}</td>
+            <td>{{ new BigNumber(calculateTotal('deaths')).toFormat() }}</td>
+            <td>{{ new BigNumber(calculateTotal('transfer')).toFormat() }}</td>
+            <td>{{ new BigNumber(calculateTotal('economic_loss')).toFormat() }}</td>
           </tr>
           </tr>
         </template>
         </template>
       </el-table>
       </el-table>
@@ -181,7 +181,7 @@
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { getEventDetail, deleteEvent } from '@/api/duty/eventing';
+import { getEventDetail, deleteEvent, getEventCasualties } from '@/api/duty/eventing';
 import StartEventDialog from './StartEventDialog.vue';
 import StartEventDialog from './StartEventDialog.vue';
 import CloseEventDialog from './CloseEventDialog.vue';
 import CloseEventDialog from './CloseEventDialog.vue';
 import EventEditDialog from './EventEditDialog.vue';
 import EventEditDialog from './EventEditDialog.vue';
@@ -208,56 +208,7 @@ let eventLevelState = reactive({
   show: false,
   show: false,
   data: []
   data: []
 });
 });
-const eventList = ref([
-  {
-    data1: "茂名市",
-    data2: 0,
-    data3: 0,
-    data4: 0,
-    data5: 0,
-    data6: 0
-  },
-  {
-    data1: "茂南区",
-    data2: 0,
-    data3: 0,
-    data4: 0,
-    data5: 0,
-    data6: 100
-  },
-  {
-    data1: "电白区",
-    data2: 1,
-    data3: 0,
-    data4: 0,
-    data5: 0,
-    data6: 0
-  },
-  {
-    data1: "化州市",
-    data2: 0,
-    data3: 2,
-    data4: 0,
-    data5: 0,
-    data6: 0
-  },
-  {
-    data1: "高州市",
-    data2: 0,
-    data3: 0,
-    data4: 3,
-    data5: 0,
-    data6: 0
-  },
-  {
-    data1: "信宜市",
-    data2: 0,
-    data3: 0,
-    data4: 0,
-    data5: 4,
-    data6: 5
-  },
-])
+const eventCasualtiesList = ref([]);
 
 
 const handleEventLevelOpen = () => {
 const handleEventLevelOpen = () => {
   eventLevelState.show = true;
   eventLevelState.show = true;
@@ -268,7 +219,7 @@ const handleEventLevelClose = () => {
 
 
 // 计算合计的方法
 // 计算合计的方法
 const calculateTotal = (prop: string) => {
 const calculateTotal = (prop: string) => {
-  return eventList.value.reduce((sum, item) => {
+  return eventCasualtiesList.value.reduce((sum, item) => {
     const currentValue = new BigNumber(item[prop] || 0)
     const currentValue = new BigNumber(item[prop] || 0)
     return sum.plus(currentValue)
     return sum.plus(currentValue)
   }, new BigNumber(0)).toFormat()
   }, new BigNumber(0)).toFormat()
@@ -413,7 +364,7 @@ const eventEditDialogState = reactive({
 });
 });
 
 
 const fetchEventDetail = () => {
 const fetchEventDetail = () => {
-  console.log('fetchEventDetail');
+  // console.log('fetchEventDetail');
   closeDialogState.show = false;
   closeDialogState.show = false;
   startDialogState.show = false;
   startDialogState.show = false;
   eventEditDialogState.show = false;
   eventEditDialogState.show = false;
@@ -425,6 +376,15 @@ const fetchEventDetail = () => {
     eventLevelState.data = res.data.event_level_tracks;
     eventLevelState.data = res.data.event_level_tracks;
     summaryFiles.value = res.data.summary_file;
     summaryFiles.value = res.data.summary_file;
     planFiles.value = res.data.plan_files;
     planFiles.value = res.data.plan_files;
+
+    fetchEventCasualties();
+  });  
+};
+
+const fetchEventCasualties = () => {
+  getEventCasualties({ event_id: props.eventId }).then((res) => {
+    // console.log('getEventCasualties', res);
+    eventCasualtiesList.value = res.data;
   });
   });
 };
 };
 
 

+ 80 - 69
src/views/emergencyCommandMap/RightSection/disasterAssessment.vue

@@ -12,71 +12,71 @@
       </div>
       </div>
       <div v-for="(item, index) in fixedTableData" :key="index" class="tr">
       <div v-for="(item, index) in fixedTableData" :key="index" class="tr">
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <div class="address-text" :title="item.address">{{ item.address }}</div>
+          <div class="area_name-box">
+            <div class="area_name-text" :title="item.area_name">{{ item.area_name }}</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <el-input-number v-if="isEditing" v-model="item.numone" class="custom-input" :min="0" />
-            <div v-else class="address-text">{{ item.numone }}</div>
+          <div class="area_name-box">
+            <el-input-number v-if="isEditing" v-model="item.injuries" class="custom-input" :min="0" />
+            <div v-else class="area_name-text">{{ item.injuries }}</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <el-input-number v-if="isEditing" v-model="item.numtwo" class="custom-input" :min="0" />
-            <div v-else class="address-text">{{ item.numtwo }}</div>
+          <div class="area_name-box">
+            <el-input-number v-if="isEditing" v-model="item.missing" class="custom-input" :min="0" />
+            <div v-else class="area_name-text">{{ item.missing }}</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <el-input-number v-if="isEditing" v-model="item.numthree" class="custom-input" :min="0" />
-            <div v-else class="address-text">{{ item.numthree }}</div>
+          <div class="area_name-box">
+            <el-input-number v-if="isEditing" v-model="item.deaths" class="custom-input" :min="0" />
+            <div v-else class="area_name-text">{{ item.deaths }}</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <el-input-number v-if="isEditing" v-model="item.numfour" class="custom-input" :min="0" />
-            <div v-else class="address-text">{{ item.numfour }}</div>
+          <div class="area_name-box">
+            <el-input-number v-if="isEditing" v-model="item.transfer" class="custom-input" :min="0" />
+            <div v-else class="area_name-text">{{ item.transfer }}</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <el-input-number v-if="isEditing" v-model="item.numfive" class="custom-input" :min="0" />
-            <div v-else class="address-text">{{ item.numfive }}</div>
+          <div class="area_name-box">
+            <el-input-number v-if="isEditing" v-model="item.economic_loss" class="custom-input" :min="0" />
+            <div v-else class="area_name-text">{{ item.economic_loss }}</div>
           </div>
           </div>
         </div>
         </div>
       </div>
       </div>
       <!-- 合计行 -->
       <!-- 合计行 -->
       <div class="tr total-row">
       <div class="tr total-row">
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <div class="address-text">合计</div>
+          <div class="area_name-box">
+            <div class="area_name-text">合计</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <div class="address-text">{{ total.numone }}</div>
+          <div class="area_name-box">
+            <div class="area_name-text">{{ total.injuries }}</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <div class="address-text">{{ total.numtwo }}</div>
+          <div class="area_name-box">
+            <div class="area_name-text">{{ total.missing }}</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <div class="address-text">{{ total.numthree }}</div>
+          <div class="area_name-box">
+            <div class="area_name-text">{{ total.deaths }}</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <div class="address-text">{{ total.numfour }}</div>
+          <div class="area_name-box">
+            <div class="area_name-text">{{ total.transfer }}</div>
           </div>
           </div>
         </div>
         </div>
         <div class="td">
         <div class="td">
-          <div class="address-box">
-            <div class="address-text">{{ total.numfive }}</div>
+          <div class="area_name-box">
+            <div class="area_name-text">{{ total.economic_loss }}</div>
           </div>
           </div>
         </div>
         </div>
       </div>
       </div>
@@ -105,7 +105,8 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { computed, ref } from 'vue';
 import { computed, ref } from 'vue';
 import BigNumber from 'bignumber.js';
 import BigNumber from 'bignumber.js';
-
+import { getEventCasualties, uploadCasualties } from '@/api/duty/eventing';
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 // 固定的行政区域列表
 // 固定的行政区域列表
 const fixedRegions = ['茂名市', '茂南区', '电白区', '化州市', '高州市', '信宜市'];
 const fixedRegions = ['茂名市', '茂南区', '电白区', '化州市', '高州市', '信宜市'];
 
 
@@ -124,17 +125,17 @@ const fixedTableData = ref([]);
 const mergeDataWithFixedRegions = () => {
 const mergeDataWithFixedRegions = () => {
   fixedTableData.value = fixedRegions.map((region) => {
   fixedTableData.value = fixedRegions.map((region) => {
     // 查找是否有该区域的数据
     // 查找是否有该区域的数据
-    const foundData = tableData.value.find((item) => item.address === region);
+    const foundData = tableData.value.find((item) => item.area_name === region);
 
 
     // 如果有数据则使用,否则使用默认值0
     // 如果有数据则使用,否则使用默认值0
     return (
     return (
       foundData || {
       foundData || {
-        address: region,
-        numone: 0,
-        numtwo: 0,
-        numthree: 0,
-        numfour: 0,
-        numfive: 0
+        area_name: region,
+        injuries: 0,
+        missing: 0,
+        deaths: 0,
+        transfer: 0,
+        economic_loss: 0
       }
       }
     );
     );
   });
   });
@@ -144,31 +145,31 @@ const mergeDataWithFixedRegions = () => {
 const total = computed(() => {
 const total = computed(() => {
   // 初始化 BigNumber 对象
   // 初始化 BigNumber 对象
   const init = {
   const init = {
-    numone: new BigNumber(0),
-    numtwo: new BigNumber(0),
-    numthree: new BigNumber(0),
-    numfour: new BigNumber(0),
-    numfive: new BigNumber(0)
+    injuries: new BigNumber(0),
+    missing: new BigNumber(0),
+    deaths: new BigNumber(0),
+    transfer: new BigNumber(0),
+    economic_loss: new BigNumber(0)
   };
   };
 
 
   // 使用 reduce 累加
   // 使用 reduce 累加
   const sums = fixedTableData.value.reduce((acc, item) => {
   const sums = fixedTableData.value.reduce((acc, item) => {
     return {
     return {
-      numone: acc.numone.plus(new BigNumber(item.numone || 0)),
-      numtwo: acc.numtwo.plus(new BigNumber(item.numtwo || 0)),
-      numthree: acc.numthree.plus(new BigNumber(item.numthree || 0)),
-      numfour: acc.numfour.plus(new BigNumber(item.numfour || 0)),
-      numfive: acc.numfive.plus(new BigNumber(item.numfive || 0))
+      injuries: acc.injuries.plus(new BigNumber(item.injuries || 0)),
+      missing: acc.missing.plus(new BigNumber(item.missing || 0)),
+      deaths: acc.deaths.plus(new BigNumber(item.deaths || 0)),
+      transfer: acc.transfer.plus(new BigNumber(item.transfer || 0)),
+      economic_loss: acc.economic_loss.plus(new BigNumber(item.economic_loss || 0))
     };
     };
   }, init);
   }, init);
 
 
   // 返回格式化后的结果
   // 返回格式化后的结果
   return {
   return {
-    numone: sums.numone.toFormat(0),
-    numtwo: sums.numtwo.toFormat(0),
-    numthree: sums.numthree.toFormat(0),
-    numfour: sums.numfour.toFormat(0),
-    numfive: sums.numfive.toFormat(2)
+    injuries: sums.injuries.toFormat(0),
+    missing: sums.missing.toFormat(0),
+    deaths: sums.deaths.toFormat(0),
+    transfer: sums.transfer.toFormat(0),
+    economic_loss: sums.economic_loss.toFormat(2)
   };
   };
 });
 });
 // 切换编辑状态
 // 切换编辑状态
@@ -181,9 +182,12 @@ const toggleEdit = () => {
 const saveEdit = () => {
 const saveEdit = () => {
   isEditing.value = false;
   isEditing.value = false;
   // 保存数据到tableData
   // 保存数据到tableData
-  tableData.value = fixedTableData.value.filter(
-    (item) => item.numone !== 0 || item.numtwo !== 0 || item.numthree !== 0 || item.numfour !== 0 || item.numfive !== 0
-  );
+  // tableData.value = fixedTableData.value.filter(
+  //   (item) => item.injuries !== 0 || item.missing !== 0 || item.deaths !== 0 || item.transfer !== 0 || item.economic_loss !== 0
+  // );
+  uploadCasualties({'event_id': props.eventId, 'eventCasualties': fixedTableData.value}).then((res)=>{
+    proxy?.$modal.msgSuccess(res.msg);
+  })
 };
 };
 
 
 const cancelEdit = () => {
 const cancelEdit = () => {
@@ -196,19 +200,26 @@ const emit = defineEmits(['update:show']);
 const closeDialog = () => {
 const closeDialog = () => {
   emit('update:show', false);
   emit('update:show', false);
 };
 };
-
+const props = defineProps<{
+  eventId?: string;
+}>();
 onMounted(() => {
 onMounted(() => {
-  tableData.value = [
-    {
-      address: '',
-      numone: 0,
-      numtwo: 0,
-      numthree: 0,
-      numfour: 0,
-      numfive: 0
-    }
-  ];
-  mergeDataWithFixedRegions();
+  // tableData.value = [
+  //   {
+  //     area_name: '',
+  //     injuries: 0,
+  //     missing: 0,
+  //     deaths: 0,
+  //     transfer: 0,
+  //     economic_loss: 0
+  //   }
+  // ];
+  // mergeDataWithFixedRegions();
+
+  getEventCasualties({ event_id: props.eventId }).then((res) => {
+    tableData.value = res.data;
+    mergeDataWithFixedRegions();
+  });
 });
 });
 </script>
 </script>
 
 
@@ -226,8 +237,8 @@ onMounted(() => {
       flex: 1;
       flex: 1;
       padding: 3px;
       padding: 3px;
 
 
-      .address-box {
-        .address-text {
+      .area_name-box {
+        .area_name-text {
           white-space: nowrap;
           white-space: nowrap;
           overflow: hidden;
           overflow: hidden;
           text-overflow: ellipsis;
           text-overflow: ellipsis;