You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
3.2 KiB
TypeScript

import { invoke } from "@tauri-apps/api/tauri";
import { appWindow } from "@tauri-apps/api/window";
import { postLogoutBeforeQuit } from "../utils/service";
import { clearSession } from "./session";
/**
* 最小化当前窗口。
*/
export async function minimizeWindow(): Promise<void> {
try {
await appWindow.minimize();
} catch (error) {
throw new Error(`最小化窗口失败: ${String(error)}`);
}
}
/**
* 关闭应用进程(避免隐藏窗口残留导致进程驻留)。
*/
export async function closeWindow(): Promise<void> {
try {
await postLogoutBeforeQuit();
} finally {
try {
await clearSession();
} catch {
// 忽略
}
try {
await invoke("quit_app");
} catch (error) {
throw new Error(`关闭窗口失败: ${String(error)}`);
}
}
}
/**
* 开始拖拽当前窗口。
*/
export async function startWindowDragging(): Promise<void> {
try {
await appWindow.startDragging();
} catch (error) {
throw new Error(`拖拽窗口失败: ${String(error)}`);
}
}
/**
* 打开或聚焦票号列表窗口。
*/
export async function openTicketListWindow(): Promise<void> {
try {
await invoke("open_ticket_window");
} catch (error) {
throw new Error(`打开票号列表窗口失败: ${String(error)}`);
}
}
/**
* 关闭(隐藏)票号列表窗口。
*/
export async function closeTicketListWindow(): Promise<void> {
try {
await invoke("close_ticket_window");
} catch (error) {
throw new Error(`关闭票号列表窗口失败: ${String(error)}`);
}
}
/**
* 关闭(隐藏)办税员窗口。
*/
export async function closeTaxerInfoWindow(): Promise<void> {
try {
await invoke("close_taxer_info_window");
} catch (error) {
throw new Error(`关闭办税员窗口失败: ${String(error)}`);
}
}
/**
* 聚焦指定窗口。
*/
export async function focusNamedWindow(label: string): Promise<void> {
try {
await invoke("focus_window", { label });
} catch (error) {
throw new Error(`聚焦窗口失败: ${String(error)}`);
}
}
/**
* 登录成功后显示主窗口并关闭登录窗口。
*/
export async function openMainWindow(): Promise<void> {
try {
await invoke("open_main_window");
} catch (error) {
throw new Error(`打开主窗口失败: ${String(error)}`);
}
}
/**
* 退出登录后显示登录窗口并隐藏主窗口。
*/
export async function openLoginWindow(): Promise<void> {
try {
await invoke("open_login_window");
} catch (error) {
throw new Error(`打开登录窗口失败: ${String(error)}`);
}
}
/**
* 打开或聚焦办税员窗口。
*/
export async function openTaxerInfoWindow(): Promise<void> {
try {
await invoke("open_taxer_info_window");
} catch (error) {
throw new Error(`打开办税员窗口失败: ${String(error)}`);
}
}
/**
* 退出整个应用进程。
*/
export async function quitApplication(): Promise<void> {
try {
await postLogoutBeforeQuit();
} finally {
try {
await clearSession();
} catch {
// 忽略
}
try {
await invoke("quit_app");
} catch (error) {
throw new Error(`退出应用失败: ${String(error)}`);
}
}
}