完善保险端的前后端
This commit is contained in:
@@ -38,4 +38,14 @@ router.get('/applications-stats', jwtAuth, checkPermission('insurance', 'read'),
|
||||
insuranceController.getApplicationStats
|
||||
);
|
||||
|
||||
// 导出保险申请数据
|
||||
router.get('/applications/export', jwtAuth, checkPermission('insurance', 'read'),
|
||||
insuranceController.exportApplications
|
||||
);
|
||||
|
||||
// 获取参保类型选项
|
||||
router.get('/categories', jwtAuth, checkPermission('insurance', 'read'),
|
||||
insuranceController.getInsuranceCategories
|
||||
);
|
||||
|
||||
module.exports = router;
|
||||
@@ -3,32 +3,32 @@ const router = express.Router();
|
||||
const insuranceTypeController = require('../controllers/insuranceTypeController');
|
||||
const { jwtAuth, checkPermission } = require('../middleware/auth');
|
||||
|
||||
// 获取保险类型列表
|
||||
// 获取险种列表
|
||||
router.get('/', jwtAuth, checkPermission('insurance_type', 'read'),
|
||||
insuranceTypeController.getInsuranceTypes
|
||||
);
|
||||
|
||||
// 获取单个保险类型详情
|
||||
// 获取单个险种详情
|
||||
router.get('/:id', jwtAuth, checkPermission('insurance_type', 'read'),
|
||||
insuranceTypeController.getInsuranceTypeById
|
||||
);
|
||||
|
||||
// 创建保险类型
|
||||
// 创建险种
|
||||
router.post('/', jwtAuth, checkPermission('insurance_type', 'create'),
|
||||
insuranceTypeController.createInsuranceType
|
||||
);
|
||||
|
||||
// 更新保险类型
|
||||
// 更新险种
|
||||
router.put('/:id', jwtAuth, checkPermission('insurance_type', 'update'),
|
||||
insuranceTypeController.updateInsuranceType
|
||||
);
|
||||
|
||||
// 删除保险类型
|
||||
// 删除险种
|
||||
router.delete('/:id', jwtAuth, checkPermission('insurance_type', 'delete'),
|
||||
insuranceTypeController.deleteInsuranceType
|
||||
);
|
||||
|
||||
// 更新保险类型状态
|
||||
// 更新险种状态
|
||||
router.patch('/:id/status', jwtAuth, checkPermission('insurance_type', 'update'),
|
||||
insuranceTypeController.updateInsuranceTypeStatus
|
||||
);
|
||||
|
||||
31
insurance_backend/routes/livestockClaims.js
Normal file
31
insurance_backend/routes/livestockClaims.js
Normal file
@@ -0,0 +1,31 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const {
|
||||
getLivestockClaims,
|
||||
createLivestockClaim,
|
||||
getLivestockClaimById,
|
||||
reviewLivestockClaim,
|
||||
updateLivestockClaimPayment,
|
||||
getLivestockClaimStats
|
||||
} = require('../controllers/livestockClaimController');
|
||||
const { authenticateToken, requirePermission } = require('../middleware/auth');
|
||||
|
||||
// 获取生资理赔列表
|
||||
router.get('/', authenticateToken, requirePermission('livestock_claim:read'), getLivestockClaims);
|
||||
|
||||
// 获取生资理赔统计
|
||||
router.get('/stats', authenticateToken, requirePermission('livestock_claim:read'), getLivestockClaimStats);
|
||||
|
||||
// 获取单个生资理赔详情
|
||||
router.get('/:id', authenticateToken, requirePermission('livestock_claim:read'), getLivestockClaimById);
|
||||
|
||||
// 创建生资理赔申请
|
||||
router.post('/', authenticateToken, requirePermission('livestock_claim:create'), createLivestockClaim);
|
||||
|
||||
// 审核生资理赔
|
||||
router.patch('/:id/review', authenticateToken, requirePermission('livestock_claim:review'), reviewLivestockClaim);
|
||||
|
||||
// 更新理赔支付状态
|
||||
router.patch('/:id/payment', authenticateToken, requirePermission('livestock_claim:payment'), updateLivestockClaimPayment);
|
||||
|
||||
module.exports = router;
|
||||
35
insurance_backend/routes/livestockPolicies.js
Normal file
35
insurance_backend/routes/livestockPolicies.js
Normal file
@@ -0,0 +1,35 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const {
|
||||
getLivestockPolicies,
|
||||
createLivestockPolicy,
|
||||
getLivestockPolicyById,
|
||||
updateLivestockPolicy,
|
||||
updateLivestockPolicyStatus,
|
||||
deleteLivestockPolicy,
|
||||
getLivestockPolicyStats
|
||||
} = require('../controllers/livestockPolicyController');
|
||||
const { authenticateToken, requirePermission } = require('../middleware/auth');
|
||||
|
||||
// 获取生资保单列表
|
||||
router.get('/', authenticateToken, requirePermission('livestock_policy:read'), getLivestockPolicies);
|
||||
|
||||
// 获取生资保单统计
|
||||
router.get('/stats', authenticateToken, requirePermission('livestock_policy:read'), getLivestockPolicyStats);
|
||||
|
||||
// 获取单个生资保单详情
|
||||
router.get('/:id', authenticateToken, requirePermission('livestock_policy:read'), getLivestockPolicyById);
|
||||
|
||||
// 创建生资保单
|
||||
router.post('/', authenticateToken, requirePermission('livestock_policy:create'), createLivestockPolicy);
|
||||
|
||||
// 更新生资保单
|
||||
router.put('/:id', authenticateToken, requirePermission('livestock_policy:update'), updateLivestockPolicy);
|
||||
|
||||
// 更新生资保单状态
|
||||
router.patch('/:id/status', authenticateToken, requirePermission('livestock_policy:update'), updateLivestockPolicyStatus);
|
||||
|
||||
// 删除生资保单
|
||||
router.delete('/:id', authenticateToken, requirePermission('livestock_policy:delete'), deleteLivestockPolicy);
|
||||
|
||||
module.exports = router;
|
||||
35
insurance_backend/routes/livestockTypes.js
Normal file
35
insurance_backend/routes/livestockTypes.js
Normal file
@@ -0,0 +1,35 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const {
|
||||
getLivestockTypes,
|
||||
getActiveLivestockTypes,
|
||||
createLivestockType,
|
||||
getLivestockTypeById,
|
||||
updateLivestockType,
|
||||
deleteLivestockType,
|
||||
batchUpdateLivestockTypeStatus
|
||||
} = require('../controllers/livestockTypeController');
|
||||
const { authenticateToken, requirePermission } = require('../middleware/auth');
|
||||
|
||||
// 获取牲畜类型列表
|
||||
router.get('/', authenticateToken, requirePermission('livestock_type:read'), getLivestockTypes);
|
||||
|
||||
// 获取所有启用的牲畜类型(用于下拉选择)
|
||||
router.get('/active', authenticateToken, getActiveLivestockTypes);
|
||||
|
||||
// 获取单个牲畜类型详情
|
||||
router.get('/:id', authenticateToken, requirePermission('livestock_type:read'), getLivestockTypeById);
|
||||
|
||||
// 创建牲畜类型
|
||||
router.post('/', authenticateToken, requirePermission('livestock_type:create'), createLivestockType);
|
||||
|
||||
// 更新牲畜类型
|
||||
router.put('/:id', authenticateToken, requirePermission('livestock_type:update'), updateLivestockType);
|
||||
|
||||
// 删除牲畜类型
|
||||
router.delete('/:id', authenticateToken, requirePermission('livestock_type:delete'), deleteLivestockType);
|
||||
|
||||
// 批量更新牲畜类型状态
|
||||
router.patch('/batch/status', authenticateToken, requirePermission('livestock_type:update'), batchUpdateLivestockTypeStatus);
|
||||
|
||||
module.exports = router;
|
||||
@@ -3,6 +3,11 @@ const router = express.Router();
|
||||
const policyController = require('../controllers/policyController');
|
||||
const { jwtAuth, checkPermission } = require('../middleware/auth');
|
||||
|
||||
// 获取保单统计(必须在动态路由之前)
|
||||
router.get('/stats/overview', jwtAuth, checkPermission('policy', 'read'),
|
||||
policyController.getPolicyStats
|
||||
);
|
||||
|
||||
// 获取保单列表
|
||||
router.get('/', jwtAuth, checkPermission('policy', 'read'),
|
||||
policyController.getPolicies
|
||||
@@ -28,9 +33,4 @@ router.patch('/:id/status', jwtAuth, checkPermission('policy', 'update'),
|
||||
policyController.updatePolicyStatus
|
||||
);
|
||||
|
||||
// 获取保单统计
|
||||
router.get('/stats/overview', jwtAuth, checkPermission('policy', 'read'),
|
||||
policyController.getPolicyStats
|
||||
);
|
||||
|
||||
module.exports = router;
|
||||
536
insurance_backend/routes/regulatoryTaskCompletion.js
Normal file
536
insurance_backend/routes/regulatoryTaskCompletion.js
Normal file
@@ -0,0 +1,536 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const regulatoryTaskCompletionController = require('../controllers/regulatoryTaskCompletionController');
|
||||
const { jwtAuth, checkPermission } = require('../middleware/auth');
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* tags:
|
||||
* name: RegulatoryTaskCompletion
|
||||
* description: 监管任务结项管理API
|
||||
*/
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* components:
|
||||
* schemas:
|
||||
* RegulatoryTaskCompletion:
|
||||
* type: object
|
||||
* required:
|
||||
* - application_no
|
||||
* - policy_no
|
||||
* - product_name
|
||||
* - customer_name
|
||||
* properties:
|
||||
* id:
|
||||
* type: integer
|
||||
* description: 记录ID
|
||||
* application_no:
|
||||
* type: string
|
||||
* description: 申请编号
|
||||
* policy_no:
|
||||
* type: string
|
||||
* description: 保单号
|
||||
* product_name:
|
||||
* type: string
|
||||
* description: 产品名称
|
||||
* customer_name:
|
||||
* type: string
|
||||
* description: 客户名称
|
||||
* customer_phone:
|
||||
* type: string
|
||||
* description: 客户电话
|
||||
* insurance_amount:
|
||||
* type: number
|
||||
* format: decimal
|
||||
* description: 保险金额
|
||||
* premium_amount:
|
||||
* type: number
|
||||
* format: decimal
|
||||
* description: 保费金额
|
||||
* start_date:
|
||||
* type: string
|
||||
* format: date
|
||||
* description: 保险起期
|
||||
* end_date:
|
||||
* type: string
|
||||
* format: date
|
||||
* description: 保险止期
|
||||
* completion_date:
|
||||
* type: string
|
||||
* format: date
|
||||
* description: 结项日期
|
||||
* status:
|
||||
* type: string
|
||||
* enum: [pending, approved, rejected, completed]
|
||||
* description: 状态
|
||||
* reviewer_name:
|
||||
* type: string
|
||||
* description: 审核人员
|
||||
* review_comments:
|
||||
* type: string
|
||||
* description: 审核意见
|
||||
* created_at:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* description: 创建时间
|
||||
* updated_at:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* description: 更新时间
|
||||
*/
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/regulatory-task-completion:
|
||||
* get:
|
||||
* summary: 获取监管任务结项列表
|
||||
* tags: [RegulatoryTaskCompletion]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: query
|
||||
* name: application_no
|
||||
* schema:
|
||||
* type: string
|
||||
* description: 申请编号(模糊查询)
|
||||
* - in: query
|
||||
* name: policy_no
|
||||
* schema:
|
||||
* type: string
|
||||
* description: 保单号(模糊查询)
|
||||
* - in: query
|
||||
* name: product_name
|
||||
* schema:
|
||||
* type: string
|
||||
* description: 产品名称(模糊查询)
|
||||
* - in: query
|
||||
* name: customer_name
|
||||
* schema:
|
||||
* type: string
|
||||
* description: 客户名称(模糊查询)
|
||||
* - in: query
|
||||
* name: completion_date
|
||||
* schema:
|
||||
* type: string
|
||||
* format: date
|
||||
* description: 结项日期
|
||||
* - in: query
|
||||
* name: status
|
||||
* schema:
|
||||
* type: string
|
||||
* enum: [pending, approved, rejected, completed]
|
||||
* description: 状态
|
||||
* - in: query
|
||||
* name: reviewer_name
|
||||
* schema:
|
||||
* type: string
|
||||
* description: 审核人员(模糊查询)
|
||||
* - in: query
|
||||
* name: page
|
||||
* schema:
|
||||
* type: integer
|
||||
* default: 1
|
||||
* description: 页码
|
||||
* - in: query
|
||||
* name: limit
|
||||
* schema:
|
||||
* type: integer
|
||||
* default: 10
|
||||
* description: 每页数量
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 成功获取监管任务结项列表
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* code:
|
||||
* type: integer
|
||||
* example: 200
|
||||
* message:
|
||||
* type: string
|
||||
* example: success
|
||||
* data:
|
||||
* type: object
|
||||
* properties:
|
||||
* list:
|
||||
* type: array
|
||||
* items:
|
||||
* $ref: '#/components/schemas/RegulatoryTaskCompletion'
|
||||
* pagination:
|
||||
* type: object
|
||||
* properties:
|
||||
* current:
|
||||
* type: integer
|
||||
* pageSize:
|
||||
* type: integer
|
||||
* total:
|
||||
* type: integer
|
||||
* totalPages:
|
||||
* type: integer
|
||||
*/
|
||||
router.get('/', jwtAuth, checkPermission('regulatory_task', 'read'),
|
||||
regulatoryTaskCompletionController.getTaskCompletions
|
||||
);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/regulatory-task-completion/{id}:
|
||||
* get:
|
||||
* summary: 获取监管任务结项详情
|
||||
* tags: [RegulatoryTaskCompletion]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: 记录ID
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 成功获取监管任务结项详情
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* code:
|
||||
* type: integer
|
||||
* example: 200
|
||||
* message:
|
||||
* type: string
|
||||
* example: success
|
||||
* data:
|
||||
* allOf:
|
||||
* - $ref: '#/components/schemas/RegulatoryTaskCompletion'
|
||||
* - type: object
|
||||
* properties:
|
||||
* attachments:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* id:
|
||||
* type: integer
|
||||
* file_name:
|
||||
* type: string
|
||||
* file_path:
|
||||
* type: string
|
||||
* file_size:
|
||||
* type: integer
|
||||
* file_type:
|
||||
* type: string
|
||||
* upload_time:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* operation_logs:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* id:
|
||||
* type: integer
|
||||
* operation_type:
|
||||
* type: string
|
||||
* operation_description:
|
||||
* type: string
|
||||
* operator_name:
|
||||
* type: string
|
||||
* operation_time:
|
||||
* type: string
|
||||
* format: date-time
|
||||
* ip_address:
|
||||
* type: string
|
||||
* 404:
|
||||
* description: 记录不存在
|
||||
*/
|
||||
router.get('/:id', jwtAuth, checkPermission('regulatory_task', 'read'),
|
||||
regulatoryTaskCompletionController.getTaskCompletionById
|
||||
);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/regulatory-task-completion:
|
||||
* post:
|
||||
* summary: 创建监管任务结项记录
|
||||
* tags: [RegulatoryTaskCompletion]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* required:
|
||||
* - application_no
|
||||
* - policy_no
|
||||
* - product_name
|
||||
* - customer_name
|
||||
* properties:
|
||||
* application_no:
|
||||
* type: string
|
||||
* description: 申请编号
|
||||
* policy_no:
|
||||
* type: string
|
||||
* description: 保单号
|
||||
* product_name:
|
||||
* type: string
|
||||
* description: 产品名称
|
||||
* customer_name:
|
||||
* type: string
|
||||
* description: 客户名称
|
||||
* customer_phone:
|
||||
* type: string
|
||||
* description: 客户电话
|
||||
* insurance_amount:
|
||||
* type: number
|
||||
* format: decimal
|
||||
* description: 保险金额
|
||||
* premium_amount:
|
||||
* type: number
|
||||
* format: decimal
|
||||
* description: 保费金额
|
||||
* start_date:
|
||||
* type: string
|
||||
* format: date
|
||||
* description: 保险起期
|
||||
* end_date:
|
||||
* type: string
|
||||
* format: date
|
||||
* description: 保险止期
|
||||
* completion_date:
|
||||
* type: string
|
||||
* format: date
|
||||
* description: 结项日期
|
||||
* status:
|
||||
* type: string
|
||||
* enum: [pending, approved, rejected, completed]
|
||||
* default: pending
|
||||
* description: 状态
|
||||
* review_comments:
|
||||
* type: string
|
||||
* description: 审核意见
|
||||
* attachments:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* file_name:
|
||||
* type: string
|
||||
* file_path:
|
||||
* type: string
|
||||
* file_size:
|
||||
* type: integer
|
||||
* file_type:
|
||||
* type: string
|
||||
* responses:
|
||||
* 201:
|
||||
* description: 监管任务结项记录创建成功
|
||||
* 400:
|
||||
* description: 参数错误或记录已存在
|
||||
*/
|
||||
router.post('/', jwtAuth, checkPermission('regulatory_task', 'create'),
|
||||
regulatoryTaskCompletionController.createTaskCompletion
|
||||
);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/regulatory-task-completion/{id}:
|
||||
* put:
|
||||
* summary: 更新监管任务结项记录
|
||||
* tags: [RegulatoryTaskCompletion]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: 记录ID
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* application_no:
|
||||
* type: string
|
||||
* policy_no:
|
||||
* type: string
|
||||
* product_name:
|
||||
* type: string
|
||||
* customer_name:
|
||||
* type: string
|
||||
* customer_phone:
|
||||
* type: string
|
||||
* insurance_amount:
|
||||
* type: number
|
||||
* format: decimal
|
||||
* premium_amount:
|
||||
* type: number
|
||||
* format: decimal
|
||||
* start_date:
|
||||
* type: string
|
||||
* format: date
|
||||
* end_date:
|
||||
* type: string
|
||||
* format: date
|
||||
* completion_date:
|
||||
* type: string
|
||||
* format: date
|
||||
* status:
|
||||
* type: string
|
||||
* enum: [pending, approved, rejected, completed]
|
||||
* review_comments:
|
||||
* type: string
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 监管任务结项记录更新成功
|
||||
* 404:
|
||||
* description: 记录不存在
|
||||
*/
|
||||
router.put('/:id', jwtAuth, checkPermission('regulatory_task', 'update'),
|
||||
regulatoryTaskCompletionController.updateTaskCompletion
|
||||
);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/regulatory-task-completion/{id}:
|
||||
* delete:
|
||||
* summary: 删除监管任务结项记录
|
||||
* tags: [RegulatoryTaskCompletion]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: 记录ID
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 监管任务结项记录删除成功
|
||||
* 404:
|
||||
* description: 记录不存在
|
||||
*/
|
||||
router.delete('/:id', jwtAuth, checkPermission('regulatory_task', 'delete'),
|
||||
regulatoryTaskCompletionController.deleteTaskCompletion
|
||||
);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/regulatory-task-completion/{id}/review:
|
||||
* patch:
|
||||
* summary: 审核监管任务结项记录
|
||||
* tags: [RegulatoryTaskCompletion]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: 记录ID
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* required:
|
||||
* - status
|
||||
* - reviewer_name
|
||||
* properties:
|
||||
* status:
|
||||
* type: string
|
||||
* enum: [pending, approved, rejected, completed]
|
||||
* description: 审核状态
|
||||
* review_comments:
|
||||
* type: string
|
||||
* description: 审核意见
|
||||
* reviewer_name:
|
||||
* type: string
|
||||
* description: 审核人员
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 监管任务结项记录审核成功
|
||||
* 400:
|
||||
* description: 无效的状态值
|
||||
* 404:
|
||||
* description: 记录不存在
|
||||
*/
|
||||
router.patch('/:id/review', jwtAuth, checkPermission('regulatory_task', 'review'),
|
||||
regulatoryTaskCompletionController.reviewTaskCompletion
|
||||
);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/regulatory-task-completion/stats:
|
||||
* get:
|
||||
* summary: 获取监管任务结项统计数据
|
||||
* tags: [RegulatoryTaskCompletion]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 成功获取统计数据
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* code:
|
||||
* type: integer
|
||||
* example: 200
|
||||
* message:
|
||||
* type: string
|
||||
* example: success
|
||||
* data:
|
||||
* type: object
|
||||
* properties:
|
||||
* statusStats:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* status:
|
||||
* type: string
|
||||
* count:
|
||||
* type: integer
|
||||
* monthlyStats:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* month:
|
||||
* type: string
|
||||
* count:
|
||||
* type: integer
|
||||
* total_amount:
|
||||
* type: number
|
||||
* productStats:
|
||||
* type: array
|
||||
* items:
|
||||
* type: object
|
||||
* properties:
|
||||
* product_name:
|
||||
* type: string
|
||||
* count:
|
||||
* type: integer
|
||||
* total_amount:
|
||||
* type: number
|
||||
*/
|
||||
router.get('/stats', jwtAuth, checkPermission('regulatory_task', 'read'),
|
||||
regulatoryTaskCompletionController.getTaskCompletionStats
|
||||
);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user