优化验证报名信息对话框车牌号输入布局,使标签和输入框在同一行显示

This commit is contained in:
Yvan
2026-04-09 15:37:40 +08:00
parent 89960b1cb8
commit 4920620d2c
48 changed files with 4804 additions and 3916 deletions
+9
View File
@@ -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'
}
});
+35
View File
@@ -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;
+6 -1
View File
@@ -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
View File
@@ -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;
+7 -2
View File
@@ -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
};