图床项目进度(一)——UI首页

这篇具有很好参考价值的文章主要介绍了图床项目进度(一)——UI首页。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

前面我不是说了要做一个图床吗,现在在做ui。

我vue水平不够高,大部分参考b站项目照猫画虎。

  1. vue实战后台

我使用ts,vite,vue3进行了重构。
当然,我对这些理解并不深刻,许多代码都是游离于表面,仅仅给大家参考
图床项目进度(一)——UI首页,web的学习历程,vue,ui

2. 过程

2.1. 使用elemen ui进行导航制作。

这里直接用element ui菜单直接粘上去就可以,几乎没有任何其他处理

<template>
  <el-menu
      default-active="2"
      class="el-menu-vertical-demo"
      :collapse="useHeaderStore().tab.isCollapse"

      @open="handleOpen"
      @close="handleClose"
  >
    <img class="logo" src="../..//src/assets/云盘上传.png">
    <h1 class="title">{{useHeaderStore().tab.isCollapse? "图床":"好玩图床"}}</h1>
    <el-sub-menu v-for="item of currentMenu.items" :index="item.title">
      <template #title>
        <el-icon >
          <component :is=item.icon></component>
          </el-icon>
        <span>{{item.title}}</span>
      </template>

      <el-menu-item @click="clickMenu(cItem.path,cItem.title)" v-for="cItem of item.children" :index="cItem.title "><el-icon><component :is = cItem.icon></component></el-icon>{{cItem.title}}</el-menu-item>
    </el-sub-menu>

  </el-menu>
</template>

值得注意的是icon动态绑定的展示和vue2略有不同

     <el-icon >
      <component :is=item.icon></component>
      //使用component :is=item.icon展示
      </el-icon>

2.2.head制作

图床项目进度(一)——UI首页,web的学习历程,vue,ui

header部分主要有一个折叠开关,由于和左侧栏不是一个组件里,我使用pinia进行数据传递。

  1. 大菠萝官网
<template>
  <div class="header-container">

    <div class="l-content">
      <el-button @click="handleMenu" :icon="Menu" size="mini" />
      <!-- 面包屑 -->
      <el-breadcrumb separator="/" style="margin-left: 20px">
        <el-breadcrumb-item v-for="item in tags" :key="item.path" :to="{ path: item.path }">{{ item.title }}</el-breadcrumb-item>
      </el-breadcrumb>

    </div>
    <div class="r-content">
      <el-dropdown>
        <span class="el-dropdown-link">
          <img class="user" src="../assets/meiyangyang.jpg">
        </span>
        <template #dropdown>
          <el-dropdown-menu>
            <el-dropdown-item>退出</el-dropdown-item>
          </el-dropdown-menu>
        </template>
      </el-dropdown>
    </div>
  </div>
</template>
<script lang="ts" setup>
import { Menu } from '@element-plus/icons-vue';
import useHeaderStore from "@/store/moudle/header";
import {computed} from "vue";

const handleMenu = () => {
  const headerStore   = useHeaderStore();
  headerStore.tab.isCollapse = !headerStore.tab.isCollapse;

};
const tags = computed(() => {
  const headerStore = useHeaderStore();
  return headerStore.tab.tabList;
});
</script>

2.3.首页制作

  1. 两个表格
<el-card class="box-card">
   <div class="user">
     <img src="../assets/meiyangyang.jpg">
     <div class="user-info">
       <p class="name">Admin</p>
       <p class="access">超级管理员</p>
     </div>
   </div>
   <div class="login-info">
     <p>上次登录时间 <span>2021-07-25</span></p>
     <p>上次登录地点 <span>上海</span></p>
   </div>
  </el-card>
  <el-card style="margin-top: 20px; height: 410px">
    <el-table :data="tableData" style="width: 100%">
      <el-table-column prop="date" label="文件id"  />
      <el-table-column prop="name" label="上传日期"  />
      <el-table-column prop="address" label="本月引用" />
      <el-table-column prop="allLinks" label="总引用" />
    </el-table>
  </el-card>

   
     

这个直接element ui贴贴就完了。

  1. 6个颜色卡
    6个盒子,这个可能css难写点,我基本都是抄的给不出什么建议。
    图床项目进度(一)——UI首页,web的学习历程,vue,ui
<div class="num">
        <el-card v-for="item in labelDate" :key="item.label" :body-style="{display: 'flex',padding: '0',height : '80px'}">
          <div class="icon" :style="{backgroundColor:item.color}">
          <el-icon size="30px" style="text-align: center">
            <component  :is=item.icon ></component>
          </el-icon>
          </div>
          <div class="details">
            <p class="sum">{{item.sum}}次</p>
            <p class="label">{{item.label}}</p>
          </div>
        </el-card>
      </div>
<style lang="less" scoped>

.login-info{
  p{
    line-height: 28px;
    font-size: 14px;
    color : #999999;
    span{
      color: #666666;
      margin-left: 60px;
    }
  }
}
.user{
  margin-bottom: 20px;
  padding-bottom: 20px;
  border-bottom: 1px solid #ccc;
  display: flex;
  align-items: center;
  img{
    margin-right: 40px;
    width: 150px;
    height: 150px;
    border-radius: 50%;
  }
  .user-info{
    .name{
      font-size: 32px;
      margin-bottom: 10px;
    }
    .access{
      color: #999999;
    }
  }

}
.card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.text {
  font-size: 14px;
}

.item {
  margin-bottom: 18px;
}

.box-card {
}

.num {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  .icon {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 80px;
    height: 80px;
    text-align: center;
    line-height: 80px;
    color: #fff;
  }
  .details {
    margin-left: 15px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    .sum {
      font-size: 20px;
      margin-bottom: 10px;
      line-height: 30px;
      height: 30px;
    }
    .label {
      font-size: 14px;
      color: #999;
      text-align: center;
    }
  }
  .el-card {
    margin-left: 5px;
    width: 32%;
    margin-bottom: 20px;
  }
}
.graph{
  display: flex;
  margin-top: 20px;
  justify-content: space-between;
  .el-card{
    width: 48%;

  }
}

</style>

  1. 图表制作。

图床项目进度(一)——UI首页,web的学习历程,vue,ui图标是使用echart插件制作的,很好用,推荐。

  1. echarts官网

这个直接定位id然后塞进去就行,写在钩子函数里。

onMounted(() => {
  const myCharts = echarts.init(document.getElementById('chart1'));
  const option = {

    title: {
      text: ''
    },
    tooltip: {
      trigger: 'axis'
    },
    legend: {
      data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '10%',
      containLabel: true
    },
    toolbox: {
      feature: {
        saveAsImage: {}
      }
    },
    xAxis: {
      type: 'category',
      boundaryGap: false,
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
      type: 'value'
    },
    series: [
      {
        name: 'Email',
        type: 'line',
        stack: 'Total',
        data: [120, 132, 101, 134, 90, 230, 210]
      },
      {
        name: 'Union Ads',
        type: 'line',
        stack: 'Total',
        data: [220, 182, 191, 234, 290, 330, 310]
      },
      {
        name: 'Video Ads',
        type: 'line',
        stack: 'Total',
        data: [150, 232, 201, 154, 190, 330, 410]
      },
      {
        name: 'Direct',
        type: 'line',
        stack: 'Total',
        data: [320, 332, 301, 334, 390, 330, 320]
      },
      {
        name: 'Search Engine',
        type: 'line',
        stack: 'Total',
        data: [820, 932, 901, 934, 1290, 1330, 1320]
      }
    ]
  };
  myCharts.setOption(option);

  // 柱状图
  const echarts2 = echarts.init(document.getElementById('chart2'));
  const option2 = {
    legend: {
      // 图例文字颜色
      textStyle: {
        color: "#333",
      },
    },
    grid: {
      left: "20%",
    },
    // 提示框
    tooltip: {
      trigger: "axis",
    },
    xAxis: {
      type: "category", // 类目轴
      data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
      axisLine: {
        lineStyle: {
          color: "#17b3a3",
        },
      },
      axisLabel: {
        interval: 0,
        color: "#333",
      },
    },
    yAxis: [
      {
        type: "value",
        axisLine: {
          lineStyle: {
            color: "#17b3a3",
          },
        },
      },
    ],
    color: ["#2ec7c9", "#b6a2de"],
    series: [
      {
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
      },
      {
        name: '购买',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
      }
    ],
  };
  echarts2.setOption(option2);
  const option3 = {
    tooltip: {
      trigger: 'item'
    },
    legend: {
      top: '5%',
      left: 'center'
    },
    series: [
      {
        name: 'Access From',
        type: 'pie',
        radius: ['40%', '70%'],
        avoidLabelOverlap: false,
        itemStyle: {
          borderRadius: 10,
          borderColor: '#fff',
          borderWidth: 2
        },
        label: {
          show: false,
          position: 'center'
        },
        emphasis: {
          label: {
            show: true,
            fontSize: 40,
            fontWeight: 'bold'
          }
        },
        labelLine: {
          show: false
        },
        data: [
          { value: 1048, name: 'Search Engine' },
          { value: 735, name: 'Direct' },
          { value: 580, name: 'Email' },
          { value: 484, name: 'Union Ads' },
          { value: 300, name: 'Video Ads' }
        ]
      }
    ]
  };

  //饼图
  const echarts3 = echarts.init(document.getElementById('chart3'));
  option && echarts3.setOption(option3);

后面暂时没了,最后写完的话,我会把源码放出来文章来源地址https://www.toymoban.com/news/detail-662700.html

到了这里,关于图床项目进度(一)——UI首页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VUE3+TS+element UI +高德地图实现轨迹回放带进度条

    记录一下,由于项目需要做车辆的历史轨迹回放,查了很多资料,在高德地图里有这几种解决方案。 所用技术:vue3 + TS +element UI plus +高德地图  这是相关的Demo借鉴 高德地图的轨迹回放demo 轨迹巡航器控制 高德地图Amap UI 下面是效果图: 1,这是高德地图提供的轨迹回放demo

    2024年02月11日
    浏览(51)
  • web前端自学全套视频,学习慕课网 vue-cli3安装,cube-ui安装,前端面试自我介绍

    https://github.com/cube-ui/cube-template/wiki 2019.2.25 1 tab点击切换导航栏: http://ustbhuangyi.com/music/#/rank vue-cli2.9.6 中使用cube-ui注意事项 https://didi.github.io/cube-ui/#/zh-CN/docs/quick-start 淘宝源 使用 cnpm -v 查看是否已经安装 cnpm。如果没有,使用 npm install cnpm -g --registry=https://registry.npm.taobao.or

    2024年04月26日
    浏览(24)
  • 基于vue element-ui 封装上传图片组件 功能:上传,删除,预览,上传图片水印,拖拽排序,上传进度条等

    我们在开发后台时肯定避免不了上传图片的功能 例如: 上传图片回显 上传完成 : 预览查看 , 删除等 如果是图片列表,还可能让你拖动图片排序 有的后台项目可能要给图片添加水印,添加标记 有的后台可能要炫酷一点 添加进度条功能 现在我们要完成上面的一系列功能,这里我

    2024年02月16日
    浏览(48)
  • 基于Vue2+Element UI或Vue3+Element plus对 el-notification 增加倒计时进度条特效,鼠标移入暂停计时,移出继续计时

    遇到一个需求就是对这个 el-notification 加一个倒计时进度条,方便用户知道该通知何时自动关闭。于是自己动手丰衣足食。 (1)基于Vue2+ElementUI的项目 (1)基于Vue3+ElementPlus的项目 JS DOM获取元素属性+操作方法 Vue2的h函数(createElement)与Vue3中的h函数用法

    2024年02月16日
    浏览(48)
  • vue ui 创建项目

    注意:首先要确定安装了 node.js ,并且全局安装了脚手架 vue-cli 。然后才能继续以下步骤: 1、在你要创建项目的文件夹里打开 cmd ,输入 vue ui: 2、跳转到下面的页面,点击“在此创建新项目”:  3、输入项目名,点击“下一步”:  4、选择手动配置,下一步: 5、选择以

    2024年02月13日
    浏览(26)
  • 使用vue ui创建vue项目

    简单来说,vue ui是一个可视化图形界面,方便你去创建、更新和管理vue项目,包括下载router,vuex, axios ,elementui等插件,配置好一些属性以及依赖关系,方便我们使用,我个人第一次接触它就感觉非常非常非常智能和强大    1、安装Vue CLI,因为vue ui是在Vue CLI基础上封装的

    2024年02月09日
    浏览(39)
  • Webpack项目学习:Vue-cli(脚手架)-优化配置 -ui库element-plus+减小打包体积 -按需加载+自定义主题+优化

    安装 全部引入,在入口文件main.js  启动:npm start  按需引入 需要插件快速开始 | Element Plus (gitee.io)     更改默认配置 主题 | Element Plus (gitee.io)    如果有模块没有安装 ,安装一下即可 优化 关闭性能分析 文件单独打包 做缓存-

    2024年02月08日
    浏览(46)
  • 通过vue ui创建项目失败

    使用vue ui可以打开页面,如下: 根据步骤创建项目后,项目创建失败,页面没有跳转,停留在配置页面,如下: 解决办法 :以管理员身份运行cmd,并切换路径,比如你的nodejs安装在E盘,那切换到E盘后,再运行 vue ui ,如图: vuetest是我用来存放vue项目的文件夹,然后在用

    2024年02月12日
    浏览(39)
  • vue ui 创建项目没有反应

    cmd中输入 vue ui 没有反应 vue ui命令需要vue3.0以上的版本 才可以 1、查看当前版本 vue版本在3.0以下是没有ui命令的 2、查看版本所拥有的命令  3、卸载之前版本的vue 卸载完成,检查是否已经卸载  4、安装@vue/cli  等待安装...... 5、检查是否安装成功,查看版本 查看vue命令中是否

    2024年02月11日
    浏览(29)
  • web开发学习笔记(6.element ui)

    1.安装 2.在app.vue中引入ElementView中的内容 3.表格控件,当页大小发生变化,当当前页发生变化 4.对话框组件 5.将form表单中的数据打印出来 6.当遇到日期选择器得到的数据为昨日时,应该加入 value-format=\\\"yyyy-MM-dd\\\"即可避免这个问题 7.vue中安装axios 8.使用插槽构建三元表达式 9.v

    2024年01月17日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包