exam11/src/preload.js
2025-08-27 22:32:59 +08:00

61 lines
3.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Preload script runs in a context that has access to both Node.js and browser APIs
const { contextBridge, ipcRenderer } = require('electron')
// 暴露API给渲染进程
contextBridge.exposeInMainWorld('electronAPI', {
// 数据库相关
checkDatabaseInitialized: () => ipcRenderer.invoke('check-database-initialized'),
initializeDatabase: () => ipcRenderer.invoke('initialize-database'),
// 配置服务相关接口
adminLogin: (credentials) => ipcRenderer.invoke('admin-login', credentials),
systemGetConfig: () => ipcRenderer.invoke('system-get-config'),
systemUpdateConfig: (config) => ipcRenderer.invoke('system-update-config', config),
systemIncreaseQuestionBankVersion: () => ipcRenderer.invoke('system-increase-question-band-version'),
configFetchAll: () => ipcRenderer.invoke('config-fetch-all'),
configFetchById: (id) => ipcRenderer.invoke('config-fetch-by-id', id),
configSave: (key, value) => ipcRenderer.invoke('config-save', { key, value }),
configDelete: (id) => ipcRenderer.invoke('config-delete', id),
// 字典服务相关接口
dictFetchTypes: () => ipcRenderer.invoke('dict-fetch-types'),
dictFetchItemsByType: (typeCode, isActive = undefined) => ipcRenderer.invoke('dict-fetch-items-by-type', typeCode, isActive),
dictCreateType: (dictType) => ipcRenderer.invoke('dict-create-type', dictType),
dictUpdateType: (dictType) => ipcRenderer.invoke('dict-update-type', dictType),
dictDeleteType: (typeCode) => ipcRenderer.invoke('dict-delete-type', typeCode),
dictCreateItem: (dictItem) => ipcRenderer.invoke('dict-create-item', dictItem),
dictUpdateItem: (dictItem) => ipcRenderer.invoke('dict-update-item', dictItem),
dictDeleteItem: (id) => ipcRenderer.invoke('dict-delete-item', id),
dictFetchAllItemsWithTypes: () => ipcRenderer.invoke('dict-fetch-all-items-with-types'),
dictCheckParentCode: (parentCode) => ipcRenderer.invoke('dict-check-parent-code', parentCode),
dictCheckChildReferences: (itemCode) => ipcRenderer.invoke('dict-check-child-references', itemCode),
// 试题服务相关接口
questionCreate: (questionData) => ipcRenderer.invoke('question-create', questionData),
questionFetchAll: () => ipcRenderer.invoke('question-fetch-all'),
questionFetchAllWithRelations: () => ipcRenderer.invoke('question-fetch-all-with-relations'),
questionUpdateDescription: (questionData) => ipcRenderer.invoke('question-update-description', questionData),
questionAddChoice: (choiceData) => ipcRenderer.invoke('question-add-choice', choiceData),
questionUpdateChoice: (choiceData) => ipcRenderer.invoke('question-update-choice', choiceData),
questionDeleteChoice: (id) => ipcRenderer.invoke('question-delete-choice', id),
questionAddFillBlank: (fillBlankData) => ipcRenderer.invoke('question-add-fill-blank', fillBlankData),
questionUpdateFillBlank: (fillBlankData) => ipcRenderer.invoke('question-update-fill-blank', fillBlankData),
questionDeleteFillBlank: (id) => ipcRenderer.invoke('question-delete-fill-blank', id),
questionGetQuestionWithChoices: (questionId) => ipcRenderer.invoke('question-get-question-with-choices', questionId),
questionGetQuestionWithFillBlanks: (questionId) => ipcRenderer.invoke('question-get-question-with-fill-blanks', questionId),
questionRemove: (questionId) => ipcRenderer.invoke('question-remove', questionId),
questionGetStatistics: () => ipcRenderer.invoke('question-get-statistics'),
questionGetQuestionById: (questionId) => ipcRenderer.invoke('question-get-question-by-id', questionId),
// 保留原有的ipcRenderer接口确保兼容性
ipcRenderer: {
invoke: (channel, data) => ipcRenderer.invoke(channel, data)
}
})
// 也保留原来的electron对象确保现有功能正常
contextBridge.exposeInMainWorld('electron', {
ipcRenderer: {
invoke: (channel, data) => ipcRenderer.invoke(channel, data)
}
})