- API 路由统一: 移除 /api/h5/,统一 /api/pms/ 入口 - 二进制改名: api-server -> pms-api(与服务名一致) - nginx: 合并 /api/ + /pms/api/ 为 /api/pms/ - 新增 docs/API.md 接口文档 - 后端: CabinetDetail 增加 rssi/pow_fail/address/soc 等字段 - Redis 管道批量读取仓体实时数据(SOC/电压/电流/功率) - DB: 所有 TIMESTAMP 列改为 DATETIME(修复类型不匹配) - 用户管理: 新增创建时间/修改时间列,状态改用 Switch - 角色管理/用户管理: 操作按钮改为图标 - PC 设备详情: 基本信息补全 RSSI/ICCID/电源/地址 - PC 卡片: 通道统计改用 Lucide 图标,颜色统一 - PC 二维码: canvas 渲染,含编号文字,支持右键下载 - H5: 按 uni-app 规范修正导航(navigateTo 替代 reLaunch) - H5: 详情页加返回导航条 - H5: 扫码支持摄像头(jsQR)+ ?id= 参数 - H5: 底部 tabBar 在所有页面常显 - H5: 首页统计改为 6 项(设备/通道/空闲/充电/充满/故障) - H5: 下拉刷新 / 上拉加载 - 产品首页: 添加业务联系 - 文档: 清理过时文件,补充缺失规范章节
4.0 KiB
4.0 KiB
name, description
| name | description |
|---|---|
| uni-promises | Promise wrappers for uni-app APIs - convert callback-based APIs to Promise-based |
uni-promises
Promise wrappers for uni-app's callback-based APIs. Convert uni-app APIs to return Promises for better async/await support.
Installation
npm i @uni-helper/uni-promises
Usage
Instead of using callbacks:
// Original callback style
uni.request({
url: 'https://api.example.com',
success: (res) => {
console.log(res.data)
},
fail: (err) => {
console.error(err)
},
})
Use Promises:
import { request } from '@uni-helper/uni-promises'
// Promise style
const res = await request({
url: 'https://api.example.com',
})
console.log(res.data)
Available APIs
Most uni-app APIs are wrapped:
Network
request- HTTP requestuploadFile- File uploaddownloadFile- File downloadconnectSocket- WebSocket
Storage
setStorage- Set storagegetStorage- Get storageremoveStorage- Remove storageclearStorage- Clear all storagegetStorageInfo- Storage info
Media
chooseImage- Select imageschooseVideo- Select videochooseMedia- Select mediapreviewImage- Preview imagessaveImageToPhotosAlbum- Save imagecompressImage- Compress image
File
saveFile- Save filegetFileInfo- File infogetSavedFileList- Saved files listremoveSavedFile- Remove saved fileopenDocument- Open document
Location
getLocation- Get locationchooseLocation- Choose locationopenLocation- Open location
Device
getSystemInfo- System infogetNetworkType- Network typescanCode- QR/barcode scansetClipboardData- Copy to clipboardgetClipboardData- Get clipboard
UI
showToast- Show toastshowModal- Show modalshowActionSheet- Show action sheetshowLoading- Show loadinghideLoading- Hide loadingshowNavigationBarLoading- Nav loadinghideNavigationBarLoading- Hide nav loadingsetNavigationBarTitle- Set nav titlesetNavigationBarColor- Set nav colorpageScrollTo- Scroll to position
Navigation
navigateTo- Navigate to pageredirectTo- Redirect to pagereLaunch- Re-launch appswitchTab- Switch tabnavigateBack- Go back
Login
login- User logincheckSession- Check sessiongetUserProfile- Get user profilegetUserInfo- Get user info
Payment
requestPayment- Request payment
Example Usage
import {
showModal,
showToast,
getStorage,
navigateTo,
getSystemInfo,
chooseImage,
uploadFile,
} from '@uni-helper/uni-promises'
async function handleUserAction() {
// Show confirmation
const { confirm } = await showModal({
title: 'Confirm',
content: 'Are you sure?',
})
if (!confirm) return
try {
// Get cached data
const { data: token } = await getStorage({ key: 'token' })
// Get system info
const systemInfo = await getSystemInfo()
console.log('Platform:', systemInfo.platform)
// Select image
const { tempFilePaths } = await chooseImage({
count: 1,
sizeType: ['compressed'],
})
// Upload file
const uploadRes = await uploadFile({
url: 'https://api.example.com/upload',
filePath: tempFilePaths[0],
name: 'file',
})
await showToast({
title: 'Success!',
icon: 'success',
})
// Navigate
await navigateTo({
url: '/pages/success/index',
})
} catch (error) {
await showToast({
title: error.message || 'Failed',
icon: 'error',
})
}
}
Error Handling
All wrapped APIs reject with standard Error objects:
import { request } from '@uni-helper/uni-promises'
try {
const res = await request({ url: 'https://api.example.com' })
} catch (error) {
// error.message contains the fail callback message
console.error('Request failed:', error.message)
}