feat: 大量优化和bug修复

This commit is contained in:
2026-05-23 22:23:29 +08:00
parent 92b063c4c4
commit fc71e924e7
39 changed files with 1381 additions and 302 deletions
+116
View File
@@ -0,0 +1,116 @@
// app/stores/settings.ts - 用户自定义配置和系统配置状态管理
import { defineStore } from "pinia";
import { toast } from "vue-sonner";
import type {
ISystemConfigPublic,
ISystemConfigUpdateRequest,
IUserSettings,
IUserSettingsUpdateRequest
} from "@/interfaces";
import { SettingsService } from "@/services/settings_service";
const getApiErrorMessage = (error: unknown, fallback: string) => {
const data = (error as { data?: { msg?: string } })?.data;
return data?.msg || fallback;
};
export const useSettingsStore = defineStore("settings", () => {
/** 用户自定义配置,null 表示尚未加载 */
const userSettings = ref<IUserSettings | null>(null);
/** 系统配置(仅 superadmin),null 表示尚未加载或无权限 */
const systemConfig = ref<ISystemConfigPublic | null>(null);
/** 加载/保存中状态 */
const userLoading = ref(false); // 仅用于保存
const userFetching = ref(false); // 仅用于 GET 拉取
const sysLoading = ref(false);
const sysFetching = ref(false);
/** 拉取当前用户的自定义配置 */
const fetchUserSettings = async () => {
userFetching.value = true;
try {
const res = await SettingsService.getUserSettings();
if (res.data.code === 0 && res.data.data) {
userSettings.value = res.data.data;
}
} catch {
// 静默失败,不影响主功能
} finally {
userFetching.value = false;
}
};
/** 保存用户自定义配置 */
const updateUserSettings = async (
req: IUserSettingsUpdateRequest
): Promise<boolean> => {
userLoading.value = true;
try {
const res = await SettingsService.updateUserSettings(req);
const data = res.data;
if (data.code === 0) {
await fetchUserSettings();
toast.success("配置已保存");
return true;
}
toast.error(data.msg || "保存失败");
return false;
} catch (error) {
toast.error(getApiErrorMessage(error, "保存失败,请重试"));
return false;
} finally {
userLoading.value = false;
}
};
/** 拉取系统配置(仅 superadmin 调用此方法) */
const fetchSystemConfig = async () => {
sysFetching.value = true;
try {
const res = await SettingsService.getSystemConfig();
if (res.data.code === 0 && res.data.data) {
systemConfig.value = res.data.data;
}
} catch {
// 无权限或其他错误,静默处理
} finally {
sysFetching.value = false;
}
};
/** 保存系统配置(仅 superadmin 调用) */
const updateSystemConfig = async (
req: ISystemConfigUpdateRequest
): Promise<boolean> => {
sysLoading.value = true;
try {
const res = await SettingsService.updateSystemConfig(req);
if (res.data.code === 0) {
toast.success("系统配置已更新");
await fetchSystemConfig();
return true;
}
toast.error(res.data.msg || "更新失败");
return false;
} catch (error) {
toast.error(getApiErrorMessage(error, "更新失败,请重试"));
return false;
} finally {
sysLoading.value = false;
}
};
return {
userSettings,
systemConfig,
userLoading,
userFetching,
sysLoading,
sysFetching,
fetchUserSettings,
updateUserSettings,
fetchSystemConfig,
updateSystemConfig
};
});