很高,可以使用 Element UI 库和 Vue.js 框架来实现一个现代化的实验仪器设备管理系统首页。

以下是一个简单的示例代码,用于展示如何使用 Element UI 构建一个科技感十足的首页:

<template>
  <div class="dashboard">
    <!-- 顶部导航栏 -->
    <el-header class="header">
      <img class="logo" src="./assets/logo.png" alt="Logo">
      <el-menu class="menu" mode="horizontal" default-active="1">
        <el-menu-item index="1">首页</el-menu-item>
        <el-menu-item index="2">设备管理</el-menu-item>
        <el-menu-item index="3">实验记录</el-menu-item>
        <el-menu-item index="4">用户管理</el-menu-item>
      </el-menu>
      <el-dropdown class="user-menu" trigger="click">
        <span class="el-dropdown-link">
          <img class="avatar" src="./assets/avatar.png" alt="Avatar">
          {{ currentUser.name }}
        </span>
        <el-dropdown-menu slot="dropdown">
          <el-dropdown-item>个人信息</el-dropdown-item>
          <el-dropdown-item>退出登录</el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
    </el-header>
    <!-- 内容区域 -->
    <el-main class="main">
      <div class="grid">
        <div class="card">
          <div class="card-header">
            <span class="title">待处理任务</span>
            <el-button size="mini" type="primary">查看全部</el-button>
          </div>
          <div class="card-content">
            <ul class="task-list">
              <li class="task-item">
                <span class="name">实验设备维修</span>
                <span class="time">2小时前</span>
              </li>
              <li class="task-item">
                <span class="name">实验数据分析</span>
                <span class="time">1天前</span>
              </li>
              <li class="task-item">
                <span class="name">设备订购审核</span>
                <span class="time">3天前</span>
              </li>
            </ul>
          </div>
        </div>
        <div class="card">
          <div class="card-header">
            <span class="title">实验设备统计</span>
            <el-button size="mini" type="primary">查看全部</el-button>
          </div>
          <div class="card-content">
            <div class="chart-container">
              <el-chart :options="deviceChartOptions"></el-chart>
            </div>
          </div>
        </div>
        <div class="card">
          <div class="card-header">
            <span class="title">最近实验记录</span>
            <el-button size="mini" type="primary">查看全部</el-button>
          </div>
          <div class="card-content">
            <ul class="record-list">
              <li class="record-item">
                <span class="name">实验名称</span>
                <span class="time">2021-01-01</span>
              </li>
              <li class="record-item">
                <span class="name">实验名称</span>
                <span class="time">2021-01-02</span>
              </li>
              <li class="record-item">
                <span class="name">实验名称</span>
                <span class="time">2021-01-03</span>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </el-main>
    <!-- 底部信息 -->
    <el-footer class="footer">
      © 2021 实验室管理系统
    </el-footer>
  </div>
</template>

<script>
import { mapState } from 'vuex';
import { ElHeader, ElMenu, ElMenuItem, ElDropdown, ElDropdownItem, ElDropdownMenu, ElMain, ElButton, ElFooter, ElChart } from 'element-plus';

export default {
  components: {
    ElHeader,
    ElMenu,
    ElMenuItem,
    ElDropdown,
    ElDropdownItem,
    ElDropdownMenu,
    ElMain,
    ElButton,
    ElFooter,
    ElChart,
  },
  computed: {
    ...mapState(['currentUser']),
    deviceChartOptions() {
      return {
        title: {
          text: '实验设备统计',
        },
        tooltip: {},
        xAxis: {
          data: ['设备1', '设备2', '设备3', '设备4', '设备5', '设备6'],
        },
        yAxis: {},
        series: [{
          name: '数量',
          type: 'bar',
          data: [10, 20, 30, 40, 50, 60],
        }],
      };
    },
  },
};
</script>

<style scoped>
.dashboard {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 20px;
  background-color: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .1);
}

.logo {
  height: 40px;
}

.menu {
  border: none;
}

.user-menu {
  margin-left: auto;
}

.avatar {
  height: 20px;
  margin-right: 5px;
}

.main {
  flex-grow: 1;
  padding: 20px;
  background-color: #f4f4f4;
}

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 20px;
}

.card {
  background-color: #fff;
  border-radius: 4px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .1);
}

.card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 20px;
  border-bottom: 1px solid #eee;
}

.title {
  font-size: 16px;
  font-weight: bold;
}

.card-content {
  padding: 20px;
}

.task-list,
.record-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.task-item,
.record-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px;
  border-bottom: 1px solid #eee;
}

.name {
  font-size: 14px;
}

.time {
  font-size: 12px;
  color: #999;
}

.chart-container {
  height: 300px;
}

.footer {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 50px;
  background-color: #f4f4f4;
}
</style>

该示例实现了以下功能:

  • 顶部导航栏包括 Logo、菜单和用户信息;
  • 内容区域使用网格布局展示待处理任务、实验设备统计和最近实验记录三个卡片;
  • 卡片包括标题、查看全部按钮和内容区域;
  • 待处理任务卡片使用无序列表展示任务名称和时间;
  • 实验设备统计卡片使用折线图展示设备数量;
  • 最近实验记录卡片使用无序列表展示实验名称和时间;
  • 底部信息包括版权信息。

以上只是一个简单的示例,实际开发中还需要根据具体需求进行调整和优化。总体来说,Element UI 提供了丰富的组件和样式,可以帮助开发者快速构建出现代化的科技感页面。


原文地址: https://www.cveoy.top/t/topic/muHU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录