AntD table行内增改

Html:

<a-table
               <!--
                 * 表格栏:
                 * columns: 表格列的配置描述
                 * rowKey: 表格行 key 的取值
                 * dataSource: 数据数组
                 * pagination: 分页器
                 * loading: 是否加载中
               -->
                :columns="columns"
                :dataSource="dataSource"
                rowKey="key"
                bordered
                :loading="memberLoading" //加载
                :pagination="false">
                <template v-for="col in ['caption', 'name', 'desc']" :slot="col" slot-scope="text, record">
                  <div :key="col">
                    <a-input
                      v-if="record.editable"
                      style="margin: -5px 0"
                      :value="text"
                      @change="e => handleChange(e.target.value, record, col)"
                    />
                    <template v-else>{{ text }}</template>
                  </div>
                </template>
                <template slot="handle" slot-scope="text, record, index">
                  <span v-if="record.editable">
                    <span v-if="record.isNew">
                      <a-button style="margin-right: 4px;" size="small" @click="handleSave(record)">添加</a-button>|
                      <a-button size="small" @click="handleAddCancle(record)">取消</a-button>|
                    </span>
                    <span v-else>
                      <a-button style="margin-right: 4px;" size="small" @click="handleSave(record)">保存</a-button>|
                      <a-button size="small" @click="handleEditCancle(record)">返回</a-button>|
                    </span>
                  </span>
                  <span v-else>
                    <a-button style="margin-right: 4px;" size="small" @click="handleEdit(record)">编辑</a-button>|
                    <a-popconfirm title="确定删除该属性吗" @confirm="handleDelete(record, index)">
                      <a-button size="small">删除</a-button>
                    </a-popconfirm>
                  </span>
                </template>
</a-table>

methods:

// table中input编辑时
handleChange (value, record, column) {
      // console.log(record)
        console.log('元数据属性编辑')
        const newData = [...this.dataSource]
        const target = newData.filter(item => record.id === item.id)[0]
        if (target) {
          target[column] = value
          this.dataSource = newData
        }
      }
 },
// 按编辑按钮时
handleEdit (record) {
        const newData = [...this.dataSource]
        const target = newData.filter(item => record.id === item.id)[0]
        if (target) {
          target.editable = true
          delete target.isNew
          this.dataSource= newData
        }
},
handleDelete (record, index) {
      // 模拟网络请求、卡顿 800ms
      this.memberLoading = true
      new Promise((resolve) => {
        setTimeout(() => {
          resolve({ loop: false })
        }, 800)
      }).then(() => {
          // 删除元数据属性
          this.axios.delete('/reports/metaproperty/' + record.id).then((res) => {
            console.log(res)
            this.memberLoading = false
          })
      })
},
// table添加行
add () {
      // 数组头插值
      this.dataSource.unshift({
        id: '123456'
        caption: '',
        name: '',
        desc: '',
        propertyType: this.attrSelectType,
        // 下面属性控制表格出现input框
        editable: true,
        isNew: true
      })
},
// 添加取消
handleAddCancle (record) {
        const newData = [...this.dataSource]
        const target = newData.filter(item => item.id === record.id)[0]
        if (target) {
          Object.assign(target, this.cacheData.filter(item => record.id === item.id)[0])
          this.dataSource = newData.slice(1)
          delete target.editable
        }
},
// 编辑取消
handleEditCancle (record) {
        const newData = [...this.dataSource]
        const target = newData.filter(item => item.id === record.id)[0]
        if (target) {
          Object.assign(target, this.cacheData.filter(item => record.id === item.id)[0])
          delete target.editable
          this.dataSource= newData
        }
},

注意: 需要先在mounted初始化(取消的时候需要回复原始状态时使用)

this.cacheData = this.dataSource.map(item => ({ ...item }))
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,718评论 2 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,076评论 1 32
  • 一:什么是闭包?闭包的用处? (1)闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就 是将函数内部和函数外...
    xuguibin阅读 9,479评论 1 52
  • 感恩下班了去燕子家——真是可以啊——有吃的玩的——边聊天边玩手机——很惬意—— 感恩妈妈开视频来——有您真好! 感...
    灿宝儿阅读 95评论 0 0
  • 倒计时283天 啊啊啊啊啊,忘记更了 今天几乎一天课,所以没太多自主时间学习,中午饭后看了王江涛的一个句子,翻译了...
    吉吉去学习阅读 111评论 0 1