|
@@ -26,8 +26,8 @@
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, reactive, toRefs } from 'vue';
|
|
|
-import { editEvent, registeredEvent } from '@/api/duty/eventing';
|
|
|
-import { useRouter } from 'vue-router';
|
|
|
+import { editEvent, registeredEvent, closeEvent } from '@/api/duty/eventing';
|
|
|
+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,13 +35,21 @@ const buttonLoading = ref(false);
|
|
|
const eventFormRef = ref();
|
|
|
const visible = ref(false);
|
|
|
const events = ref([]);
|
|
|
+const route = useRoute();
|
|
|
+// 从 URL 查询字符串中解析参数
|
|
|
+const urlParams = new URLSearchParams(route.query);
|
|
|
+const address = urlParams.get('address') || '';
|
|
|
+const latitude = urlParams.get('latitude') || '';
|
|
|
+const longitude = urlParams.get('longitude') || '';
|
|
|
interface Props {
|
|
|
modelValue: boolean;
|
|
|
eventId: string;
|
|
|
title: string;
|
|
|
}
|
|
|
const props = withDefaults(defineProps<Props>(), {
|
|
|
- modelValue: false
|
|
|
+ modelValue: false,
|
|
|
+ eventId: '',
|
|
|
+ title: ''
|
|
|
});
|
|
|
|
|
|
const emits = defineEmits(['update:modelValue']);
|
|
@@ -68,17 +76,17 @@ const initFormData = {
|
|
|
event_id: '',
|
|
|
event_type: '', // 事件类型
|
|
|
event_level: '', // 事件等级
|
|
|
- event_status: '0' // 事件状态
|
|
|
+ event_status: '0', // 事件状态
|
|
|
+ address: address, // 地址
|
|
|
+ latitude: latitude, // 纬度
|
|
|
+ longitude: longitude // 经度
|
|
|
};
|
|
|
|
|
|
// 表单数据
|
|
|
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 +94,39 @@ 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 = {
|
|
|
+ eventId: form.value.event_id,
|
|
|
+ address: form.value.address,
|
|
|
+ latitude: form.value.latitude,
|
|
|
+ longitude: form.value.longitude
|
|
|
+ };
|
|
|
+ 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 fetchEvents = async () => {
|
|
|
try {
|
|
@@ -123,21 +146,30 @@ const closeDialog = () => {
|
|
|
if (eventFormRef.value) {
|
|
|
eventFormRef.value.resetFields();
|
|
|
}
|
|
|
- form.value.event_id = null;
|
|
|
+ form.value.event_id = '';
|
|
|
form.value.event_title = '';
|
|
|
};
|
|
|
const endProcess = () => {
|
|
|
- // 确保在点击结束指挥时重新显示对话框
|
|
|
- ensureDialogVisible();
|
|
|
-
|
|
|
- // 判断是否需要提交表单
|
|
|
+ // 如果没有 eventId,则提交表单
|
|
|
if (props.eventId === '') {
|
|
|
- // 如果没有 eventId,则提交表单
|
|
|
- submitForm();
|
|
|
+ // 使用 async/await 来等待表单提交的结果
|
|
|
+ submitForm()
|
|
|
+ .then(() => {
|
|
|
+ // 提交成功后的处理
|
|
|
+ console.log('Form submitted successfully.');
|
|
|
+ closeDialog();
|
|
|
+ // 关闭对话框后返回上一级页面
|
|
|
+ router.go(-1);
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ // 提交失败后的处理
|
|
|
+ console.error('Failed to submit the form:', error);
|
|
|
+ proxy?.$message.error('提交表单失败,请检查您的输入');
|
|
|
+ });
|
|
|
} else {
|
|
|
// 如果有 eventId,则直接关闭对话框并返回上一页
|
|
|
closeDialog();
|
|
|
- router.go(-1);
|
|
|
+ router.go(-1); // 立即返回上一级页面
|
|
|
}
|
|
|
};
|
|
|
// 确保在点击结束指挥时重新显示对话框
|
|
@@ -159,8 +191,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>
|