ElementUi常用组件创建前端页面

2023-11-19

elementui 创建前端页面

<template>
        <section>
            <el-form :inline="true" :model="searchForm" class="demo-form-inline">
                <el-form-item label="姓名">
                    <el-input v-model="searchForm.userName" placeholder="姓名"></el-input>
                </el-form-item>
                <el-form-item label="状态">
                    <el-select v-model="searchForm.state" placeholder="状态">
                        <el-option label="启用" value="1"></el-option>
                        <el-option label="禁用" value="0"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" @click="loadDepartments">查询</el-button>
                    <el-button type="primary" @click="handleAdd">新增</el-button>
                </el-form-item>
            </el-form>
            <el-table :data="departments"  v-loading="listLoading" @selection-change="selsChange" style="width: 100%;">
                <el-table-column type="selection" width="55">
                </el-table-column>
                <el-table-column type="index" label="序号" width="60">
                </el-table-column>
                <el-table-column prop="name" label="姓名" >
                </el-table-column>
                <el-table-column prop="sn" label="编号">
                </el-table-column>
                <el-table-column prop="state" label="状态" :formatter="formatState" >
                </el-table-column>
                <el-table-column prop="manager.username" label="部门经理" >
                </el-table-column>
                <el-table-column prop="parent.name" label="上级部门" >
                </el-table-column>
                <el-table-column label="操作" >
                    <template scope="scope">
                        <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
                        <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <!--工具条-->
            <el-col :span="24" class="toolbar">
                <el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
                <el-pagination
                        @size-change="handleSizeChange"
                        @current-change="handleCurrentChange"
                        :current-page="pageNum"
                        :page-sizes="pageSizes"
                        :page-size="pageSize"
                        layout="total, sizes, prev, pager, next, jumper"
                        :total="total">
                </el-pagination>
            </el-col>
            <!--新增界面-->
            <el-dialog :title="dialogTitle" v-model="addFormVisible" :close-on-click-modal="false">
                <el-form :model="addForm" label-width="80px"  :rules="addFormRules" ref="addForm">
                    <el-form-item label="姓名" prop="name">
                        <el-input v-model="addForm.name" auto-complete="off"></el-input>
                    </el-form-item>

                    <el-form-item label="编码" prop="sn">
                        <el-input v-model="addForm.sn" ></el-input>
                    </el-form-item>

                    <el-form-item label="状态">
                        <el-radio-group v-model="addForm.state">
                            <el-radio class="radio" :label="1">启用</el-radio>
                            <el-radio class="radio" :label="0">禁用</el-radio>
                        </el-radio-group>
                    </el-form-item>
                    <el-form-item label="部门" >
                        <el-select v-model="addForm.deptId" clearable placeholder="请选择">
                            <el-option
                                    v-for="item in deptIds"
                                    :key="item.name"
                                    :label="item.name"
                                    :value="item.id">
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <el-form-item label="上级部门" prop="state">
                        <el-select v-model="addForm.managerId" clearable placeholder="请选择">
                            <el-option
                                    v-for="item in managers"
                                    :key="item.name"
                                    :label="item.username"
                                    :value="item.id">
                            </el-option>
                        </el-select>
                    </el-form-item>
                </el-form>
                <div slot="footer" class="dialog-footer">
                    <el-button @click.native="addFormVisible = false">取消</el-button>
                    <el-button type="primary" @click.native="addSubmit">提交</el-button>
                </div>
            </el-dialog>


        </section>
</template>
<script>
    export default {
        data() {
            return {
               addFormVisible: false,
                sels:[],
                //添加修改的form表单
                addForm:{
                   id:"",
                    name:"",
                    sn:"",
                    state:"",
                    managerId:"",
                    deptId:""



                },
                deptIds:[],
                managers:[],
                //弹出框的标题
                dialogTitle:"",
                //弹出框默认是关闭状态
                dialogVisible:false,
                searchForm: {
                    userName: "",
                    state:""

                },
                //部门列表数据
                departments: [],
                //是否显示加载框
                listLoading: false,
                addFormRules: {
                    name: [
                        {required: true, message: '部门必填!!', trigger: 'blur'}
                    ],
                    sn: [
                        {required: true, message: '编号必填!!', trigger: 'blur'}
                    ]
                },

                pageNum: 1,
                pageSizes: [5, 10, 15],
                pageSize: 5,
                total: 0
            }
        },
        methods:{
            formatState(row,column){
                return row.state ? "启用" : "禁用";

            },

            //选中复选框触发此函数, vals:选中的值(行)
            selsChange(vals){
                console.debug("选中的行",vals);
                this.sels=vals;

            },
            batchRemove(){
                this.$http.patch("http://localhost/department/removeAll",this.sels).then((res=>{
                    // console.debug(res)
                    this.loadDepartments()
                }))
            },
            handleSizeChange(val) {
                this.pageSize = val
                this.pageNum = 1
                this.loadDepartments()

            },
            handleCurrentChange(val) {
            this.pageNum = val
                this.loadDepartments()

            },



            //加载部门列表
            loadDepartments(){
                this.listLoading = true;
                let param = {"pageNum": this.pageNum, "pageSize": this.pageSize,"userName":this.searchForm.userName,"state":this.searchForm.state};
                this.$http.patch("http://localhost/department",param).then((res => {
                    let {list,total} = res.data;
                    this.departments = list;
                    this.total = total;
                    this.listLoading = false;

                }));
            },
            handleAdd: function () {
                //设置标题
                this.dialogTitle = "新增";
                if(this.$refs["addForm"]){
                    //重置
                    this.$refs["addForm"].resetFields();//this.$refs.addForm.resetFields()
                }
                //清空form表单
                for(var k in this.addForm){
                    this.addForm[k] = "";
                }
                //默认是启用状态
                this.addForm.state = 1;
                //显示弹出框
                this.addFormVisible = true;
            },
            //添加按钮注册事件
            addSubmit(){
                if(this.addForm.deptId){
                    //给addForm动态添加属性
                    this.addForm.parent = {"id":this.addForm.deptId}
                }
                if(this.addForm.managerId){
                    //给addForm动态添加属性
                    this.addForm.manager = {"id": this.addForm.managerId};
                }
                //必须验证通过之后,才执行if语句中的内容
                this.$refs.addForm.validate((valid) => {
                    if (valid) {
                        this.$http.put("http://localhost/department", this.addForm).then((res => {
                            let {success, msg} = res.data;
                            if(success){
                                //刷新列表
                                this.loadDepartments();
                                //关闭弹出框
                                this.addFormVisible = false;
                            }else{
                                this.$message.error(msg);
                            }
                        }));
                    }
                });
            },
            //编辑按钮注册事件
            handleEdit(index,row){
                for(var k in this.addForm){
                    this.addForm[k] = row[k];
                }
                //给部门了经理赋值
                if(row.manager){
                    this.addForm.managerId = row.manager.id;
                }
                //给部门赋值
                if(row.parent){
                    this.addForm.deptId = row.parent.id;
                }
                //弹出窗体
                this.addFormVisible = true;

            },
            //删除按钮注册事件
            handleDel(index,row){
                this.$confirm('您确认离我而去吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    this.$http.delete("http://localhost/department/"+row.id).then((res => {
                        let {success, msg} = res.data;
                        if(success){
                            this.$message({
                                type: 'success',
                                message: '删除成功!'
                            });
                            this.loadDepartments();
                        }else{
                            this.$message.error(msg);
                        }
                    }));
                }).catch(() => {
                });
            },
            //加载所有部门
            loadAllDepartment(){
                this.$http.patch("http://localhost/department/findAll").then((res => {
                    console.debug(res);
                    this.deptIds = res.data;
                }));


            },
            loadAllEmployees(){
                this.$http.patch("http://localhost/employee/findAll").then((res => {
                    this.managers = res.data;
                }));

            }


        },

        mounted(){
            //加载部门列表
            this.loadDepartments();
            this.loadAllDepartment()
            this.loadAllEmployees()

        }
    };
</script>

一般的常用组件创建页面,分享一下,多多交流

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

ElementUi常用组件创建前端页面 的相关文章

  • jquery/javascript 处理后移至命名锚点

    在进行一些 jquery 处理后 如何将焦点移动到同一页面上的不同部分 名为锚点 函数 ABC 进行一些处理 然后 我需要将用户移动到同一页面上的某个部分 页面下方 您可以使用下面的代码将屏幕滚动到 div 只需更改选择器以匹配您要滚动到的
  • 如何使用 jquery 从 iframe 内部滚动?

    我正在使用一个 Shadowbox 它生成一个 iframe 以在页面上显示产品详细信息 由于详细信息页面可能相当长 因此客户端需要一个 更多 按钮来向下滚动页面 显然 iframe 右侧的滚动条还不够 这是我为了让 iframe 滚动而尝
  • JavaScript 中的常用数字

    在我的任务中 我必须编写一个程序来查找数组中最常见的数字以及它重复的次数 我写了一些东西 但只打印最大重复次数 所以我的问题是如何打印这个元素的值 最大数量 在我的例子中是 4 var array 13 4 1 1 4 2 3 4 4 1
  • 是否可以用 json 进行表达式/计算?

    我使用出色的 json server 作为应用程序的后端 它对于访问自定义端点以检索一些数据非常有用 但是如果它允许我进行计算 表达式以便我也可以模仿后端行为 那将会非常有用 以这个数据结构为例 products name football
  • Angular 2 最终版本路由器单元测试

    如何使用 karma 和 jasmine 对 Angular 2 0 0 版中的路由器进行单元测试 这是我的旧单元测试在版本 2 0 0 beta 14 中的样子 import it inject injectAsync beforeEac
  • 如何滚动到 jQuery Mobile 中的页面元素?

    我有一个很长的 jQuery 移动页面 并且想在页面加载后滚动到该页面中间的元素 到目前为止 我已经尝试了一些事情 最成功的是 jQuery document bind mobileinit function var target if t
  • Backbone-relational 无法实例化两个 RelationalModel 对象

    我正在尝试实现 BackboneRelational 并不断获得 无法实例化多个 Backbone RelationalModel 每种类型都有相同的 ID class App Models User extends Backbone Re
  • 如何获取调用函数的“this”值?

    如果我有一个这样的函数 function foo this console log this function bar bar prototype func function foo this var test new bar test f
  • 具有适当后退按钮支持的 jQuery Lightbox

    在进行了一些可用性测试后 我发现参与者打开了jQuery 灯箱 http leandrovieira com projects jquery lightbox 查看更大的图像 然后 他们只需点击浏览器后退按钮 而不是单击 关闭 按钮 这会将
  • 在 NPM 上捆绑并发布客户端 Web 代码

    我制作了一个 JavaScript 文件 假设它的内容是这样的 let myCoolAlert str gt alert str in a different js file SO doesn t allow you to cross fi
  • Node.js 和 Express:异步操作后如何返回响应

    我是 Node js 新手 所以我仍然对异步函数和回调很感兴趣 我现在的难题是如何在异步操作中从文件读取数据后返回响应 我的理解是发送回复的工作方式如下 这对我有用 app get search function req res res s
  • 获取键盘事件中的鼠标位置

    我试图在用户按住 Shift 键时出现选择轮 滚轮应以鼠标位置为中心 然而当我测试这个时 pageX and clientX两者在事件对象上都未定义 是否可以通过键盘事件获取鼠标坐标 不 只需跟踪mousemove事件并持续保存当前位置 以
  • 替换 Javascript 中的引号?

    对于我正在制作的网络应用程序 我将收到文本字符串 其中偶尔包含引号 因为我接下来要 document writing 字符串 所以需要将它们更改为撇号或转义 我该怎么做 因为当我尝试时它似乎不起作用 特别是我认为因为字符串的引号阻止了脚本的
  • 用于客户端存储和服务器端同步的javascript库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 javascript 库 它可以让我将数据存储在客户端数据库中 并在后台自动将数据库同
  • 如何在 svelte 中制作搜索过滤器

    我有两个组件在组件树中距离很远 我对如何在两者之间进行通信存有疑问 我有搜索组件 listItems 和商店 商店 svelte
  • 可选链接在 create-react-app 中不起作用

    In a create react app项目 我正在使用 babel plugin proposal optional chaining在我的 babelrc中 但是 我有这个错误 Module parse failed Unexpect
  • 如何修复 AJAX 在选中复选框时始终触发?

    有时这个 AJAX 会触发 有时不会 让我解释一下 habit js document ready function habit check change function habit this parent siblings habit
  • 如何在 Javascript 中将字符串数组转换为特定的树结构

    我从后端获取文件路径列表 它代表文件夹结构 如下所示 paths path to file1 doc path to file2 doc foo bar doc 路径的长度是任意的 为了使用文件树组件 角度2树组件 https github
  • JavaScript 数组中的负索引是否会影响数组长度?

    在javascript中我定义了一个像这样的数组 var arr 1 2 3 我也可以做 arr 1 4 现在如果我这样做 arr undefined 我也失去了对值的引用arr 1 所以对我来说 从逻辑上来说 arr 1 也是arr 但是
  • 垃圾收集器不适用于 NodeJS / Chrome 中的类型化数组

    我最初将其记录为原项目中的一个问题 https github com nodejs help issues 3590 它立即转移到帮助主题 没有很好的解释 所以现在我想在这里提问 如果我们在 NodeJS v14 v16 v17 中运行以下

随机推荐

  • ajax extend,GitHub - YuChenLi923/extend-ajax: an AJAX request library

    extend ajax Features ability to specify request headers ability to get response headers if it isn t jsonp it can cache r
  • 在Vue项目使用kindEditor富文本编译器

    1 第一步 npm install kindeditor 2 第二部 新建一个kindeditor组件
  • Anaconda python windows环境安装及完全排坑教程

    本文篇幅较长 浏览器下搜索关键信息请直接使用ctrl F关键词查找 点击以下内容空降 Anaconda是什么 1 0篇 anaconda初体验 1 Anaconda3的安装 pycharm部分 额外内容 2 0篇 当你使用了anaconda
  • bat批处理for /f命令

    含有 F的for详细说明 含有 F的for有很大的用处 在批处理中使用的最多 用法如下 格式 FOR F options i IN file DO command FOR F options i IN string DO command F
  • python读取.csv文件时报错解决方案(无法打开“parsers.pyx”: 找不到文件)

    版权声明 本文为CSDN博主 Jayden yang 的原创文章 遵循CC 4 0 BY SA版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net qq 41997920 article details
  • Class 06 - 良好的编码习惯(保持代码的可读性)

    Class 06 良好的编码习惯 保持代码的可读性 保持代码的可读性 编码风格 命名的注意事项 文件名 对象名称 语法 运算符 逗号 中括号和小括号 大括号 代码缩进 代码的长度 赋值 注释 调试报错 保持代码的可读性 在编写 R语言 或任
  • SpringBoot2.X配置SSL(https访问)

    一 application yml配置 application yml配置 XXX keystore放到项目根目录下与pom xml同级 server port 443 ssl key store XXX keystore 生成的证书名字
  • Linux 挂载目录

    1 查看当前磁盘的情况 fdisk l root dmp3 fdisk l WARNING fdisk GPT support is currently new and therefore in an experimental phase
  • 3. 决策树原理及数学建模实战

    决策树 文章目录 一 概念 二 ID3 2 1 概念 2 2 算法流程 2 3 信息熵 2 4 特点 三 C4 5 3 1 概念 3 2 信息增益率 3 3 处理连续值 3 4 过拟合问题 3 4 1 提出 3 4 2 剪枝 四 CART
  • sqli-labs靶场Less-7

    备注 虽然从首页进来就知道是dump into outfile 但我还是假设按不知道的流程来一步步尝试 这样才会印象深刻 不然我觉得失去练习的意义了 1 访问首页 Less 7 index php id 1 这里的传参点是id 探测六步 判
  • LDO(低压差线性稳压器)设计电源注意事项(学习笔记)

    1 LDO最大输出电流 按照2 3原则选择 即电路总消耗电流的3 2倍 若电路总消耗电流50 mA 那么LDO的最大输出电流为75mA 2 封装散热以及功耗 功耗 输入电压 输出电压 工作电流 按照1 2原则选择LDO封装 达不到的可以PC
  • 多个js文件调用函数问题

    多个js文件调用函数问题 最近在做一个项目 用的 jquery 和 easyui 有很多常用的函数我就把它们写到了common js里面 然后又写了一link jsp 把常用的css和js文件都写在里面 然后页面直接include 写着写着
  • 蒸馏神经网络(Distill the Knowledge in a Neural Network)

    本文是阅读Hinton 大神在2014年NIPS上一篇论文 蒸馏神经网络的笔记 特此说明 此文读起来很抽象 大篇的论述 鲜有公式和图表 但是鉴于和我的研究方向 神经网络的压缩十分相关 因此决定花气力好好理解一下 1 Introduction
  • vuepress-yarn-nodes-静态网页_个人博客搭建

    nodes官网 https nodejs org en 先下载nodes进行安装 一般nodes会自带包管理器npm 注意npm与nodes的对应关系 除了npm之外还有yarn包管理器 一般会用npm安装这个包 npm install g
  • esp32cam门禁系统简易教程

    esp32cam门禁系统简易教程 人脸识别 1 环境安装 最好有梯子 arduino IDE 1 官网下载地址 选择相应版本下载Windows ZIP file 无脑安装 2 配置IDE 打开IDE 文件 gt 首选项 gt 附加开发板管理
  • Android属性动画

    http bbs itheima com thread 172632 1 1 html 什么是Android属性动画 属性动画 Property Animation 系统是一个健壮的动画框架系统 它可以满足你大部分动画需求 不管动画对象是否
  • Spring Boot 使用及启动源码解析一

    前言 本篇文章会介绍Spring Boot 的基本原理 以及以及一些使用 常见的配置方式等 如何从单一架构延申到现在的前后端分离 垂直应用架构 的项目 从网站流量很小到现在的网站流量动则几百万上下的 发展 加速前端的架构 到后面 的分布式服
  • [QT编程系列-25]:多线程机制 - QThread和MoveToThread简介

    目录 第1章 简介 1 1 多线程的目的 1 2 QThread多线程使用方法 1 3 QT支持多线的步骤 第2章 QThread 2 1 概述 2 2 moveToThread 第1章 简介 1 1 多线程的目的 QThread类提供了一
  • deepin访问不了网页

    deepin15 解决访问不了网页 IP能ping通 页面访问不了 IP能ping通 ping域名失败 是下边这个情况 执行成功 ping 202 108 22 5 baidu的ip 执行失败 ping www baidu com 是因为浏
  • ElementUi常用组件创建前端页面

    elementui 创建前端页面