• <四>用户页面增删改查接口对接


    一、先来实现一下用户的增删改查。

    1、改一下固定的菜单之前先看看左边菜单栏是从sidebar这个页面加载的。那我们打开这个vue界面看看

     2、很明显这个菜单侍从官路由哪里加载过来的。那就简单了,到路由的index.js下把table名字改一下,改成 用户,相关访问接口也改一下

     3、修改完以后如下图所示,

    4、在view文件夹新建一个user文件夹,然后新建一个index.vue文件.

    <template>
      <div class="app-container">
          <el-row>
            <div>
            <el-input v-model="tabledata.searchname" placeholder="请输入名称"  prefix-icon="el-icon-search" style="320px"></el-input>
            <el-button type="primary" icon="el-icon-search"  @click="handleSearch()">查询</el-button>
            <el-button type="success" icon="el-icon-plus"  @click="handleCreate()">新增</el-button>
            </div>
          </el-row>
            <el-table
            v-loading="listLoading"
            :data="list"
            element-loading-text="Loading"
            border
            fit
            highlight-current-row
            >
             <el-table-column align="center" prop="id" label="用户id" width="95" v-if="false" >
              </el-table-column>
            <!-- <el-table-column type="selection" align="center" /> -->
            <el-table-column align="center" prop="name" label="名称" width="95">
              </el-table-column>
              <el-table-column label="创建时间" prop="createTime">
              </el-table-column>
            <el-table-column  label="操作">
             <template slot-scope="scope">
               <el-button type="info" icon="el-icon-edit"  @click="handleUpdate(scope.row)" size="small">编辑</el-button>
               <el-button type="danger" icon="el-icon-delete"  @click="handleDelete(scope.row)" size="small">删除</el-button>
            </template>
            </el-table-column>
            </el-table>
          <el-pagination
          background
          :page-size="tabledata.pagesize"
          layout="total, prev, pager, next"
          :total="tabledata.records"
          :current-page.sync="tabledata.currentpage"
          @current-change="handleCurrentChange">
        </el-pagination>
    
        <add-user v-on:remoteClose="remoteEditColse" :pagedata="pagedata" :formdata="formdata"/>
    
      </div>
    </template>
    <script>
    import { getInfo,getUserInfoById,deleteuser} from '@/api/user'
    import edit from '../user/edit.vue'
    
    export default {
      components: {
          'add-user': edit,
        },
      data() {
        return {
          tabledata:{
              searchname:null,
              pagesize:10,
              currentpage:1,
              sidx:'Id',
              sord:'asc',
            //  total:0,
              records:0,
          },
          list: null,
          listLoading: true,
          pagedata:{
            title:"编辑",
            visible:false,
          },
          formdata:{
            id:' ',
            name:' ',
            password:' '
          }
        }
      },
      created() {
        this.fetchData(this.tabledata)
      },
      methods: {
        fetchData(value) {
          this.listLoading = true
          getInfo(value).then(response => {
            console.log(response.data)
            this.list = response.data.users
            this.tabledata.records=response.data.records
            this.listLoading = false
          })
        },
        handleCreate() {
          this.formdata.id="0"
          this.pagedata.visible=true
          this.pagedata.title="新增"
        },
        handleUpdate(row){
            this.formdata.id=row['id']
            getUserInfoById(this.formdata.id).then(response => {
            if(response.code===200)
            {
               this.formdata.name= response.data.name
            }
            })
          this.pagedata.visible=true
          this.pagedata.title="编辑"
        },
    
        handleDelete(row){
            this.formdata.id=row['id']
            deleteuser(this.formdata).then(response => {
            alert(response.message)
            if(response.code===200)
            {
               this.fetchData(this.tabledata)
            }
            })
        },
        remoteEditColse(){
          this.formdata.id='0'
          this.pagedata.visible=false
          this.fetchData(this.tabledata)
        },
        handleCurrentChange(val)
        {
          this.tabledata.currentpage=val
          this.fetchData(this.tabledata)
        },
        handleSearch()
        {
          this.fetchData(this.tabledata)
        }
      }
    }
    </script>

    5、再在同一个文件夹下新增一个文件edit.vue

    <template>
      <el-dialog :title="pagedata.title" :visible.sync="pagedata.visible"  width="400px" :before-close="handleClose">
          <el-form ref="formdata" label-width="120px">
              <el-form-item label="用户名" prop="name">
                <el-input
                  v-model="formdata.name"
                  placeholder="请输入用户名"
                  clearable
                />
              </el-form-item>
              <el-form-item label="密码" prop="password">
                <el-input
                  v-model="formdata.password"
                  placeholder="请输入用户密码"
                  clearable
                />
              </el-form-item>
              <el-form-item>
                <el-button type="primary" @click="submitForm" size="mini">确定</el-button>
                <el-button size="mini" @click="handleClose">取消</el-button>
              </el-form-item>
          </el-form>
      </el-dialog>
    </template>
    
    <script>
    import { adduser,updateuser, } from '@/api/user'
    export default{
      props: {
        pagedata:{type:Object,
          default:function(){
             return {
            visible:{
              type:Boolean,
              default:false
            },
            title:{
              type:String,
              default:''
            },
          }
          }
        },
        formdata:{type:Object,
          default:function(){
            return {
            id:{
              type:String,
              default:' '
            },
            name:{
              type:String,
              default:' ',
              require
            },
            password:{
              type:String,
              default:' ',
              require
            }
            }
          }
        }
      },
      methods:{
        submitForm(){
          if(this.formdata.id==="0") //新增
          {
            this.listLoading = true
            adduser(this.formdata).then(response => {
            alert(response.message)
            if(response.code===200)
            {
              this.$emit('remoteClose')
            }
            this.listLoading = false
          })
          }
          else
          {
            this.listLoading = true
            updateuser(this.formdata).then(response => {
            alert(response.message)
            if(response.code===200)
            {
              this.$emit('remoteClose')
            }
            this.listLoading = false
          })
          }
        },
        handleClose(){
          this.$emit('remoteClose')
        }
      }
    }
    </script>

    6、补上相关接口的定义后界面显示如下

  • 相关阅读:
    上传预览图片
    css3图片3D翻转效果
    获取新浪天气api显示天气情况(转)
    matlab添加M_map工具箱(转 http://blog.sina.com.cn/s/blog_491b86bf0100srt9.html)
    Matlab read_grib.r4 安装新方法(转自:http://blog.sina.com.cn/s/blog_9f36648b010179s7.html)
    grb文件的读取
    Windows 7 防火墙对Virtualbox guest的影响
    Virtualbox修改bios信息安装Windows XP OEM
    Wordpress编辑器(Tinymce)在Chrome中动态修改图片大小
    Android流行的框架整理
  • 原文地址:https://www.cnblogs.com/choii/p/16065397.html
Copyright © 2020-2023  润新知