美文网首页
蓝桥到家第一课

蓝桥到家第一课

作者: 风中凌乱的男子 | 来源:发表于2022-09-26 09:46 被阅读0次
接第一周对接登录和获取个人信息接口实现登录后,下面继续来开发蓝桥到家后台管理
第一步:先新建【商品管理模块】/【商品列表页面】,配置路由
  • router/index.js文件内,删除多余的路由,新建我们所需的路由
{
    path: '/shopModel',
    component: Layout,
    alwaysShow: true,//始终显示父节点
    name: 'ShopModel',
    meta: { title: '商品管理', icon: 'el-icon-s-help' },
    children: [
      {
        path: '/shopModel/shopList',
        name: 'ShopList',
        component: () => import('@/views/shopModel/shopList/index'),
        meta: { title: '商品列表', icon: 'table' }
      },
    ]
  },
  • 然后,在views目录下新建shopModel/shopList目录,在shopList目录下,新建index.vue
  • ps:删除掉多余无用的页面
第二步:实现shopList页面内的折叠面板
image.png
  • 通过分析设计图可以看出,整个页面是基于一个类似卡片的上面来实现,并且上下左右都有一些边距,element-uiel-card正好可以满足我们的需求
<template>
  <div class="shopList">
    <el-card>
     卡片
    </el-card>
  </div>
</template>
//css
.shopList {
  margin: 10px;
}
  • 然后再来实现折叠面板,可以使用element-uiCollapse 折叠面板
    <el-card>
      <!-- 折叠面板 -->
      <el-collapse v-model="activeNames">
        <el-collapse-item title="商品列表" name="1">
          <div class="tip">
            操作提示
          </div>
          <div>
            1. 该页面展示了商城所有的商品信息,可对商品进行编辑修改操作。
          </div>
          <div>
            2. 商品下架后将无法在前台展示,请慎重操作。
          </div>
        </el-collapse-item>
      </el-collapse>
    </el-card>
//data
data(){
    return{
      activeNames:['1']
    }
  }
//css
.tip{
    color: #55ca7d;
    font-weight: bold;
  }
  // ::v-deep 样式穿透  
  ::v-deep .el-collapse-item__header{
    color: #55ca7d;
  }
  ::v-deep .el-collapse-item__wrap{
    border: 1px dashed #55ca7d;
    background-color: #f0fdf5;
    padding: 10px;
  }
  ::v-deep .el-collapse-item__content{
    padding-bottom: 0;
  }
第三步:实现tabs标签页,使用到element-uiel-tabs
      <div class="tabs">
        <el-tabs v-model="activeName" @tab-click="handleClick">
          <el-tab-pane label="商品列表" name="first">商品列表</el-tab-pane>
          <el-tab-pane label="上架商品" name="second">上架商品</el-tab-pane>
          <el-tab-pane label="下架商品" name="third">下架商品</el-tab-pane>
        </el-tabs>
      </div>
//data
data() {
    return {
      activeNames: ["1"],
      activeName: "first",//默认选中first的tabs标签页
    };
  },
//methods
methods: {
    /**
     * 点击tabs标签触发
     */
    handleClick() {},
  },
//css
.tabs {
    ::v-deep .el-tabs__item.is-active {
      color: #55ca7d;
    }
    ::v-deep .el-tabs__item {
      &:hover {
        color: #55ca7d;
      }
    }
    ::v-deep .el-tabs__active-bar {
      background-color: #55ca7d;
    }
  }
第四步:实现bar操作栏
image.png
  • 在商品列表 tabs 标签页内
el-tab-pane label="商品列表" name="first">
            <!-- bar -->
            <div class="bar">
              <div class="left">
                <el-button type="primary" size="small" icon="el-icon-plus"
                  >添加商品</el-button
                >
                <el-button type="danger" size="small" icon="el-icon-delete"
                  >批量删除</el-button
                >
              </div>
              <div class="right">
                <div class="flex">
                  <label>商品名称</label>
                  <el-input
                    placeholder="请输入商品名称"
                    size="small"
                  ></el-input>
                </div>
                <div class="flex date">
                  <label>时间</label>
                  <el-date-picker
                    v-model="date"
                    type="date"
                    size="small"
                    placeholder="选择日期"
                  >
                  </el-date-picker>
                </div>
                <el-button type="primary" icon="el-icon-search" size="small">查询</el-button>
              </div>
            </div>
          </el-tab-pane>
//data
 data() {
    return {
      activeNames: ["1"],
      activeName: "first",
      date:""
    };
  },
//css 
.bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border: 1px solid #eee;
    padding: 10px;
    box-sizing: border-box;
    .right {
      display: flex;
      .flex {
        display: flex;
        white-space: nowrap; //文字强制不换行
        align-items: center;
        label {
          margin-right: 5px;
          font-size: 14px;
        }
      }
      .date{
        margin: 0 10px;
      }
    }
  }
第五步:实现table表格,使用到element-uiel-table
  <div class="table">
              <el-table
                ref="multipleTable"
                :height="tableHeight"
                :data="tableData"
                size="small"
                style="width: 100%"
                border
                @selection-change="handleSelectionChange"
              >
                <el-table-column type="selection" width="55"></el-table-column>
                <el-table-column prop="a" label="商品编号" align="center">
                </el-table-column>
                <el-table-column prop="b" label="商品分类" align="center">
                </el-table-column>
                <el-table-column prop="c" label="商品名称" align="center">
                </el-table-column>
                <el-table-column prop="d" label="价格" align="center">
                </el-table-column>
                <el-table-column prop="e" label="是否上架" align="center">
                </el-table-column>
                <el-table-column prop="f" label="库存" align="center">
                </el-table-column>
                <el-table-column prop="g" label="上架时间" align="center">
                </el-table-column>
                <el-table-column label="操作" align="center">
                  <template>
                    <el-button size="mini">编辑</el-button>
                    <el-button size="mini" type="danger">删除</el-button>
                  </template>
                </el-table-column>
              </el-table>
              <!-- 分页组件 -->
              <div class="page">
                <el-pagination
                  background
                  layout="prev, pager, next"
                  :total="1000"
                >
                </el-pagination>
              </div>
            </div>
//data
tableHeight: document.documentElement.clientHeight - 410,
tableData: [
        {
          a: 1,
          b: "生活用品",
          c: "被褥",
          d: 59.9,
          e: "是",
          f: 100,
          g: "2022-9-26 12:00",
        },
      ],
//methods
/**
 * 多选表格时触发
 */
handleSelectionChange() {},
//mounted
mounted() {
    window.onresize = () => {
      this.tableHeight = document.documentElement.clientHeight - 410
    };
  },
//css
.table {
    .page {
      text-align: right;
      margin-top: 12px;
    }
  }
第五步:请求接口,替换掉我们定义的假数据
  • 先看接口文档 https://www.showdoc.com.cn/2059631189527964/9359476396304708,找到获取商品列表接口/api/query/goods
  • 在项目目录src/api/user.js中新建一个获取商品列表的接口
/**
 * 
 * @returns 获取商品列表
 */
 export function getShopList(params) {
  return request({
    url: '/api/query/goods',
    method: 'get',
    params
  })
}
  • 然后在我们的shopList页面引入 这个方法
import { getShopList } from "@/api/user";
  • 再定义一个获取商品列表的方法,去调用getShopList接口
 getShopListFun() {
      let obj = {
        page:this.page,
        size:this.size
      }
      getShopList(obj).then((res) => {
        console.log(res);
        this.tableData = res.data
        this.total = res.total
      });
    },
//data 
data() {
    return {
      activeNames: ["1"],
      activeName: "first",
      date: "",
      tableHeight: document.documentElement.clientHeight - 410,
      tableData: [],
      page:1,//第几页
      size:5,//每页显示条数
      total:0,//总条数
    };
//mounted
mounted() {
    window.onresize = () => {
      this.tableHeight = document.documentElement.clientHeight - 410;
    };
    this.getShopListFun();
  },
  • 然后拿到后端的接口数据,替换 table 表格中的prop ,那些 abcdefg,替换成对应的值
  • a => number 商品编号
  • b => category 商品分类
  • c => name 商品名称
  • d => price 价格
  • e = > status 是否上架
  • f => stock 库存
  • g => date上架时间
下面实现分页
  • 完善下分页组件,total是总条数,page-size 是 每页显示几条数据,current-change是分页触发的函数方法
<el-pagination
                  background
                  layout="prev, pager, next"
                  :total="total"
                  :page-size="size"
                  @current-change="currentChangeFun"
                >
  </el-pagination>
//methods
 /**
     * 分页触发
     */
     currentChangeFun(e){
      console.log(e);
      this.page = e
      this.getShopListFun()
     }

待续...

相关文章

  • 蓝桥到家第一课

    接第一周对接登录和获取个人信息接口实现登录后,下面继续来开发蓝桥到家后台管理 第一步:先新建【商品管理模块】/【商...

  • 蓝桥到家复盘与总结

    vue-admin-template 后台管理开源模版 开发需掌握要点 新建页面 1.1 新建页面 一般 在src...

  • 蓝桥到家第二课

    接上节课内容,我们先来完善下我们的table表格 第一个点,我们来完善【上架时间】,格式化为2022-09-09 ...

  • 蓝桥到家第三课

    接第二课继续往下说,下面讲调用批量删除接口删除商品 打开接口文档,https://www.showdoc.com....

  • 永远的简爱

    周末早上赖床,就翻到了油管上的简爱。 大概,我们这一代女生,简爱、魂断蓝桥、罗马假日是大学第一课。 你还记得你第一...

  • 唐朝驿站

    白居易被贬江州的路上,夜宿蓝桥驿,在驿站的一面粉墙上发现元稹贬谪回京的诗,于是写下《蓝桥驿见元九诗》 蓝桥春雪君归...

  • 蓝桥

    朝华慕乾坤,晨露辩日月,借我玲珑手,喜获水中游。

  • 蓝桥

    芳草萋萋 沉闷的蝉声明了 我顺着缝隙看天空 桥下的青苔渗出了眼泪 等朝阳生长 大雁成行 等暮归的黄牛在桥上摇晃 天...

  • 蓝桥

    蓝桥 蓝桥是一个汉语词汇,有多个释义。其一指唐裴航遇仙女云英处,在今陕西省蓝田县西南蓝溪之上。其二指唐朝多位诗人题...

  • 蓝桥红叶飘,文苑采风行

    蓝桥红叶飘,文苑采风行 ——记《蓝天文苑》“金秋秦岭采风团”联谊会 文苑蓝桥欲采风, ...

网友评论

      本文标题:蓝桥到家第一课

      本文链接:https://www.haomeiwen.com/subject/mhptartx.html