refactor(前端): 使用useMemo和useCallback优化性能 perf(后端): 优化统计查询性能 style: 统一前端样式定义 build: 添加创建索引脚本
75 lines
1.6 KiB
JavaScript
75 lines
1.6 KiB
JavaScript
const { DataTypes } = require('sequelize');
|
|
const { sequelize } = require('../db');
|
|
const Consumable = require('./Consumable');
|
|
|
|
const ConsumableLog = sequelize.define('ConsumableLog', {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
primaryKey: true,
|
|
autoIncrement: true
|
|
},
|
|
consumableId: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
comment: '耗材ID'
|
|
},
|
|
consumableName: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false,
|
|
comment: '耗材名称'
|
|
},
|
|
operationType: {
|
|
type: DataTypes.ENUM('in', 'out', 'create', 'update', 'delete', 'adjust', 'import'),
|
|
allowNull: false,
|
|
comment: '操作类型'
|
|
},
|
|
quantity: {
|
|
type: DataTypes.INTEGER,
|
|
defaultValue: 0,
|
|
comment: '变动数量(入库为正,出库为负)'
|
|
},
|
|
previousStock: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
comment: '操作前库存'
|
|
},
|
|
currentStock: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
comment: '操作后库存'
|
|
},
|
|
operator: {
|
|
type: DataTypes.STRING,
|
|
comment: '操作人'
|
|
},
|
|
reason: {
|
|
type: DataTypes.STRING,
|
|
comment: '操作原因'
|
|
},
|
|
notes: {
|
|
type: DataTypes.TEXT,
|
|
comment: '备注'
|
|
},
|
|
relatedId: {
|
|
type: DataTypes.STRING,
|
|
comment: '关联ID(如订单号、盘点ID等)'
|
|
}
|
|
}, {
|
|
tableName: 'consumable_logs',
|
|
timestamps: true,
|
|
comment: '耗材操作日志表',
|
|
indexes: [
|
|
{ fields: ['consumableId'] },
|
|
{ fields: ['operationType'] },
|
|
{ fields: ['createdAt'] },
|
|
{ fields: ['consumableId', 'createdAt'] }
|
|
]
|
|
});
|
|
|
|
ConsumableLog.belongsTo(Consumable, {
|
|
foreignKey: 'consumableId',
|
|
onDelete: 'CASCADE'
|
|
});
|
|
|
|
module.exports = ConsumableLog;
|