12451 b553c4e519 feat: API 统一 + 设备详情补全 + H5 导航优化
- 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: 下拉刷新 / 上拉加载
- 产品首页: 添加业务联系
- 文档: 清理过时文件,补充缺失规范章节
2026-07-04 04:03:02 +08:00

4.0 KiB

name, description
name description
uni-use VueUse-style composable utilities for uni-app development

uni-use

VueUse-style composable utilities specifically designed for uni-app. Provides reactive wrappers around uni-app APIs.

Installation

npm i @uni-helper/uni-use @vueuse/core@9

Usage

import { tryOnLoad, useClipboard, useSystemInfo } from '@uni-helper/uni-use'

tryOnLoad(() => {
  console.log('Page loaded')
})

const { copy, text } = useClipboard()
const { systemInfo } = useSystemInfo()

Auto Import Setup

// vite.config.ts
import { uniuseAutoImports } from '@uni-helper/uni-use'
import autoImport from 'unplugin-auto-import/vite'

export default defineConfig({
  plugins: [
    autoImport({
      imports: [uniuseAutoImports()],
    }),
    uni(),
  ],
})

Available Composables

Lifecycle

Composable Description
tryOnLoad onLoad with try-catch
tryOnShow onShow with try-catch
tryOnHide onHide with try-catch
tryOnReady onReady with try-catch
tryOnUnload onUnload with try-catch
tryOnPullDownRefresh onPullDownRefresh with try-catch
tryOnReachBottom onReachBottom with try-catch
tryOnPageScroll onPageScroll with try-catch
tryOnTabItemTap onTabItemTap with try-catch

System

Composable Description
useSystemInfo Reactive system information
useDeviceInfo Device information
useWindowInfo Window dimensions
useAppTheme App theme (dark/light)
useNetworkStatus Network connection status
useBattery Battery status

Storage

Composable Description
useStorage Reactive local storage
useStorageAsync Async storage operations

UI

Composable Description
useClipboard Clipboard operations
useToast Toast notifications
useModal Modal dialogs
useActionSheet Action sheet
useLoading Loading indicator
useNavigationBar Navigation bar control
usePullDownRefresh Pull-to-refresh

Location

Composable Description
useLocation Current location
useChooseLocation Location picker

Media

Composable Description
useImage Image operations
useCamera Camera access
useRecorder Audio recording

Example Usage

<script setup lang="ts">
import { useClipboard, useSystemInfo, useStorage, tryOnLoad } from '@uni-helper/uni-use'

// System info
const { systemInfo, safeArea } = useSystemInfo()

// Clipboard
const { text, copy, isSupported } = useClipboard()
const handleCopy = async () => {
  await copy('Hello uni-app')
  uni.showToast({ title: 'Copied!' })
}

// Storage
const userToken = useStorage('token', '')
const saveToken = (token: string) => {
  userToken.value = token
}

// Lifecycle
tryOnLoad((options) => {
  console.log('Page options:', options)
})
</script>

<template>
  <view class="page">
    <text>Platform: {{ systemInfo.platform }}</text>
    <text>Safe area top: {{ safeArea?.top }}px</text>
    <button @click="handleCopy">Copy to clipboard</button>
  </view>
</template>

Build Configuration

For Vite + Vue3 projects targeting ES6:

// vite.config.ts
export default defineConfig({
  build: {
    target: 'es6',
    cssTarget: 'chrome61',
  },
  optimizeDeps: {
    exclude: ['vue-demi'],
  },
})

Add polyfills in main.ts if needed:

// main.ts
import 'core-js/actual/array/iterator'
import 'core-js/actual/promise'
import 'core-js/actual/object/assign'

Limitations

  • Mini Program and App environments lack some globals (window, navigator)
  • Cannot use top-level await
  • Some VueUse features may not work in uni-app

See Also