第一次项目实战(2)

面包屑

面包屑可以显示层级打开的记录
如上
那么就需要动态获得路由的名字,而是在侧边拦目之后才会进行跳转,也就会显示出面包屑。此时就会存在一个问题,那就是侧边栏和面包屑不在一个组件里面。这就涉及到组件之间的通信,这就涉及到vuex的语法。vuex是实现组件之间通信的比较简单的方法。

import Vue from 'vue'
import Vuex from 'vuex'
import tab from './tab'


Vue.use(Vuex)

//创建vuex的实例
export default new Vuex.Store({
    modules: {
        tab
    }
})

代码如上

 state: {
        isCollapse: false,//控制菜单的展开还是收起
        tabList: [
            {
                path: "/",
                name: "home",
                label: "首页",
                icon: "s-home",
                url: "Home/home"
            }
        ],//面包屑的数据 
        menu: []
    },

建立一个tablist对象,当点击侧边的时候,就将对应的对象对象push进去,而面包屑再对于整个数据进行渲染,就完成了面包屑的功能。
为了美观,可以设置最后一个面包屑高亮。

&:last-child {
        .el-breadcrumb__inner {
          color: #fff;
        }
      }

将颜色设置为#fff既可以呈现出白色。
下面的功能就是用户管理界面:
在这里i可以实现对于数据的增删改查
演示效果图如下
在这里插入图片描述
在这里插入图片描述

要实现提示框

<el-dialog
      title="提示"
      :visible.sync="dialogVisible"
      width="40%"
      :before-close="handleClose"
    >
      <!-- 用户的表单信息 -->
      <el-form
        ref="form"
        :rules="rules"
        :inline="true"
        :model="form"
        label-width="80px"
      >
        <el-form-item label="姓名" prop="name">
          <el-input placeholder="请输入姓名" v-model="form.name"></el-input>
        </el-form-item>
        <el-form-item label="年龄" prop="age">
          <el-input placeholder="请输入年龄" v-model="form.age"></el-input>
        </el-form-item>
        <el-form-item label="性别" prop="sex">
          <el-select v-model="form.sex" placeholder="请选择">
            <el-option label="男" :value="1"></el-option>
            <el-option label="女" :value="0"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="出生日期" prop="birth">
          <el-date-picker
            v-model="form.birth"
            type="date"
            placeholder="选择日期"
            value-format="yyyy-MM-DD"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="地址" prop="addr">
          <el-input placeholder="请输入地址" v-model="form.addr"></el-input>
        </el-form-item>
      </el-form>

      <span slot="footer" class="dialog-footer">
        <el-button @click="cancel">取 消</el-button>
        <el-button type="primary" @click="submit">确 定</el-button>
      </span>
    </el-dialog>

是利用了el-dialog标签 在嵌套上form标签 里面加上 例如左边的就是每个form的项,这个项的形式可以有很多的种类,加上去就形成了form表单。

实现查询功能

想要实现查询功能,就需要了解查询的逻辑,通过一个特殊的数据,也就是每个数据的独特性,在这里我选择了姓名,作为标识符,先看看mock里面的写法

getUserList: config => {
        const { name, page = 1, limit = 20 } = param2Obj(config.url)
        console.log('name:' + name, 'page:' + page, '分页大小limit:' + limit)
        const mockList = List.filter(user => {
            if (name && user.name.indexOf(name) === -1 && user.addr.indexOf(name) === -1) return false
            return true
        })
        const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1))
        return {
            code: 20000,
            count: mockList.length,
            list: pageList
        }
    },

可知在mock里面是用name进行判断的,当查询的时候,输入对应的姓名就可以进行查询,

<div class="manage-header">
      <el-button @click="handleAdd" type="primary">+ 新增</el-button>
      <!-- form搜索区域 -->
      <el-form :model="userform" :inline="true">
        <el-form-item>
          <el-input placeholder="请输入名称" v-model="userForm.name"></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="onSubmit">查询</el-button>
        </el-form-item>
      </el-form>
    </div>
onSubmit() {
      this.getList();
    }
  getList() {
      // 获取的列表的数据
      getUser({ params: { ...this.userForm, ...this.pageData } }).then(
        ({ data }) => {
          console.log(data);
          this.tableData = data.list;

          this.total = data.count || 0;
        }
      );
    },

在查询的按钮上绑定一个时间,点击查询就i会触发getlist事件,输入框又绑定了一个数据实现了动态变化(v-model)这样就可以根据输入的姓名进行查询,完成了一个简单的查询的功能。
主要数据的渲染就是用了简单的饿了么组件,没什么好说的。

实现分页

<el-pagination
          layout="prev,pager,next"
          :total="total"
          @current-change="handlePage"
        >
        </el-pagination>

关键点 就是将数据和页面联系起来。
如上的代码 total表示总量,用自带的触发事件绑定handlepage,在将对应的页数传递进去,接下来重新渲染页面。

handlePage(val) {
      this.pageData.page = val;
      this.getList();
    },
``就可以实现页面的跳转了
大体上的功能就完成了!第一次vue项目实战结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星海垂钓者11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值