136 lines
2.9 KiB
JavaScript
136 lines
2.9 KiB
JavaScript
const { DataTypes } = require('sequelize');
|
||
const { sequelize } = require('../config/database');
|
||
|
||
const Project = sequelize.define('Project', {
|
||
id: {
|
||
type: DataTypes.INTEGER,
|
||
primaryKey: true,
|
||
autoIncrement: true
|
||
},
|
||
name: {
|
||
type: DataTypes.STRING(100),
|
||
allowNull: false,
|
||
comment: '项目名称'
|
||
},
|
||
status: {
|
||
type: DataTypes.ENUM('supervision', 'completed'),
|
||
allowNull: false,
|
||
defaultValue: 'supervision',
|
||
comment: '项目状态:supervision-监管中,completed-已结项'
|
||
},
|
||
farmName: {
|
||
type: DataTypes.STRING(200),
|
||
allowNull: false,
|
||
field: 'farmName',
|
||
comment: '养殖场名称'
|
||
},
|
||
supervisionObject: {
|
||
type: DataTypes.STRING(50),
|
||
allowNull: false,
|
||
field: 'supervisionObject',
|
||
comment: '监管对象'
|
||
},
|
||
supervisionQuantity: {
|
||
type: DataTypes.INTEGER,
|
||
allowNull: false,
|
||
defaultValue: 0,
|
||
field: 'supervisionQuantity',
|
||
comment: '监管数量'
|
||
},
|
||
supervisionPeriod: {
|
||
type: DataTypes.STRING(50),
|
||
allowNull: false,
|
||
field: 'supervisionPeriod',
|
||
comment: '监管周期'
|
||
},
|
||
supervisionAmount: {
|
||
type: DataTypes.DECIMAL(15, 2),
|
||
allowNull: false,
|
||
defaultValue: 0.00,
|
||
field: 'supervisionAmount',
|
||
comment: '监管金额'
|
||
},
|
||
startTime: {
|
||
type: DataTypes.DATEONLY,
|
||
allowNull: false,
|
||
field: 'startTime',
|
||
comment: '起始时间'
|
||
},
|
||
endTime: {
|
||
type: DataTypes.DATEONLY,
|
||
allowNull: false,
|
||
field: 'endTime',
|
||
comment: '结束时间'
|
||
},
|
||
earTag: {
|
||
type: DataTypes.INTEGER,
|
||
allowNull: false,
|
||
defaultValue: 0,
|
||
field: 'earTag',
|
||
comment: '耳标数量'
|
||
},
|
||
collar: {
|
||
type: DataTypes.INTEGER,
|
||
allowNull: false,
|
||
defaultValue: 0,
|
||
field: 'collar',
|
||
comment: '项圈数量'
|
||
},
|
||
host: {
|
||
type: DataTypes.INTEGER,
|
||
allowNull: false,
|
||
defaultValue: 0,
|
||
field: 'host',
|
||
comment: '主机数量'
|
||
},
|
||
loanOfficer: {
|
||
type: DataTypes.STRING(100),
|
||
allowNull: true,
|
||
field: 'loanOfficer',
|
||
comment: '贷款专员'
|
||
},
|
||
description: {
|
||
type: DataTypes.TEXT,
|
||
allowNull: true,
|
||
comment: '项目描述'
|
||
},
|
||
createdBy: {
|
||
type: DataTypes.INTEGER,
|
||
allowNull: true,
|
||
field: 'createdBy',
|
||
comment: '创建人ID'
|
||
},
|
||
updatedBy: {
|
||
type: DataTypes.INTEGER,
|
||
allowNull: true,
|
||
field: 'updatedBy',
|
||
comment: '更新人ID'
|
||
}
|
||
}, {
|
||
tableName: 'projects',
|
||
timestamps: true,
|
||
underscored: false,
|
||
createdAt: 'createdAt',
|
||
updatedAt: 'updatedAt',
|
||
comment: '项目清单表'
|
||
});
|
||
|
||
// 定义关联关系
|
||
Project.associate = (models) => {
|
||
// 项目与用户关联(创建人)
|
||
Project.belongsTo(models.User, {
|
||
foreignKey: { name: 'createdBy', field: 'createdBy' },
|
||
targetKey: 'id',
|
||
as: 'creator'
|
||
});
|
||
|
||
// 项目与用户关联(更新人)
|
||
Project.belongsTo(models.User, {
|
||
foreignKey: { name: 'updatedBy', field: 'updatedBy' },
|
||
targetKey: 'id',
|
||
as: 'updater'
|
||
});
|
||
};
|
||
|
||
module.exports = Project;
|