zhangyihao před 10 měsíci
rodič
revize
3b206b8ac8

+ 58 - 24
src/views/emergencyCommandMap/LeftSection/CloseCommand.vue

@@ -27,7 +27,7 @@
 <script lang="ts" setup>
 import { ref, reactive, toRefs } from 'vue';
 import { editEvent, registeredEvent } from '@/api/duty/eventing';
-import { useRouter } from 'vue-router';
+import { useRouter, useRoute } from 'vue-router';
 const proxy = getCurrentInstance()?.proxy;
 const { mm_event_title, region } = toRefs<any>(proxy?.useDict('mm_event_title', 'region'));
 const router = useRouter();
@@ -35,6 +35,8 @@ const buttonLoading = ref(false);
 const eventFormRef = ref();
 const visible = ref(false);
 const events = ref([]);
+const route = useRoute();
+const idFromUrl = route.query.id as string;
 interface Props {
   modelValue: boolean;
   eventId: string;
@@ -75,10 +77,7 @@ const initFormData = {
 const data = reactive({
   form: { ...initFormData },
   rules: {
-    event_title: [{ required: true, message: '事件标题不能为空', trigger: 'blur' }],
-    event_type: [{ required: true, message: '事件类型不能为空', trigger: 'blur' }],
-    event_level: [{ required: true, message: '事件等级不能为空', trigger: 'blur' }],
-    event_status: [{ required: true, message: '事件状态不能为空', trigger: 'blur' }]
+    event_title: [{ required: true, message: '事件标题不能为空', trigger: 'blur' }]
   }
 });
 
@@ -86,24 +85,52 @@ const { form, rules } = toRefs(data);
 
 // 提交表单
 const submitForm = async () => {
-  eventFormRef.value?.validate(async (valid) => {
-    if (valid) {
-      buttonLoading.value = true;
-      try {
-        // 提交关闭事件请求
-        await closeEvent({
-          event_id: form.value.event_id,
-        });
-        proxy?.$modal.msgSuccess('已成功关闭');
-        closeDialog();
-      } catch (error) {
-        console.error('Failed to close event:', error);
-      } finally {
-        buttonLoading.value = false;
+  return new Promise((resolve, reject) => {
+    eventFormRef.value?.validate(async (valid) => {
+      if (valid) {
+        buttonLoading.value = true;
+        try {
+          // 构造请求参数
+          const params = {
+            event_id: form.value.event_id,
+            command_id: idFromUrl // 从URL中获取的id
+          };
+          console.log('Sending request with params:', params); // 添加调试信息
+          // 提交关闭事件请求
+          await closeEvent(params);
+          proxy?.$modal.msgSuccess('已成功关闭');
+          resolve(); // 解析Promise表示成功
+          closeDialog();
+        } catch (error) {
+          console.error('Failed to close event:', error);
+          reject(error); // 拒绝Promise表示失败
+          proxy?.$message.error('关闭事件失败,请检查您的输入');
+        } finally {
+          buttonLoading.value = false;
+        }
+      } else {
+        reject(new Error('Validation failed')); // 验证失败也拒绝Promise
+        proxy?.$message.error('表单验证失败,请检查您的输入');
       }
-    }
+    });
   });
 };
+// 提交关闭事件请求
+const closeEvent = async (params) => {
+  try {
+    console.log('Attempting to close event with params:', params); // 添加调试信息
+    await request({
+      url: '/api/event_management/event/close',
+      method: 'post',
+      data: params
+    });
+    proxy?.$modal.msgSuccess('已成功关闭');
+    closeDialog();
+  } catch (error) {
+    console.error('Failed to close event:', error);
+    throw error;
+  }
+};
 // 获取注册的事件列表
 const fetchEvents = async () => {
   try {
@@ -133,7 +160,17 @@ const endProcess = () => {
   // 判断是否需要提交表单
   if (props.eventId === '') {
     // 如果没有 eventId,则提交表单
-    submitForm();
+    submitForm()
+      .then(() => {
+        // 提交成功后的处理
+        console.log('Form submitted successfully.');
+        closeDialog();
+      })
+      .catch((error) => {
+        // 提交失败后的处理
+        console.error('Failed to submit the form:', error);
+        proxy?.$message.error('提交表单失败,请检查您的输入');
+      });
   } else {
     // 如果有 eventId,则直接关闭对话框并返回上一页
     closeDialog();
@@ -159,8 +196,5 @@ const selectEvent = (item) => {
   // 更新表单中的 event_id 和 event_title
   form.value.event_id = item.event_id;
   form.value.event_title = item.event_title;
-
-  // 可以在这里进行其他逻辑处理
-  console.log('Selected event:', item);
 };
 </script>