<template>
<div class="box">
<el-button
class="addBtn"
type="primary "
@click="addRow"
size="small"
style="margin-bottom:10px;"
>增加</el-button
>
<el-table
:data="
tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)
"
border
class="el-table"
style="width: 100%;"
>
<el-table-column align="center" type="index" label="序号" width="80">
</el-table-column>
<el-table-column prop="sort" label="配置分类">
<template slot-scope="scope">
<el-input
@click="detail"
v-model="scope.row.sort"
:disabled="!scope.row.disabled"
></el-input>
</template>
</el-table-column>
<el-table-column prop="name" label="指标名称">
<template slot-scope="scope">
<el-input
@click="detail"
v-model="scope.row.name"
:disabled="!scope.row.disabled"
></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="depart" label="所属部门">
<template slot-scope="scope">
<el-input
v-model="scope.row.depart"
:disabled="!scope.row.disabled"
></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="creator" label="创建者">
<template slot-scope="scope">
<el-input
v-model="scope.row.creator"
:disabled="!scope.row.disabled"
></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="createDate" label="创建时间">
<template slot-scope="scope">
<el-input
v-model="scope.row.createDate"
:disabled="!scope.row.disabled"
></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="updater" label="更新者">
<template slot-scope="scope">
<el-input
v-model="scope.row.updater"
:disabled="!scope.row.disabled"
></el-input>
</template>
</el-table-column>
<el-table-column align="center" prop="updaterDate" label="更新时间">
<template slot-scope="scope">
<el-input
v-model="scope.row.updaterDate"
:disabled="!scope.row.disabled"
></el-input>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="200">
<template slot-scope="scope">
<el-button
v-if="scope.row.edit"
type="success"
size="mini"
@click="confirmEdit(scope.row)"
style="margin-left:0px;"
>保存
</el-button>

<el-button
v-if="scope.row.edit"
class="cancel-btn"
size="mini"
type="warning"
@click="cancelEdit(scope.$index, scope.row)"
style="margin-left:0px;"
>取消
</el-button>
<el-button
v-else
type="primary"
size="mini"
@click="startEdit(scope.row)"
style="margin-left:0px;"
>编辑
</el-button>
<el-button
@click="handleDelete(scope.$index, tableData)"
type="danger"
size="mini"
style="margin-left:0px;"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
class="pagination"
align="center"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[1, 5, 10, 20]"
:page-size="pageSize"
layout="total, prev, pager, next"
:total="tableData.length"
>
</el-pagination>
</div>
</template>

<script>
import data from "./data/index.js";
export default {
mixins: [data],
methods: {
// 增加行
addRow() {
let newLine = {
sort: this.sort,
name: this.name,
depart: this.depart,
creator: this.creator,
createDate: this.createDate,
updater: this.updater,
updaterDate: this.updaterDate,
edit: true, // 新增时处于可编辑状态,所以按钮是保存和取消
disabled: true // 打开编辑状态
};
this.tableData.unshift(newLine); // 移到第一行
},

// 编辑
startEdit(row) {
row.edit = !row.edit;
row.disabled = true;
},

// 保存
confirmEdit(row) {
//row.originalValue = row.address;
if (row.sort == null || row.name == null) {
this.$message({
message: "请输入分类名称与指标名称!",
type: "warning"
});
return false;
}
row.edit = false;
row.disabled = false;
//调取Api接口地址
//成功后
this.$message({
message: "修改成功!",
type: "success"
});
//失败后
// this.$message({
// message: "修改失败",
// type: "warning"
// });
// let name = this.params.name;
// const p = { ...row, name };
//
// // 调用更新方法
// updateXXXXx(p);
// this.$message({
// message: "已修改!",
// type: "success"
// });
// row.disabled = false;
// if (row.id === undefined) {
// // 重新加载该页面
// }
},

// 取消
cancelEdit(index, row) {
if (row.sort == null || row.name == null) {
return false;
}
//row.address = row.originalValue;
row.edit = false;
row.disabled = false;

if (row.id === undefined) {
debugger;
// 重新加载该页面
location.reload();
}
this.$message({
message: "已取消修改!",
type: "warning"
});
},
//删除
handleDelete(index, row) {
row.splice(index, 1);
this.$message({
message: "已删除!",
type: "success"
});
},
//表格分页
//列表分页
handleSizeChange(val) {
this.currentPage = 1;
this.pageSize = val;
},
handleCurrentChange(val) {
this.currentPage = val;
},
//指标点击事件
detail() {
this.$router.push({ path: "/targetWarn/detail" });
}
}
};
</script>

<style scoped>
.box {
padding: 20px;
}
.box .addBtn {
float: right;
}
</style>

el-table单元格新增、编辑、删除功能的更多相关文章

  1. C# DataGridView中指定的单元格不能编辑

    注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. ReadOnly属性的使用 DataGridView内所有的单元格不能编辑 当DataGridView.Re ...

  2. [Swift通天遁地]二、表格表单-(7)电子邮件Mail:实现单元格左右滑动调出功能按钮

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. Devexpress WinForm GridControl实现单元格可编辑状态更改

    之前做项目的时候,需要实现这样的功能.在gridcontrol中,根据是否修改(checkbox)列的选中和未选中状态来联动另外一列的编辑状态.实现如下: private void gridView1 ...

  4. 【ABAP系列】SAP ABAP OOALV 动态设置单元格可否编辑

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP OOALV 动 ...

  5. excel设置单元格不可编辑

    把允许编辑的单元格选定,右键-设置单元格格式-保护,把锁定前的对钩去掉.再点工具-保护工作表.这样就可以只让你刚才设定的单元格允许编辑,其他不允许.

  6. Vue. 之 Element table 单元格内容隐藏

    Vue. 之 Element table 单元格内容隐藏 在table显示数据时,若某个单元格的内容过多,需要进行隐层,在这一列的单元格属性添加::show-overflow-tooltip=&quo ...

  7. Java poi导出设置 Excel某些单元格不可编辑

    小白的总结,大神勿喷:需要转载请说明出处,如果有什么问题,欢迎留言 一.需求: 1.某一列 .某一行或某些单元格不可编辑,其他列可以编辑 二.期间遇到的问题 1.无法设置成不可编辑 2.设置为不可编辑 ...

  8. vue+element-ui 实现table单元格点击编辑,并且按上下左右键单元格之间切换

    通过我的测试我发现两个两种方法来编辑单元格的内容 第一种点击编辑: 我是给td里添加一个input,将值赋值给input,当失去焦点的时候将input的值付给td原来的内容,然后将input删除, 代 ...

  9. ABAP ALV单个单元格状态编辑

    *&---------------------------------------------------------------------* *& Report  ZPPR0024 ...

  10. ABAP ALV单个单元格状态编辑-简单版本

    *&---------------------------------------------------------------------* *& Report  ZPPR0024 ...

随机推荐

  1. drop,delete与truncate的区别

    drop直接删掉表 truncate删除表中数据,再插入时自增长id又从1开始 delete删除表中数据,可以加where字句. (1) DELETE语句执行删除的过程是每次从表中删除一行,并且同时将 ...

  2. java中的.java和.class的区别

    java文件就是这样一个未经编译的源程序,一般是给程序员看的. class文件就是被编译器编译过的java文件,通常是给计算机看的.

  3. webpack初始化

    1. 安装node js 2. 安装npm 3. 在桌面新建一个文件夹 4.利用cmd 进入文件夹 5.在cmd中创建一个新文件夹并且进入 6.npm init -y  生成page.json 7. ...

  4. 移动端布局 + iscroll + 滚动事件

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  5. QT install

    { https://www.bilibili.com/video/av18148008?from=search&seid=15361598961528715331 }

  6. Java Swing 窗体屏幕居中

    Java开发桌面程序用AWT或SWING,可以用设置主窗口位置,使主窗口居中一般使用下面的方法: 01.第一种方法              int windowWidth = frame.getWi ...

  7. delphi xe10 获取屏幕截图

    //截取屏幕图片 function MakeScaleScreenshot(Sender: TControl): TBitmap; function GetScreenScale: Single; v ...

  8. NOIp2018集训test-9-17(am)

    这是一套去年在长沙考过的题,但是我当时就没理清楚+没写题解(我以前很多博客都写得跟shi一样,完全没有意义,看到就想打当时的我),所以又考得稀烂. T1.star way to heaven 容易想到 ...

  9. [Android开发常见问题-4] RunTime.exec()如何以root权限执行多条指令?

    转:http://blog.csdn.net/alexander_xfl/article/details/9150971 RunTime.exec()这个接口可以说是给我们开发者提供了一个很好的直观操 ...

  10. 对A盾原理的小小总结,膜拜A神

    A盾的原理是在驱动加载时重载os内核,获取原始ssdt表的地址. 应用层点击查询的代码在文件A-ProtectView.cpp中,每种点击操作调用相应的 query查询函数,在query函数里 Rea ...