|
@@ -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>
|