|
@@ -0,0 +1,131 @@
|
|
|
+<template>
|
|
|
+ <el-dialog ref="formDialogRef" :model-value="visible" :title="props.title" width="650px" append-to-body @close="closeDialog">
|
|
|
+ <el-form ref="eventFormRef" :model="form" :rules="rules" label-width="80px">
|
|
|
+ <el-form-item label="灾害事件" prop="event_title">
|
|
|
+ <el-select v-model="form.event_title" placeholder="请选择事件" clearable v-if="!props.eventId">
|
|
|
+ <el-option v-for="item in mm_event_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
|
|
+ </el-select>
|
|
|
+ <span v-else>{{ form.event_title }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button :loading="buttonLoading" type="primary" @click="endProcess">结束指挥</el-button>
|
|
|
+ <el-button @click="closeDialog">取消</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+import { ref, reactive, toRefs } from 'vue';
|
|
|
+import { addEvent, editEvent, postEditEvent } from '@/api/duty/eventing';
|
|
|
+
|
|
|
+const proxy = getCurrentInstance()?.proxy;
|
|
|
+const { mm_event_type, mm_event_level, mm_event_state, region } = toRefs<any>(
|
|
|
+ proxy?.useDict('mm_event_type', 'mm_event_level', 'mm_event_state', 'region')
|
|
|
+);
|
|
|
+const router = useRouter();
|
|
|
+const buttonLoading = ref(false);
|
|
|
+const eventFormRef = ref();
|
|
|
+const visible = ref(false);
|
|
|
+// 结束
|
|
|
+// const endProcess = () => {
|
|
|
+// router.push('/');
|
|
|
+// };
|
|
|
+interface Props {
|
|
|
+ modelValue: boolean;
|
|
|
+ eventId: string;
|
|
|
+ title: string;
|
|
|
+}
|
|
|
+const props = withDefaults(defineProps<Props>(), {
|
|
|
+ modelValue: false
|
|
|
+});
|
|
|
+
|
|
|
+const emits = defineEmits(['update:modelValue']);
|
|
|
+watch(
|
|
|
+ () => props.modelValue,
|
|
|
+ () => {
|
|
|
+ // 界面显示初始化
|
|
|
+ if (props.modelValue) {
|
|
|
+ if (props.eventId != '') {
|
|
|
+ editEvent({ event_id: props.eventId }).then((res) => {
|
|
|
+ form.value = res.data;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ form.value = { ...initFormData };
|
|
|
+ eventFormRef.value?.resetFields();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ visible.value = props.modelValue;
|
|
|
+ }
|
|
|
+);
|
|
|
+
|
|
|
+// 表单初始数据
|
|
|
+const initFormData = {
|
|
|
+ event_title: '', // 事件标题
|
|
|
+ event_type: '', // 事件类型
|
|
|
+ event_level: '', // 事件等级
|
|
|
+ event_status: '0' // 事件状态
|
|
|
+};
|
|
|
+
|
|
|
+// 表单数据
|
|
|
+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' }]
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+const { form, rules } = toRefs(data);
|
|
|
+
|
|
|
+// 提交表单
|
|
|
+const submitForm = () => {
|
|
|
+ eventFormRef.value?.validate((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;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+};
|
|
|
+const closeDialog = () => {
|
|
|
+ visible.value = false;
|
|
|
+ // 清空表单
|
|
|
+ if (eventFormRef.value) {
|
|
|
+ eventFormRef.value.resetFields();
|
|
|
+ }
|
|
|
+};
|
|
|
+const endProcess = () => {
|
|
|
+ // 关闭弹窗
|
|
|
+ closeDialog();
|
|
|
+ // 使用 Vue Router 返回到上一个页面
|
|
|
+ router.go(-1);
|
|
|
+};
|
|
|
+// 显示对话框的方法
|
|
|
+const showFormDialog = () => {
|
|
|
+ visible.value = true;
|
|
|
+};
|
|
|
+</script>
|