element-dialog封装成子组件
1.父组件
<template>
<card-layout :title="L('Users')" :actions="actions" @click="handleClick">
<el-table :data="tableData4.slice((currentPage-1)*pagesize,currentPage*pagesize)" :default-sort="{prop: 'date', order: 'descending'}" style="width: 100%">
<el-table-column fixed prop="id" label="编号" width="">
</el-table-column>
<el-table-column prop="name" label="姓名" width="">
</el-table-column>
<el-table-column prop="password" type="password" label="密码" width="">
</el-table-column>
<el-table-column prop="sexType" label="性别" width="" :formatter="sexTypes">
</el-table-column>
<el-table-column prop="phone" label="电话" width="">
</el-table-column>
<el-table-column prop="email" label="邮箱" width="">
</el-table-column>
<el-table-column prop="birthday" label="生日" width="">
</el-table-column>
<el-table-column prop="integral" label="等级" width="" :formatter="Getlevel">
</el-table-column>
<el-table-column fixed="right" label="操作" width=""> <template slot-scope="scope">
<el-button type="danger" @click.native.prevent="deleteRow(scope.row, tableData4)" size="small">
移除
</el-button>
<el-button type="primary" @click="EditClick(scope.row)" size="small">
{{Edit}}
</el-button>
</template> </el-table-column>
</el-table>
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[5, 10, 20, 40]" :page-size="pagesize" layout="total, sizes, prev, pager, next, jumper" :total="tableData4.length">
</el-pagination> <update :show.sync="shows" @renovate="getuser" :datas="mydata" ></update>
<UserEdit :show.sync="show" @renovate="getuser"></UserEdit> </card-layout>
</template> <script>
import datatablepaging from "../.././components/basicElement/dataTable/dataTablePaging.vue";
import UserEdit from "./UserEdit-dialog.vue";
import update from './Update.vue'
export default {
methods: {
deleteRow(index, rows) {
rows.splice(index, );
}
},
data() {
return {
Edit:"编辑",
pagesize: , //每页的数据条数
currentPage: , //默认开始页面
show: false,
shows:false,
mydata:{},
SkipCount: ,
MaxResultCount: ,
actions: [
[
{
id: "New",
type: "primary",
text: "New",
icon: "fa fa-plus"
},
{
id: "Refresh",
type: "success",
text: "Refresh",
icon: "fa fa-refresh"
}
]
],
tableData4: []
};
},
components: {
UserEdit,
datatablepaging,
update
},
methods: {
open() {
this.show = true;
},
opens(){
this.shows = true;
},
created: function() {
this.total = this.tableData4.length;
},
current_change: function(currentPage) {
this.currentPage = currentPage;
},
handleClick(id) {
switch (id) {
case "New":
this.AddUser();
break;
case "Refresh":
this.Refresh();
break;
default:
break;
}
},
AddUser() {
this.open();
},
Refresh() {
this.getuser();
},
getuser() {
this.$http
.get(
"/api/services/app/Userinfro/GetUserinofor?MaxResultCount=" +
this.MaxResultCount
)
.then(result => {
this.tableData4 = result.data.result.items;
//console.log(result.data.result.items);
})
.catch(err => {
console.log(err);
});
},
sexTypes(row, column) {
if (row.sexType == ) {
return "男";
} else {
return "女";
}
},
Getlevel(row, column) {
if (row.integral >= && row.integral < ) {
return "白银";
}
if (row.integral >= && row.integral < ) {
return "黄金";
}
if (row.integral >= && row.integral < ) {
return "铂金";
}
if (row.integral >= ) {
return "钻石";
}
},
deleteRow(row) {
this.$confirm("此操作将永久删除该用户, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
console.log(row.id);
this.$http
.delete("/api/services/app/Userinfro/DeleteUserByid?Id=" + row.id)
.then(result => {
this.$message({
type: "success",
message: "删除成功!"
});
this.getuser();
})
.catch(err => {
console.log(err);
});
});
},
EditClick(data) {
this.opens();
//console.log(data)
this.mydata=data;
},
handleSizeChange(size){
this.pagesize=size;
},
handleCurrentChange(currentPage)
{
this.currentPage=currentPage;
}
},
created() {
this.getuser();
}
};
</script>
<style>
.el-pagination { padding-top: 12px;
}
</style>
2.子组件
<template>
<div>
<el-dialog title="UpdateCustomer" :visible.sync="visible" @close="$emit('update:show', false)" :show="show" append-to-body>
<el-form :model="form" ref="Userform" :rules="rules" label-position="top" label-width="80px"> <el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
<el-input v-model="form.name"></el-input>
</el-form-item> <el-form-item label="密码" :label-width="formLabelWidth" prop="password">
<el-input v-model="form.password" autocomplete="off"></el-input>
</el-form-item> <el-form-item label="性别" :label-width="formLabelWidth" prop="sexType">
<el-radio-group v-model="form.sexType">
<el-radio :label="">WuMan</el-radio>
<el-radio :label="">Man</el-radio>
</el-radio-group>
</el-form-item> <el-form-item label="电话" :label-width="formLabelWidth" prop="phone">
<el-input v-model="form.phone" autocomplete="off"></el-input>
</el-form-item> <el-form-item label="邮箱" :label-width="formLabelWidth" prop="email">
<el-input v-model="form.email" autocomplete="off"></el-input>
</el-form-item> <el-form-item label="生日" :label-width="formLabelWidth" prop="birthday">
<el-date-picker v-model="form.birthday" type="date" style="width: 100%;" placeholder="选择日期">
</el-date-picker>
</el-form-item> <el-form-item label="积分" :label-width="formLabelWidth" prop="integral">
<el-input v-model="form.integral" autocomplete="off"></el-input>
</el-form-item>
</el-form> <div slot="footer" class="dialog-footer">
<el-button @click="cellsumbit">取 消</el-button>
<el-button type="primary" @click="sumbit">确 定</el-button>
</div>
</el-dialog>
</div>
</template> <script>
export default {
data() {
return {
form: {
name: "",
password: "",
sexType: ,
phone: "",
email: "",
birthday: "",
integral: ""
},
formLabelWidth: "80px",
visible: this.show,
rules: {
name: [
{ required: true, message: "name is not null", trigger: "blur" },
{
min: ,
max: ,
message: "Names are between two and eight characters "
}
],
password: [
{ required: true, message: "password is not null", trigger: "blur" },
{ min: , message: "Minimum length of six digits" }
],
phone: [
{ required: true, message: "phone is not nul", trigger: "blur" },
{ validator: this.checkphone, trigger: "blur" }
],
email: [
{ required: true, message: "email is not null", trigger: "blur" },
{ type: "email", message: "邮箱格式不正确", trigger: "blur" }
],
birthday: [
{ required: true, message: "birthday is not null", trigger: "blur" }
]
}
};
},
props: {
show: {
type: Boolean,
default: false
},
EDIT: {
type: String
},
datas:{
type :Object,
}
},
watch: {
show() { //注意要随时监控
console.log(this.datas);
this.form=this.datas;
this.visible = this.show;
}
},
methods: {
checkphone(rule, value, callback) {
if (!Number.isInteger(+value)) {
callback(this.$message("请输入数字类型"));
}
if (value) {
const reg = /^[||||][-]{}$/;
if (reg.test(value)) {
callback();
} else {
return callback(this.$message("请输入正确的手机格式"));
}
}
},
cellsumbit() {
this.visible = false;
this.$emit("renovate");
},
sumbit() {
this.visible = false; this.$refs.Userform.validate(valid => {
console.log(valid)
if (valid) {
this.$http
.put("/api/services/app/Userinfro/UpdateUser", this.form)
.then(result => {
console.log(result.status);
if (result.status == ) {
this.$message("更新成功");
this.$emit("renovate");
this.form.name = "";
}
})
.catch(err => {
console.log(err);
});
}
});
}
},
};
</script>
element-dialog封装成子组件的更多相关文章
- html5音频audio对象封装成vue组件的方式调用以及setTimeout如何在vue2生效 (vue2正在熟悉中,ajax还是用jQuery来写舒服些,里面含有一些php写法可略过) 此网页应用在PC不考虑手机端
// vue2 组件封装如下: <template> <div> <div><!--vue element 组件的引用 Switch 开关 不懂请自行百度(重 ...
- angular8 集成swiper, 并将swiper封装成公共组件
安装Swiper npm install swiper --save 或者 yarn add swiper --save 在angular.json文件添加swiper.js和swiper.css ...
- echart——vue封装成公共组件
<!-- 自定义Echarts * options: Object,//数据 * theme: String,//主题 * initOptions: Object,//初始化 * group: ...
- vue 中 echart 在子组件中只显示一次的问题
问题描述 一次项目开发过程中,需要做一些图表,用的是百度开源的 echarts. vue推荐组件化开发,所以就把每个图表封装成子组件,然后在需要用到该图表的父组件中直接使用. 实际开发中,数据肯定都是 ...
- 父组件向子组件传值时,值已经传过来却没有触发子组件的watch监听,解决~
需求: 父组件像封装的子组件传值 (父组件属性传值,子组件props接受) 子组件接受后经过处理回显页面; 预想:子组件接受值 , 经过watch监听,在监听中处理数据,回显数据; 问题:子组件 ...
- 封装Vue Element的form表单组件
前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...
- 封装Vue Element的upload上传组件
本来昨天就想分享封装的这个upload组件,结果刚写了两句话,就被边上的同事给偷窥上了,于是在我全神贯注地写分享的时候他就神不知鬼不觉地突然移动到我身边,腆着脸问我在干啥呢.卧槽你妈,当场就把我吓了一 ...
- element el-table表格的vue组件二次封装(附表格高度自适应)
基于vue的el-table表格二次封装组件方法 前言 在公司实习使用vue+element-ui框架进行前端开发,使用表格el-table较为多,有些业务逻辑比较相似,有些地方使用的重复性高,如果多 ...
- vue+element ui项目总结点(四)零散细节概念巩固如vue父组件调用子组件的方法、拷贝数据、数组置空问题 等
vue config下面的index.js配置host: '0.0.0.0',共享ip (假设你的电脑启动了这个服务我电脑一样可以启动)-------------------------------- ...
随机推荐
- JavaScript 之 function函数及参数arguments
JavaScript用function关键字声明函数,可以用return返回值,也可以没有返回值. 建议:要么统一有返回值,要么统一都没有返回值,这样调试代码方便. 函数定义格式: function ...
- Ubuntu 下 Sublime 无法输入中文?(已解决)
在 Ubuntu 里安装了 Sublime 却不能输入中文? 这可不好. 怎么办呢? Follow Me! 1 获得 sublime-imfix.c 文件 有 GitHub 账号的,可以从 https ...
- Unity3D Shader 高斯模糊
//Shader Shader "Hidden/GaussianBlur" { Properties { _MainTex ("Texture", 2D) = ...
- vss2005源码管理工具使用问题
vss2005有账号,但是连接不上,可能是TCP/IP NetBIOS Helper服务停止了,启用即可
- Android开发-基本概念(申明:来源于网络)
Android开发-基本概念(申明:来源于网络) 地址:http://blog.csdn.net/iwanghang/article/details/53505926
- PAT甲级1139 First Contact
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805344776077312 题意: 有m对朋友关系,每个人用4为数 ...
- RabbitMQ in Depth札记——AMQ协议
RPC传输 作为AMQP的实现,RabbitMQ使用RPC(remote procedure call)模式进行远程会话.而不同于一般的RPC会话--客户端发出指令,服务端响应,但服务端不会向客户端发 ...
- 基于LSD的直线提取算法
https://blog.csdn.net/tianwaifeimao/article/details/17678669 文献翻译:https://blog.csdn.net/YuYunTan/art ...
- Win10正式版U盘安装教程
1.首先我们需要登陆“微软中国下载中心”,从中下载一款名为“MediaCreationTool”的工具,利用该工具可以制作Win10安装U盘.直接通过以下地址快速进入“Windows下载中心”,根据自 ...
- c# 串口关闭死机
用C#编写的wince串口通信程序基本大功告成了,与之前用API函数和线程来做串口通信不同,这次直接使用SerialPort控件来做,原本以为使用控件做会简单和方便许多,没成想,还遇到了很多麻烦. 通 ...