feat: 初始化财务管理应用前端项目,包含账户、预算、交易、报表、设置等核心功能模块。

This commit is contained in:
2026-01-26 01:45:39 +08:00
parent fd7cb4485c
commit 8eaa4dbd11
212 changed files with 30536 additions and 186 deletions

View File

@@ -0,0 +1,126 @@
/**
* App Lock Service - API calls for application lock management
*/
import api from './api';
import type { ApiResponse } from '../types';
/**
* App lock status interface
*/
export interface AppLockStatus {
is_enabled: boolean;
is_locked: boolean;
failed_attempts: number;
locked_until?: string;
}
/**
* Set password request interface
*/
export interface SetPasswordRequest {
password: string;
}
/**
* Verify password request interface
*/
export interface VerifyPasswordRequest {
password: string;
}
/**
* Verify password response interface
*/
export interface VerifyPasswordResponse {
valid: boolean;
failed_attempts: number;
locked_until?: string;
}
/**
* Change password request interface
*/
export interface ChangePasswordRequest {
old_password: string;
new_password: string;
}
/**
* Disable lock request interface
*/
export interface DisableLockRequest {
password: string;
}
/**
* Get app lock status
*/
export async function getAppLockStatus(): Promise<AppLockStatus> {
const response = await api.get<ApiResponse<AppLockStatus>>('/app-lock/status');
if (!response.data) {
throw new Error(response.error || 'Failed to get app lock status');
}
return response.data;
}
/**
* Set app lock password
*/
export async function setAppLockPassword(password: string): Promise<void> {
const response = await api.post<ApiResponse<void>>('/app-lock/password', {
password,
});
if (!response.success && response.error) {
throw new Error(response.error);
}
}
/**
* Verify app lock password
*/
export async function verifyAppLockPassword(password: string): Promise<VerifyPasswordResponse> {
const response = await api.post<ApiResponse<VerifyPasswordResponse>>('/app-lock/verify', {
password,
});
if (!response.data) {
throw new Error(response.error || 'Failed to verify password');
}
return response.data;
}
/**
* Change app lock password
*/
export async function changeAppLockPassword(
oldPassword: string,
newPassword: string
): Promise<void> {
const response = await api.post<ApiResponse<void>>('/app-lock/password/change', {
old_password: oldPassword,
new_password: newPassword,
});
if (!response.success && response.error) {
throw new Error(response.error);
}
}
/**
* Disable app lock
*/
export async function disableAppLock(password: string): Promise<void> {
const response = await api.post<ApiResponse<void>>('/app-lock/disable', {
password,
});
if (!response.success && response.error) {
throw new Error(response.error);
}
}
export default {
getAppLockStatus,
setAppLockPassword,
verifyAppLockPassword,
changeAppLockPassword,
disableAppLock,
};