完善保险端前后端和养殖端小程序

This commit is contained in:
xuqiuyun
2025-09-22 19:09:45 +08:00
parent 02a25515a9
commit 325c114c38
256 changed files with 48348 additions and 4444 deletions

View File

@@ -0,0 +1,115 @@
const { DataTypes } = require('sequelize');
const { sequelize } = require('../config/database');
/**
* 待安装任务模型
* 用于管理保险设备安装任务相关的数据
*/
const InstallationTask = sequelize.define('InstallationTask', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
comment: '主键ID'
},
applicationNumber: {
type: DataTypes.STRING(50),
allowNull: false,
field: 'application_number',
comment: '申请单号'
},
policyNumber: {
type: DataTypes.STRING(50),
allowNull: false,
field: 'policy_number',
comment: '保单编号'
},
productName: {
type: DataTypes.STRING(100),
allowNull: false,
field: 'product_name',
comment: '产品名称'
},
customerName: {
type: DataTypes.STRING(50),
allowNull: false,
field: 'customer_name',
comment: '客户姓名'
},
idType: {
type: DataTypes.ENUM('身份证', '护照', '军官证', '士兵证', '港澳台居民居住证', '其他'),
allowNull: false,
defaultValue: '身份证',
field: 'id_type',
comment: '证件类型'
},
idNumber: {
type: DataTypes.STRING(30),
allowNull: false,
field: 'id_number',
comment: '证件号码'
},
livestockSupplyType: {
type: DataTypes.STRING(100),
allowNull: true,
field: 'livestock_supply_type',
comment: '养殖生资种类'
},
pendingDevices: {
type: DataTypes.TEXT,
allowNull: true,
field: 'pending_devices',
comment: '待安装设备JSON格式存储'
},
installationStatus: {
type: DataTypes.ENUM('待安装', '安装中', '已安装', '安装失败', '已取消'),
allowNull: false,
defaultValue: '待安装',
field: 'installation_status',
comment: '安装状态'
},
taskGeneratedTime: {
type: DataTypes.DATE,
allowNull: true,
field: 'task_generated_time',
comment: '生成安装任务时间'
},
installationCompletedTime: {
type: DataTypes.DATE,
allowNull: true,
field: 'installation_completed_time',
comment: '安装完成生效时间'
},
priority: {
type: DataTypes.ENUM('低', '中', '高', '紧急'),
allowNull: false,
defaultValue: '中',
comment: '任务优先级'
},
assignedTo: {
type: DataTypes.INTEGER,
allowNull: true,
field: 'assigned_technician',
comment: '分配给用户ID'
},
createdBy: {
type: DataTypes.INTEGER,
allowNull: true,
field: 'created_by',
comment: '创建人ID'
},
updatedBy: {
type: DataTypes.INTEGER,
allowNull: true,
field: 'updated_by',
comment: '更新人ID'
}
}, {
tableName: 'installation_tasks',
timestamps: true,
underscored: true,
createdAt: 'created_at',
updatedAt: 'updated_at'
});
module.exports = InstallationTask;

View File

@@ -0,0 +1,154 @@
const { DataTypes } = require('sequelize');
const { sequelize } = require('../config/database');
/**
* 监管任务模型
* 用于管理保险监管相关的任务数据
*/
const SupervisoryTask = sequelize.define('SupervisoryTask', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
comment: '主键ID'
},
applicationNumber: {
type: DataTypes.STRING(50),
allowNull: false,
unique: true,
comment: '申请单号'
},
policyNumber: {
type: DataTypes.STRING(50),
allowNull: false,
comment: '保单编号'
},
productName: {
type: DataTypes.STRING(100),
allowNull: false,
comment: '产品名称'
},
insurancePeriod: {
type: DataTypes.STRING(50),
allowNull: false,
comment: '保险周期'
},
customerName: {
type: DataTypes.STRING(50),
allowNull: false,
comment: '客户姓名'
},
idType: {
type: DataTypes.ENUM('身份证', '护照', '军官证', '士兵证', '港澳台居民居住证', '其他'),
allowNull: false,
defaultValue: '身份证',
comment: '证件类型'
},
idNumber: {
type: DataTypes.STRING(30),
allowNull: false,
comment: '证件号码'
},
applicableSupplies: {
type: DataTypes.TEXT,
allowNull: true,
comment: '适用生资JSON格式存储'
},
supervisorySuppliesQuantity: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0,
comment: '监管生资数量'
},
taskStatus: {
type: DataTypes.ENUM('待处理', '处理中', '已完成', '已取消'),
allowNull: false,
defaultValue: '待处理',
comment: '任务状态'
},
priority: {
type: DataTypes.ENUM('低', '中', '高', '紧急'),
allowNull: false,
defaultValue: '中',
comment: '任务优先级'
},
assignedTo: {
type: DataTypes.INTEGER,
allowNull: true,
comment: '分配给用户ID'
},
dueDate: {
type: DataTypes.DATE,
allowNull: true,
comment: '截止日期'
},
completedAt: {
type: DataTypes.DATE,
allowNull: true,
comment: '完成时间'
},
notes: {
type: DataTypes.TEXT,
allowNull: true,
comment: '备注信息'
},
createdBy: {
type: DataTypes.INTEGER,
allowNull: true,
comment: '创建人ID'
},
updatedBy: {
type: DataTypes.INTEGER,
allowNull: true,
comment: '更新人ID'
}
}, {
tableName: 'supervisory_tasks',
timestamps: true,
underscored: true,
indexes: [
{
name: 'idx_application_number',
fields: ['applicationNumber']
},
{
name: 'idx_policy_number',
fields: ['policyNumber']
},
{
name: 'idx_customer_name',
fields: ['customerName']
},
{
name: 'idx_task_status',
fields: ['taskStatus']
},
{
name: 'idx_created_at',
fields: ['createdAt']
}
]
});
// 定义关联关系
SupervisoryTask.associate = (models) => {
// 监管任务属于用户(分配给)
SupervisoryTask.belongsTo(models.User, {
foreignKey: 'assignedTo',
as: 'assignedUser'
});
// 监管任务属于创建者
SupervisoryTask.belongsTo(models.User, {
foreignKey: 'createdBy',
as: 'creator'
});
// 监管任务属于更新者
SupervisoryTask.belongsTo(models.User, {
foreignKey: 'updatedBy',
as: 'updater'
});
};
module.exports = SupervisoryTask;

View File

@@ -1,5 +1,5 @@
// 导入数据库配置和所有模型
const { sequelize } = require('../config/database');
const { sequelize } = require('../config/database');
const User = require('./User');
const Role = require('./Role');
const InsuranceApplication = require('./InsuranceApplication');
@@ -7,6 +7,8 @@ const InsuranceType = require('./InsuranceType');
const Policy = require('./Policy');
const Claim = require('./Claim');
const Menu = require('./Menu');
const SupervisoryTask = require('./SupervisoryTask');
const InstallationTask = require('./InstallationTask');
// 定义模型关联关系
@@ -54,6 +56,34 @@ Policy.hasMany(Claim, {
as: 'claims'
});
// 监管任务关联
SupervisoryTask.belongsTo(User, {
foreignKey: 'assignedTo',
as: 'assignedUser'
});
SupervisoryTask.belongsTo(User, {
foreignKey: 'createdBy',
as: 'creator'
});
SupervisoryTask.belongsTo(User, {
foreignKey: 'updatedBy',
as: 'updater'
});
// 待安装任务关联
InstallationTask.belongsTo(User, {
foreignKey: 'assignedTo',
as: 'technician'
});
InstallationTask.belongsTo(User, {
foreignKey: 'createdBy',
as: 'creator'
});
InstallationTask.belongsTo(User, {
foreignKey: 'updatedBy',
as: 'updater'
});
// 导出所有模型
module.exports = {
sequelize,
@@ -63,5 +93,7 @@ module.exports = {
InsuranceType,
Policy,
Claim,
Menu
Menu,
SupervisoryTask,
InstallationTask
};