From b58ed724b0aa1709ea83f6c1159f0127e7e5ea1e Mon Sep 17 00:00:00 2001 From: shenquanyi Date: Tue, 23 Sep 2025 18:29:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BF=9D=E9=99=A9=E7=AB=AF?= =?UTF-8?q?=E7=9A=84=E5=89=8D=E5=90=8E=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/Layout.vue | 7 +- insurance_admin-system/src/main.js | 21 + insurance_admin-system/src/router/index.js | 13 + insurance_admin-system/src/utils/api.js | 55 +- .../src/views/ApplicationManagement.vue | 865 +++++++++-------- .../src/views/CompletedTaskManagement.vue | 509 ++++++++++ .../src/views/InstallationTaskManagement.vue | 44 +- .../src/views/InsuranceTypeManagement.vue | 461 ++++++---- .../src/views/LivestockPolicyManagement.vue | 747 +++++++++++++++ .../src/views/SupervisionTaskManagement.vue | 50 +- .../src/views/SupervisoryTaskManagement.vue | 57 +- insurance_admin-system/vite.config.js | 2 +- insurance_backend/config/swagger.js | 63 ++ .../controllers/authController.js | 8 +- .../controllers/insuranceController.js | 226 ++++- .../controllers/insuranceTypeController.js | 98 +- .../controllers/livestockClaimController.js | 365 ++++++++ .../controllers/livestockPolicyController.js | 348 +++++++ .../controllers/livestockTypeController.js | 221 +++++ .../regulatoryTaskCompletionController.js | 603 ++++++++++++ insurance_backend/create_admin_user.js | 4 +- .../docs/insurance-application-api.yaml | 755 +++++++++++++++ .../swagger/regulatory-task-completion.yaml | 869 ++++++++++++++++++ insurance_backend/middleware/auth.js | 66 +- ...122000002-update-insurance-applications.js | 75 ++ .../models/InsuranceApplication.js | 36 +- insurance_backend/models/InsuranceType.js | 8 +- insurance_backend/models/LivestockClaim.js | 202 ++++ insurance_backend/models/LivestockPolicy.js | 217 +++++ insurance_backend/models/LivestockType.js | 101 ++ insurance_backend/models/index.js | 71 +- insurance_backend/package-lock.json | 2 + insurance_backend/routes/insurance.js | 10 + insurance_backend/routes/insuranceTypes.js | 12 +- insurance_backend/routes/livestockClaims.js | 31 + insurance_backend/routes/livestockPolicies.js | 35 + insurance_backend/routes/livestockTypes.js | 35 + insurance_backend/routes/policies.js | 10 +- .../routes/regulatoryTaskCompletion.js | 536 +++++++++++ .../scripts/check_claims_table.js | 29 + .../scripts/check_required_fields.js | 34 + .../scripts/check_table_structure.js | 24 + insurance_backend/scripts/check_tables.js | 20 + insurance_backend/scripts/check_users.js | 21 + .../scripts/create_regulatory_tables.js | 86 ++ .../scripts/execute_livestock_schema.js | 53 ++ .../scripts/fix-admin-permissions.js | 51 + insurance_backend/scripts/fix-permissions.js | 49 + .../scripts/insert_claims_only.js | 41 + .../scripts/insert_data_fixed.sql | 6 +- .../scripts/insert_livestock_test_data.js | 235 +++++ .../scripts/insert_livestock_test_data.sql | 80 ++ insurance_backend/scripts/insert_test_data.js | 81 ++ .../scripts/livestock_insurance_schema.sql | 129 +++ .../scripts/regulatory_task_completion.sql | 108 +++ .../scripts/test_frontend_integration.js | 269 ++++++ insurance_backend/scripts/test_login.js | 56 ++ insurance_backend/src/app.js | 15 +- .../test/create-insurance-types.js | 63 ++ .../test/regulatory_task_completion_test.js | 497 ++++++++++ insurance_backend/test/simple_api_test.js | 120 +++ .../test/test-insurance-types.js | 49 + insurance_backend/test/test-policies.js | 348 +++++++ insurance_backend/test_api_final.ps1 | 52 ++ insurance_backend/test_detailed_request.js | 37 + insurance_backend/test_livestock_api.js | 35 + insurance_backend/test_login.js | 21 + insurance_backend/test_password.js | 19 + insurance_backend/test_simple_request.js | 31 + 69 files changed, 9728 insertions(+), 769 deletions(-) create mode 100644 insurance_admin-system/src/views/CompletedTaskManagement.vue create mode 100644 insurance_admin-system/src/views/LivestockPolicyManagement.vue create mode 100644 insurance_backend/controllers/livestockClaimController.js create mode 100644 insurance_backend/controllers/livestockPolicyController.js create mode 100644 insurance_backend/controllers/livestockTypeController.js create mode 100644 insurance_backend/controllers/regulatoryTaskCompletionController.js create mode 100644 insurance_backend/docs/insurance-application-api.yaml create mode 100644 insurance_backend/docs/swagger/regulatory-task-completion.yaml create mode 100644 insurance_backend/migrations/20250122000002-update-insurance-applications.js create mode 100644 insurance_backend/models/LivestockClaim.js create mode 100644 insurance_backend/models/LivestockPolicy.js create mode 100644 insurance_backend/models/LivestockType.js create mode 100644 insurance_backend/routes/livestockClaims.js create mode 100644 insurance_backend/routes/livestockPolicies.js create mode 100644 insurance_backend/routes/livestockTypes.js create mode 100644 insurance_backend/routes/regulatoryTaskCompletion.js create mode 100644 insurance_backend/scripts/check_claims_table.js create mode 100644 insurance_backend/scripts/check_required_fields.js create mode 100644 insurance_backend/scripts/check_table_structure.js create mode 100644 insurance_backend/scripts/check_tables.js create mode 100644 insurance_backend/scripts/check_users.js create mode 100644 insurance_backend/scripts/create_regulatory_tables.js create mode 100644 insurance_backend/scripts/execute_livestock_schema.js create mode 100644 insurance_backend/scripts/fix-admin-permissions.js create mode 100644 insurance_backend/scripts/fix-permissions.js create mode 100644 insurance_backend/scripts/insert_claims_only.js create mode 100644 insurance_backend/scripts/insert_livestock_test_data.js create mode 100644 insurance_backend/scripts/insert_livestock_test_data.sql create mode 100644 insurance_backend/scripts/insert_test_data.js create mode 100644 insurance_backend/scripts/livestock_insurance_schema.sql create mode 100644 insurance_backend/scripts/regulatory_task_completion.sql create mode 100644 insurance_backend/scripts/test_frontend_integration.js create mode 100644 insurance_backend/scripts/test_login.js create mode 100644 insurance_backend/test/create-insurance-types.js create mode 100644 insurance_backend/test/regulatory_task_completion_test.js create mode 100644 insurance_backend/test/simple_api_test.js create mode 100644 insurance_backend/test/test-insurance-types.js create mode 100644 insurance_backend/test/test-policies.js create mode 100644 insurance_backend/test_api_final.ps1 create mode 100644 insurance_backend/test_detailed_request.js create mode 100644 insurance_backend/test_livestock_api.js create mode 100644 insurance_backend/test_login.js create mode 100644 insurance_backend/test_password.js create mode 100644 insurance_backend/test_simple_request.js 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 @@