Selaa lähdekoodia

document(README.md): 上传说明文档

chenyixian 3 kuukautta sitten
vanhempi
commit
f4d98715a3
2 muutettua tiedostoa jossa 502 lisäystä ja 2 poistoa
  1. 502 0
      README.md
  2. 0 2
      config/config.ts

+ 502 - 0
README.md

@@ -0,0 +1,502 @@
+# @kasite/uni-app-base
+
+## 项目简介
+
+`@kasite/uni-app-base` 是智医科技(Kasite)公司开发的 uni-app 基础包,为医院信息化系统提供统一的基础功能模块。该包封装了小程序登录、网络请求、配置管理、工具函数等核心功能,支持微信小程序和公众号两种平台。
+
+## 主要特性
+
+- 🔐 **统一登录管理** - 支持微信小程序和公众号登录,自动处理 token 过期和重新登录
+- 🌐 **网络请求封装** - 统一的 HTTP 请求处理,支持加密传输和自动重试机制
+- ⚙️ **配置管理系统** - 灵活的前端配置管理,支持多院区、多业务场景配置
+- 🛠️ **工具函数库** - 丰富的通用工具函数,包括加密解密、数据验证等
+- 📱 **多平台支持** - 同时支持微信小程序和公众号平台
+- 🔒 **安全加密** - 内置 DES 加密算法,保障数据传输安全
+
+## 安装
+
+```bash
+npm install @kasite/uni-app-base
+```
+
+## 快速开始
+
+### 导入基础包
+
+```javascript
+import { 
+  request, 
+  useSmallProgramLogin, 
+  useAppStatus,
+  useSetFrontEndConfig,
+  useGetUpdateManager,
+  usePreserMember,
+  frontEndConfig,
+  common 
+} from '@kasite/uni-app-base';
+```
+
+### Hook 使用示例
+
+```javascript
+// 应用启动时的初始化流程
+export default {
+  async onLaunch() {
+    // 1. 设置前端配置
+    await useSetFrontEndConfig();
+    
+    // 2. 检查应用状态
+    await useAppStatus();
+    
+    // 3. 检查版本更新
+    await useGetUpdateManager();
+    
+    // 4. 获取就诊人信息
+    await usePreserMember();
+    
+    // 5. 小程序登录
+    await useSmallProgramLogin(getApp());
+  }
+}
+
+// 获取域名信息
+const domain = useDomain();
+
+// 设置菜单
+const menuList = await useSetMenuList(defaultMenu);
+
+// 设置表单配置
+await useSetFrontEndForm();
+
+// 获取系统页面列表
+await useGetSysAppPageList();
+```
+
+## 📚 API 文档
+
+### 🌐 网络请求模块
+
+#### `request.doPost(url, data, options?, complete?)`
+发起 HTTP POST 请求,支持自动重试和加密传输
+
+| 参数 | 类型 | 必需 | 描述 |
+|------|------|------|------|
+| `url` | `string` | ✅ | 请求地址 |
+| `data` | `object` | ✅ | 请求数据 |
+| `options` | `object` | ❌ | 请求选项 |
+| `complete` | `function` | ❌ | 完成回调函数 |
+
+**Options 选项:**
+```typescript
+interface RequestOptions {
+  showLoading?: boolean;    // 是否显示加载提示,默认 true
+  timeout?: number;         // 超时时间(毫秒)
+  responseType?: string;    // 响应类型
+  onChunkReceived?: function; // 分块传输监听
+}
+```
+
+**使用示例:**
+```javascript
+// 基础 POST 请求
+const response = await request.doPost('/api/login', {
+  username: 'user',
+  password: 'pass'
+});
+
+// 带选项的请求
+const response = await request.doPost('/api/data', data, {
+  showLoading: false,
+  timeout: 30000
+});
+```
+
+---
+
+#### `request.doGet(url, data, options?)`
+发起 HTTP GET 请求
+
+| 参数 | 类型 | 必需 | 描述 |
+|------|------|------|------|
+| `url` | `string` | ✅ | 请求地址 |
+| `data` | `object` | ✅ | 请求参数 |
+| `options` | `object` | ❌ | 请求选项 |
+
+**使用示例:**
+```javascript
+// 基础 GET 请求
+const response = await request.doGet('/api/user', {
+  userId: '123'
+});
+```
+
+## 🎣 Hook 使用指南
+
+Hook 是本基础包的核心功能模块,提供了丰富的业务逻辑封装。
+
+### 🔐 登录管理
+
+#### `useSmallProgramLogin(app)`
+小程序登录,支持微信小程序和公众号平台
+
+| 参数 | 类型 | 必需 | 描述 |
+|------|------|------|------|
+| `app` | `App.AppInstance` | ✅ | 应用实例对象 |
+
+**返回值:**
+- `Promise<boolean>` - 登录结果
+
+**功能特性:**
+- ✅ 自动处理 token 过期
+- ✅ 支持重新登录机制
+- ✅ 防并发登录调用
+- ✅ 自动缓存登录信息
+
+**使用示例:**
+```javascript
+// 小程序登录
+const loginResult = await useSmallProgramLogin(getApp());
+if (loginResult) {
+  console.log('登录成功');
+}
+```
+
+### 🔧 应用状态管理
+
+#### `useAppStatus()`
+检查应用状态并进行相应跳转
+
+**功能特性:**
+- 🔍 检查应用维护状态
+- 🚫 检查应用下线状态  
+- 🔄 自动跳转到错误页面
+
+**状态类型:**
+- `maintain` - 维护状态,跳转到维护页面
+- `offline` - 下线状态,跳转到下线页面
+
+**使用示例:**
+```javascript
+// 应用启动时检查状态
+await useAppStatus();
+```
+
+### 🌍 域名管理
+
+#### `useDomain()`
+获取当前域名信息,支持KasiteWeb路径处理
+
+**返回值:**
+- `string` - 当前域名地址
+
+**使用示例:**
+```javascript
+const domain = useDomain();
+console.log('当前域名:', domain);
+```
+
+### ⚙️ 配置管理
+
+#### `useSetFrontEndConfig()`
+设置前端配置信息,初始化全局配置数据
+
+**功能特性:**
+- 📥 获取前端配置信息
+- 🔧 设置全局配置数据
+- 🏥 处理院区配置
+- ✅ 检查配置完整性
+
+**使用示例:**
+```javascript
+// 应用启动时设置配置
+await useSetFrontEndConfig();
+```
+
+#### `useFrontEndConfigVersion()`
+获取前端配置版本信息,控制缓存更新策略
+
+**功能特性:**
+- 🔄 检查配置版本更新
+- 💾 控制缓存更新策略
+- 🌐 网络异常处理
+
+**使用示例:**
+```javascript
+// 检查配置版本
+await useFrontEndConfigVersion();
+```
+
+### 📄 系统页面管理
+
+#### `useGetSysAppPageList()`
+获取系统应用页面列表,转换为页面消息映射
+
+**功能特性:**
+- 📋 获取系统页面配置
+- 🔄 转换为页面消息映射
+- 💾 存储到全局数据
+
+**使用示例:**
+```javascript
+// 获取系统页面列表
+await useGetSysAppPageList();
+```
+
+### 🔄 更新管理
+
+#### `useGetUpdateManager()`
+检查小程序版本更新,自动处理更新流程
+
+**功能特性:**
+- 🔍 检查新版本
+- ⬇️ 自动下载更新
+- 💬 提示用户重启应用
+- ❌ 处理更新失败情况
+
+**更新流程:**
+1. 检查版本更新
+2. 自动下载新版本
+3. 提示用户重启
+4. 处理下载失败
+
+**使用示例:**
+```javascript
+// 检查版本更新
+const hasUpdate = await useGetUpdateManager();
+```
+
+### 👥 就诊人管理
+
+#### `usePreserMember()`
+查询并保存就诊人数据,管理用户就诊信息
+
+**功能特性:**
+- 🔍 查询所有就诊人信息
+- 💾 保存到全局存储
+- 👤 更新当前用户信息
+- 🔐 支持加密查询
+
+**使用示例:**
+```javascript
+// 获取就诊人信息
+const memberList = await usePreserMember();
+```
+
+### 📝 表单配置管理
+
+#### `useSetFrontEndForm()`
+设置前端表单配置,管理动态表单
+
+**功能特性:**
+- 📋 获取表单配置信息
+- ✅ 验证配置完整性
+- 💾 存储表单配置
+- 🏥 支持多院区配置
+
+**使用示例:**
+```javascript
+// 设置表单配置
+await useSetFrontEndForm();
+```
+
+### 🍔 菜单管理
+
+#### `useSetMenuList(menu)`
+设置应用菜单列表,支持线上线下菜单合并
+
+| 参数 | 类型 | 必需 | 描述 |
+|------|------|------|------|
+| `menu` | `array` | ✅ | 本地菜单数组 |
+
+**功能特性:**
+- 🌐 获取线上菜单配置
+- 🔄 合并本地和线上菜单
+- 💾 存储菜单配置
+- 📱 支持多平台菜单
+
+**使用示例:**
+```javascript
+// 设置菜单
+const defaultMenu = [
+  { name: '首页', path: '/pages/home' },
+  { name: '预约', path: '/pages/appointment' }
+];
+const menuList = await useSetMenuList(defaultMenu);
+```
+
+## 🛠️ 工具函数库
+
+工具函数库提供了丰富的通用功能,包括UI交互、数据验证、加密解密等。
+
+### UI 交互
+
+#### `common.showLoading(title?)`
+显示加载提示,支持防重复显示
+
+| 参数 | 类型 | 必需 | 描述 |
+|------|------|------|------|
+| `title` | `string` | ❌ | 加载提示文字 |
+
+#### `common.hideLoading()`
+隐藏加载提示,智能处理多接口并发
+
+#### `common.showToast(msg, fn?, duration?)`
+显示提示消息
+
+| 参数 | 类型 | 必需 | 描述 |
+|------|------|------|------|
+| `msg` | `string` | ✅ | 提示消息内容 |
+| `fn` | `function` | ❌ | 回调函数 |
+| `duration` | `number` | ❌ | 显示时长(毫秒),默认1500 |
+
+#### `common.showModal(content, callBack?, data?)`
+显示模态框
+
+| 参数 | 类型 | 必需 | 描述 |
+|------|------|------|------|
+| `content` | `string` | ✅ | 模态框内容 |
+| `callBack` | `function` | ❌ | 确认回调函数 |
+| `data` | `object` | ❌ | 模态框配置 |
+
+### 数据验证
+
+#### `common.isEmpty(obj)`
+判断对象是否为空
+
+**支持类型:**
+- `undefined` / `null` / `''`
+- `Array` - 检查长度
+- `Object` - 检查键数量
+
+#### `common.isNotEmpty(obj)`
+判断对象是否不为空(isEmpty的反向)
+
+### 加密解密
+
+#### `common.desEncrypt(message, key)`
+DES 加密
+
+| 参数 | 类型 | 必需 | 描述 |
+|------|------|------|------|
+| `message` | `string` | ✅ | 待加密内容 |
+| `key` | `string` | ✅ | 加密密钥 |
+
+#### `common.desDecrypt(str, key, exportType?)`
+DES 解密
+
+| 参数 | 类型 | 必需 | 描述 |
+|------|------|------|------|
+| `str` | `string` | ✅ | 加密字符串 |
+| `key` | `string` | ✅ | 解密密钥 |
+| `exportType` | `string` | ❌ | 输出方式 |
+
+### 使用示例
+
+```javascript
+// UI 交互
+common.showLoading('加载中...');
+common.showToast('操作成功', () => {
+  console.log('提示完成');
+});
+common.showModal('确定要删除吗?', () => {
+  console.log('用户确认删除');
+});
+
+// 数据验证
+if (common.isNotEmpty(userData)) {
+  console.log('用户数据有效');
+}
+
+// 加密解密
+const encrypted = common.desEncrypt('敏感数据', 'secretKey');
+const decrypted = common.desDecrypt(encrypted, 'secretKey');
+```
+
+## 配置说明
+
+### 基础配置 (config.ts)
+
+```typescript
+export const BASE_URL = 'https://cs001.kasitesoft.com/';  // 接口请求地址
+export const IS_ENCRYPT = false;                          // 是否加密
+export const TIMEOUT = 60000;                             // 超时时间
+```
+
+### 前端配置 (frontEndConfig.ts)
+
+包含以下主要配置:
+
+- **固定配置** (`fixedAppjsGlobalData`): 医院ID、配置密钥等固定信息
+- **应用配置** (`appjsGlobalData`): 医院信息、功能开关等可配置项
+- **页面配置** (`webUiDiy`): 各业务页面的个性化配置
+
+## 目录结构
+
+```
+├── config/                 # 配置文件
+│   ├── config.ts          # 基础配置
+│   ├── frontEndConfig.ts  # 前端配置
+│   └── index.ts           # 配置导出
+├── hook/                  # 自定义 Hook
+│   ├── use-app-status/    # 应用状态管理
+│   ├── use-domain/        # 域名管理
+│   ├── use-front-end-config/  # 前端配置管理
+│   ├── use-front-end-config-version/  # 前端配置版本管理
+│   ├── use-get-sys-app-page-list/  # 系统页面列表管理
+│   ├── use-get-update-manager/  # 更新管理
+│   ├── use-preser-member/  # 就诊人管理
+│   ├── use-set-front-end-form/  # 表单配置管理
+│   ├── use-set-menu-list/  # 菜单管理
+│   └── use-small-program-login/  # 小程序登录
+├── service/               # 服务层
+│   ├── base/             # 基础服务
+│   ├── request.ts        # 网络请求封装
+│   └── handle.js         # 请求处理
+├── utils/                 # 工具函数
+│   ├── common.ts         # 通用工具
+│   ├── crypto-js.min.js  # 加密库
+│   └── sseParse.ts       # SSE 解析
+└── index.ts              # 主入口文件
+```
+
+## 开发指南
+
+### 添加新的 Hook
+
+1. 在 `hook/` 目录下创建新的 Hook 文件夹
+2. 实现 Hook 逻辑
+3. 在 `hook/index.ts` 中导出
+
+### 添加新的工具函数
+
+1. 在 `utils/common.ts` 中添加函数
+2. 确保函数已导出
+3. 在 `utils/index.ts` 中导出
+
+### 配置管理
+
+所有配置都集中在 `config/` 目录下,支持:
+- 环境变量配置
+- 业务功能开关
+- 页面个性化配置
+
+## 版本信息
+
+- **当前版本**: 0.0.1
+- **包名**: @kasite/uni-app-base
+- **发布地址**: http://maven.kasitesoft.com/repository/intelmt-npm-hosted/
+
+## 注意事项
+
+1. **平台兼容性**: 确保在目标平台(微信小程序/公众号)上测试所有功能
+2. **配置安全**: 生产环境中请妥善保管 API 密钥和配置信息
+3. **网络请求**: 所有网络请求都会自动处理 token 过期和重新登录
+4. **加密传输**: 根据配置决定是否启用请求加密
+
+## 技术支持
+
+如有问题或建议,请联系智医科技开发团队。
+
+## 许可证
+
+本项目为私有包,仅供智医科技内部使用。

+ 0 - 2
config/config.ts

@@ -1,8 +1,6 @@
 /** 接口请求地址 */
 // 需要代理的时候,将这个设置为 api/
 export const BASE_URL = 'https://cs001.kasitesoft.com/';
-/** 接口请求地址(代理用) */
-export const PROXY_URL = 'https://cs001.kasitesoft.com/';
 /** 接口是否加密 */
 export const IS_ENCRYPT = false;
 /** 接口超时时间 默认1分钟 */