对于vue项目整理增删改查

2023-11-15

模板是来源于官方文档

清除tabledata里的模拟数据先

<el-table :data="tableData" >
//label 是名字每一列的名字  prop是通过哪个tableData中哪个字段来渲染
    <el-table-column prop='username' label="姓名"></el-table-column>
    <el-table-column  prop="password" label="密码"></el-table-column>
    <el-table-column prop="email" label="邮箱"></el-table-column>
    <el-table-column label="状态">
        //这里不同需要判断一下状态
        <template clot-scope="scope">
            //scopr.row.state 表示这一行的state是如何的
           <el-tag type="success" effect="dark" v-if="scope.row.state==1">在线</el-tag>
            <el-tag type="warning" effect="dark" v-if="scope.row.state==2">离线</el-tag>
        </template>
    </el-table-column>
//:formatter="dateFormat"是格式化后端返回来的时间戳,有固定的方法 需要下载moment 可以自行了解
    <el-table-column prop="createTime" :formatter="dateFormat" label="创建时间></el-table-column>
    <el-table-column prop="updateTime" :formatter="dateFormat" label="更新时间"></el-table-column>
    <el-table-column label="操作" width="180">
          <template slot-scope="scope">
            <!-- 点击编辑进入编辑页面进行编辑表格数据 -->
        //(scope.$index, scope.row)我的个人理解就是,点击这一行,可以通过这两个scope.$index返回返回这一行的id  scope.row表示这一行
            <el-button size="mini" @click="handleEdit(scope.$index, scope.row)" icon="el-icon-edit-outline">编辑</el-button>
            <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)" icon="el-icon-delete">删除</el-button>
          </template>
        </el-table-column>
</el-table>
//这里是分页组件 直接用element官方文档的就行
<diav class="el-pagination">
    <el-pagination
     @size-change="handleSizeChange"  //pageSize改变时会触发这个
      @current-change="handleCurrentChange" // currentPage改变会触发 (当前页) 
      :current-page="currentPage"   //当前页数
      :page-sizes="[5,10, 20, 300, 400,9999]" //每页显示个数先择去哦的选项设置
      :page-size=pageSize  //每页显示的条数
      layout="total, sizes, prev, pager, next, jumper"
      :total="totalCount"> //总页数
 </el-pagination>
</div>
    //用户更新的弹窗
    <el-dialog title="用户跟新" :visible.sync="dialogFromVisible">
        <el-form :model="form">
            <el-form-item label="用户名" :label-width="formLabelWidth">
                <el-input v-model="form.username" auto-complete="off"></el-input>
            </el-form-item>
            <el-form-item label="密码" :label-width="formLabelWidth">
              <el-input v-model="form.password" auto-complete="off"></el-input>
            </el-form-item>
            <el-form-item label="邮箱" :label-width="formLabelWidth">
              <el-input v-model="form.email" auto-complete="off"></el-input>
            </el-form-item>
        </el-form>
        <div>
              <el-button @click="cancel">取消</el-button>
              <el-button type="primary" @click="add1">确定</el-button> 
        </div>
    </el-dialog>
    //用户列表新增的弹窗
<el-dialog title="用户列表新增" :visible.sync="dialogFormVisible2">
      <!-- 在el-dialog中进行嵌套el-form实现弹出表格的效果 -->
      <el-form :model="form2">
        <el-form-item label="用户名" :label-width="formLabelWidth">
          <el-input v-model="form2.username" auto-complete="off"></el-input>
        </el-form-item>
        <el-form-item label="密码" :label-width="formLabelWidth">
          <el-input v-model="form2.password" auto-complete="off"></el-input>
        </el-form-item>
        <el-form-item label="邮箱" :label-width="formLabelWidth">
          <el-input v-model="form2.email" auto-complete="off"></el-input>
        </el-form-item>
        <!-- <el-form-item label="邮箱" :label-width="formLabelWidth">
          <el-input v-model="form2.email" auto-complete="off"></el-input>
        </el-form-item>
        <el-form-item label="邮箱" :label-width="formLabelWidth">
          <el-input v-model="form2.email" auto-complete="off"></el-input>
        </el-form-item> -->
        
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="cancel">取 消</el-button>
        <!-- 设置触发新增的方法 -->
        <el-button type="primary" @click="add3">确 定</el-button>
      </div>
    </el-dialog>
//页面结构大致如此

script内容

<script>
// 引入封装好的接口
    import { adduser,updateuser,selectpage,deleteuser } from '@/api/basisMG';
    import moment from 'moment' //还记得这个吗,这个就是格式化时间戳的
   export default {
        data(){
            return{
                //分页组件相关的变量
                currentPage :1,当前页数
                totalCount:0, 总条数
                pageSize:10  每页总条数
                
                //用户新增使用
                formuseradd{
                    //这里就是看接口文档或者postman上,需要携带什么body去访问
                    username:'',
                    password:'',
                    emile: ''
                }
                //用户删除时使用
                paramsuuid{
                    "uuid":''
                }
                formupdate{
                    username: '',
                    password: '',
                    emile: ''
                }
               //用户更新时使用
            }
        },
    
        method:{
            //还记得上面的分页组件的绑定的事件吗
            handleSizeChange(val){
                this.pageSize = val
                this.currentPage = 1
                this.queryList()
            },
            handleCurrentChange(val){
                this.currentPage = val
                this.queryList()
            },
            //搜索查询方法
            selectpage(this.pageSize,this.currentPage,this.username).then(res =>[
                this.tableDate = res.data.data.records
                this.totalCOunt = res.data.data.total
            })
            //查询用户user 列表
            queryList(){
                selectpage(this.pageSize,this.currentPage,this.username).then(res => {
                    console.log('接口返回的用户列表=='+JSON.stringify(res)) 
                    //首先要清楚,是把数据从接口拿到哪里,我这里是tabelData里
                    this.tableData = res.data.data.records //返回的用户列表字段赋给tableData,让他渲染上,
                    this.totalCount = res.data.data.total //总条数
                })
            },
            //用户新增
            首先要有一个新增的按钮,点击按钮,触发弹出弹窗,弹窗中是一个form表单,里面有确认按钮,用来绑定方法,调用接口实现用户更新
            例如有一个<el-button @click="addusre">新增<el-button>
            adduser(){
                    //    弹窗一开始都是隐藏的
                    this.dialogFormVisible2 = true
            }
            //弹窗中也有一个按钮此处叫为应用
            apply(){
                //调用新增用户接口
                //因为新增是post请求需要往接口里面传数据
                adduer(this.formuseradd){
                    console.log('新增接口返回了什么')
                    if(res.data.code === 200){
                           this.$message('新增成功')
                    }else{
                        this.$message(''失败)
                    }
                },
            //新增完成后自然最容易想到的就是删除
             此删除是在el-table-column中一列的操作
            例如<el-button size="mini" type="danger" @click='handleDelete(scope.$index,scope.row)'>删除</el-button>
                 绑定了点击事件
                handleDelete(index row){
                  this.$confirm("是否确认"){
                         confirmButtonText: "确定",
                    cancelButtonText: "取消",
                        type: "warning"
                    )}.then(() =>{
                    //移除对应位置的索引,通过索引移除每一行的数据
                    通过接口的返回每一行的索引是uuid
                    this.paramsuuid.uuid = row.uuid
                    deleteuser(this.params).then(res =>{
                        console.log('删除之后返回的数据'+JSON.stringify(res))
                         if(res.data.code==200){//判断返回之后的code,如果是200表示成功,提示删除成功
                this.$message({
               type: "success",
                 message: "删除成功!"
                });
              }else{
                this.$message({
               type: "info",
                 message: "删除失败!"
                });
              }
                //这里就是删除的话把uuid传给接口,接口会自行删除
                    })
                })
                
            },
            //删除和新增都有了,下一步就是更新
            更新的话就是跟着删除在一个格子里
            <el-button size="mini" @click="handleEdit(scope.$index,scope.row)">
            handleEdit(index,row){
                this.uuid =row.uuid //确认修改的行
                // 将数据的index传递过来用于实现数据的回显
                this.form = this.tableData[index] 
                this.currentIndex = index
                this.dialogFormVisible = true 
            },
            <el-button @click="Updateuser">更新<el-button>
            Updateuser{
                updateuser(this.form).then(res => {
                    console.log("更新返回===" + JSON.stringify(res))
                })
                this.dialogFormVisible =false
            },
            //    时间戳转换
            dateFormat(row,colum) {
                var date = row[column.property]
                if(date == undefined) [
                    return ""
                }
                return moment(date).format("YYYY-MM-DD HH:mm:ss")
            },
            
        }
   }
    
</script>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于vue项目整理增删改查 的相关文章

随机推荐

  • Forrester研究报告:Information Fabric——企业数据虚拟化(Part I、摘要翻译)

    Information Fabric 企业数据虚拟化Forrester研究报告EXECUTIVE SUMMARY总览Enterprises are facing the growing challenges of using dispara
  • 计算宽度_如何通过紫外可见漫反射光谱计算带隙/禁带宽度(图的绘制:tauc plot&KM法)...

    微信公众号试行乱序推送 为了不错过更新 请点击本页面最上方的 结构分析表征 进入公众号主页 点击右上角的三个小点点 在弹出的界面点击 设为星标 并在看完图文或视频后点击右下角的 在看 和 赞 本公众号以各类仪器的测试 分析教程 欢迎关注同名
  • 安装Windows时提示Windows无法安装到这个磁盘

    出现这种情况一般是因为安装程序的启动模式与目标磁盘的格式不一致导致 比如用UEFI启动时 目标安装盘是mbr 或用 Legacy启动时 目标安装磁盘是GPT分区 出现这种情况时 按shift F10可以打开命令提示符窗口 输入diskpar
  • ProFrom套EditableProTable如何进行表单验证

    import React useRef from react import Button from antd import BetaSchemaForm DrawerForm ProCard from ant design pro comp
  • 解决win10中无法打开CHM文件的方法

    CHM文件是非常常见的帮助文件格式 由于其便携性 很多语言的API会采用chm格式 win7 win8 1 win10系统 由于采用了UAC 致使原本在xp里浏览正常的chm文件出现空白而无法正常显示 解决方法 右键选择需要打开的文件 选择
  • SpringBoot中运行测试:java.lang.NullPointerException

    问题展示 SpringBoot中运行测试类报 java lang NullPointerException 问题描述 提示 这里描述项目中遇到的问题 在SpingBoot中当我们在它原有的测试基类BaseSpringBootTest jav
  • 7年经验之谈 —— 如何高效的开展app的性能测试?

    APP性能测试是什么 从网上查了一下 貌似也没什么特别的定义 我这边根据自己的经验给出一个自己的定义 如有巧合纯属雷同 客户端性能测试就是 从业务和用户的角度出发 设计合理且有效的性能测试场景 制定各性能场景下的客户端性能指标 内存 CPU
  • 微信小程序服务器域名怎么填,微信小程序合法域名配置方法

    在微信小程序的开发过程中 当需要请求第三方网站数据时 各种教程就直接说调用wx request接口即可 但是当初学者自己用的时候就会出现问题 比如我们这里请求聚合数据的API 里边有不少免费的数据申请就可以使用 调用邮编查询的接口 getP
  • Mybatis嵌套查询与嵌套结果

    一对多关系 一是用户 多是订单 实体类User public class User private Integer id private String name private Integer age private List
  • 后台获取前端提交数据的GET、POST方法遇到的问题

    在写代码的时候 总发现前端数据获取不到 最后发现了问题是因为get和post要一起出现 缺一不可 protected void doGet HttpServletRequest request HttpServletResponse res
  • JavaWeb之添加数据,显示到页面

    需求 从jsp页面添加一条记录到数据库 且显示到界面 分析 创建jsp页面 创建EmailServlet gt addEmail方法 设置请求编码 获取所有parameter的值 封装对象 调用addEmail方法 重定向到email sh
  • 游戏开发unity杂项知识系列:SetActive使用注意

    static public void SetActive GameObject go bool state if go null return if go activeSelf state go SetActive state 项目中类似上
  • JSP语法:setProperty

    JSP语法 13 setProperty 时间 2009 03 21 20 37 来源 作者 CSDN IE QQ 百度 Google POCO 新浪 365Key 天极 和讯 博拉 Live 奇客 收客 饭否 叽歪
  • 互联网未来发展方向

    都知道马云带来了互联网以及互联网的高潮 随着国家推动一带一路经济带 以及国内互联网大局的发展 很明显未来是互联网的天下 而互联网将来会怎样哪 第一 网购或者终端购物成为主流 随着经济发展 社会文明进步 智能制造 智能社会越来越凸显 智能手机
  • Python和C语言哪个难?零基础学哪个好?

    Python和C语言哪个难 零基础学哪个好 Python上手简单有交互性强的开发环境 还有众多的第三方库 学习起来会比C C 容易的多 C过于底层强在内存操作 功能实现起来却十分复杂并不适合新手作为上手语言 Python和C语言各有各的优势
  • Elastic Search 学习笔记

    来自尚硅谷 ES 教程 背景知识 从MySQL 到 ES 这一小节是我的一点点理解 如果有不对的话 欢迎指正 ES 是一个开源的高扩展的分布式全文搜索引擎 这样讲似乎还是有点抽象 那我们用一个更加熟悉的东西 MySQL来辅助理解 既然是搜索
  • 程序员技术面常用知识点

    转自 http blog csdn net qq 15437629 article details 52388685 在这里只做备份 计算机网络 TCP IP 模型 TCP IP协议集的分层实施 为什么要给网络划分层次 1 各层之间相对独立
  • 接口(interface)的实现

    接口 interface 的实现 usb插槽就相当于现实中的接口 其实现实生活和编程相对应的 即程序就是事件 1 java中的接口是怎么实现的呢 接口就是给出一些没有实现的方法 到了某个类要使用的时候就去实现他 语法 interface 接
  • Python多层字典取值

    usr bin python coding utf 8 author Bingo he file get target value py time 2017 12 22 def get target value key dic tmp li
  • 对于vue项目整理增删改查

    模板是来源于官方文档 清除tabledata里的模拟数据先