- 订单双视图:商品订单/处方/挂号列表新增卡片视图(CardList)、视图切换组件 view-mode-switch、stat-islands 统计岛、constants 字典 - 工作台:新增工作日历 Widget、待办日历、即将到访预约、公告滚动 NoticeTicker、日历面板 CalendarPanel - 医生排班:新增排班 API、ScheduleDrawer 抽屉、schedule-calendar 组件、门店设置弹窗 - 日志与通知:新增排班变更日志页、排班变更通知视图 - 挂号提醒:新增挂号语音播报资源与 register-notify 工具 - 桌面端:新增 apps/desktop 壳及 desktop 工具方法 - 其他:处方/订单导出、聊天设置与 WebSocket 等小幅优化
79 lines
3.2 KiB
JavaScript
79 lines
3.2 KiB
JavaScript
/**
|
||
* electron-builder 打包配置
|
||
* 用 JS 配置而不是 yml:mac 公证需要按「环境变量是否配齐」动态开关。
|
||
*
|
||
* 签名策略(按需求做成条件化,未配置证书时出未签名包且构建不报错):
|
||
* - Windows / mac 代码签名:配置了 CSC_LINK + CSC_KEY_PASSWORD(或 mac 钥匙串里有
|
||
* Developer ID 证书)时 electron-builder 自动签名;否则自动跳过,只输出告警
|
||
* - mac 公证:APPLE_ID + APPLE_APP_SPECIFIC_PASSWORD + APPLE_TEAM_ID 三者齐全才启用
|
||
* - 未签名 mac 包仍可内部分发:首次打开需右键「打开」,且自动更新会降级为提示手动下载
|
||
*/
|
||
const canNotarize = Boolean(
|
||
process.env.APPLE_ID &&
|
||
process.env.APPLE_APP_SPECIFIC_PASSWORD &&
|
||
process.env.APPLE_TEAM_ID,
|
||
);
|
||
|
||
/** @type {import('electron-builder').Configuration} */
|
||
const config = {
|
||
// appId 必须与主进程 setAppUserModelId 一致,否则 Windows 系统通知不显示
|
||
appId: 'com.xiaokang.xkadmin',
|
||
productName: '萧康云医',
|
||
// 安装包文件名用 ASCII,避免中文名在静态托管/下载链接上出编码问题
|
||
artifactName: 'xk-desktop-${version}-${os}-${arch}.${ext}',
|
||
directories: {
|
||
output: 'release',
|
||
buildResources: 'resources',
|
||
},
|
||
files: ['out/**'],
|
||
extraResources: [
|
||
// web-antd 生产构建产物:放 resources/web(不进 asar),为后续渲染层热更新留路
|
||
{ from: '../web-antd/dist', to: 'web' },
|
||
// 应用图标供运行时使用(托盘、Windows 窗口图标)
|
||
{ from: 'resources/icon.png', to: 'icon.png' },
|
||
],
|
||
asar: true,
|
||
compression: 'normal',
|
||
win: {
|
||
// TODO(待确认):正式图标待提供,当前用 web-antd logo 预生成的 ico 占位
|
||
// 直接给 .ico 让 builder 跳过 png 转换(本机 builder 的 wasm 图标工具会报内存错误)
|
||
icon: 'resources/icon.ico',
|
||
target: [{ target: 'nsis', arch: ['x64'] }],
|
||
},
|
||
nsis: {
|
||
// 非一键安装:允许用户选择安装目录,符合企业内部软件分发习惯
|
||
oneClick: false,
|
||
perMachine: false,
|
||
allowToChangeInstallationDirectory: true,
|
||
createDesktopShortcut: true,
|
||
createStartMenuShortcut: true,
|
||
shortcutName: '萧康云医',
|
||
},
|
||
mac: {
|
||
icon: 'resources/icon.png',
|
||
category: 'public.app-category.medical',
|
||
// dmg 给用户安装,zip 是 electron-updater 在 mac 自动更新的必需格式,缺一不可
|
||
target: [
|
||
{ target: 'dmg', arch: ['x64', 'arm64'] },
|
||
{ target: 'zip', arch: ['x64', 'arm64'] },
|
||
],
|
||
hardenedRuntime: true,
|
||
gatekeeperAssess: false,
|
||
entitlements: 'resources/entitlements.mac.plist',
|
||
entitlementsInherit: 'resources/entitlements.mac.plist',
|
||
// IM 音视频通话必需的隐私用途描述,缺失时 mac 上调用摄像头/麦克风直接崩溃
|
||
extendInfo: {
|
||
NSCameraUsageDescription: '视频问诊需要使用摄像头',
|
||
NSMicrophoneUsageDescription: '语音/视频通话需要使用麦克风',
|
||
},
|
||
notarize: canNotarize,
|
||
},
|
||
publish: {
|
||
provider: 'generic',
|
||
// TODO(待确认):更新包静态托管地址,需与主进程 config.ts 的 DOWNLOAD_PAGE_URL 保持一致
|
||
url: 'https://static.xiaokang88.com/xk-desktop/',
|
||
},
|
||
};
|
||
|
||
module.exports = config;
|