This commit is contained in:
chenqiang 2025-09-10 10:37:59 +08:00
parent b0d469b132
commit 0fe59e1b90
2 changed files with 272 additions and 172 deletions

View File

@ -9,7 +9,7 @@ const runAsync = (db, sql, params = []) => {
}; };
// 系统数据库表结构 // 系统数据库表结构
systemSchema = { const systemSchema = {
config: ` config: `
CREATE TABLE IF NOT EXISTS config ( CREATE TABLE IF NOT EXISTS config (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
@ -281,7 +281,7 @@ const plainPassword = "t2t6a9"; // 明文密码变量定义
// 注意在实际初始化数据库时需要使用bcryptjs对plainPassword进行哈希 // 注意在实际初始化数据库时需要使用bcryptjs对plainPassword进行哈希
// 这里只定义默认数据结构哈希操作应在index.js中的初始化函数中完成 // 这里只定义默认数据结构哈希操作应在index.js中的初始化函数中完成
defaultData = { const defaultData = {
config: [ config: [
{ key: "admin_password", value: plainPassword, protected: 1 }, { key: "admin_password", value: plainPassword, protected: 1 },
{ key: "question_bank_version", value: "1", protected: 1 }, { key: "question_bank_version", value: "1", protected: 1 },

View File

@ -135,66 +135,167 @@ export default {
isLoading: false // isLoading: false //
} }
}, },
// mounted
mounted () { mounted () {
console.log('======= WelcomeView 组件挂载开始 =======')
console.log('当前时间:', new Date().toLocaleString())
// electronAPI
console.log('window.electronAPI 对象:', window.electronAPI ? '可用' : '不可用')
if (window.electronAPI) {
console.log('electronAPI 方法列表:', Object.keys(window.electronAPI).join(', '))
console.log('checkDatabaseInitialized 方法:', typeof window.electronAPI.checkDatabaseInitialized)
console.log('initializeDatabase 方法:', typeof window.electronAPI.initializeDatabase)
console.log('checkUserDbExists 方法:', typeof window.electronAPI.checkUserDbExists)
console.log('initializeUserDatabaseSilently 方法:', typeof window.electronAPI.initializeUserDatabaseSilently)
}
this.checkDatabaseStatus() this.checkDatabaseStatus()
this.checkAndInitializeUserDb() this.checkAndInitializeUserDb()
console.log('======= WelcomeView 组件挂载完成 =======')
}, },
methods: {
// // checkAndInitializeUserDb
async checkAndInitializeUserDb () { async checkAndInitializeUserDb () {
try { try {
console.log('\n----- 开始检查和初始化用户数据库 -----')
// electronAPI
if (!window.electronAPI) {
console.error('错误: window.electronAPI 不存在')
return
}
console.log('检查user.db是否存在...') console.log('检查user.db是否存在...')
const userDbExists = await window.electronAPI.checkUserDbExists() const startTime = Date.now()
console.log('user.db存在状态:', userDbExists)
// Promise
const userDbExists = await Promise.race([
window.electronAPI.checkUserDbExists(),
new Promise((_, reject) => setTimeout(() => reject(new Error('checkUserDbExists 超时')), 5000))
])
const duration = Date.now() - startTime
console.log(`user.db存在状态: ${userDbExists} (耗时: ${duration}ms)`)
if (!userDbExists) { if (!userDbExists) {
console.log('user.db不存在开始静默初始化...') console.log('user.db不存在开始静默初始化...')
await window.electronAPI.initializeUserDatabaseSilently() const initStartTime = Date.now()
console.log('user.db静默初始化完成')
// Promise
await Promise.race([
window.electronAPI.initializeUserDatabaseSilently(),
new Promise((_, reject) => setTimeout(() => reject(new Error('initializeUserDatabaseSilently 超时')), 10000))
])
const initDuration = Date.now() - initStartTime
console.log(`user.db静默初始化完成 (耗时: ${initDuration}ms)`)
} }
console.log('----- 检查和初始化用户数据库完成 -----')
} catch (error) { } catch (error) {
console.error('检查或初始化user.db失败:', error) console.error('检查或初始化user.db失败:', error)
console.error('错误详情:', error.stack || error.message)
// //
} }
}, },
// checkDatabaseStatus
async checkDatabaseStatus () { async checkDatabaseStatus () {
try { try {
console.log('\n----- 开始检查数据库初始化状态 -----')
// electronAPI
if (!window.electronAPI) {
console.error('错误: window.electronAPI 不存在')
return
}
console.log('组件挂载 - 开始检查数据库初始化状态') console.log('组件挂载 - 开始检查数据库初始化状态')
const initialized = await window.electronAPI.checkDatabaseInitialized() const startTime = Date.now()
console.log('组件挂载 - 数据库初始化状态检查完成:', initialized)
this.isDatabaseInitialized = initialized // Promise
const initialized = await Promise.race([
window.electronAPI.checkDatabaseInitialized(),
new Promise((_, reject) => setTimeout(() => reject(new Error('checkDatabaseInitialized 超时')), 5000))
])
const duration = Date.now() - startTime
console.log(`组件挂载 - 数据库初始化状态检查完成: ${initialized} (耗时: ${duration}ms)`)
//
console.log('初始化状态返回值类型:', typeof initialized)
if (initialized === undefined) {
console.warn('警告: 初始化状态返回undefined可能是IPC调用失败')
}
this.isDatabaseInitialized = initialized === true
console.log(`更新isDatabaseInitialized状态为: ${this.isDatabaseInitialized}`)
console.log('----- 检查数据库初始化状态完成 -----')
} catch (error) { } catch (error) {
console.error('检查数据库初始化状态失败:', error) console.error('检查数据库初始化状态失败:', error)
console.error('错误详情:', error.stack || error.message)
Message.error('检查数据库初始化状态失败,请重试') Message.error('检查数据库初始化状态失败,请重试')
} }
}, },
// initializeDatabase
async initializeDatabase () { async initializeDatabase () {
try { try {
console.log('\n----- 开始数据库初始化流程 -----')
// electronAPI
if (!window.electronAPI) {
console.error('错误: window.electronAPI 不存在')
Message.error('初始化失败: 无法连接到后端服务')
return
}
console.log('初始化数据库 - 开始') console.log('初始化数据库 - 开始')
this.isInitializing = true this.isInitializing = true
console.log('设置isInitializing状态为:', this.isInitializing)
Message.info('开始初始化数据库...') Message.info('开始初始化数据库...')
const result = await window.electronAPI.initializeDatabase() const startTime = Date.now()
console.log('初始化数据库 - 结果:', result)
// Promise
const result = await Promise.race([
window.electronAPI.initializeDatabase(),
new Promise((_, reject) => setTimeout(() => reject(new Error('initializeDatabase 超时')), 30000))
])
const duration = Date.now() - startTime
console.log(`初始化数据库 - 结果:`, result, `(耗时: ${duration}ms)`)
//
console.log('初始化结果类型:', typeof result)
if (typeof result === 'object') {
console.log('初始化结果结构:', Object.keys(result || {}).join(', '))
}
// truesuccess // truesuccess
if (result === true || (result && result.success)) { if (result === true || (result && result.success)) {
Message.success('数据库初始化成功!') Message.success('数据库初始化成功!')
console.log('初始化数据库 - 成功,更新初始化状态') console.log('初始化数据库 - 成功,更新初始化状态')
this.isDatabaseInitialized = true this.isDatabaseInitialized = true
console.log('更新isDatabaseInitialized状态为:', this.isDatabaseInitialized)
} else { } else {
const errorMessage = result && result.error ? result.error : '未知错误' const errorMessage = result && result.error ? result.error : '未知错误'
Message.error(`数据库初始化失败: ${errorMessage}`) Message.error(`数据库初始化失败: ${errorMessage}`)
console.error('初始化数据库 - 失败:', errorMessage) console.error('初始化数据库 - 失败:', errorMessage)
} }
console.log('----- 数据库初始化流程完成 -----')
} catch (error) { } catch (error) {
console.error('数据库初始化失败:', error) console.error('数据库初始化失败:', error)
console.error('错误详情:', error.stack || error.message)
Message.error(`数据库初始化失败: ${error.message || '未知错误'}`) Message.error(`数据库初始化失败: ${error.message || '未知错误'}`)
} finally { } finally {
console.log('初始化数据库 - 结束') console.log('初始化数据库 - 结束')
this.isInitializing = false this.isInitializing = false
console.log('设置isInitializing状态为:', this.isInitializing)
} }
}, },
@ -328,7 +429,6 @@ export default {
}) })
}, },
} }
}
</script> </script>
<style scoped> <style scoped>