Add comprehensive patrol event management module
- Implement event API for creating, retrieving, updating, and exporting patrol events - Create detailed Vue component with advanced features: * Event statistics dashboard * Comprehensive search and filtering * Image and video preview * Event processing and status management * Export functionality for individual and batch events - Add support for event lifecycle management and detailed event tracking
This commit is contained in:
parent
b1931cc8c9
commit
1972b43dec
117
src/api/patrol/event.js
Normal file
117
src/api/patrol/event.js
Normal file
@ -0,0 +1,117 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 创建安防事件
|
||||
* @param {Object} data - 事件数据
|
||||
* @param {string} data.event_type - 事件类型:非法捕捞/环境破坏/设施损坏/其他事件
|
||||
* @param {number} data.event_level - 事件级别:1-轻微 2-中等 3-严重
|
||||
* @param {string} data.location_description - 位置描述
|
||||
* @param {string} data.description - 事件描述
|
||||
* @param {Array} [data.image_urls] - 图片地址列表
|
||||
* @param {Array} [data.video_urls] - 视频地址列表
|
||||
* @param {string} [data.reporter_name] - 上报人姓名
|
||||
* @param {string} [data.reporter_phone] - 上报人电话
|
||||
* @param {string} [data.remark] - 备注信息
|
||||
* @returns {Promise} 返回创建结果
|
||||
*/
|
||||
export function createEvent(data) {
|
||||
return request.post('/api/admin/patrol/events', data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取安防事件列表
|
||||
* @param {Object} params - 查询参数
|
||||
* @param {number} [params.page=1] - 页码
|
||||
* @param {number} [params.pageSize=10] - 每页条数
|
||||
* @param {string} [params.keyword] - 搜索关键词
|
||||
* @param {string} [params.event_type] - 事件类型
|
||||
* @param {number} [params.event_level] - 事件级别
|
||||
* @param {number} [params.handling_status] - 处理状态
|
||||
* @param {string} [params.start_date] - 开始日期
|
||||
* @param {string} [params.end_date] - 结束日期
|
||||
* @returns {Promise} 返回事件列表数据
|
||||
*/
|
||||
export function getEventList(params = {}) {
|
||||
return request.get('/api/admin/patrol/events', {
|
||||
params: {
|
||||
page: params.page || 1,
|
||||
page_size: params.pageSize || 10,
|
||||
keyword: params.keyword || undefined,
|
||||
event_type: params.event_type || undefined,
|
||||
event_level: params.event_level || undefined,
|
||||
handling_status: params.handling_status || undefined,
|
||||
start_date: params.start_date || undefined,
|
||||
end_date: params.end_date || undefined
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取安防事件详情
|
||||
* @param {string|number} id - 事件ID
|
||||
* @returns {Promise} 返回事件详情数据
|
||||
*/
|
||||
export function getEventDetail(id) {
|
||||
return request.get(`/api/admin/patrol/events/${id}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新事件处理状态
|
||||
* @param {string|number} id - 事件ID
|
||||
* @param {Object} data - 更新数据
|
||||
* @param {number} data.handling_status - 处理状态:0-待处理 1-处理中 2-已处理 3-已关闭
|
||||
* @param {string} [data.handling_description] - 处理描述
|
||||
* @returns {Promise} 返回更新结果
|
||||
*/
|
||||
export function updateEventStatus(id, data) {
|
||||
return request.put(`/api/admin/patrol/events/${id}/status`, {
|
||||
handling_status: data.handling_status,
|
||||
handling_description: data.handling_description || '',
|
||||
updated_by: 1 // 默认管理员ID
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出事件列表
|
||||
* @param {Object} params - 导出参数
|
||||
* @param {string} [params.event_type] - 事件类型
|
||||
* @param {number} [params.event_level] - 事件级别
|
||||
* @param {number} [params.handling_status] - 处理状态
|
||||
* @param {string} [params.start_date] - 开始日期
|
||||
* @param {string} [params.end_date] - 结束日期
|
||||
* @returns {Promise} 返回二进制文件流
|
||||
*/
|
||||
export function exportEvents(params = {}) {
|
||||
return request.get('/api/admin/patrol/events/export/list', {
|
||||
params,
|
||||
responseType: 'blob',
|
||||
headers: {
|
||||
'Accept': 'application/vnd.ms-excel'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量导出事件
|
||||
* @param {Array<string|number>} ids - 事件ID列表
|
||||
* @returns {Promise} 返回二进制文件流
|
||||
*/
|
||||
export function batchExportEvents(ids) {
|
||||
return request.post('/api/admin/patrol/events/export/batch',
|
||||
{ ids },
|
||||
{
|
||||
responseType: 'blob',
|
||||
headers: {
|
||||
'Accept': 'application/vnd.ms-excel'
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取事件统计信息
|
||||
* @returns {Promise} 返回统计数据
|
||||
*/
|
||||
export function getEventStatistics() {
|
||||
return request.get('/api/admin/patrol/events/statistics/overview')
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -240,6 +240,7 @@ const initTrendChart = () => {
|
||||
type: 'dashed'
|
||||
}
|
||||
},
|
||||
minInterval: 1,
|
||||
axisLabel: {
|
||||
formatter: '{value} 次',
|
||||
margin: 10
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user