unios-admin手机版后台|uniapp+vue3全端admin管理系统

96 阅读3分钟

基于uniapp+vue3+pinia2+qiun-data-charts搭建一种全新os式手机后台admin系统。

未标题-3-1.png

uni-vue3-osadmin提供了图表、表格、表单、编辑器、用户管理、角色管理等常用场景示例。

未标题-7.png

p2.gif

运用技术

  • 开发工具:HbuilderX 4.75
  • 技术框架:uniapp+vue3+vite5+pinia2
  • UI组件库:uni-ui+uv-ui(uniapp vue3组件库)
  • 弹框组件:uv3-popup(基于uniapp+vue3自定义弹窗组件)
  • 表格组件:uv3-table(基于uniapp+vue3跨端综合表格组件)
  • 图表组件:qiun-data-charts
  • 模拟数据:mockjs(用于自定义表格模拟数据)
  • 缓存技术:pinia-plugin-unistorage
  • 编译支持:h5+小程序+app端

未标题-10.png

未标题-12.png

项目框架结构

使用hbuilderx4.75搭建项目模板,采用vue3 setup语法开发。

360截图20250823064942397.png

p4.gif

p6.gif

桌面布局

500e7af2d91d09b236a45f4769a06f0f_1289798-20250823223434431-352952071.png

<script setup>
    import { ref } from 'vue'
    
    import Desk from './components/desk.vue'
    import Dock from './components/dock.vue'
    import Touch from './components/touch.vue'
</script>

<template>
    <uv3-layout>
        <!-- 桌面菜单 -->
        <Desk />
        
        <template #footer>
            <!-- 底部导航 -->
            <Dock />
        </template>
        <!-- 悬浮球(辅助触控) -->
        <Touch />
    </uv3-layout>
</template>

52d00ca9faeb55429ef4f1ebb1986c4c_1289798-20250823224021281-1242799848.png

cf0db3390bfd04c4700b6067733b2284_1289798-20250823224427179-1328285590.png

手机os桌面支持如下参数配置。

/**
 * label 图标标题
 * imgico 图标(本地或网络图片) 当type: 'icon'则为uni-icons图标名,当type: 'widget'则为自定义小部件标识名
 * type 图标类型(icon | widget) icon为uni-icons图标、widget为自定义小部件
 * path 跳转路由页面
 * link 跳转外部链接
 * hideLabel 是否隐藏图标标题
 * background 自定义图标背景色
 * color 自定义图标颜色
 * padding 内边距
 * size 栅格磁贴布局(16种) 1x1 1x2 1x3 1x4、2x1 2x2 2x3 2x4、3x1 3x2 3x3 3x4、4x1 4x2 4x3 4x4
 * onClick 点击图标回调函数
 * children 二级菜单
 * */

b91bebbcbaffddbf632158620d5e1ff4_1289798-20250823225306794-1906124278.png

支持配置children参数二级菜单。

5811177bbd1896976ff5a7f1ac44f739_1289798-20250823225514760-86072224.png

21e8dafacfbd4385058883459faa390d_1289798-20250823225612251-1402652843.png

<template>
    <swiper
        class="uv3__deskmenu"
        :indicator-dots="true"
        indicator-color="rgba(255,255,255,.5)"
        indicator-active-color="#fff"
    >
        <swiper-item v-for="(mitem, mindex) in deskMenu" :key="mindex">
            <view class="uv3__gridwrap">
                <view v-for="(item, index) in mitem.list" :key="index" class="uv3__gridwrap-item" @click="handleClickDeskMenu(item)">
                    <!-- 图标 -->
                    <view class="ico" :style="{'background': item.background}">
                        <!-- 二级菜单 -->
                        <template v-if="Array.isArray(item.children)">
                            <view class="uv3__gridwrap-thumb">
                                ...
                            </view>
                        </template>
                        <template v-else>
                            <template v-if="item.type == 'widget'">
                                <!-- 自定义部件 -->
                                <component :is="item.imgico" />
                            </template>
                            <template v-else>
                                <!-- 自定义图标 -->
                                ...
                            </template>
                        </template>
                    </view>
                    <!-- 标签 -->
                    <view v-if="!item.hideLabel" class="label clamp2">{{item.label}}</view>
                </view>
            </view>
        </swiper-item>
    </swiper>
    
    <!-- 桌面二级菜单 -->
    <Popup v-model="deskPopupVisible">
        <view class="uv3__deskpopup">
            ...
        </view>
    </Popup>

    ...
</template>

图标点击事件处理。

const handleClickDeskMenu = (item) => {
    if(item.link) {
        // 链接
        openURL(item.link)
    }else if(item.path) {
        // 页面路由地址
        uni.navigateTo({
            url: item.path.substr(0, 1) == '/' ? item.path : '/' + item.path
        })
    }else if(Array.isArray(item.children)) {
        // 二级菜单
        deskPopupMenu.value = item
        deskPopupVisible.value = true
    }
    // 绑定点击事件
    typeof item.onClick === 'function' && item.onClick()
}

007360截图20250822231631377.png

007360截图20250822231717035.png

007360截图20250822231903951.png

008360截图20250822232131386.png

008360截图20250822232335588.png

008360截图20250822232610443.png

009360截图20250822232839699.png

011360截图20250822233233379.png

012360截图20250822233820860.png

013360截图20250822233918179.png

014360截图20250822234140179.png

016360截图20250822234353341.png

还支持运行到pc端以750px展示页面布局,当然也可以自行调整宽度。

001360截图20250823105203613.png

001360截图20250823105334251.png

001360截图20250823105411428.png

001360截图20250823105617095.png

001360截图20250823105656207.png

uni-vue3-table自定义综合表格组件

项目中用到的表格组件,是基于uniapp+vue3自定义增强版table组件。

uni-vue3-table:基于uniapp+vue3全端通用自定义加强版table组件。支持固定表头/列、边框、斑马纹、单选/多选,自定义表头/表体内容插槽、左右固定列阴影高亮。支持编译运行h5+小程序端+app端

p6-2.gif

最新原创uniapp+vue3跨端自定义综合table表格组件

未标题-9.png

基于flutter3.32+window_manager仿macOS/Wins风格桌面os系统

flutter3.27+bitsdojo_window电脑端仿微信Exe应用

基于uniapp+vue3+uvue短视频+聊天+直播app系统

基于uni-app+vue3+uvui跨三端仿微信app聊天模板

基于uniapp+vue3+deepseek+markdown搭建app版流式输出AI模板

vue3.5+deepseek+arco+markdown搭建web版流式输出AI模板

Flutter3.x深度融合短视频+直播+聊天app实例

自研tauri2.0+vite6.x+vue3+rust+arco-design桌面版os管理系统Tauri2-ViteOS

自研tauri2.0+vite5+vue3+element-plus电脑版exe聊天系统Vue3-Tauri2Chat

原创electron31+vite5.x+elementPlus桌面端后台管理系统

Vite5-Electron-Wechat聊天实例|electron31+vue3客户端聊天EXE