feat: 地区选择器改走接口、订单市价重算与资金流水、同步日志内容复用
region-address-picker 接 region-picker API;订单支持按进价重算 market_price、追踪页资金流水;MES/ERP/中台同步日志共用内容查看组件;地区管理支持 pid 下钻与拼音检索。
This commit is contained in:
@@ -4,13 +4,20 @@ import log from 'electron-log/main';
|
||||
/**
|
||||
* 开机自启:基于系统登录项实现(Windows 写 HKCU\...\Run 注册表、mac 写「系统设置 → 登录项」),
|
||||
* 无需管理员权限;系统登录项本身就是持久化存储,无需额外落盘记录状态。
|
||||
*
|
||||
* 注意(Windows):set 时若带了 args,get 必须传同一组 args,否则 openAtLogin 恒为 false,
|
||||
* 托盘「开机自启」勾选态刷新后就会丢回显(Electron 官方文档明确要求)。
|
||||
*/
|
||||
|
||||
/** 开机自启启动参数:主进程据此静默进托盘,不弹主窗口 */
|
||||
const AUTO_LAUNCH_ARGS = ['--hidden'];
|
||||
|
||||
/** 读取当前开机自启状态(直接以系统登录项为准,避免自维护状态与系统不同步) */
|
||||
export function getAutoLaunchEnabled(): boolean {
|
||||
// 开发模式下登录项指向 electron 开发二进制,无意义,统一视为关闭
|
||||
if (!app.isPackaged) return false;
|
||||
return app.getLoginItemSettings().openAtLogin;
|
||||
// Windows 必须带上与 set 时相同的 args,否则匹配不到注册表项
|
||||
return app.getLoginItemSettings({ args: AUTO_LAUNCH_ARGS }).openAtLogin;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -24,7 +31,8 @@ export function setAutoLaunchEnabled(enable: boolean): boolean {
|
||||
}
|
||||
app.setLoginItemSettings({
|
||||
openAtLogin: enable,
|
||||
args: enable ? ['--hidden'] : [],
|
||||
// 关闭时清空 args,避免残留无意义的启动参数
|
||||
args: enable ? AUTO_LAUNCH_ARGS : [],
|
||||
});
|
||||
return getAutoLaunchEnabled();
|
||||
}
|
||||
|
||||
@@ -12,6 +12,12 @@ import log from 'electron-log/main';
|
||||
* 临时文件 loadFile 对任意大小都稳定,打完即删。
|
||||
*/
|
||||
|
||||
/** 自定义纸张(微米);如热敏 80mm = width: 80000 */
|
||||
export interface PrintPageSizeMicrons {
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
export interface PrintHtmlOptions {
|
||||
/** 完整的打印 HTML(含样式),由渲染层拼好传入 */
|
||||
html: string;
|
||||
@@ -19,6 +25,13 @@ export interface PrintHtmlOptions {
|
||||
deviceName?: string;
|
||||
/** 是否静默打印(true 不弹系统打印对话框) */
|
||||
silent?: boolean;
|
||||
/**
|
||||
* 纸张尺寸(微米)。挂号小票等场景传 80mm 宽,避免落到打印机默认 A4
|
||||
* 不传则跟打印机默认纸张
|
||||
*/
|
||||
pageSize?: PrintPageSizeMicrons | string;
|
||||
/** 优先采用 CSS @page size(与 pageSize 互补) */
|
||||
preferCSSPageSize?: boolean;
|
||||
}
|
||||
|
||||
export interface PrintResult {
|
||||
@@ -30,7 +43,13 @@ export interface PrintResult {
|
||||
* 执行打印,返回是否成功与失败原因(渲染层据此提示用户)
|
||||
*/
|
||||
export async function printHtml(options: PrintHtmlOptions): Promise<PrintResult> {
|
||||
const { html, deviceName, silent = true } = options;
|
||||
const {
|
||||
html,
|
||||
deviceName,
|
||||
silent = true,
|
||||
pageSize,
|
||||
preferCSSPageSize = false,
|
||||
} = options;
|
||||
// 临时文件带时间戳防并发打印互相覆盖
|
||||
const tempFile = join(app.getPath('temp'), `xk-print-${Date.now()}-${Math.random().toString(36).slice(2)}.html`);
|
||||
await writeFile(tempFile, html, 'utf8');
|
||||
@@ -58,6 +77,9 @@ export async function printHtml(options: PrintHtmlOptions): Promise<PrintResult>
|
||||
silent,
|
||||
deviceName: deviceName || undefined,
|
||||
printBackground: true,
|
||||
// 热敏小票等:显式纸张,避免落到驱动默认 A4
|
||||
...(pageSize ? { pageSize } : {}),
|
||||
...(preferCSSPageSize ? { preferCSSPageSize: true } : {}),
|
||||
},
|
||||
(success, failureReason) => finish(success, success ? undefined : failureReason),
|
||||
);
|
||||
|
||||
@@ -67,11 +67,13 @@ const desktopAPI = {
|
||||
/** 获取系统打印机列表(打印设置下拉用) */
|
||||
getPrinters: (): Promise<Array<{ name: string; displayName: string; isDefault: boolean }>> =>
|
||||
ipcRenderer.invoke('desktop:get-printers'),
|
||||
/** 静默打印:传入拼好的完整 HTML,主进程隐藏窗口出纸 */
|
||||
/** 静默打印:传入拼好的完整 HTML,主进程隐藏窗口出纸;可带 pageSize(微米)指定热敏纸等 */
|
||||
printHTML: (options: {
|
||||
html: string;
|
||||
deviceName?: string;
|
||||
silent?: boolean;
|
||||
pageSize?: { width: number; height: number } | string;
|
||||
preferCSSPageSize?: boolean;
|
||||
}): Promise<{ ok: boolean; message?: string }> =>
|
||||
ipcRenderer.invoke('desktop:print-html', options),
|
||||
/** 读取桌面端设置(打印机名称、静默打印开关等) */
|
||||
|
||||
Reference in New Issue
Block a user