electron-vue-exam-single/electron/service/dictService.js

313 lines
8.1 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.

// 1. 首先,在导入部分添加新函数
import {
getDictItemsWithTypes,
getDictTypes,
addDictType,
addDictItem,
getDictTypeById,
getDictItemById,
getDictItemsByTypeCode,
updateDictType,
updateDictItem,
deleteDictType,
deleteDictItem,
checkParentCodeExists, // 添加这一行
hasChildReferences, // 添加这一行
} from "../db/dict.js";
/**
* 服务层:查询字典项及其类型
* @returns {Promise<Array>} 字典项列表
*/
export async function fetchDictItemsWithTypes() {
try {
return await getDictItemsWithTypes();
} catch (error) {
console.error("服务层: 查询字典项及其类型失败", error);
throw error;
}
}
/**
* 服务层:查询字典类型列表
* @returns {Promise<Array>} 字典类型列表
*/
export async function fetchDictTypes() {
try {
return await getDictTypes();
} catch (error) {
console.error("服务层: 查询字典类型列表失败", error);
throw error;
}
}
/**
* 服务层:添加字典类型
* @param {Object} typeData 字典类型数据
* @returns {Promise<Object>} 添加的字典类型
*/
export async function createDictType(typeData) {
try {
return await addDictType(typeData);
} catch (error) {
console.error("服务层: 添加字典类型失败", error);
throw error;
}
}
/**
* 服务层:添加字典项
* @param {Object} itemData 字典项数据
* @returns {Promise<Object>} 添加的字典项
*/
export async function createDictItem(itemData) {
try {
return await addDictItem(itemData);
} catch (error) {
console.error("服务层: 添加字典项失败", error);
throw error;
}
}
/**
* 服务层根据ID查询字典类型
* @param {number} id 字典类型ID
* @returns {Promise<Object|null>} 字典类型数据
*/
export async function fetchDictTypeById(id) {
try {
return await getDictTypeById(id);
} catch (error) {
console.error("服务层: 根据ID查询字典类型失败", error);
throw error;
}
}
/**
* 服务层根据ID查询字典项
* @param {number} id 字典项ID
* @returns {Promise<Object|null>} 字典项数据
*/
export async function fetchDictItemById(id) {
try {
return await getDictItemById(id);
} catch (error) {
console.error("服务层: 根据ID查询字典项失败", error);
throw error;
}
}
/**
* 服务层:根据类型编码查询字典项
* @param {string} typeCode 类型编码
* @param {number} isActive 是否激活(1=激活, 0=未激活, 不传=全部)
* @returns {Promise<Array>} 字典项列表
*/
export async function fetchDictItemsByTypeCode(typeCode, isActive = undefined) {
try {
return await getDictItemsByTypeCode(typeCode, isActive);
} catch (error) {
console.error("服务层: 根据类型编码查询字典项失败", error);
throw error;
}
}
/**
* 服务层:更新字典类型
* @param {number} id 字典类型ID
* @param {Object} typeData 更新的数据
* @returns {Promise<boolean>} 是否更新成功
*/
export async function modifyDictType(id, typeData) {
try {
return await updateDictType(id, typeData);
} catch (error) {
console.error("服务层: 更新字典类型失败", error);
throw error;
}
}
/**
* 服务层:更新字典项
* @param {number} id 字典项ID
* @param {Object} itemData 更新的数据
* @returns {Promise<boolean>} 是否更新成功
*/
export async function modifyDictItem(id, itemData) {
try {
return await updateDictItem(id, itemData);
} catch (error) {
console.error("服务层: 更新字典项失败", error);
throw error;
}
}
/**
* 服务层:删除字典类型
* @param {number} id 字典类型ID
* @returns {Promise<boolean>} 是否删除成功
*/
export async function removeDictType(id) {
try {
return await deleteDictType(id);
} catch (error) {
console.error("服务层: 删除字典类型失败", error);
throw error;
}
}
/**
* 服务层:删除字典项
* @param {number} id 字典项ID
* @returns {Promise<boolean>} 是否删除成功
*/
export async function removeDictItem(id) {
try {
return await deleteDictItem(id);
} catch (error) {
console.error("服务层: 删除字典项失败", error);
throw error;
}
}
// 2. 在文件末尾添加新函数的服务层封装
/**
* 服务层:检查父级编码是否存在
* @param {string} parentCode 父级编码
* @returns {Promise<boolean>} 是否存在
*/
export async function checkDictParentCode(parentCode) {
try {
return await checkParentCodeExists(parentCode);
} catch (error) {
console.error("服务层: 检查父级编码失败", error);
throw error;
}
}
/**
* 服务层:检查是否有子引用
* @param {string} itemCode 字典项编码
* @returns {Promise<boolean>} 是否有子引用
*/
export async function checkDictChildReferences(itemCode) {
try {
return await hasChildReferences(itemCode);
} catch (error) {
console.error("服务层: 检查子引用失败", error);
throw error;
}
}
export async function initDictIpc(ipcMain) {
// 字典管理相关IPC - 使用正确的函数名称
ipcMain.handle("dict-fetch-types", async () => {
try {
return await fetchDictTypes();
} catch (error) {
console.error("Failed to fetch dict types:", error);
throw error;
}
});
ipcMain.handle(
"dict-fetch-items-by-type",
async (event, typeCode, isActive = undefined) => {
try {
return await fetchDictItemsByTypeCode(typeCode, isActive);
} catch (error) {
console.error(`Failed to fetch dict items by type ${typeCode}:`, error);
throw error;
}
}
);
ipcMain.handle("dict-create-type", async (event, dictType) => {
try {
return await createDictType(dictType);
} catch (error) {
console.error("Failed to create dict type:", error);
throw error;
}
});
// 将 updateDictType 改为 modifyDictType
ipcMain.handle("dict-update-type", async (event, dictType) => {
try {
return await modifyDictType(dictType.id, dictType);
} catch (error) {
console.error("Failed to update dict type:", error);
throw error;
}
});
// 将 deleteDictType 改为 removeDictType
ipcMain.handle("dict-delete-type", async (event, typeCode) => {
try {
return await removeDictType(typeCode);
} catch (error) {
console.error(`Failed to delete dict type ${typeCode}:`, error);
throw error;
}
});
ipcMain.handle("dict-create-item", async (event, dictItem) => {
try {
return await createDictItem(dictItem);
} catch (error) {
console.error("Failed to create dict item:", error);
throw error;
}
});
// 将 updateDictItem 改为 modifyDictItem
ipcMain.handle("dict-update-item", async (event, dictItem) => {
try {
return await modifyDictItem(dictItem.id, dictItem);
} catch (error) {
console.error("Failed to update dict item:", error);
throw error;
}
});
// 将 deleteDictItem 改为 removeDictItem
ipcMain.handle("dict-delete-item", async (event, id) => {
try {
return await removeDictItem(id);
} catch (error) {
console.error(`Failed to delete dict item ${id}:`, error);
throw error;
}
});
// 将 fetchAllDictItemsWithTypes 改为 fetchDictItemsWithTypes
ipcMain.handle("dict-fetch-all-items-with-types", async () => {
try {
return await fetchDictItemsWithTypes();
} catch (error) {
console.error("Failed to fetch all dict items with types:", error);
throw error;
}
});
// 添加在setupIpcMain函数中
// 检查parent_code是否存在
ipcMain.handle("dict-check-parent-code", async (event, parentCode) => {
try {
return await checkDictParentCode(parentCode); // 修改这一行
} catch (error) {
console.error("检查parent_code失败:", error);
throw error;
}
});
// 检查是否有子引用
ipcMain.handle("dict-check-child-references", async (event, itemCode) => {
try {
return await checkDictChildReferences(itemCode); // 修改这一行
} catch (error) {
console.error("检查子引用失败:", error);
throw error;
}
});
}