فهرست منبع

迭代四修改

zhangyihao 10 ماه پیش
والد
کامیت
cb3f7c744b
1فایلهای تغییر یافته به همراه38 افزوده شده و 36 حذف شده
  1. 38 36
      src/views/emergencyCommandMap/LeftSection/CloseCommand.vue

+ 38 - 36
src/views/emergencyCommandMap/LeftSection/CloseCommand.vue

@@ -3,7 +3,13 @@
     <el-form ref="eventFormRef" :model="form" :rules="rules" label-width="80px">
       <el-form-item label="灾害事件" prop="event_title">
         <el-select v-if="!props.eventId" v-model="form.event_title" placeholder="请选择事件" clearable>
-          <el-option v-for="item in mm_event_title" :key="item.value" :label="item.label" :value="item.value"></el-option>
+          <el-option
+            v-for="item in events"
+            :key="item.event_id"
+            :label="item.event_title"
+            :value="item.event_title"
+            @click="selectEvent(item)"
+          ></el-option>
         </el-select>
         <span v-else>{{ form.event_title }}</span>
       </el-form-item>
@@ -20,13 +26,14 @@
 <script lang="ts" setup>
 import { ref, reactive, toRefs } from 'vue';
 import { addEvent, editEvent, postEditEvent, registeredEvent } from '@/api/duty/eventing';
-
+import { useRouter } from 'vue-router';
 const proxy = getCurrentInstance()?.proxy;
 const { mm_event_title, region } = toRefs<any>(proxy?.useDict('mm_event_title', 'region'));
 const router = useRouter();
 const buttonLoading = ref(false);
 const eventFormRef = ref();
 const visible = ref(false);
+const events = ref([]);
 interface Props {
   modelValue: boolean;
   eventId: string;
@@ -39,10 +46,9 @@ const props = withDefaults(defineProps<Props>(), {
 const emits = defineEmits(['update:modelValue']);
 watch(
   () => props.modelValue,
-  () => {
-    // 界面显示初始化
-    if (props.modelValue) {
-      if (props.eventId != '') {
+  (newVal) => {
+    if (newVal) {
+      if (props.eventId !== '') {
         editEvent({ event_id: props.eventId }).then((res) => {
           form.value = res.data;
         });
@@ -51,7 +57,7 @@ watch(
         eventFormRef.value?.resetFields();
       }
     }
-    visible.value = props.modelValue;
+    visible.value = newVal;
   }
 );
 
@@ -59,6 +65,7 @@ watch(
 const initFormData = {
   event_title: '', // 事件标题
   event_id: '',
+  address: '',
   event_type: '', // 事件类型
   event_level: '', // 事件等级
   event_status: '0' // 事件状态
@@ -78,30 +85,22 @@ const data = reactive({
 const { form, rules } = toRefs(data);
 
 // 提交表单
-const submitForm = () => {
-  eventFormRef.value?.validate((valid) => {
+const submitForm = async () => {
+  eventFormRef.value?.validate(async (valid) => {
     if (valid) {
       buttonLoading.value = true;
-      // 打印表单数据
-      console.log('表单数据', form.value);
-      if (props.eventId === '') {
-        addEvent(form.value)
-          .then((res) => {
-            proxy?.$modal.msgSuccess(res.msg);
-            closeDialog();
-          })
-          .finally(() => {
-            buttonLoading.value = false;
-          });
-      } else {
-        postEditEvent(form.value)
-          .then((res) => {
-            proxy?.$modal.msgSuccess(res.msg);
-            closeDialog();
-          })
-          .finally(() => {
-            buttonLoading.value = false;
-          });
+      try {
+        // 提交关闭事件请求
+        await closeEvent({
+          event_id: form.value.event_id,
+          address: form.value.address
+        });
+        proxy?.$modal.msgSuccess('已成功关闭');
+        closeDialog();
+      } catch (error) {
+        console.error('Failed to close event:', error);
+      } finally {
+        buttonLoading.value = false;
       }
     }
   });
@@ -111,7 +110,7 @@ const fetchEvents = async () => {
   try {
     const response = await registeredEvent({});
     if (response && response.data && Array.isArray(response.data)) {
-      mm_event_title.value = response.data.map((item) => ({ value: item.id, label: item.title }));
+      events.value = response.data;
     }
   } catch (error) {
     console.error('Failed to fetch events:', error);
@@ -129,12 +128,15 @@ const closeDialog = () => {
   form.value.event_title = '';
 };
 const endProcess = () => {
-  // 确保在点击结束指挥时重新显示对话框
-  ensureDialogVisible();
-  closeDialog();
-  // 根据应用类型返回上一页
-  // 如果是 SPA 应用,可以使用 Vue Router
-  router.go(-1);
+  // 判断是否需要提交表单
+  if (props.eventId === '') {
+    // 如果没有 eventId,则提交表单
+    submitForm();
+  } else {
+    // 如果有 eventId,则直接关闭对话框并返回上一页
+    closeDialog();
+    router.go(-1);
+  }
 };
 // 确保在点击结束指挥时重新显示对话框
 const ensureDialogVisible = () => {