VUE的第二种封装接口、查询删除用户功能

把上一http下的index.js封装的地方修改成 对象解构的方式来传参 

这样的话就不用考虑参数的顺序问题,参数会通过key名来找到对应的值 

而且没有必要传的值 比如post请求不需要传params     :

/* 参数methdos默认值是get,path表示具体路径,post需要给data传参默认值是空对象,

get请求需要给params传参默认值是空对象 */

/* 这里是把传过来的对象进行了解构 并给了默认值 这样写不用在意参数传递的位置、

   因为他们是根据对象的key名称来对应的 */

export const httpServe = ({path='', params = {}, method = 'get', data = {}} = {}) => {

    return new Promise((resolve, reject) => {

        instance({

            url: path,

            params,

            method,

            data

        })

            .then(res => {

                resolve(res)

            })

            .catch(err => {

                reject(err)

            })

    })

}

/*这种调用的写法 必须要按照顺序 */

/* get请求的调用方法 */

/* httpServe('users',{name:'zhangsan'}) */

/* post请求的调用方法 */

/* httpServe('login',{},'post',{username:'admin',password:'123123'})  */

/* 使用对象解构的方式来传参 */

/* 这样的话就不用考虑参数的顺序问题,参数会通过key名来找到对应的值 */

/* 而且没有必要传的值 比如post请求不需要传params  */

/* get请求的调用方法 */

/* httpServe({path:'users',params:{name:'zhangsan'}}) */

/* post请求的调用方法 */

/* httpServe({method:'post',data:{username:'admin',password:'123123'},path:'login'}) */

request.js里修改成以对象方式传递并添加删除用户

import {httpServe} from '@/http/index.js'

/* 登录 */

export const loginPost = (path="",data={})=> httpServe({path:path,method:'post',data:data});

/* 必须以对象方式传递 */

/* 左侧菜单列表 */

export const menusGet = (path="",params={})=> httpServe({path,params});

/* 用户列表 */

export const usersGet = (path="",params={})=> httpServe({path,params});

/* 添加用户 */

export const addusersPost = (path="",data={})=> httpServe({path,method:'post',data});

/* 删除用户 */

export const usersDelete = (path="")=> httpServe({path,method:'delete'});

之前的UsersView.vue上添加查询和删除功能:

<template>

  <div class="users">

    <el-row>

      <el-input v-model="queryName" placeholder="搜索用户名" @keyup.native.enter="search" style="width:200px"></el-input>

      <el-button icon="el-icon-search" circle @click="search" style="margin-left:15px"></el-button>

      <el-button type="primary" round @click="drawer = true"

        >添加用户</el-button

      >

    </el-row>

    <!-- :wrapperClosable="false" 表示点击遮罩区域不关闭抽屉 true则可以 -->

    <el-drawer

      title="添加用户"

      :visible.sync="drawer"

      :direction="direction"

      :wrapperClosable="false"

    >

      <add-users @addok="addok" />

    </el-drawer>

    <!-- el-table组件 需要给data属性动态传递一个数组对象tableData -->

    <el-table :data="tableData">

      <!-- el-table-column组件 表格中的数据 是数组对象tableData中的属性date所对应的值

      比如 date属性的值对应的2016-05-02 -->

      <!-- 表头标题 是由label属性来传递的 width属性是表示表头字段的宽度 不给宽度就自适应表格 -->

      <el-table-column label="创建日期">

        <template slot-scope="scope">

          <div>{{ scope.row.create_time | getDate }}</div>

        </template>

      </el-table-column>

      <el-table-column prop="email" label="电子邮箱"></el-table-column>

      <el-table-column prop="mobile" label="手机号"></el-table-column>

      <el-table-column prop="role_name" label="角色名称"></el-table-column>

      <el-table-column prop="username" label="用户名"></el-table-column>

      <!-- fixed="right" 固定操作在右侧 -->

       <el-table-column fixed="right" label="操作" width="100">

          <template slot-scope="scope">

            <el-button type="text" size="small" @click="del(scope.row)">删除</el-button>

          </template>

         </el-table-column>

    </el-table>

    <!-- 分页 -->

    <!-- :page-sizes="[5, 10, 15, 20] 这个是用来选择分页的条数的 -->

    <!-- :page-size="5" 默认一页显示5条数据 -->

    <!-- :total="400" 总条数 -->

    <!-- layout="total, sizes, prev, pager, next, jumper" 管理分页展示的样式内容 -->

    <el-pagination

      @size-change="handleSizeChange"

      @current-change="handleCurrentChange"

      :current-page="currentPage"

      :page-sizes="[5, 10, 15, 20]"

      :page-size="pagesize"

      layout="total, sizes, prev, pager, next, jumper"

      :total="total"

    >

    </el-pagination>

  </div>

</template>

<script>

import { usersGet , usersDelete } from "@/http/request.js";

import AddUsers from "@/components/AddUsers.vue";

export default {

  name: "UsersView",

  components: {

    AddUsers,

  },

  /* 当组件被激活的时候 , 可以为组件的菜单被点击到的时候触发*/

  activated:function(){

  console.log('我被点了');

  },

  /* 当离开组件的时候触发 */

  deactivated:function(){

   console.log('我离开了');

  },

  data() {

    return {

      /* 表格数据 */

      tableData: [],

      /* 抽屉打开方向从右到左 */

      direction: "rtl",

      /* 默认抽屉是关闭的 */

      drawer: false,

      /* 默认打开的是第一页的数据 */

      currentPage: 1,

      /* 一页默认展示5条 */

      pagesize: 5,

      /* 默认总条数是0 */

      total: 0,

      /* 搜索用户名 */

      queryName:''

    };

  },

  /* 局部的过滤器 */

  // filters:{

  //   getDate(v){

  //     /* 生成当前时间戳的日期对象 */

  //     let oDate = new Date(v);

  //     return oDate.getFullYear()+'-'+(oDate.getMonth()+1)+'-'+oDate.getDate();

  //   }

  // },

  created() {

    /* 一进入页面调用获取用户数据接口 */

    this.getTableDate();

  },

  methods: {

    /* 上面通过作用域插槽把点击的一行的数据已经传过来了 */

    async del(row){

      console.log(row.id);

      try{

        let {data:{meta:{msg,status}}} =  await usersDelete('users/'+row.id)

        if(status==200){

          this.$message.success(msg)

          /* 删除成功之后刷新列表 */

          this.getTableDate()

        }else{

          this.$message.error(msg)

        }


      }catch(err){

        this.$message.error(err)

      }


    },

    /* 通过用户名搜索 */

     search(){

       console.log(this.queryName);

       /* 点击搜索 因为queryName 的值通过v-model 已经被修改

          所以直接调取接口获取数据 */

       this.getTableDate()

     },

    /* 选择一页显示多少条数据 */

    handleSizeChange(val) {

      console.log(`每页 ${val} 条`);

      /* 改变一页显示多少条 */

      this.pagesize = val;

      /* 重新获取数据渲染表格 */

      this.getTableDate();

    },

    /* 点击具体页数、上一页和下一页以及输入页数 都会触发下面的函数 */

    /* 选择当前的是第几页 */

    handleCurrentChange(val) {

      console.log(`当前页: ${val}`);

      /* 改变当前是第几页 */

      this.currentPage = val;

      /* 重新获取数据渲染表格 */

      this.getTableDate();

    },

    /* 当子组件添加数据成功的时候触发的方法 */

    addok() {

      /* 重新获取用户数据 */

      this.getTableDate();

      /* 关闭抽屉 */

      setTimeout(() => {

        this.drawer = false;

      }, 600);

    },

    getTableDate() {

      usersGet("users", {

        /* 当前页 */

        pagenum: this.currentPage,

        /* 一页展示多少条 */

        pagesize: this.pagesize,

        /* 查询参数 空字符串是查询全部 通过用户名查询的*/

        query:this.queryName


      })

        .then((res) => {

          let { data, meta } = res.data;

          /* 当状态为200表示数据获取成功 */

          if (meta.status == 200) {

            /* 把数据给到tableData数组中 */

            this.tableData = data.users;

            /* 把数据中总条数给到total */

            this.total = data.total;

          } else {

            /* 如果获取数据有误,给出相应提示 */

            this.$message.error(meta.msg);

          }

        })

        .catch((err) => {

          this.$message.error(err);

        });

    },

  },

};

</script>

效果图:


点击对应的删除并刷新页面
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342

推荐阅读更多精彩内容