|
@@ -3,7 +3,6 @@
|
|
|
<div class="overlay" @click="closeDialog"></div>
|
|
|
<div class="dialog" :style="{ height: height }">
|
|
|
<div class="dialog-header">
|
|
|
- <div class="dialog-title">{{ title }}</div>
|
|
|
<div class="icon-close" @click="closeDialog">
|
|
|
<el-icon size="100px"><Close /></el-icon>
|
|
|
</div>
|
|
@@ -11,18 +10,8 @@
|
|
|
<div class="dialog-content">
|
|
|
<slot />
|
|
|
<div class="app-container">
|
|
|
- <div class="back-btn" @click="handleBack">
|
|
|
- <el-icon><Back /></el-icon>
|
|
|
- 返回上一级
|
|
|
- </div>
|
|
|
<div class="line">
|
|
|
<div class="title">{{ detailData.event_title }}</div>
|
|
|
- <div class="flex">
|
|
|
- <el-button type="primary" :disabled="detailData.del_flag == '2'" @click="handleUpdate">编辑</el-button>
|
|
|
- <el-button type="primary" :disabled="detailData.event_status != '0'" @click="handleStartEvent">开始指挥</el-button>
|
|
|
- <el-button type="danger" :disabled="detailData.event_status != '2'" @click="handleCloseEvent">关闭事件</el-button>
|
|
|
- <el-button type="danger" :disabled="detailData.del_flag != '0'" @click="handleDeleteEvent">删除事件</el-button>
|
|
|
- </div>
|
|
|
</div>
|
|
|
<div class="sub-title">基础信息</div>
|
|
|
<div class="line2">
|
|
@@ -101,28 +90,28 @@
|
|
|
<el-step v-for="(item, index) in eventTrackState.items" :key="index" :title="item.title" :description="item.description"></el-step>
|
|
|
</el-steps>
|
|
|
|
|
|
- <div class="sub-title">指挥记录</div>
|
|
|
- <div class="list">
|
|
|
- <div class="list-item">
|
|
|
- <i class="img"></i>
|
|
|
- <div class="item-title">大屏指挥记录</div>
|
|
|
- </div>
|
|
|
- <div class="list-item">
|
|
|
- <i class="img"></i>
|
|
|
- <div class="item-title">中屏指挥记录</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="sub-title">匹配预案</div>
|
|
|
- <div class="list">
|
|
|
- <div class="list-item2">{{ detailData.plan_name }}</div>
|
|
|
- </div>
|
|
|
- <div class="sub-title">事件总结报告</div>
|
|
|
- <div class="list2">
|
|
|
- <div v-for="(item, index) in summaryFiles" :key="index" class="list-item" @click="downloadSummaryFile(item.url)">
|
|
|
- <div class="link">{{ item.file_name }}</div>
|
|
|
- <el-icon class="icon"><Download /></el-icon>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <!-- <div class="sub-title">指挥记录</div>-->
|
|
|
+ <!-- <div class="list">-->
|
|
|
+ <!-- <div class="list-item">-->
|
|
|
+ <!-- <i class="img"></i>-->
|
|
|
+ <!-- <div class="item-title">大屏指挥记录</div>-->
|
|
|
+ <!-- </div>-->
|
|
|
+ <!-- <div class="list-item">-->
|
|
|
+ <!-- <i class="img"></i>-->
|
|
|
+ <!-- <div class="item-title">中屏指挥记录</div>-->
|
|
|
+ <!-- </div>-->
|
|
|
+ <!-- </div>-->
|
|
|
+ <!-- <div class="sub-title">匹配预案</div>-->
|
|
|
+ <!-- <div class="list">-->
|
|
|
+ <!-- <div class="list-item2">{{ detailData.plan_name }}</div>-->
|
|
|
+ <!-- </div>-->
|
|
|
+ <!-- <div class="sub-title">事件总结报告</div>-->
|
|
|
+ <!-- <div class="list2">-->
|
|
|
+ <!-- <div v-for="(item, index) in summaryFiles" :key="index" class="list-item" @click="downloadSummaryFile(item.url)">-->
|
|
|
+ <!-- <div class="link">{{ item.file_name }}</div>-->
|
|
|
+ <!-- <el-icon class="icon"><Download /></el-icon>-->
|
|
|
+ <!-- </div>-->
|
|
|
+ <!-- </div>-->
|
|
|
<el-dialog v-model="eventLevelState.show" title="事件等级" width="500" :before-close="handleEventLevelClose">
|
|
|
<el-timeline>
|
|
|
<el-timeline-item
|
|
@@ -137,28 +126,6 @@
|
|
|
</el-timeline-item>
|
|
|
</el-timeline>
|
|
|
</el-dialog>
|
|
|
-
|
|
|
- <CloseEventDialog
|
|
|
- v-model="closeDialogState.show"
|
|
|
- :data="closeDialogState.form"
|
|
|
- :event-id="eventId"
|
|
|
- @update:model-value="fetchEventDetail"
|
|
|
- />
|
|
|
-
|
|
|
- <StartEventDialog
|
|
|
- v-model="startDialogState.show"
|
|
|
- :data="startDialogState.form"
|
|
|
- :event-id="eventId"
|
|
|
- @update:model-value="fetchEventDetail"
|
|
|
- />
|
|
|
-
|
|
|
- <EventEditDialog
|
|
|
- v-model="eventEditDialogState.show"
|
|
|
- :title="eventEditDialogState.title"
|
|
|
- :event-id="eventId"
|
|
|
- @update:model-value="fetchEventDetail"
|
|
|
- />
|
|
|
-
|
|
|
<EditCasualtiesDialog
|
|
|
v-model="editCasualtiesDialogState.show"
|
|
|
:data="editCasualtiesDialogState.form"
|
|
@@ -173,10 +140,8 @@
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import { getEventDetail, deleteEvent } from '@/api/duty/eventing';
|
|
|
-import StartEventDialog from './StartEventDialog.vue';
|
|
|
-import CloseEventDialog from './CloseEventDialog.vue';
|
|
|
-import EventEditDialog from './EventEditDialog.vue';
|
|
|
import EditCasualtiesDialog from './EditCasualtiesDialog.vue';
|
|
|
+import { ref } from 'vue';
|
|
|
|
|
|
const route = useRoute();
|
|
|
const router = useRouter();
|
|
@@ -184,7 +149,6 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
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')
|
|
|
);
|
|
|
-
|
|
|
// 事件等级数据
|
|
|
let eventLevelState = reactive({
|
|
|
show: false,
|
|
@@ -247,13 +211,38 @@ let eventTrackState = reactive({
|
|
|
}
|
|
|
]
|
|
|
});
|
|
|
-// 返回上一级
|
|
|
-const handleBack = () => {
|
|
|
- router.go(-1);
|
|
|
-};
|
|
|
-
|
|
|
-let eventId = ref('');
|
|
|
-const detailData = ref({
|
|
|
+interface Form {
|
|
|
+ eventId: '';
|
|
|
+ event_id: '';
|
|
|
+ event_title: '';
|
|
|
+ event_type: '';
|
|
|
+ event_level: '';
|
|
|
+ event_status: '';
|
|
|
+ event_time: '';
|
|
|
+ address: '';
|
|
|
+ report_time: '';
|
|
|
+ event_source: '';
|
|
|
+ reported_by: '';
|
|
|
+ event_description: '';
|
|
|
+ contact: '';
|
|
|
+ plan_name: '';
|
|
|
+ casualties: '';
|
|
|
+ deaths: '';
|
|
|
+ injuries: '';
|
|
|
+ missing: '';
|
|
|
+ del_flag: '';
|
|
|
+}
|
|
|
+interface Props {
|
|
|
+ modelValue: boolean;
|
|
|
+ eventId: string;
|
|
|
+ data: Form;
|
|
|
+}
|
|
|
+const props = withDefaults(defineProps<Props>(), {
|
|
|
+ modelValue: false
|
|
|
+});
|
|
|
+const emits = defineEmits(['update:modelValue']);
|
|
|
+const detailData = ref<Form>({
|
|
|
+ eventId: '',
|
|
|
event_id: '',
|
|
|
event_title: '',
|
|
|
event_type: '',
|
|
@@ -273,29 +262,6 @@ const detailData = ref({
|
|
|
missing: '',
|
|
|
del_flag: ''
|
|
|
});
|
|
|
-
|
|
|
-let startDialogState = reactive({
|
|
|
- show: false,
|
|
|
- form: {
|
|
|
- eventId: '',
|
|
|
- event_level: '',
|
|
|
- deaths: '',
|
|
|
- injuries: '',
|
|
|
- missing: ''
|
|
|
- }
|
|
|
-});
|
|
|
-
|
|
|
-const closeDialogState = reactive({
|
|
|
- show: false,
|
|
|
- form: {
|
|
|
- eventId: '',
|
|
|
- deaths: '',
|
|
|
- injuries: '',
|
|
|
- missing: '',
|
|
|
- fileNames: []
|
|
|
- }
|
|
|
-});
|
|
|
-
|
|
|
const editCasualtiesDialogState = reactive({
|
|
|
show: false,
|
|
|
form: {
|
|
@@ -305,63 +271,18 @@ const editCasualtiesDialogState = reactive({
|
|
|
missing: ''
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
-// 开始指挥(事件)
|
|
|
-const handleStartEvent = () => {
|
|
|
- startDialogState.form.eventId = eventId.value;
|
|
|
- startDialogState.form.deaths = detailData.value.deaths;
|
|
|
- startDialogState.form.injuries = detailData.value.injuries;
|
|
|
- startDialogState.form.missing = detailData.value.missing;
|
|
|
- startDialogState.form.event_level = detailData.value.event_level;
|
|
|
- startDialogState.show = true;
|
|
|
-};
|
|
|
-
|
|
|
-// 关闭事件
|
|
|
-const handleCloseEvent = () => {
|
|
|
- closeDialogState.form.eventId = eventId.value;
|
|
|
- closeDialogState.form.deaths = detailData.value.deaths;
|
|
|
- closeDialogState.form.injuries = detailData.value.injuries;
|
|
|
- closeDialogState.form.missing = detailData.value.missing;
|
|
|
- closeDialogState.form.fileNames = [];
|
|
|
- closeDialogState.show = true;
|
|
|
-};
|
|
|
-
|
|
|
-// 删除事件
|
|
|
-const handleDeleteEvent = () => {
|
|
|
- ElMessageBox.confirm('确认删除事件吗?', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'info'
|
|
|
- }).then(() => {
|
|
|
- deleteEvent({ eventId: eventId.value }).then((res) => {
|
|
|
- proxy?.$modal.msgSuccess(res.msg);
|
|
|
- fetchEventDetail();
|
|
|
- });
|
|
|
- });
|
|
|
-};
|
|
|
-
|
|
|
// 上报伤亡情况
|
|
|
const uploadeCasualties = () => {
|
|
|
- editCasualtiesDialogState.form.eventId = eventId.value;
|
|
|
+ editCasualtiesDialogState.form.eventId = props.eventId;
|
|
|
editCasualtiesDialogState.form.deaths = '';
|
|
|
editCasualtiesDialogState.form.injuries = '';
|
|
|
editCasualtiesDialogState.form.missing = '';
|
|
|
editCasualtiesDialogState.show = true;
|
|
|
};
|
|
|
-
|
|
|
-const eventEditDialogState = reactive({
|
|
|
- show: false,
|
|
|
- title: ''
|
|
|
-});
|
|
|
-
|
|
|
const fetchEventDetail = () => {
|
|
|
console.log('fetchEventDetail');
|
|
|
- closeDialogState.show = false;
|
|
|
- startDialogState.show = false;
|
|
|
- eventEditDialogState.show = false;
|
|
|
editCasualtiesDialogState.show = false;
|
|
|
-
|
|
|
- getEventDetail({ event_id: eventId.value }).then((res) => {
|
|
|
+ getEventDetail({ event_id: props.eventId }).then((res) => {
|
|
|
detailData.value = res.data;
|
|
|
eventTrackState = res.data.event_status_tracks;
|
|
|
eventLevelState.data = res.data.event_level_tracks;
|
|
@@ -369,29 +290,17 @@ const fetchEventDetail = () => {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
-const handleUpdate = () => {
|
|
|
- console.log('handleUpdate');
|
|
|
- eventEditDialogState.title = '修改事件';
|
|
|
- eventEditDialogState.show = true;
|
|
|
-};
|
|
|
-
|
|
|
onMounted(() => {
|
|
|
- eventId.value = route.query.event_id as string;
|
|
|
+ // eventId.value = route.query.event_id as string;
|
|
|
fetchEventDetail();
|
|
|
+ getEventDetail(props.eventId);
|
|
|
+ // });
|
|
|
});
|
|
|
-interface Props {
|
|
|
- modelValue: boolean;
|
|
|
- title?: string;
|
|
|
- height?: string;
|
|
|
-}
|
|
|
-const props = withDefaults(defineProps<Props>(), {
|
|
|
- modelValue: false
|
|
|
-});
|
|
|
-const emit = defineEmits(['update:modelValue']);
|
|
|
-
|
|
|
// 关闭弹窗
|
|
|
const closeDialog = () => {
|
|
|
- emit('update:modelValue', false);
|
|
|
+ emits('update:modelValue', false);
|
|
|
+ // detailData.value = { eventId: '' };
|
|
|
+ fetchEventDetail();
|
|
|
};
|
|
|
</script>
|
|
|
|
|
@@ -439,4 +348,12 @@ const closeDialog = () => {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+.dialog-content {
|
|
|
+ background-color: #fff;
|
|
|
+ border-radius: 5px;
|
|
|
+ padding: 20px;
|
|
|
+ max-width: 100%;
|
|
|
+ max-height: 88%;
|
|
|
+ overflow: auto; /* 启用滚动 */
|
|
|
+}
|
|
|
</style>
|