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); }); });