2021-7-07 SDU暑期项目实训日志报告04

学习目标:

这篇博客用于记录7-06和7-07两天的学习工作。
按照工期表的计划,这两天应进行实际的开发工作。我负责教室管理部分,这两天内我成功完成了界面的导航栏设计与开发。


学习内容:

(一)头部菜单栏组件
代码如下:

/**
* 头部菜单
*/ 
<template>
  <el-menu class="el-menu-demo" mode="horizontal" background-color="#334157" text-color="#fff" active-text-color="#fff">
    <el-button class="buttonimg">
      <img class="showimg" :src="collapsed?imgsq:imgshow" @click="toggle(collapsed)">
    </el-button>
    <el-submenu index="2" class="submenu">
      <!-- <template slot="title">{{user.userRealName}}</template> -->
      <template slot="title">超级管理员</template>
      <el-menu-item index="2-1">设置</el-menu-item>
      <el-menu-item @click="content()" index="2-2">个人中心</el-menu-item>
      <el-menu-item @click="exit()" index="2-3">退出</el-menu-item>
    </el-submenu>
  </el-menu>
</template>
<script>
import { loginout } from '../api/userMG'
export default {
  name: 'navcon',
  data() {
    return {
      collapsed: true,
      imgshow: require('../assets/img/show.png'),
      imgsq: require('../assets/img/sq.png'),
      user: {}
    }
  },
  // 创建完毕状态(里面是操作)
  created() {
    this.user = JSON.parse(localStorage.getItem('userdata'))
  },
  methods: {
    // 退出登录
    exit() {
      this.$confirm('退出登录, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      })
        .then(() => {
          setTimeout(() => {
            this.$store.commit('logout', 'false')
            this.$router.push({ path: '/login' })
            this.$message({
              type: 'success',
              message: '已退出登录!'
            })
          }, 1000)
          // loginout()
          //   .then(res => {
          //     if (res.success) {
          //       //如果请求成功就让他2秒跳转路由
          //       setTimeout(() => {
          //         this.$store.commit('logout', 'false')
          //         this.$router.push({ path: '/login' })
          //         this.$message({
          //           type: 'success',
          //           message: '已退出登录!'
          //         })
          //       }, 1000)
          //     } else {
          //       this.$message.error(res.msg)
          //       this.logining = false
          //       return false
          //     }
          //   })
          //   .catch(err => {
          //     // 获取图形验证码
          //     this.getcode()
          //     this.logining = false
          //     this.$message.error('退出失败,请稍后再试!')
          //   })
        })
        .catch(() => {
          this.$message({
            type: 'info',
            message: '已取消'
          })
        })
    },
    // 切换显示
    toggle(showtype) {
      this.collapsed = !showtype
      this.$root.Bus.$emit('toggle', this.collapsed)
    }
  }
}
</script>
<style scoped>
.el-menu-vertical-demo:not(.el-menu--collapse) {
  border: none;
}
.submenu {
  float: right;
}
.buttonimg {
  height: 60px;
  background-color: transparent;
  border: none;
}
.showimg {
  width: 26px;
  height: 26px;
  position: absolute;
  top: 17px;
  left: 17px;
}
.showimg:active {
  border: none;
}
</style>

(二)左侧菜单栏组件
代码如下:

/**
* 左边菜单
*/ 
<template>
  <el-menu default-active="2" :collapse="collapsed" 
  collapse-transition router :default-active="$route.path" 
  :mode="horizontal"
  unique-opened class="el-menu-vertical-demo" 
  background-color="#334157" text-color="#fff" active-text-color="#ffd04b">
    <div class="logobox">
       选座管理
    </div> 
		 
	    <el-submenu v-for="menu in allmenu" :key="menu.menuid"
		 :index="menu.menuname">
	      <template slot="title">
	        <i class="iconfont" :class="menu.icon"></i>
	        <span>{{menu.menuname}}</span>
	      </template>
	      <el-menu-item-group>
	        <el-menu-item v-for="chmenu in menu.menus" :index="'/'+chmenu.url" :key="chmenu.menuid">
	          <i class="iconfont" :class="chmenu.icon"></i>
	          <span>{{chmenu.menuname}}</span>
	        </el-menu-item>
	      </el-menu-item-group>
	    </el-submenu>
  </el-menu>
</template>
<script>  
export default {
  name: 'leftnav',
  data() {
    return {
      collapsed: false,
      allmenu: []
    }
  },
  // 创建完毕状态(里面是操作)
  created() {
    // 获取图形验证码
    let res = {
      success: true,
      data: [
        {
          menuid: 1,
          icon: 'li-icon-xiangmuguanli',
          menuname: '教室管理',
          hasThird: null,
          url: null,
          menus: [
            {
              menuid: 11,
              icon: 'icon-cat-skuQuery',
              menuname: '教室模板',
              hasThird: 'N',
              url: 'goods/Goods',
              menus: null
            }, {
              menuid: 12,
              icon: 'icon-cat-skuQuery',
              menuname: '教室列表',
              hasThird: 'N',
              url: 'pay/Order',
              menus: null
            }
          ]
        },
		{
		  menuid: 2,
		  icon: 'li-icon-xiangmuguanli',
		  menuname: '教学管理', 
		 url: null,
		  menus: null ,
          menus: [
            {
              menuid: 21,
              icon: 'icon-cat-skuQuery',
              menuname: '创建教学',
              hasThird: 'N',
              url: 'goods/Goods18',
              menus: null
            }, {
              menuid: 22,
              icon: 'icon-cat-skuQuery',
              menuname: '教学列表',
              hasThird: 'N',
              url: 'pay/Order',
              menus: null
            }
          ]
		},
		{
		  menuid: 3,
		  icon: 'li-icon-xiangmuguanli',
		  menuname: '黑名单管理',
		  hasThird: 'N',
		  url: 'goods/Goods',
		  menus: null 
		},
		{
		  menuid: 4,
		  icon: 'li-icon-xiangmuguanli',
		  menuname: '报修管理',
		  hasThird: 'N',
		  url: 'goods/Goods',
		  menus: null 
		},
		{
		  menuid: 5,
		  icon: 'li-icon-xiangmuguanli',
		  menuname: '申诉管理',
		  hasThird: 'N',
		  url: 'goods/Goods',
		  menus: null 
		},
		{
		  menuid: 6,
		  icon: 'li-icon-xiangmuguanli',
		  menuname: '用户管理',
		  hasThird: 'N',
		  url: 'goods/Goods',
		  menus: null 
		}
      ],
      msg: 'success'
    }
        this.allmenu = res.data 
		this.$root.Bus.$on('toggle', value => {
		  this.collapsed = !value
		})
  }
}
</script>
<style>
.el-menu-vertical-demo:not(.el-menu--collapse) {
  width: 240px;
  min-height: 400px;
}
.el-menu-vertical-demo:not(.el-menu--collapse) {
  border: none;
  text-align: left;
}
.el-menu-item-group__title {
  padding: 0px;
}
.el-menu-bg {
  background-color: #1f2d3d !important;
}
.el-menu {
  border: none;
}
.logobox {
  height: 40px;
  line-height: 40px;
  color: #9d9d9d;
  font-size: 20px;
  text-align: center;
  padding: 20px 0px;
}
.logoimg {
  height: 40px;
}
</style>

(三)设计主界面
index.vue代码如下:

<template>
  <el-container class="index-con">
    <el-aside :class="showclass">
      <leftnav></leftnav>
    </el-aside>
    <el-container class="main-con">
      <el-header class="index-header">
        <navcon></navcon>
      </el-header>
      <el-main clss="index-main">
        <router-view></router-view>
      </el-main>
    </el-container>
  </el-container>
</template>
<script>
// 导入组件
import navcon from '../components/navcon.vue'
import leftnav from '../components/leftnav.vue'
export default {
  name: 'index',
  data() {
    return {
      showclass: 'asideshow',
      showtype: false
    }
  },
  // 注册组件
  components: {
    navcon,
    leftnav
  },
  methods: {},
  created() {
    // 监听
    this.$root.Bus.$on('toggle', value => {
      if (value) {
        this.showclass = 'asideshow'
      } else {
        setTimeout(() => {
          this.showclass = 'aside'
        }, 300)
      }
    })
  },
  beforeUpdate() {},
  // 挂载前状态(里面是操作)
  beforeMount() {
    // 弹出登录成功
    this.$message({
      message: '登录成功',
      type: 'success'
    })
  }
}
</script>
<style >
.index-con {
  height: 100%;
  width: 100%;
  box-sizing: border-box;
}

.aside {
  width: 64px !important;
  height: 100%;
  background-color: #334157;
  margin: 0px;
}
.asideshow {
  width: 240px !important;
  height: 100%;
  background-color: #334157;
  margin: 0px;
}
.index-header,
.index-main {
  padding: 0px;
  border-left: 2px solid #333;
}
</style>

(四)成果展示
主界面展示截图如下:
在这里插入图片描述


学习总结:

在主界面的开发过程中,我感受到了前端开发的乐趣,看到自己写的代码跑出漂亮的界面来确实是件快乐的事,虽然前端的组件非常繁多,要学习的东西也很多,但一旦掌握了一种组件的使用,我发现其他类似组件的使用也便大概会了,前端开发是一个开头难后面则越来越爽的过程。
在这两天中,我没有实现需求规格说明书中任何一个功能点,只进行了主界面的开发。


学习计划:

接下来的几天将与后端同学磨合接口,并进行功能点的实现工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值