# 数字推广中心小程序(Taro)
> 微信小程序应用 —— 主要使用 react.js + **[taro](https://docs.taro.zone/docs/)** + **[taroui](https://taro-ui.jd.com/#/)**等技术栈
> 本项目已升级到 taro3,相关组件的具体文档参考[Taro 文档](https://docs.taro.zone/docs/)
## 项目 Git
#### [Gogs Git address](https://gogs.ywtinfo.com/ywt/th_net_hospital_weapp)
#### 生产环境分支:v1.0.0_digital
#### 开发环境分支:v1.0.0_digital,再配合具体需求版本号
**一定要先把分支切换到 v1.0.0_digital 后再进行后续开发**
## 项目 Command
node version: v12.14.0 及以上,yarn(包管理工具) install
```json
// 安装依赖
yarn 或者 npm install
// 本地开发快速切换项目
yarn replace:digital // 数字推广中心
// qa环境运行
yarn run dev:weapp-digital // 数字推广中心
// qa环境打包
yarn run build-qa:weapp-digital // 数字推广中心
// prod环境打包
yarn run build:weapp-digital // 数字推广中心
```
## 文件目录
以下文件说明,请先参考[Taro 文档](https://docs.taro.zone/docs/)
```javascript
// 只备注官方文档没有提及的文件和文件目录
.
├── README.md
├── config // 各个小程序各种环境配置文件
├── db.json
├── dist // 太和小程序打包产物目录
├── dist_by // 白云小程序打包产物目录
├── dist_pay // 支付小程序打包产物目录
├── dist_yun // 云平台小程序打包产物目录
├── mock-server.js // mock服务器启动文件
├── mocks // mock相关测试数据
├── node_modules
├── nodemon.json // 动态监控mocks数据变化
├── package.json // 项目依赖
├── project.config.by.json // 白云小程序项目配置文件,替换使用
├── project.config.json // 小程序项目配置文件,默认加载
├── project.config.patient.json // 太和小程序项目配置文件,替换使用
├── project.config.pay.json // 支付小程序项目配置文件,替换使用
├── project.config.yun.json // 云平台小程序项目配置文件,替换使用
├── src
│ ├── app.by.js // 白云入口app.js
│ ├── app.js // 小程序主入口文件,默认加载
│ ├── app.less // 全局样式,默认加载
│ ├── app.patient.js // 太和入口app.js
│ ├── app.pay.js // 支付入口app.js
│ ├── app.yun.js // 云平台入口app.js
│ ├── assets // 资源文件
│ ├── components // 公共组件库
| │ ├── ParserRichText // 解析富文本的组件
| │ ├── guangsan // 有关广三业务的组件
| │ ├── page_componets // 页面组件,包括检验检查结果
| │ ├── privacy // 隐私声明组件
| │ ├── utils // 工具组件,如选择地址/公告等
| │ └── ywt // 最常用,细化的组件,包括鉴权按钮/icon/checkbox等
│ ├── config // 项目相关配置文件,与环境配置文件区分使用
│ ├── constants // 各种常用变量
│ ├── index.html // h5项目才能使用的
│ ├── pages // 项目页面
| │ ├── digital // 主要开发模块
| | │ ├── chooseJob.js // 工种选择页面
| | │ ├── collectDetails.js // 任务详情页面
| | │ ├── collectList.js // 任务列表页面
| | │ ├── listContent.js // 我的收藏页面
| | │ ├── myTaskList.js // 我的任务页面
| | │ ├── searchResult.js // 搜索页面
| | │ ├── taskTypeList.js // 任务类型列表
| | │ ├── typeofWork.js // 工种资料上传
| | │ ├── workInformation.js // 提交验收资料
| | │ └── workType.js // 工种资料信息
| │ ├── global // 全局公告页面,包含支付,登录页面等
| │ ├── index // 入口
| │ ├── notice // 通知模块
| │ ├── order // 订单中心
| │ ├── pay // 支付模块
| │ ├── protocol // 富文本公告协议页面
| │ └── users // 用户中心
│ ├── pages_yun // 云平台项目页面
│ ├── server // 接口和服务相关
│ ├── store // 全局状态管理
│ └── utils // 工具库
└── yarn.lock
```
## 技术/业务要点
- 项目直接复用[患者端小程序](./%E6%82%A3%E8%80%85%E7%AB%AF%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E5%BE%AE%E4%BF%A1.md)的框架进行开发,登录/路由模块/组件等与患者端小程序完全一致
- 项目中组件库,一般划分成**5**种类型,**页面组件(复用整个页面)**,**原子组件(由较小的元素搭建而成)**,**业务组件(以某个业务划分的)**,**第三方组件(TaroUI)**,**第三方原生组件(使用原生小程序代码编写)**;
- 业务组件数据中有不少字段判断,其中的含义可以查看后端接口文档;
- 患者端小程序,通过**环境变量 + 配置文件**,生成不同项目的小程序。
- 环境变量已经在 package.json 中配置好,只需要运行 replace 命令行可自动修改相关的配置文件。
- 项目入口页面为 ·src/pages/index/index.js'。在此页面加了比较多的逻辑和判断,例如:初始化配置、获取 token、跳转二维码等等;
(PS:随着业务越来越多,这里也会增加其他判断,具体请看代码;