|
@@ -6,8 +6,8 @@
|
|
|
<el-row :gutter="10">
|
|
|
<!-- 第一行 -->
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="事件类型" prop="eventType">
|
|
|
- <el-select v-model="queryParams.eventType" placeholder="全部" clearable>
|
|
|
+ <el-form-item label="事件类型" prop="event_type">
|
|
|
+ <el-select v-model="queryParams.event_type" placeholder="全部" clearable>
|
|
|
<el-option label="全部" value=""></el-option>
|
|
|
<el-option
|
|
|
v-for="item in mm_event_type"
|
|
@@ -19,8 +19,8 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="事件等级" prop="eventLevel">
|
|
|
- <el-select v-model="queryParams.eventLevel" placeholder="全部" clearable>
|
|
|
+ <el-form-item label="事件等级" prop="event_level">
|
|
|
+ <el-select v-model="queryParams.event_level" placeholder="全部" clearable>
|
|
|
<el-option label="全部" value=""></el-option>
|
|
|
<el-option
|
|
|
v-for="item in mm_event_level"
|
|
@@ -32,8 +32,8 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="事件状态" prop="eventStatus">
|
|
|
- <el-select v-model="queryParams.eventStatus" placeholder="全部" clearable>
|
|
|
+ <el-form-item label="事件状态" prop="event_status">
|
|
|
+ <el-select v-model="queryParams.event_status" placeholder="全部" clearable>
|
|
|
<el-option label="全部" value=""></el-option>
|
|
|
<el-option
|
|
|
v-for="item in mm_event_state"
|
|
@@ -45,8 +45,8 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="行政区划" prop="regionCode">
|
|
|
- <el-select v-model="queryParams.regionCode" placeholder="全部" clearable>
|
|
|
+ <el-form-item label="行政区划" prop="region_code">
|
|
|
+ <el-select v-model="queryParams.region_code" placeholder="全部" clearable>
|
|
|
<el-option label="全部" value=""></el-option>
|
|
|
<el-option v-for="item in region" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"></el-option>
|
|
|
</el-select>
|
|
@@ -55,17 +55,17 @@
|
|
|
</el-row>
|
|
|
<el-row :gutter="10" class="mt-[10px]">
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="事发时间" prop="eventTime">
|
|
|
+ <el-form-item label="事发时间" prop="event_time">
|
|
|
<el-date-picker
|
|
|
- v-model="queryParams.eventTime"
|
|
|
- type="datetime"
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ v-model="queryParams.event_time"
|
|
|
+ type="date"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
placeholder="选择事发时间"
|
|
|
></el-date-picker>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item>
|
|
|
+ <el-form-item prop="keyword">
|
|
|
<el-input v-model="queryParams.keyword" placeholder="请输入事件标题/事件地点" clearable @keyup.enter="handleQuery" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
@@ -75,6 +75,7 @@
|
|
|
</el-form>
|
|
|
</div>
|
|
|
</transition>
|
|
|
+
|
|
|
<el-row :gutter="10" class="mb8">
|
|
|
<el-col :span="1.5">
|
|
|
<el-button type="primary" plain icon="Plus" @click="handleAdd">新增事件</el-button>
|
|
@@ -83,28 +84,29 @@
|
|
|
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete(selectedRow)">删除事件 </el-button>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
+
|
|
|
<!-- 表格组件 -->
|
|
|
<el-table v-loading="loading" :data="eventList" @selection-change="handleSelectionChange">
|
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
|
- <el-table-column label="事件编号" align="center" prop="eventId" />
|
|
|
- <el-table-column label="事件标题" align="center" prop="eventTitle" />
|
|
|
- <el-table-column label="事件类型" align="center" prop="eventType">
|
|
|
+ <el-table-column label="事件编号" align="center" prop="event_id" />
|
|
|
+ <el-table-column label="事件标题" align="center" prop="event_title" />
|
|
|
+ <el-table-column label="事件类型" align="center" prop="event_type">
|
|
|
<template #default="scope">
|
|
|
- <dict-tag :options="mm_event_type" :value="scope.row.eventType" />
|
|
|
+ <dict-tag :options="mm_event_type" :value="scope.row.event_type" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="事件等级" align="center" prop="eventLevel">
|
|
|
+ <el-table-column label="事件等级" align="center" prop="event_level">
|
|
|
<template #default="scope">
|
|
|
- <dict-tag :options="mm_event_level" :value="scope.row.eventLevel" />
|
|
|
+ <dict-tag :options="mm_event_level" :value="scope.row.event_level" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="事件地点" align="center" prop="address" />
|
|
|
- <el-table-column label="事件状态" align="center" prop="eventStatus">
|
|
|
+ <el-table-column label="事件状态" align="center" prop="event_status">
|
|
|
<template #default="scope">
|
|
|
- <dict-tag :options="mm_event_state" :value="scope.row.eventStatus" />
|
|
|
+ <dict-tag :options="mm_event_state" :value="scope.row.event_status" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="事件时间" align="center" prop="eventTime" />
|
|
|
+ <el-table-column label="事件时间" align="center" prop="event_time" />
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
<template #default="scope">
|
|
|
<el-tooltip content="查看" placement="top">
|
|
@@ -119,89 +121,25 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
+
|
|
|
+ <EventEditDialog v-model="eventEditDialogState.show" :title="eventEditDialogState.title" :eventId="eventId" @update:model-value="getList"/>
|
|
|
+ <CloseEventDialog v-model="closeDialogState.show" :data="closeDialogState.form" :eventId="eventId" @update:model-value="handleCloseEventDialog" />
|
|
|
|
|
|
- <pagination v-show="total > 0" v-model:page="queryParams.page" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
|
|
|
-
|
|
|
- <!-- 新增/修改弹窗 -->
|
|
|
- <el-dialog v-model="dialog.visible" :title="dialog.title" width="650px" append-to-body>
|
|
|
- <el-form ref="eventFormRef" :model="form" :rules="rules" label-width="80px">
|
|
|
- <el-form-item label="事件标题" prop="eventTitle">
|
|
|
- <el-input v-model="form.eventTitle" placeholder="请输入事件标题" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="事件类型" prop="eventType">
|
|
|
- <el-select v-model="form.eventType" placeholder="请选择事件类型" clearable>
|
|
|
- <el-option v-for="item in mm_event_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="事件等级" prop="eventLevel">
|
|
|
- <el-select v-model="form.eventLevel" placeholder="请选择事件等级" clearable>
|
|
|
- <el-option v-for="item in mm_event_level" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="事件状态" prop="eventStatus">
|
|
|
- <el-select v-model="form.eventStatus" placeholder="请选择事件状态" clearable>
|
|
|
- <el-option v-for="item in mm_event_state" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="事件地点" prop="address">
|
|
|
- <el-button type="primary" @click="openMapDialog">地图定位</el-button>
|
|
|
- <el-input v-model="form.address" placeholder="请输入事件地点" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="事发时间" prop="eventTime">
|
|
|
- <el-date-picker v-model="form.eventTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择事发时间"></el-date-picker>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="上报时间" prop="reportTime">
|
|
|
- <el-date-picker v-model="form.reportTime" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择上报时间"></el-date-picker>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="伤亡情况">
|
|
|
- <el-row :gutter="10">
|
|
|
- <el-col :span="6">
|
|
|
- <el-input v-model="form.deaths" placeholder="死亡">
|
|
|
- <template #suffix>人</template>
|
|
|
- </el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-input v-model="form.injuries" placeholder="受伤">
|
|
|
- <template #suffix>人</template>
|
|
|
- </el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-input v-model="form.missing" placeholder="失踪">
|
|
|
- <template #suffix>人</template>
|
|
|
- </el-input>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="事件来源" prop="eventSource">
|
|
|
- <el-input v-model="form.eventSource" placeholder="请输入事件来源" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="事件描述" prop="eventDescription">
|
|
|
- <el-input type="textarea" v-model="form.eventDescription" placeholder="请输入事件描述" />
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <template #footer>
|
|
|
- <div class="dialog-footer">
|
|
|
- <el-button :loading="buttonLoading" type="primary" @click="submitForm">确定</el-button>
|
|
|
- <el-button @click="cancel">取消</el-button>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- <CloseEventDialog v-model="closeDialogState.show" :eventId="closeDialogState.eventId" />
|
|
|
- <!-- 地图弹窗 -->
|
|
|
- <company-map v-model:visible="mapDialogVisible" :address="form.address" @confirm="handleMapChange"></company-map>
|
|
|
+ <pagination v-show="total > 0" v-model:page="queryParams.page" v-model:limit="queryParams.page_size" :total="total" @pagination="getList" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { ref, reactive, toRefs, onMounted } from 'vue';
|
|
|
-import { addEvent, getEvent } from '@/api/duty/eventing';
|
|
|
-import CloseEventDialog from '@/views/duty/eventing/CloseEventDialog.vue';
|
|
|
+import { getEvent, deleteEvent } from '@/api/duty/eventing';
|
|
|
+
|
|
|
+import EventEditDialog from './EventEditDialog.vue';
|
|
|
+import CloseEventDialog from './CloseEventDialog.vue';
|
|
|
|
|
|
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 eventList = ref([]);
|
|
|
-const buttonLoading = ref(false);
|
|
|
const loading = ref(true);
|
|
|
const showSearch = ref(true);
|
|
|
const ids = ref([]);
|
|
@@ -209,62 +147,46 @@ const single = ref(true);
|
|
|
const multiple = ref(true);
|
|
|
const total = ref(0);
|
|
|
const selectedRow = ref(null);
|
|
|
-
|
|
|
+const eventId = ref('');
|
|
|
const queryFormRef = ref();
|
|
|
-const eventFormRef = ref();
|
|
|
|
|
|
-const dialog = reactive({
|
|
|
- visible: false,
|
|
|
- title: ''
|
|
|
-});
|
|
|
// 表单初始数据
|
|
|
const initFormData = {
|
|
|
- // eventId: '',
|
|
|
- eventTitle: '', // 事件标题
|
|
|
- eventType: '', // 事件类型
|
|
|
- eventLevel: '', // 事件等级
|
|
|
- eventStatus: '', // 事件状态
|
|
|
+ event_title: '', // 事件标题
|
|
|
+ event_type: '', // 事件类型
|
|
|
+ event_level: '', // 事件等级
|
|
|
+ event_status: '', // 事件状态
|
|
|
address: '', // 事件地点
|
|
|
longitude: '', // 经度
|
|
|
latitude: '', // 纬度
|
|
|
- eventTime: '',// 事发时间
|
|
|
- reportTime: '',// 上报时间
|
|
|
+ event_time: '',// 事发时间
|
|
|
+ report_time: '',// 上报时间
|
|
|
deaths: '',
|
|
|
injuries: '',
|
|
|
missing: '',
|
|
|
- eventSource: '', // 事件来源
|
|
|
- eventDescription: '' // 事件描述
|
|
|
+ event_source: '', // 事件来源
|
|
|
+ event_description: '', // 事件描述
|
|
|
+ contact: '' // 联系方式
|
|
|
};
|
|
|
// 表单数据
|
|
|
const data = reactive({
|
|
|
form: { ...initFormData },
|
|
|
queryParams: {
|
|
|
page: 1,
|
|
|
- pageSize: 10,
|
|
|
- eventType: '',
|
|
|
- eventLevel: '',
|
|
|
- eventStatus: '',
|
|
|
- eventTime: '',
|
|
|
- regionCode: '',
|
|
|
+ page_size: 10,
|
|
|
+ event_type: '',
|
|
|
+ event_level: '',
|
|
|
+ event_status: '',
|
|
|
+ event_time: '',
|
|
|
+ region_code: '',
|
|
|
keyword: ''
|
|
|
},
|
|
|
- rules: {
|
|
|
- eventTitle: [{ required: true, message: '事件标题不能为空', trigger: 'blur' }],
|
|
|
- eventType: [{ required: true, message: '事件类型不能为空', trigger: 'blur' }],
|
|
|
- eventLevel: [{ required: true, message: '事件等级不能为空', trigger: 'blur' }],
|
|
|
- eventStatus: [{ required: true, message: '事件状态不能为空', trigger: 'blur' }],
|
|
|
- address: [{ required: true, message: '事件地点不能为空', trigger: 'blur' }],
|
|
|
- eventTime: [{ required: true, message: '事发时间不能为空', trigger: 'blur' }],
|
|
|
- reportTime: [{ required: true, message: '上报时间不能为空', trigger: 'blur' }],
|
|
|
- eventSource: [{ required: true, message: '事件来源不能为空', trigger: 'blur' }],
|
|
|
- eventDescription: [{ required: true, message: '事件描述不能为空', trigger: 'blur' }]
|
|
|
- },
|
|
|
- eventLevelSelection: [],
|
|
|
- eventStatusSelection: [],
|
|
|
+ event_levelSelection: [],
|
|
|
+ event_statusSelection: [],
|
|
|
regionSelection: []
|
|
|
});
|
|
|
|
|
|
-const { queryParams, form, rules } = toRefs(data);
|
|
|
+const { queryParams, form } = toRefs(data);
|
|
|
|
|
|
const getList = () => {
|
|
|
loading.value = true;
|
|
@@ -278,16 +200,6 @@ const getList = () => {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
-const cancel = () => {
|
|
|
- reset();
|
|
|
- dialog.visible = false;
|
|
|
-};
|
|
|
-
|
|
|
-const reset = () => {
|
|
|
- form.value = { ...initFormData };
|
|
|
- eventFormRef.value?.resetFields();
|
|
|
-};
|
|
|
-
|
|
|
const handleQuery = () => {
|
|
|
queryParams.value.page = 1;
|
|
|
getList();
|
|
@@ -295,7 +207,7 @@ const handleQuery = () => {
|
|
|
|
|
|
// 重置查询条件
|
|
|
const resetQuery = () => {
|
|
|
- queryParams.value = { page: 1, pageSize: 10, eventType: '', eventLevel: '', eventStatus: '', eventTime: '', regionCode: '', keyword: '' };
|
|
|
+ queryParams.value = { page: 1, page_size: 10, event_type: '', event_level: '', event_status: '', event_time: '', region_code: '', keyword: '' };
|
|
|
handleQuery();
|
|
|
};
|
|
|
|
|
@@ -306,60 +218,69 @@ const handleSelectionChange = (selection) => {
|
|
|
multiple.value = !selection.length;
|
|
|
};
|
|
|
|
|
|
+const eventEditDialogState = reactive({
|
|
|
+ show: false,
|
|
|
+ title: ''
|
|
|
+})
|
|
|
+
|
|
|
const handleAdd = () => {
|
|
|
- reset();
|
|
|
- dialog.visible = true;
|
|
|
- dialog.title = '新增事件';
|
|
|
+ eventId.value = ""
|
|
|
+ eventEditDialogState.title = "新增事件"
|
|
|
+ eventEditDialogState.show = true
|
|
|
};
|
|
|
|
|
|
// 修改事件
|
|
|
const handleUpdate = (row) => {
|
|
|
if (row) {
|
|
|
- reset();
|
|
|
- Object.assign(form.value, row);
|
|
|
- dialog.visible = true;
|
|
|
- dialog.title = '修改事件';
|
|
|
+ eventId.value = row.event_id;
|
|
|
+ eventEditDialogState.title = "修改事件"
|
|
|
+ eventEditDialogState.show = true
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-// 提交表单
|
|
|
-const submitForm = () => {
|
|
|
- eventFormRef.value?.validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- buttonLoading.value = true;
|
|
|
- // 打印表单数据
|
|
|
- console.log('表单数据', form.value);
|
|
|
- addEvent(form.value)
|
|
|
- .then(() => {
|
|
|
- dialog.visible = false;
|
|
|
- getList();
|
|
|
- })
|
|
|
- .finally(() => {
|
|
|
- buttonLoading.value = false;
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
-};
|
|
|
-
|
|
|
const handleDelete = (row) => {
|
|
|
if (row) {
|
|
|
- // 删除逻辑
|
|
|
- setTimeout(() => {
|
|
|
- eventList.value = eventList.value.filter((item) => item.eventId !== row.eventId);
|
|
|
- getList();
|
|
|
- }, 500);
|
|
|
+ ElMessageBox.confirm('确认删除事件吗?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'info',
|
|
|
+ }).then(() => {
|
|
|
+ eventList.value = eventList.value.filter((item) => item.eventId !== row.event_id);
|
|
|
+ deleteEvent({ eventId: row.event_id }).then((res) => {
|
|
|
+ proxy?.$modal.msgSuccess(res.msg);
|
|
|
+ setTimeout(() => {
|
|
|
+ getList();
|
|
|
+ }, 500);
|
|
|
+ });
|
|
|
+ })
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+// 关闭事件
|
|
|
const closeDialogState = reactive({
|
|
|
show: false,
|
|
|
- eventId: ''
|
|
|
+ form: {
|
|
|
+ eventId: '',
|
|
|
+ deaths: '',
|
|
|
+ injuries: '',
|
|
|
+ missing: '',
|
|
|
+ fileNames: []
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
-// 关闭事件
|
|
|
const handleClose = (row) => {
|
|
|
- row.eventId = row.eventId;
|
|
|
- closeDialogState.show = true;
|
|
|
+ if (row) {
|
|
|
+ console.log(row)
|
|
|
+ closeDialogState.form.eventId = row.event_id
|
|
|
+ closeDialogState.form.deaths = row.deaths
|
|
|
+ closeDialogState.form.injuries = row.injuries
|
|
|
+ closeDialogState.form.missing = row.missing
|
|
|
+ closeDialogState.show = true;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const handleCloseEventDialog = (b) => {
|
|
|
+ console.log('handleCloseEventDialog', b)
|
|
|
};
|
|
|
|
|
|
// 查看事件详情
|
|
@@ -369,25 +290,11 @@ const handleView = (row) => {
|
|
|
console.log('查看事件详情', row);
|
|
|
router.push({
|
|
|
path: '/duty/eventing/eventDetails',
|
|
|
- query: { eventId: row.eventId }
|
|
|
+ query: { event_id: row.event_id }
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-// 地图定位
|
|
|
-const mapDialogVisible = ref(false);
|
|
|
-
|
|
|
-const openMapDialog = () => {
|
|
|
- mapDialogVisible.value = true;
|
|
|
-};
|
|
|
-
|
|
|
-const handleMapChange = (data) => {
|
|
|
- form.value.address = data.address;
|
|
|
- form.value.longitude = data.lnglat[0];
|
|
|
- form.value.latitude = data.lnglat[1];
|
|
|
- mapDialogVisible.value = false;
|
|
|
-};
|
|
|
-
|
|
|
onMounted(() => {
|
|
|
getList();
|
|
|
});
|