diff --git a/src/api/patrol/event.js b/src/api/patrol/event.js new file mode 100644 index 0000000..4582f6c --- /dev/null +++ b/src/api/patrol/event.js @@ -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} 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') +} \ No newline at end of file diff --git a/src/views/patrol/events/index.vue b/src/views/patrol/events/index.vue index 2b43303..b2da67e 100644 --- a/src/views/patrol/events/index.vue +++ b/src/views/patrol/events/index.vue @@ -1,16 +1,1050 @@ - \ No newline at end of file diff --git a/src/views/patrol/records/index.vue b/src/views/patrol/records/index.vue index 497a567..e4d4833 100644 --- a/src/views/patrol/records/index.vue +++ b/src/views/patrol/records/index.vue @@ -240,6 +240,7 @@ const initTrendChart = () => { type: 'dashed' } }, + minInterval: 1, axisLabel: { formatter: '{value} 次', margin: 10