diff --git a/insurance_admin-system/src/components/Layout.vue b/insurance_admin-system/src/components/Layout.vue index 1063bfe..aeac40b 100644 --- a/insurance_admin-system/src/components/Layout.vue +++ b/insurance_admin-system/src/components/Layout.vue @@ -216,7 +216,7 @@ const fetchMenus = async () => { key: 'CompletedTask', icon: () => h(FileDoneOutlined), label: '监管任务已结项', - path: '/dashboard' // 重定向到仪表板 + path: '/completed-tasks' }, { key: 'InsuredCustomers', @@ -239,6 +239,11 @@ const fetchMenus = async () => { key: 'PolicyManagement', label: '生资保单列表', path: '/policies' + }, + { + key: 'LivestockPolicyManagement', + label: '生资保单管理', + path: '/livestock-policies' } ] }, diff --git a/insurance_admin-system/src/main.js b/insurance_admin-system/src/main.js index 057989b..8ba3df1 100644 --- a/insurance_admin-system/src/main.js +++ b/insurance_admin-system/src/main.js @@ -7,6 +7,27 @@ import 'ant-design-vue/dist/reset.css' // Ant Design Vue的中文语言包 import antdZhCN from 'ant-design-vue/es/locale/zh_CN' +// 抑制ResizeObserver警告 +const resizeObserverErrorHandler = (e) => { + if (e.message === 'ResizeObserver loop completed with undelivered notifications.' || + e.message.includes('ResizeObserver loop')) { + e.preventDefault() + e.stopImmediatePropagation() + return false + } +} + +// 处理未捕获的错误 +window.addEventListener('error', resizeObserverErrorHandler) + +// 处理未捕获的Promise错误 +window.addEventListener('unhandledrejection', (e) => { + if (e.reason && e.reason.message && e.reason.message.includes('ResizeObserver loop')) { + e.preventDefault() + return false + } +}) + // Ant Design Vue 4.x配置 // 使用Ant Design Vue内置的dayjs实例,避免版本冲突 const antdConfig = { diff --git a/insurance_admin-system/src/router/index.js b/insurance_admin-system/src/router/index.js index bcc961e..d1a04dc 100644 --- a/insurance_admin-system/src/router/index.js +++ b/insurance_admin-system/src/router/index.js @@ -18,6 +18,7 @@ import AntdConfigDebug from '@/views/AntdConfigDebug.vue' import SimpleDayjsTest from '@/views/SimpleDayjsTest.vue' import RangePickerTest from '@/views/RangePickerTest.vue' import LoginTest from '@/views/LoginTest.vue' +import LivestockPolicyManagement from '@/views/LivestockPolicyManagement.vue' const routes = [ { @@ -79,6 +80,12 @@ const routes = [ component: SupervisionTaskManagement, meta: { title: '监管任务管理' } }, + { + path: 'completed-tasks', + name: 'CompletedTasks', + component: () => import('@/views/CompletedTaskManagement.vue'), + meta: { requiresAuth: true, title: '监管任务结项' } + }, { path: 'installation-tasks', alias: ['pending-installation', 'installation-task'], // 添加别名兼容不同形式 @@ -86,6 +93,12 @@ const routes = [ component: InstallationTaskManagement, meta: { title: '待安装任务管理' } }, + { + path: 'livestock-policies', + name: 'LivestockPolicyManagement', + component: LivestockPolicyManagement, + meta: { title: '生资保单管理' } + }, { path: 'date-picker-test', name: 'DatePickerTest', diff --git a/insurance_admin-system/src/utils/api.js b/insurance_admin-system/src/utils/api.js index 37f47d8..130f333 100644 --- a/insurance_admin-system/src/utils/api.js +++ b/insurance_admin-system/src/utils/api.js @@ -66,8 +66,14 @@ export const insuranceTypeAPI = { export const applicationAPI = { getList: (params) => api.get('/insurance/applications', { params }), getDetail: (id) => api.get(`/insurance/applications/${id}`), + create: (data) => api.post('/insurance/applications', data), + update: (id, data) => api.put(`/insurance/applications/${id}`, data), + review: (id, data) => api.patch(`/insurance/applications/${id}/review`, data), updateStatus: (id, data) => api.put(`/insurance/applications/${id}/status`, data), - delete: (id) => api.delete(`/insurance/applications/${id}`) + delete: (id) => api.delete(`/insurance/applications/${id}`), + getStats: () => api.get('/insurance/applications-stats'), + getCategories: () => api.get('/insurance/categories'), + export: (params) => api.get('/insurance/applications/export', { params, responseType: 'blob' }) } export const policyAPI = { @@ -113,13 +119,48 @@ export const supervisionTaskApi = { export const installationTaskApi = { getList: (params) => api.get('/installation-tasks', { params }), create: (data) => api.post('/installation-tasks', data), - update: (data) => api.put(`/installation-tasks/${data.id}`, data), + update: (id, data) => api.put(`/installation-tasks/${id}`, data), delete: (id) => api.delete(`/installation-tasks/${id}`), - getDetail: (id) => api.get(`/installation-tasks/${id}`), - batchDelete: (ids) => api.post('/installation-tasks/batch-delete', { ids }), - batchUpdateStatus: (data) => api.post('/installation-tasks/batch-update-status', data), - export: (params) => api.get('/installation-tasks/export/excel', { params, responseType: 'blob' }), - getStats: () => api.get('/installation-tasks/statistics/summary') + getById: (id) => api.get(`/installation-tasks/${id}`), + updateStatus: (id, data) => api.patch(`/installation-tasks/${id}/status`, data), + getStats: () => api.get('/installation-tasks/stats'), + assign: (id, data) => api.post(`/installation-tasks/${id}/assign`, data), + complete: (id, data) => api.post(`/installation-tasks/${id}/complete`, data), + getHistory: (id) => api.get(`/installation-tasks/${id}/history`) +} + +// 生资保险相关API +export const livestockTypeApi = { + getList: (params) => api.get('/livestock-types', { params }), + create: (data) => api.post('/livestock-types', data), + update: (id, data) => api.put(`/livestock-types/${id}`, data), + delete: (id, data) => api.delete(`/livestock-types/${id}`, data), + getById: (id) => api.get(`/livestock-types/${id}`), + updateStatus: (id, data) => api.patch(`/livestock-types/${id}/status`, data), + batchUpdateStatus: (data) => api.patch('/livestock-types/batch-status', data) +} + +export const livestockPolicyApi = { + getList: (params) => api.get('/livestock-policies', { params }), + create: (data) => api.post('/livestock-policies', data), + update: (id, data) => api.put(`/livestock-policies/${id}`, data), + delete: (id) => api.delete(`/livestock-policies/${id}`), + getById: (id) => api.get(`/livestock-policies/${id}`), + updateStatus: (id, data) => api.patch(`/livestock-policies/${id}/status`, data), + getStats: () => api.get('/livestock-policies/stats'), + getLivestockTypes: () => api.get('/livestock-types?status=active') +} + +export const livestockClaimApi = { + getList: (params) => api.get('/livestock-claims', { params }), + create: (data) => api.post('/livestock-claims', data), + update: (id, data) => api.put(`/livestock-claims/${id}`, data), + delete: (id) => api.delete(`/livestock-claims/${id}`), + getById: (id) => api.get(`/livestock-claims/${id}`), + approve: (id, data) => api.post(`/livestock-claims/${id}/approve`, data), + reject: (id, data) => api.post(`/livestock-claims/${id}/reject`, data), + updatePaymentStatus: (id, data) => api.patch(`/livestock-claims/${id}/payment`, data), + getStats: () => api.get('/livestock-claims/stats') } export default api \ No newline at end of file diff --git a/insurance_admin-system/src/views/ApplicationManagement.vue b/insurance_admin-system/src/views/ApplicationManagement.vue index 58eb535..052aeb6 100644 --- a/insurance_admin-system/src/views/ApplicationManagement.vue +++ b/insurance_admin-system/src/views/ApplicationManagement.vue @@ -1,136 +1,154 @@