完善保险端前后端和养殖端小程序
This commit is contained in:
115
insurance_backend/models/InstallationTask.js
Normal file
115
insurance_backend/models/InstallationTask.js
Normal 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;
|
||||
154
insurance_backend/models/SupervisoryTask.js
Normal file
154
insurance_backend/models/SupervisoryTask.js
Normal 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;
|
||||
@@ -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
|
||||
};
|
||||
Reference in New Issue
Block a user