vite5-macos仿macOS网页osx管理系统|vue3+arcoDesign桌面os

news2024/9/20 9:30:52

基于vite5.x+vue3+arco-design原创自研网页版os管理框架ViteWebOS。

使用最新前端技术vite5+vue3+pinia2+arcoDesign+sortablejs+echarts搭建网页pc版桌面os式后台管理系统解决方案。支持自定义桌面栅格布局引擎、可拖拽桌面图标、多屏分页管理、自定义桌面壁纸主题、毛玻璃虚化背景等功能。

在这里插入图片描述
vite-macos管理系统支持windowsmacos桌面模式。

在这里插入图片描述

技术栈

  • 编辑器:vscode
  • 技术框架:vite5+vue3+vue-router4+pinia2
  • UI组件库:arco-design^2.55.3 (字节桌面版vue3组件库)
  • 状态管理:pinia^2.1.7
  • 图表插件:echarts^5.5.1
  • 拖拽组件:sortablejs^1.15.2
  • 富文本编辑器:wangeditor^4.7.15
  • 模拟数据:mockjs^1.1.0
  • 构建工具:vite^5.3.3

在这里插入图片描述
在这里插入图片描述

特性

  1. 菜单支持动态JSON配置
  2. 支持windows+macos两种桌面模式
  3. 支持桌面菜单可拖拽排序
  4. 自定义桌面主题皮肤、虚化毛玻璃UI质感
  5. 全新os式后台管理系统解决方案

在这里插入图片描述

项目结构

使用最新版vite5.x搭建项目,采用vue3 setup语法糖编码。
在这里插入图片描述
在这里插入图片描述
目前vite-macos项目已经发布到我的原创作品集,感兴趣的可以去看看。
vite5+vue3+arco-design仿macOS网页版os管理系统

在这里插入图片描述

main.js入口管理

import { createApp } from 'vue'
import './style.scss'
import App from './App.vue'

// 引入arco.design组件库
import ArcoDesign from '@arco-design/web-vue'
import '@arco-design/web-vue/dist/arco.css'
// 额外引入图标库
import ArcoIcon from '@arco-design/web-vue/es/icon'
import VEPlus from 've-plus'
import 've-plus/dist/ve-plus.css'

// 引入路由及状态管理
import Router from './router'
import Pinia from './pinia'

const app = createApp(App)

app
.use(ArcoDesign)
.use(ArcoIcon)
.use(VEPlus)
.use(Router)
.use(Pinia)
.mount('#app')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

vue3-webos桌面模板

在这里插入图片描述

支持macoswindows两种桌面模式。

<script setup>
  import { appState } from '@/pinia/modules/app'

  // 引入布局模板
  import MacosLayout from './template/macos.vue'
  import WindowsLayout from './template/windows.vue'

  const appstate = appState()

  const DeskLayout = {
    macos: MacosLayout,
    windows: WindowsLayout
  }
</script>

<template>
  <div
    class="vu__container desktop flexbox flex-alignc flex-justifyc"
    :style="{'--themeSkin': appstate.config.skin}"
    @contextmenu.prevent
  >
    <component :is="DeskLayout[appstate.config.layout]" />
  </div>
</template>

在这里插入图片描述

<template>
  <div class="vu__layout flexbox flex-col">
    <div class="vu__layout-header">
      <Toolbar />
    </div>
    <div class="vu__layout-body flex1 flexbox">
      <Desk />
    </div>
    <div class="vu__layout-footer">
      <Dock />
    </div>
    <!-- 悬浮球(辅助触控) -->
    <Touch />
  </div>
</template>

vue3实现Dock菜单

在这里插入图片描述
在这里插入图片描述

<template>
  <div class="vu__macos-dock">
    <div class="vu__dock-wrap" :class="appstate.config.dock||'compact'">
      <div v-for="(data, key) in dockMenu" :key="key" class="vu__dock-group">
        <a v-for="(item, index) in data?.list" :key="index" class="vu__dock-item" @click="handleClickDock(item)">
          <span v-if="item.label" class="label">{{item.label}}</span>
          <!-- 二级菜单 -->
          <a-trigger v-if="isArray(item?.children)" trigger="click">
            <!-- 二级缩略 -->
            <div class="thumb">
              <div class="vu__dock-thumbmenu">
                ...
              </div>
            </div>
            <template #content>
              <!-- 二级弹窗 -->
              <div class="vu__dock-thumbpopup">
                <a-scrollbar style="overflow: auto; margin-top: 10px; height: 210px;">
                  ...
                </a-scrollbar>
              </div>
            </template>
          </a-trigger>
          <div v-else class="imgico" :style="{'color': item.color}">
            <template v-if="isImg(item.imgico)">
              <img :src="item.imgico" />
            </template>
            <template v-else>
              <component v-if="isObject(item.imgico)" class="ico" :is="item.imgico" />
              <i v-else class="ico elec-icon" :class="item.imgico"></i>
            </template>
          </div>
        </a>
      </div>
    </div>
  </div>
</template>

vue3-webos桌面栅格引擎

全新自研的桌面栅格布局引擎,支持自定义json配置,支持拖拽图标。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
桌面图标支持自定义圆角、尺寸、间距、背景色等功能。

// 自定义变量(桌面图标)
const deskVariable = ref({
  '--icon-radius': '8px', // 圆角
  '--icon-size': '60px', // 图标尺寸(设置rpx自定义手机设备)
  '--icon-gap-col': '30px', // 水平间距
  '--icon-gap-row': '30px', // 垂直间距
  '--icon-labelSize': '12px', // 标签文字大小
  '--icon-labelColor': '#fff', // 标签颜色
  '--icon-fit': 'contain', // 图标自适应模式
})

在这里插入图片描述
在这里插入图片描述
桌面desk菜单项配置

const deskMenu = [
  {
    pid: 20240507001,
    list: [
      {imgico: markRaw(Today), size: '2x2'},
      {imgico: markRaw(Weather), size: '2x2'},
      {label: '便签', imgico: markRaw(NoteBook), size: '4x2'},
      ...
    ]
  },
  {
    pid: 20240509002,
    list: [
      {label: 'Appstore', imgico: '/static/mac/appstore.png'},
      {label: '地图', imgico: '/static/mac/maps.png'},
      ...
    ]
  },
  {
    pid: 20240510001,
    list: [
      {label: 'Github', imgico: '/static/svg/github.svg', link: 'https://github.com/', background: '#607d8b',},
      ...
    ]
  },
  {
    uid: 'd141f210-207e-1e8e-9950-9deefac27e48',
    list: [
      {label: 'Vite^5.3.3', imgico: 'https://vitejs.dev/logo.svg', link: 'https://vitejs.dev/'},
      ...
      {
        label: '组件',
        children: [
          {label: '表格', imgico: '/static/svg/table.svg', path: '/components/table/all'},
          {label: '自定义表格', imgico: '/static/svg/table.svg', path: '/components/table/custom'},
          ...
        ]
      },
      {label: 'ChatGPT', imgico: '/static/svg/chatgpt.svg', link: 'https://openai.com/chatgpt/', background: '#15A17F',},
      {label: 'Bilibili', imgico: '/static/svg/bilibili.svg', link: 'https://www.bilibili.com/', background: '#ff6899',},
      {
        label: '个人中心',
        children: [
          {label: '主页', imgico: '/static/svg/my.svg', path: '/setting'},
          ...
        ]
      },
      {
        label: '设置',
        children: [
          {label: '网站设置', imgico: '/static/svg/settings.svg', path: '/setting/system/website'},
          {label: '邮件服务', imgico: '/static/mac/mail.png', path: '/setting/system/mail'},
        ]
      },
      {
        label: '公众号', imgico: markRaw(IconWechat), color: '#07c160',
        onClick: () => {
          ...
        }
      },
    ]
  }
]

ok,以上就是vue3+pinia2+arco.design实战网页版os管理系统。该项目涉及到的知识点还是蛮多的,希望对大家有所帮助!

https://blog.csdn.net/yanxinyun1990/article/details/140284304

https://blog.csdn.net/yanxinyun1990/article/details/139103578

https://blog.csdn.net/yanxinyun1990/article/details/138317354

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1948645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【漏洞复现】E-Cology OA——WorkflowServiceXml——SQL注入

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 E-Cology OA协同商务系统是一款面向中大型组织的数字化办公产品…

LeNet卷积神经网络,手写数字识别

1. LeNet卷积神经网络的概念 先看看GPT的回答 有的资料中分层为 他们之间得差别就在于gpt的卷积层c5和上图中的全连接层1是同一种概念&#xff0c;因为该层使用的是5*5的卷积核&#xff0c;步长为一&#xff0c;根据公式可以算出输出的大小即是1X1的大小 训练参数是卷积核的大…

sentinel 服务流量控制 、熔断降级

1、什么是 sentinel,可以用来干什么 sentinel是用来在微服务系统中保护微服务对的作用,如何避免服务的雪崩、熔断、降级,说白了就是用来替换hystrix。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 官网:GitHub - alibaba/Se…

Python从0到100(四十三):数据库与Django ORM 精讲

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

08 capture软件新建原理图 09 原理图添加元器件 10 原理图信号连通 11 原理图电源和地连通

08 capture软件新建原理图 && 09 原理图添加元器件 && 10 原理图信号连通 && 11 原理图电源和地连通 第一部分 08 capture软件新建原理图第二部分 09 原理图添加元器件第三部分 10 原理图信号连通第四部分 11 原理图电源和地连通 第一部分 08 capture软…

服务器重启了之后就卡在某个页面了,花屏,如何解决??

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

LC61----1374. 生成每种字符都是奇数个的字符串(字符串)---java版

1.题目 2.思路 &#xff08;1&#xff09;题目要生成每种字符是奇数个的字符串。 &#xff08;2&#xff09;所以直接用参数n%2来判断。 (3)返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串&#xff0c;则返回其中任意一个即可。 (4)感觉题目不是很规范哈…

云服务器部署vite前端项目

本篇博客将详述眨眼睛部署前端项目遇到的问题和解决方法 打包vite项目 输入指令会生成一个dist文件夹 npx vite build 如果我们使用liveServer打开这个html会发现报错 细看一下&#xff0c;是生成的路径都是以/开头&#xff0c;按理我们应该使用相对路径 当然它默认这么生成肯定…

lambda表达式,真题示例

Lambda表达式 它使代码更加简洁、易读&#xff0c;函数式编程增强了代码的表达力。常用于对集合的操作&#xff0c;如遍历、过滤、转换等。 Lambda表达式的形式&#xff1a; 参数&#xff0c; 箭头&#xff08;->) 以及一个表达式&#xff1a; (String first, String sec…

如何找到最快解析速度的DNS

如何找到最快解析速度的DNS DNS,即域名系统(Domain Name System),是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,而不用记住能够被机器直接读取的IP数串。 在浏览网页时,我们通常使用域名,而不是IP地址。当域名在…

虚拟机复制后网络不可用,报错“network.service - LSB: Bring up/down networking”

查询IP地址&#xff0c;eth33 没有显示IP地址 尝试重启&#xff0c;有报错&#xff0c;并且有提示&#xff0c;按照提示执行下看看 解决办法 chkconfig NetworkManager offsystemctl disable NetworkManager.serviceservice NetworkManager stopservice network restart 之后检…

堆(c++)

堆是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。 堆总是满足下列性质&#xff1a; 堆中某个节点的值总是不大于或不小于其父节点的值&#xff1b;堆总是一棵完全二叉树。 常见的堆有二叉堆、斐波那契堆等。 堆是非线性数据结构&#…

hugging face 使用教程———快速入门

概述 本篇存在的意义是快速介绍hugging face使用&#xff0c;梳理主要部件&#xff0c;梳理易混淆概念。原因是&#xff1a;目前hugging face的使用&#xff0c;官方放在了3个地方&#xff08;参考链接部分&#xff09;&#xff1a;使用文档、NLP教程、Transformers git的readm…

洛谷P1910题解

思路 一个变型的DP 这道题增加了一个维度&#xff0c;其他地方和其他的01背包没有任何区别 只是状态转移方程由变成了 dp[j][k]max(dp[j][k],dp[j-c[i]][k-b[i]]a[i]); 还要注意一点&#xff0c;不能开三维的数组&#xff0c;会MLE。 代码 #include<bits/stdc.h>…

【llama3.1】ollama的使用--本地部署使用llama3.1模型

快速入门 安装完成ollama后,在命令行窗口输入 ollama run llama3 上图表示 Ollama 正在下载 llama3 任务所需的资源文件,并显示了当前的下载进度、速度和预计剩余时间。这是 Ollama 在准备运行 llama3 任务之前所需的步骤。 上面的步骤完成后,就可以在本地进行聊天了,…

USB枚举过程记录和个人认识以及设备程序的框架简述

主机和从机认识 参考 主机 从机 从usb设备连接usb口整个过程概述 参考&#xff1b;参考1 枚举过程简单说就是usb设备插入电脑接口后建立最初的识别设备通信的过程 参考 参考下面的分析是从开始对默认地址第一次发送Get_Descriptors开始的 主机和设备断开或连接以及高速…

Arduino学习笔记1——IDE安装与起步

一、IDE安装 去浏览器直接搜索Arduino官网&#xff0c;点击Software栏进入下载界面&#xff0c;选择Windows操作系统&#xff1a; 新版IDE下载不需要提前勾选所下载的拓展包&#xff0c;下载好后直接点击安装即可。 安装好后打开Arduino IDE&#xff0c;会自动开始下载所需的…

【精通Redis】Redis入门介绍

引言 本文作为笔者研究学习Redis的开篇之作&#xff0c;主要是对redis做一个简单系统的介绍&#xff0c;日常开发中都只是集成使用其缓存的功能&#xff0c;没有更深入的学习了解它的特性。笔者作为一个有五年Java开发经验的程序员&#xff0c;把大量时间都花在了编码上&#…

从零入手人工智能(6)—— 聚类

1.小故事 有一家零售连锁店&#xff0c;他们以其精准的市场定位和个性化的顾客服务而闻名&#xff0c;随着市场竞争的加剧和顾客需求的多样化&#xff0c;他们的管理层开始意识到&#xff0c;只有更加深入地了解他们的顾客群体&#xff0c;以便更好地满足他们的需求。 他们定…

渗透测试——利用公网反弹shell到本地的两种方式,vmware虚拟机与主机的端口转发,本地ssh无法上线的问题解决

解决问题&#xff1a; 因长期使用本地模拟靶场&#xff0c;实战护网时并非模拟靶场&#xff0c;shell反弹需要利用公网测试。解决目标站无法反弹到本地的情况。解决本地是windows&#xff0c;虚拟机是kail、linux&#xff0c;无法相互转换流量的情况。 环境搭建 靶机 centOS7 …