uniapp的基础包,包含请求、hook、utils等

chenyixian c94eda4b59 fix: 修复数值变更后useState没有变更的问题 3 mesiacov pred
config e5748de0d1 document(README.md): 上传说明文档 3 mesiacov pred
hook 48babe6a0b feat: 基础的store不需要模块化 3 mesiacov pred
service 48babe6a0b feat: 基础的store不需要模块化 3 mesiacov pred
store c94eda4b59 fix: 修复数值变更后useState没有变更的问题 3 mesiacov pred
utils c94eda4b59 fix: 修复数值变更后useState没有变更的问题 3 mesiacov pred
README.md f4d98715a3 document(README.md): 上传说明文档 3 mesiacov pred
index.ts 5df611b7b1 feat: first commit 3 mesiacov pred
package.json 6ffb64f3e3 feat: 把部分信息提取到store里 3 mesiacov pred

README.md

@kasite/uni-app-base

项目简介

@kasite/uni-app-base 是智医科技(Kasite)公司开发的 uni-app 基础包,为医院信息化系统提供统一的基础功能模块。该包封装了小程序登录、网络请求、配置管理、工具函数等核心功能,支持微信小程序和公众号两种平台。

主要特性

  • 🔐 统一登录管理 - 支持微信小程序和公众号登录,自动处理 token 过期和重新登录
  • 🌐 网络请求封装 - 统一的 HTTP 请求处理,支持加密传输和自动重试机制
  • ⚙️ 配置管理系统 - 灵活的前端配置管理,支持多院区、多业务场景配置
  • 🛠️ 工具函数库 - 丰富的通用工具函数,包括加密解密、数据验证等
  • 📱 多平台支持 - 同时支持微信小程序和公众号平台
  • 🔒 安全加密 - 内置 DES 加密算法,保障数据传输安全

安装

npm install @kasite/uni-app-base

快速开始

导入基础包

import { 
  request, 
  useSmallProgramLogin, 
  useAppStatus,
  useSetFrontEndConfig,
  useGetUpdateManager,
  usePreserMember,
  frontEndConfig,
  common 
} from '@kasite/uni-app-base';

Hook 使用示例

// 应用启动时的初始化流程
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 选项:

interface RequestOptions {
  showLoading?: boolean;    // 是否显示加载提示,默认 true
  timeout?: number;         // 超时时间(毫秒)
  responseType?: string;    // 响应类型
  onChunkReceived?: function; // 分块传输监听
}

使用示例:

// 基础 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 请求选项

使用示例:

// 基础 GET 请求
const response = await request.doGet('/api/user', {
  userId: '123'
});

🎣 Hook 使用指南

Hook 是本基础包的核心功能模块,提供了丰富的业务逻辑封装。

🔐 登录管理

useSmallProgramLogin(app)

小程序登录,支持微信小程序和公众号平台

参数 类型 必需 描述
app App.AppInstance 应用实例对象

返回值:

  • Promise<boolean> - 登录结果

功能特性:

  • ✅ 自动处理 token 过期
  • ✅ 支持重新登录机制
  • ✅ 防并发登录调用
  • ✅ 自动缓存登录信息

使用示例:

// 小程序登录
const loginResult = await useSmallProgramLogin(getApp());
if (loginResult) {
  console.log('登录成功');
}

🔧 应用状态管理

useAppStatus()

检查应用状态并进行相应跳转

功能特性:

  • 🔍 检查应用维护状态
  • 🚫 检查应用下线状态
  • 🔄 自动跳转到错误页面

状态类型:

  • maintain - 维护状态,跳转到维护页面
  • offline - 下线状态,跳转到下线页面

使用示例:

// 应用启动时检查状态
await useAppStatus();

🌍 域名管理

useDomain()

获取当前域名信息,支持KasiteWeb路径处理

返回值:

  • string - 当前域名地址

使用示例:

const domain = useDomain();
console.log('当前域名:', domain);

⚙️ 配置管理

useSetFrontEndConfig()

设置前端配置信息,初始化全局配置数据

功能特性:

  • 📥 获取前端配置信息
  • 🔧 设置全局配置数据
  • 🏥 处理院区配置
  • ✅ 检查配置完整性

使用示例:

// 应用启动时设置配置
await useSetFrontEndConfig();

useFrontEndConfigVersion()

获取前端配置版本信息,控制缓存更新策略

功能特性:

  • 🔄 检查配置版本更新
  • 💾 控制缓存更新策略
  • 🌐 网络异常处理

使用示例:

// 检查配置版本
await useFrontEndConfigVersion();

📄 系统页面管理

useGetSysAppPageList()

获取系统应用页面列表,转换为页面消息映射

功能特性:

  • 📋 获取系统页面配置
  • 🔄 转换为页面消息映射
  • 💾 存储到全局数据

使用示例:

// 获取系统页面列表
await useGetSysAppPageList();

🔄 更新管理

useGetUpdateManager()

检查小程序版本更新,自动处理更新流程

功能特性:

  • 🔍 检查新版本
  • ⬇️ 自动下载更新
  • 💬 提示用户重启应用
  • ❌ 处理更新失败情况

更新流程:

  1. 检查版本更新
  2. 自动下载新版本
  3. 提示用户重启
  4. 处理下载失败

使用示例:

// 检查版本更新
const hasUpdate = await useGetUpdateManager();

👥 就诊人管理

usePreserMember()

查询并保存就诊人数据,管理用户就诊信息

功能特性:

  • 🔍 查询所有就诊人信息
  • 💾 保存到全局存储
  • 👤 更新当前用户信息
  • 🔐 支持加密查询

使用示例:

// 获取就诊人信息
const memberList = await usePreserMember();

📝 表单配置管理

useSetFrontEndForm()

设置前端表单配置,管理动态表单

功能特性:

  • 📋 获取表单配置信息
  • ✅ 验证配置完整性
  • 💾 存储表单配置
  • 🏥 支持多院区配置

使用示例:

// 设置表单配置
await useSetFrontEndForm();

🍔 菜单管理

useSetMenuList(menu)

设置应用菜单列表,支持线上线下菜单合并

参数 类型 必需 描述
menu array 本地菜单数组

功能特性:

  • 🌐 获取线上菜单配置
  • 🔄 合并本地和线上菜单
  • 💾 存储菜单配置
  • 📱 支持多平台菜单

使用示例:

// 设置菜单
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 输出方式

使用示例

// 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)

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/ 目录下,支持:

  • 环境变量配置
  • 业务功能开关
  • 页面个性化配置

版本信息

注意事项

  1. 平台兼容性: 确保在目标平台(微信小程序/公众号)上测试所有功能
  2. 配置安全: 生产环境中请妥善保管 API 密钥和配置信息
  3. 网络请求: 所有网络请求都会自动处理 token 过期和重新登录
  4. 加密传输: 根据配置决定是否启用请求加密

技术支持

如有问题或建议,请联系智医科技开发团队。

许可证

本项目为私有包,仅供智医科技内部使用。