初始化IDC设备管理系统项目

This commit is contained in:
zhang1106
2025-12-18 10:45:13 +08:00
commit 80d9c42726
28 changed files with 8219 additions and 0 deletions
+82
View File
@@ -0,0 +1,82 @@
const { DataTypes } = require('sequelize');
const { sequelize } = require('../db');
const Rack = require('./Rack');
const Device = sequelize.define('Device', {
deviceId: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false,
unique: true
},
name: {
type: DataTypes.STRING,
allowNull: false
},
type: {
type: DataTypes.STRING,
allowNull: false
},
model: {
type: DataTypes.STRING,
allowNull: false
},
serialNumber: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
rackId: {
type: DataTypes.STRING,
allowNull: false,
references: {
model: Rack,
key: 'rackId'
}
},
position: {
type: DataTypes.INTEGER,
allowNull: false // 设备在机柜中的位置(U数)
},
height: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 1 // 设备高度(U数)
},
powerConsumption: {
type: DataTypes.FLOAT,
allowNull: false
},
status: {
type: DataTypes.STRING,
defaultValue: 'running'
},
purchaseDate: {
type: DataTypes.DATE,
allowNull: false
},
warrantyExpiry: {
type: DataTypes.DATE,
allowNull: false
},
ipAddress: {
type: DataTypes.STRING
},
description: {
type: DataTypes.TEXT
},
customFields: {
type: DataTypes.JSON,
defaultValue: {},
allowNull: false
}
}, {
tableName: 'devices',
timestamps: true
});
// 关联关系
Device.belongsTo(Rack, { foreignKey: 'rackId' });
Rack.hasMany(Device, { foreignKey: 'rackId' });
module.exports = Device;
+49
View File
@@ -0,0 +1,49 @@
const { DataTypes } = require('sequelize');
const { sequelize } = require('../db');
const DeviceField = sequelize.define('DeviceField', {
fieldId: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
},
fieldName: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
displayName: {
type: DataTypes.STRING,
allowNull: false
},
fieldType: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 'string'
},
required: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: false
},
options: {
type: DataTypes.JSON,
allowNull: true
},
order: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0
},
visible: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: true
}
}, {
tableName: 'deviceFields',
timestamps: true
});
module.exports = DeviceField;
+50
View File
@@ -0,0 +1,50 @@
const { DataTypes } = require('sequelize');
const { sequelize } = require('../db');
const Room = require('./Room');
const Rack = sequelize.define('Rack', {
rackId: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false,
unique: true
},
name: {
type: DataTypes.STRING,
allowNull: false
},
height: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 42 // 标准机柜高度(U数)
},
maxPower: {
type: DataTypes.FLOAT,
allowNull: false
},
currentPower: {
type: DataTypes.FLOAT,
defaultValue: 0
},
status: {
type: DataTypes.STRING,
defaultValue: 'active'
},
roomId: {
type: DataTypes.STRING,
allowNull: false,
references: {
model: Room,
key: 'roomId'
}
}
}, {
tableName: 'racks',
timestamps: true
});
// 关联关系
Rack.belongsTo(Room, { foreignKey: 'roomId' });
Room.hasMany(Rack, { foreignKey: 'roomId' });
module.exports = Rack;
+39
View File
@@ -0,0 +1,39 @@
const { DataTypes } = require('sequelize');
const { sequelize } = require('../db');
const Room = sequelize.define('Room', {
roomId: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false,
unique: true
},
name: {
type: DataTypes.STRING,
allowNull: false
},
location: {
type: DataTypes.STRING,
allowNull: false
},
area: {
type: DataTypes.FLOAT,
allowNull: false
},
capacity: {
type: DataTypes.INTEGER,
allowNull: false
},
status: {
type: DataTypes.STRING,
defaultValue: 'active'
},
description: {
type: DataTypes.TEXT
}
}, {
tableName: 'rooms',
timestamps: true
});
module.exports = Room;