Просмотр исходного кода

更新工作人员端事件管理

libushang 6 месяцев назад
Родитель
Сommit
746e172cde

+ 2 - 9
src/views/event/UploadEventCasualtiesDialog.vue

@@ -4,7 +4,7 @@
       @close="closeDialog"
   >
     <van-form @submit="on_submit">
-      <div class="van-doc-block__title">上传总结报告</div>
+      <div class="van-doc-block__title">上传伤亡情况</div>
       <van-field
           v-model="form.deaths"
           label="死亡人数"
@@ -23,11 +23,6 @@
           placeholder="填写失联人数"
           :rules="[{ required: true, message: '请填写失联人数'  }]"
       />
-      <van-field name="fileNames" label="总结报告" label-align="top">
-        <template #input>
-          <FileUpload v-model="form.fileNames" :fileType="['pdf', 'doc', 'docx', 'xls', 'xlsx']"/>
-        </template>
-      </van-field>
       <div class="popup-footer">
           <van-button @click="closeDialog()" class="cancel-btn">取 消</van-button>
           <van-button type="primary" native-type="submit" class="confirm-btn">确 定</van-button>
@@ -46,7 +41,6 @@ interface Form {
   deaths: string;
   injuries: string;
   missing: string;
-  fileNames: string[];
 }
 
 interface Props {
@@ -58,8 +52,7 @@ const form = ref<Form>({
   event_id: '',
   deaths: '',
   injuries: '',
-  missing: '',
-  fileNames: []
+  missing: ''
 });
 
 const props = withDefaults(defineProps<Props>(), {

+ 106 - 0
src/views/event/UploadEventReportDialog.vue

@@ -0,0 +1,106 @@
+<template>
+  <van-popup
+      v-model:show="visible"
+      @close="closeDialog"
+  >
+    <van-form @submit="on_submit">
+      <div class="van-doc-block__title">上传总结报告</div>
+      <van-field
+          v-model="form.deaths"
+          label="死亡人数"
+          placeholder="填写死亡人数"
+          :rules="[{ required: true, message: '请填写死亡人数'  }]"
+      />
+      <van-field
+          v-model="form.injuries"
+          label="受伤人数"
+          placeholder="填写受伤人数"
+          :rules="[{ required: true, message: '请填写受伤人数'  }]"
+      />
+      <van-field
+          v-model="form.missing"
+          label="失联人数"
+          placeholder="填写失联人数"
+          :rules="[{ required: true, message: '请填写失联人数'  }]"
+      />
+      <van-field name="fileNames" label="总结报告" label-align="top">
+        <template #input>
+          <FileUpload v-model="form.fileNames" :fileType="['pdf', 'doc', 'docx', 'xls', 'xlsx']"/>
+        </template>
+      </van-field>
+      <div class="popup-footer">
+          <van-button @click="closeDialog()" class="cancel-btn">取 消</van-button>
+          <van-button type="primary" native-type="submit" class="confirm-btn">确 定</van-button>
+      </div>
+    </van-form>
+  </van-popup>
+</template>
+
+<script lang="ts" setup name="UploadEventCasualtiesDialog">
+import {ref, watch, defineEmits} from 'vue';
+import {uploadCasualties} from "@/api/event";
+import FileUpload from '@/components/FileUpload/index.vue';
+
+interface Form {
+  event_id: string;
+  deaths: string;
+  injuries: string;
+  missing: string;
+  fileNames: string[];
+}
+
+interface Props {
+  modelValue: boolean;
+  data: Form;
+}
+
+const form = ref<Form>({
+  event_id: '',
+  deaths: '',
+  injuries: '',
+  missing: '',
+  fileNames: []
+});
+
+const props = withDefaults(defineProps<Props>(), {
+  modelValue: false
+});
+
+const emits = defineEmits(['update:modelValue', 'confirm']);
+watch(
+    () => props.modelValue,
+    () => {
+      if (props.modelValue) {
+        form.value = props.data;
+      }
+      visible.value = props.modelValue;
+    }
+);
+
+const visible = ref(false);
+
+const on_submit = () => {
+  console.log('on_submit');
+  uploadCasualties({...form.value}).then((res) => {
+    emits('confirm', res);
+  }).catch((err) => {
+    closeDialog();
+  });
+};
+
+const closeDialog = () => {
+  emits('update:modelValue', false);
+};
+
+</script>
+
+<style lang="scss" scoped>
+.van-doc-block__title {
+  color: var(--van-doc-text-color-4);
+  margin: 0px;
+  padding: 3vmin;
+  font-size: 4.6vmin;
+  font-weight: 600;
+  line-height: 6.0vmin;
+}
+</style>

+ 10 - 1
src/views/event/add.vue

@@ -111,6 +111,14 @@
                 </template>
             </van-field>
 
+            <van-field
+                required
+                v-model="form.contact"
+                label="联系方式"
+                placeholder="请填写联系方式"
+                :rules="[{ required: false, message: '请填写联系方式'  }]"
+            />
+
             <van-field
                 required
                 v-model="form.event_description"
@@ -234,7 +242,8 @@ const data = reactive({
         casualties: '1',
         address: '',
         latitude: '',
-        longitude: ''
+        longitude: '',
+        contact: ''
     },
     form2: {
         event_type_text: '',

+ 53 - 5
src/views/event/detail.vue

@@ -95,12 +95,20 @@
                 <i class="icon7" />
                 <div class="event-data-item-title">伤亡情况:</div>
               </div>
-              <div
+              <div v-show="eventInfo.casualties===''"
                 class="event-data-item-value blue"
                 @click="handleUploadCasualties"
               >
                 去上报
               </div>
+              <div class="event-data-item-value" v-show="eventInfo.casualties==='1'">
+                死亡{{ eventInfo.deaths }}人,受伤{{ eventInfo.injuries }}人,失联{{ eventInfo.missing }}人
+                <span
+                  class=" blue"
+                  @click="handleUploadCasualties"
+                >续报
+                </span>
+              </div>
             </div>
             <div class="event-data-item">
               <div class="item-left">
@@ -117,7 +125,7 @@
                 <div class="event-data-item-title">登记时间:</div>
               </div>
               <div class="event-data-item-value">
-                {{ eventInfo.reported_time }}
+                {{ eventInfo.create_time }}
               </div>
             </div>
             <div class="event-data-item">
@@ -139,7 +147,7 @@
           </div>
         </van-tab>
         <van-tab title="事件概要">
-          <div class="event_tab">{{ eventInfo.event_description }}</div>
+          <div class="event_tab"><div class="emptyText">{{ eventInfo.event_description }}</div></div>
         </van-tab>
         <van-tab title="事件跟踪">
           <div class="event_tab">
@@ -217,7 +225,7 @@
               <van-button
                 type="primary"
                 size="small"
-                @click="handleUploadCasualties"
+                @click="handleUploadReport"
                 >去上传</van-button
               >
             </template>
@@ -265,6 +273,12 @@
       @update:model-value="onUploadCasualtiesDialogClose"
       @confirm="onUploadCasualtiesDialogClose"
     />
+    <UploadEventReportDialog
+      v-model="uploadReportState.show"
+      :data="uploadReportState.form"
+      @update:model-value="onUploadReportDialogClose"
+      @confirm="onUploadReportDialogClose"
+    />
     <StartEventDialog
       v-model="startEventState.show"
       :data="startEventState.form"
@@ -278,6 +292,7 @@ import { getCurrentInstance, reactive, ref, toRefs, onMounted } from "vue";
 import { useRouter, useRoute } from "vue-router";
 import { getEventDetail, closeEvent } from "@/api/event";
 import UploadEventCasualtiesDialog from "./UploadEventCasualtiesDialog.vue";
+import UploadEventReportDialog from "./UploadEventReportDialog.vue";
 import { showDialog, showConfirmDialog } from "vant";
 import { useAMap } from "@/hooks/AMap/useAMap";
 import StartEventDialog from "@/views/event/StartEventDialog.vue";
@@ -317,7 +332,9 @@ const data = reactive({
     plan_name: "",
     summary_file: [],
     plan_files: [],
+    create_time: '',
     // 伤亡情况
+    casualties: "0",
     deaths: "",
     injuries: "",
     missing: ""
@@ -388,7 +405,8 @@ const uploadCasualtiesState = reactive({
     event_id: "",
     deaths: "",
     injuries: "",
-    missing: ""
+    missing: "",
+    fileNames:[]
   }
 });
 
@@ -409,6 +427,36 @@ const onUploadCasualtiesDialogClose = t => {
   }
 };
 
+// 上报总结报告
+const uploadReportState = reactive({
+  show: false,
+  form: {
+    event_id: "",
+    deaths: "",
+    injuries: "",
+    missing: "",
+    fileNames:[]
+  }
+});
+
+const handleUploadReport = () => {
+  console.log("handleUploadReport");
+  uploadReportState.form.event_id = eventId.value;
+  uploadReportState.form.deaths = eventInfo.value.deaths;
+  uploadReportState.form.injuries = eventInfo.value.injuries;
+  uploadReportState.form.missing = eventInfo.value.missing;
+  uploadReportState.show = true;
+};
+
+const onUploadReportDialogClose = t => {
+  console.log("onUploadReportDialogClose", t);
+  uploadReportState.show = false;
+  if (t) {
+    refreshData();
+  }
+};
+
+///
 const onStartEventDialogClose = t => {
   startEventState.show = false;
   console.log(startEventState.form);