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封装成子组件的更多相关文章

  1. html5音频audio对象封装成vue组件的方式调用以及setTimeout如何在vue2生效 (vue2正在熟悉中,ajax还是用jQuery来写舒服些,里面含有一些php写法可略过) 此网页应用在PC不考虑手机端

    // vue2 组件封装如下: <template> <div> <div><!--vue element 组件的引用 Switch 开关 不懂请自行百度(重 ...

  2. angular8 集成swiper, 并将swiper封装成公共组件

    安装Swiper npm install swiper --save 或者 yarn add swiper --save 在angular.json文件添加swiper.js和swiper.css   ...

  3. echart——vue封装成公共组件

    <!-- 自定义Echarts * options: Object,//数据 * theme: String,//主题 * initOptions: Object,//初始化 * group: ...

  4. vue 中 echart 在子组件中只显示一次的问题

    问题描述 一次项目开发过程中,需要做一些图表,用的是百度开源的 echarts. vue推荐组件化开发,所以就把每个图表封装成子组件,然后在需要用到该图表的父组件中直接使用. 实际开发中,数据肯定都是 ...

  5. 父组件向子组件传值时,值已经传过来却没有触发子组件的watch监听,解决~

    需求: 父组件像封装的子组件传值  (父组件属性传值,子组件props接受)   子组件接受后经过处理回显页面; 预想:子组件接受值 , 经过watch监听,在监听中处理数据,回显数据; 问题:子组件 ...

  6. 封装Vue Element的form表单组件

    前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...

  7. 封装Vue Element的upload上传组件

    本来昨天就想分享封装的这个upload组件,结果刚写了两句话,就被边上的同事给偷窥上了,于是在我全神贯注地写分享的时候他就神不知鬼不觉地突然移动到我身边,腆着脸问我在干啥呢.卧槽你妈,当场就把我吓了一 ...

  8. element el-table表格的vue组件二次封装(附表格高度自适应)

    基于vue的el-table表格二次封装组件方法 前言 在公司实习使用vue+element-ui框架进行前端开发,使用表格el-table较为多,有些业务逻辑比较相似,有些地方使用的重复性高,如果多 ...

  9. vue+element ui项目总结点(四)零散细节概念巩固如vue父组件调用子组件的方法、拷贝数据、数组置空问题 等

    vue config下面的index.js配置host: '0.0.0.0',共享ip (假设你的电脑启动了这个服务我电脑一样可以启动)-------------------------------- ...

随机推荐

  1. DownloadProvider源码解析——与Volley对比

    1.AndroidHttpClient的创建 DownloadManager: 在DownloadThread的run方法里 public void run() { Process.setThread ...

  2. Unity3D Shader 高斯模糊

    //Shader Shader "Hidden/GaussianBlur" { Properties { _MainTex ("Texture", 2D) = ...

  3. scala breeze使用替换底层线性库

    scala -J-Dcom.github.fommil.netlib.NativeSystemBLAS.natives=mkl_rt.dll -cp "D:\betn\Scala\Scala ...

  4. Inotify+rsync实现实时数据同步

    使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...

  5. Tif文件合并类

    using System; using System.Collections; using System.Collections.Generic; using System.Drawing; usin ...

  6. 浅析原生js模仿addclass和removeclass

    //判断有没有class hasClass(elements, cName) { return !!elements.className.match(new RegExp("(\\s|^)& ...

  7. css学习_css书写规范

    css书写规 1.空格规范: div { color: red; } 2.选择器规范 3.属性 属性定义要另起一行 属性定义后必须以分号结尾 div { color: red; font-size: ...

  8. 初试 Entity Framework Core 的多对多映射

    今天在博问中看到一个关于 EF Core 的提问 ef core 2.0 多对多查询的问题,由于还没使用过 EF Core 的多对多映射,于是参考 EF Core 帮助文档快速写了个 .net cor ...

  9. [No0000130]WPF 4.5使用标记扩展订阅事件

    自从我上次写到关于标记扩展的时候已经有一段时间了...... Visual Studio 11 Developer Preview的发布给WPF带来了一些新功能,让我有理由再次使用它们.我要在这里讨论 ...

  10. tensorflow的variable的eval()和read_eval()有什么不同

    eval()返回的数值标量 read_eval()返回的是这个变量的tensor,类型是read 直接上代码: def tensoflow_test(): t = tf.Variable(initia ...