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
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)}`);
|
|
}
|
|
}
|
|
}
|