优化验证报名信息对话框车牌号输入布局,使标签和输入框在同一行显示
This commit is contained in:
@@ -38,6 +38,15 @@ const Activity = sequelize.define('Activity', {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
defaultValue: 0,
|
||||
comment: '活动预算'
|
||||
},
|
||||
danmakuEnabled: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false,
|
||||
comment: '弹幕开关'
|
||||
},
|
||||
danmakuContent: {
|
||||
type: DataTypes.TEXT,
|
||||
comment: '弹幕内容JSON'
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
const sequelize = require('./db');
|
||||
|
||||
const Prize = sequelize.define('Prize', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true
|
||||
},
|
||||
activityId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
level: {
|
||||
type: DataTypes.ENUM('一等奖', '二等奖', '三等奖', '参与奖', '伴手礼'),
|
||||
allowNull: false
|
||||
},
|
||||
description: DataTypes.TEXT,
|
||||
image: DataTypes.STRING,
|
||||
quantity: {
|
||||
type: DataTypes.INTEGER,
|
||||
defaultValue: 1
|
||||
},
|
||||
sortOrder: {
|
||||
type: DataTypes.INTEGER,
|
||||
defaultValue: 0,
|
||||
comment: '排序值,数字越小越靠前'
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = Prize;
|
||||
@@ -20,7 +20,12 @@ const Sponsor = sequelize.define('Sponsor', {
|
||||
type: DataTypes.ENUM('title', 'sponsor'),
|
||||
defaultValue: 'sponsor'
|
||||
},
|
||||
link: DataTypes.STRING
|
||||
link: DataTypes.STRING,
|
||||
sortOrder: {
|
||||
type: DataTypes.INTEGER,
|
||||
defaultValue: 0,
|
||||
comment: '排序值,数字越小越靠前'
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = Sponsor;
|
||||
|
||||
+13
-10
@@ -1,14 +1,17 @@
|
||||
const { Sequelize } = require('sequelize');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const sequelize = new Sequelize(
|
||||
process.env.DB_NAME || 'quanyoumi',
|
||||
process.env.DB_USER || 'root',
|
||||
process.env.DB_PASSWORD || '',
|
||||
{
|
||||
host: process.env.DB_HOST || 'localhost',
|
||||
dialect: 'mysql',
|
||||
logging: false
|
||||
}
|
||||
);
|
||||
// 确保data目录存在
|
||||
const dataDir = path.join(__dirname, '../data');
|
||||
if (!fs.existsSync(dataDir)) {
|
||||
fs.mkdirSync(dataDir, { recursive: true });
|
||||
}
|
||||
|
||||
const sequelize = new Sequelize({
|
||||
dialect: 'sqlite',
|
||||
storage: path.join(dataDir, 'database.sqlite'),
|
||||
logging: false
|
||||
});
|
||||
|
||||
module.exports = sequelize;
|
||||
|
||||
@@ -4,11 +4,15 @@ const Registration = require('./Registration');
|
||||
const Expense = require('./Expense');
|
||||
const Photo = require('./Photo');
|
||||
const Sponsor = require('./Sponsor');
|
||||
const Prize = require('./Prize');
|
||||
const Admin = require('./Admin');
|
||||
|
||||
// 同步数据库
|
||||
sequelize.sync({ alter: true }).then(() => {
|
||||
console.log('数据库同步完成');
|
||||
// 使用 force: false 避免 SQLite alter 表时的约束冲突问题
|
||||
sequelize.sync({ force: false }).then(() => {
|
||||
console.log('✓ 数据库同步完成');
|
||||
}).catch(err => {
|
||||
console.error('✗ 数据库同步失败:', err.message);
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
@@ -18,5 +22,6 @@ module.exports = {
|
||||
Expense,
|
||||
Photo,
|
||||
Sponsor,
|
||||
Prize,
|
||||
Admin
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user