# 药房客户端

基于[Electron.js](https://www.electronjs.org/)构建的桌面应用，主要用于药房业务。

仓库地址：https://gogs.ywtinfo.com/ywt/pharmacy_pc_client

## 构建

要求 Node.js 版本 10.12+

```bash
# 安装依赖
npm install

# 开发
npm run dev

# 打包
npm run package

# 多平台打包
npm run package-all
npm run package-linux
npm run package-win
```

## 项目结构

```
app
 ┣ 📂assets
 ┃ ┣ 📂images // 应用内的图片资源
 ┃ ┃ ┗ 📜logo.png // 应用 logo
 ┃ ┗ 📂styles // 样式
 ┣ 📂components // 通用组件
 ┃ ┣ 📂GlobalFooter // 通用页脚
 ┃ ┣ 📂GlobalHeader // 通用页头
 ┃ ┣ 📂SiderMenu // 侧栏菜单
 ┃ ┣ 📂StandardTable // 表格封装
 ┣ 📂config // 配置
 ┃ ┗ 📜routes.js // 业务页面路由
 ┃ ┗ 📜const.js // 全局常量定义
 ┣ 📂containers // 业务页面
 ┃ ┣ 📜App.js
 ┃ ┗ 📜Root.js
 ┣ 📂layouts // 通用页面，如通用业务页面、登录页面
 ┣ 📂services // 接口类
 ┣ 📂store // store
 ┣ 📂utils // 工具类
 ┣ 📜app.global.scss
 ┣ 📜app.html
 ┣ 📜index.js
 ┣ 📜main.dev.js
 ┣ 📜menu.js // APP 顶部菜单
 ┣ 📜package.json
 ┣ 📜Routes.js // 通用页面路由
📂release // 打包产物
resources // 图标等资源
package.json
```

## 发布

客户端支持联网更新版本，需求开发完成后，需要按照以下规范发布更新：

1. 修改 `app/package.json` 文件的 `version`，即**应用版本号**；

> 说明：
>
> 版本号遵循[语义化版本规范](https://semver.org/lang/zh-CN/)；
>
> 每次发版版本号必须比上次发版的版本号要高。关于版本号的优先级比较，可以参考[文档这里](https://semver.org/lang/zh-CN/#spec-item-11)；
>
> 修改版本号必须单独 commit，并在 commit message 说明新的版本号信息；

2. 根据平台打包，打包后的产物在 `release` 目录。以 Windows 平台为例，一般会有 _.yaml, _.exe, \*.exe.blockmap 文件；

3. 将上一个步骤生成的打包产物**压缩成 tar 文件**。文件名应遵循以下规则：`{客户端名称(必须)}_{应用版本号(必须)}_{打包时间戳(可选)}_{版本功能描述或对应的需求版本号(必须)}_{打包人(可选)}.tar`；

> 注意：文件名最好不要包含空格、括号、星号等对终端操作不友好的字符。

4. 将上一个步骤生成的 tar 压缩包，上传到内网的[HTTP File Server](http://192.168.3.202:8864/)的 dgclient 目录下；

5. 要推送线上更新，将测试通过的 tar 压缩包，上传到 QA 服务器，并将压缩包的文件解压到 `/root/dg_client_package/dgclient/update` 目录下；

> 注意：更新时应该做好上一个版本的备份，以防发布失败需要回滚。

6. 上线成功后，把当前开发的分支合并到 master 分支，并打上应用版本号的 tag 然后 push；

## 注意事项

### Windows

1. 由于网络的原因，可能首次打包会因为某些依赖包无法下载而失败，可以通过以下方法解决。

   以 Windows 平台为例（以下文件可以在[内网地址](http://192.168.3.202:8864/electron)下载）：

   - 手动下载 `electron-v2.0.18-win32-x64.zip` 和 `SHASUMS256.txt-2.0.18`，放入 `%HOMEPATH%\AppData\Local\electron\Cache` 目录下。

   - 手动下载 `winCodeSign-2.4.0.7z`，将解压后的全部文件添加到 `%HOMEPATH%\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.4.0` 目录下。（如果没有目录需要手动创建）

   - 手动下载 `nsis-3.0.3.2.7z`，将解压后的全部文件添加到 `%HOMEPATH%\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.3.2` 目录下。（如果没有目录需要手动创建）

   - 手动下载 `nsis-resources-3.3.0.7z`，将解压后的全部文件添加到 `%HOMEPATH%\AppData\Local\electron-builder\Cache\nsis\nsis-resources-3.3.0` 目录下。（如果没有目录需要手动创建）

2. 配置文件路径：`%HOMEPATH%\AppData\Roaming\ywt\global.json`

### MacOS

1. 配置文件路径：`/Users/Username/Library/Application Support/ywt/global.json`
