57 lines
1.9 KiB
JavaScript
57 lines
1.9 KiB
JavaScript
const sqlite3 = require('sqlite3').verbose();
|
|||
|
|
const db = new sqlite3.Database('company_finance.db');
|
||
|
|
|
||
|
|
// 更新付款申请表,添加新字段
|
||
|
|
db.serialize(() => {
|
||
|
|
console.log('开始更新付款申请表...');
|
||
|
|
|
||
|
|
// 检查字段是否存在
|
||
|
|
db.all("PRAGMA table_info(payment_requests)", (err, rows) => {
|
||
|
|
if (err) {
|
||
|
|
console.error('获取表结构失败:', err.message);
|
||
|
|
db.close();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
const existingColumns = rows.map(row => row.name);
|
||
|
|
|
||
|
|
// 需要添加的字段
|
||
|
|
const columnsToAdd = [
|
||
|
|
{ name: 'payee_type', type: 'TEXT' }, // 收款单位类型:subcontractor/supplier/customer/other
|
||
|
|
{ name: 'payee_id', type: 'INTEGER' }, // 收款单位ID(当类型为subcontractor/supplier/customer时)
|
||
|
|
{ name: 'expense_type', type: 'TEXT' }, // 支出类型:company/project
|
||
|
|
{ name: 'expense_category', type: 'TEXT' }, // 支出分类
|
||
|
|
{ name: 'project_id', type: 'INTEGER' } // 关联项目ID(当expense_type为project时)
|
||
|
|
];
|
||
|
|
|
||
|
|
let addedCount = 0;
|
||
|
|
|
||
|
|
columnsToAdd.forEach(column => {
|
||
|
|
if (!existingColumns.includes(column.name)) {
|
||
|
|
db.run(`ALTER TABLE payment_requests ADD COLUMN ${column.name} ${column.type}`, (err) => {
|
||
|
|
if (err) {
|
||
|
|
console.error(`添加 ${column.name} 字段失败:`, err.message);
|
||
|
|
} else {
|
||
|
|
console.log(`✓ ${column.name} 字段添加成功`);
|
||
|
|
addedCount++;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
console.log(`✓ ${column.name} 字段已存在`);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// 关闭数据库连接
|
||
|
|
setTimeout(() => {
|
||
|
|
console.log(`\n共添加 ${addedCount} 个新字段`);
|
||
|
|
db.close((err) => {
|
||
|
|
if (err) {
|
||
|
|
console.error('关闭数据库失败:', err.message);
|
||
|
|
} else {
|
||
|
|
console.log('数据库连接已关闭');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}, 500);
|
||
|
|
});
|
||
|
|
});
|