# wzkris-mini
**Repository Path**: wzkris/wzkris-mini
## Basic Information
- **Project Name**: wzkris-mini
- **Description**: 微信小程序端
- **Primary Language**: Unknown
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-11
- **Last Updated**: 2025-12-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# wzkris-mini
这是一个基于微信小程序的企业级应用开发框架,使用 TypeScript 和 TDesign 组件库构建。项目提供了完整的认证体系、请求封装、状态管理等基础功能,适合快速搭建企业级小程序应用。
## 技术栈
- **开发语言**:TypeScript
- **样式预处理**:SCSS
- **UI 组件库**:TDesign Miniprogram (v1.11.2)
- **渲染引擎**:Skyline (微信小程序新渲染引擎)
- **组件框架**:Glass-easel
- **开发工具**:微信开发者工具
## 功能特性
### 核心功能
- **双认证体系**:支持客户(Customer)和租户(Tenant)两种认证类型,可同时管理多套 token
- **智能请求封装**:统一的请求拦截和响应拦截处理,自动 token 刷新,错误统一处理
- **数据字典**:支持字典数据缓存和请求缓存,提供便捷的数据转换工具
- **状态管理**:基于本地存储的状态管理,支持用户信息、token、租户信息等
- **环境适配**:自动识别开发、体验、生产环境,支持 API 地址动态配置
- **自定义导航栏**:自动计算胶囊按钮位置,统一页面布局适配
- **自定义 TabBar**:支持自定义底部导航栏样式和交互
### 页面功能
- **首页**:应用主页面
- **咨询**:咨询服务相关功能
- **我的**:个人中心,包含个人信息、钱包记录等
- **登录**:用户登录认证
- **租户管理**:租户中心、租户信息、成员管理、通知管理等
## 项目结构
```
wzkris-mini/
├── miniprogram/ # 小程序源码目录
│ ├── api/ # API 接口封装
│ │ ├── core/ # 核心 API(认证、客户、租户等)
│ │ ├── dictionary/ # 数据字典 API
│ │ ├── message/ # 消息通知 API
│ │ └── request.ts # 请求封装
│ ├── components/ # 自定义组件
│ │ └── navigation-bar/ # 导航栏组件
│ ├── custom-tab-bar/ # 自定义 TabBar
│ ├── pages/ # 页面目录
│ │ ├── home/ # 首页
│ │ ├── consult/ # 咨询页
│ │ ├── mine/ # 我的
│ │ │ ├── profile/ # 个人信息
│ │ │ └── wallet-records/ # 钱包记录
│ │ ├── login/ # 登录页
│ │ └── tenant/ # 租户相关
│ │ ├── center/ # 租户中心
│ │ ├── info/ # 租户信息
│ │ ├── member/ # 成员管理
│ │ └── notification/ # 通知管理
│ ├── store/ # 状态管理
│ │ ├── customer.ts # 客户状态
│ │ └── tenant.ts # 租户状态
│ ├── utils/ # 工具函数
│ │ └── dict.ts # 字典工具
│ ├── app.ts # 小程序入口
│ ├── app.json # 小程序配置
│ └── app.scss # 全局样式
├── env.ts # 环境配置
├── tsconfig.json # TypeScript 配置
├── package.json # 项目依赖
└── typings/ # 类型定义
```
## 安装说明
### 前置要求
- Node.js >= 14.0.0
- 微信开发者工具(最新版本)
- npm 或 yarn
### 安装步骤
1. **克隆仓库**:
```bash
git clone https://gitee.com/wzkris/wzkris-mini.git
cd wzkris-mini
```
2. **安装依赖**:
```bash
npm install
```
3. **配置环境**:
编辑 `env.ts` 文件,配置不同环境的 API 地址:
```typescript
const map: Record<'develop' | 'trial' | 'release', string> = {
develop: 'http://127.0.0.1:8080', // 开发环境
trial: 'http://127.0.0.1:8080', // 体验环境
release: 'http://127.0.0.1:8080' // 生产环境
}
```
4. **导入项目**:
- 打开微信开发者工具
- 选择"导入项目"
- 选择项目目录
- 填写 AppID(测试可使用测试号)
5. **构建 npm**:
- 在微信开发者工具中,点击"工具" -> "构建 npm"
- 确保 `miniprogram_npm` 目录生成成功
## 使用说明
### 请求封装
所有请求都在 `miniprogram/api/request.ts` 中进行封装,支持自动 token 注入、错误处理和 token 刷新。
```typescript
import { request } from '/api/request'
// 基础 GET 请求(使用客户认证)
const fetchData = async () => {
const data = await request({
url: '/api/data',
method: 'GET'
})
return data
}
// POST 请求
const createData = async (params: any) => {
const data = await request({
url: '/api/data',
method: 'POST',
data: params
})
return data
}
// 使用租户认证
const fetchTenantData = async () => {
const data = await request({
url: '/api/tenant/data',
method: 'GET',
auth_type: 'tenant' // 指定使用租户认证
})
return data
}
// 静默请求(不显示错误提示)
const silentRequest = async () => {
const data = await request({
url: '/api/data',
method: 'GET',
silent: true
})
return data
}
```
### 认证机制
项目支持客户和租户两种认证类型,token 会自动管理。
```typescript
import { customerStore } from '/store/customer'
import { tenantStore } from '/store/tenant'
import { AUTH_TYPE_CUSTOMER, AUTH_TYPE_TENANT } from '/api/core/auth'
// 客户认证相关
const customerToken = customerStore.getToken()
const customerInfo = customerStore.getUserInfo()
customerStore.setToken('token')
customerStore.logoutToLogin() // 退出登录并跳转到登录页
// 租户认证相关
const tenantToken = tenantStore.getToken()
const tenantInfo = tenantStore.getTenantInfo()
tenantStore.setToken('token')
tenantStore.clearAll() // 清除所有租户信息
```
### 数据字典
数据字典功能在 `miniprogram/utils/dict.ts` 中实现,支持数据缓存和转换。
```typescript
import { toOptions } from '/utils/dict'
// 将字典数据转换为选项格式
const dictData = [
{ code: '1', name: '选项1' },
{ code: '2', name: '选项2' }
]
const options = toOptions(dictData)
// 结果: [{ label: '选项1', value: '1' }, { label: '选项2', value: '2' }]
```
### 环境配置
项目支持三种环境自动切换:
- **develop**:开发环境
- **trial**:体验环境
- **release**:生产环境
环境会根据微信开发者工具中的版本自动识别,也可以通过本地存储覆盖:
```typescript
// 动态设置 API 地址(开发调试用)
wx.setStorageSync('API_BASE', 'http://192.168.1.100:8080')
```
### 自定义导航栏
项目已全局处理导航栏适配,所有页面自动计算胶囊按钮位置:
```typescript
Page({
data: {
// containerPaddingTop 会自动计算,无需手动设置
},
onShow() {
// 页面显示时自动更新 containerPaddingTop
}
})
```
在 WXML 中使用:
```xml
```
### 自定义 TabBar
项目使用自定义 TabBar,配置在 `miniprogram/custom-tab-bar/` 目录:
```typescript
import { switchTab } from '/custom-tab-bar/index'
// 切换 Tab
switchTab('home') // 切换到首页
switchTab('consult') // 切换到咨询页
switchTab('mine') // 切换到我的
```
## 开发指南
### 添加新页面
1. 在 `miniprogram/pages/` 目录下创建页面文件夹
2. 创建 `index.ts`、`index.wxml`、`index.scss`、`index.json` 文件
3. 在 `miniprogram/app.json` 的 `pages` 数组中添加页面路径
### 添加新 API
1. 在 `miniprogram/api/core/` 或相应目录下创建 API 文件
2. 使用 `request` 函数封装接口调用
3. 导出 API 函数供页面使用
### 使用 TDesign 组件
项目已集成 TDesign 组件库,可直接使用:
```json
// index.json
{
"usingComponents": {
"t-button": "tdesign-miniprogram/button/button",
"t-input": "tdesign-miniprogram/input/input"
}
}
```
```xml
按钮
```
### TypeScript 配置
项目使用严格的 TypeScript 配置,包括:
- 严格空值检查
- 禁止隐式 any
- 未使用变量检查
- 严格模式
## 常见问题
### 1. npm 构建失败
确保已执行 `npm install`,然后在微信开发者工具中重新构建 npm。
### 2. 请求失败或 token 过期
项目会自动处理 token 刷新,如果刷新失败会自动跳转到登录页。
### 3. 环境切换不生效
检查 `env.ts` 文件配置,或使用本地存储覆盖 API 地址。
## 贡献指南
欢迎贡献代码和改进文档。请遵循以下步骤:
1. Fork 仓库
2. 创建新分支 (`git checkout -b feature/new-feature`)
3. 提交更改 (`git commit -am 'Add new feature'`)
4. 推送分支 (`git push origin feature/new-feature`)
5. 创建 Pull Request
## 许可证
本项目采用 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。