@qingbing/element-cell-edit

封装 cell 的编辑,目前主要用于 table-cell 中

Usage no npm install needed!

<script type="module">
  import qingbingElementCellEdit from 'https://cdn.skypack.dev/@qingbing/element-cell-edit';
</script>

README

封装 vue-element-ui 的组件

封装 cell 的编辑,目前主要用于 table-cell 中

====== 版本说明 ======

  • 1.0.0 : 代码初始化
  • 1.0.1 : 完善备注
    • 修改bug : saveCallback的类型由“Object”改为“Function”
    • 添加 editable 属性,控制是否可编辑
  • 1.0.2 : 完善备注
  • 1.0.3 : select 增加清除功能
  • 1.0.4 : 修改 switch 在修改失败时页面状态还原问题
  • 1.0.5 : 修改 switch 在table中值失效的问题

1. 安装

npm install @qingbing/element-cell-edit

2. 参数介绍

参数名 参数类型 数据类型 必填 默认 描述
property 属性 String - 属性
row 属性 Object - 行记录
editable 属性 Boolean true 可编辑
saveCallback 属性 Function undefined 保存后台的方法, 相比 params.saveCallback, 该方法优先
params 属性 Object {} 传递的参数

3. 使用示例

<template>
  <div>
    <el-divider>控制表格编辑(元素编辑){{ config }}{{editable}}</el-divider>
    <celledit
      property="isEdit"
      :row="config"
      :params="params.config"
    ></celledit>

    <el-divider>表格编辑</el-divider>
    <el-table :data="tableData" border style="width: 100%">
      <el-table-column prop="id" label="ID" width="50"> </el-table-column>
      <el-table-column prop="username" label="用户名" width="150">
        <template slot-scope="scope">
          <celledit
            :editable="editable"
            :property="scope.column.property"
            :row="scope.row"
            :params="params.username"
            :saveCallback="saveCallback"
          ></celledit>
        </template>
      </el-table-column>
      <el-table-column prop="name" label="姓名" width="100">
        <template slot-scope="scope">
          <celledit
            :editable="editable"
            :property="scope.column.property"
            :row="scope.row"
            :params="params.name"
            :saveCallback="saveCallback"
          ></celledit>
        </template>
      </el-table-column>
      <el-table-column prop="sex" label="性别" width="100">
        <template slot-scope="scope">
          <celledit
            :editable="editable"
            :property="scope.column.property"
            :row="scope.row"
            :params="params.sex"
            :saveCallback="saveCallback"
          ></celledit>
        </template>
      </el-table-column>
      <el-table-column prop="age" label="年龄" width="80">
        <template slot-scope="scope">
          <celledit
            :editable="editable"
            :property="scope.column.property"
            :row="scope.row"
            :params="params.age"
            :saveCallback="saveCallback"
          ></celledit>
        </template>
      </el-table-column>
      <el-table-column prop="is_open" label="开放" width="80">
        <template slot-scope="scope">
          <celledit
            :editable="editable"
            :property="scope.column.property"
            :row="scope.row"
            :params="params.is_open"
            :saveCallback="saveCallback"
          ></celledit>
        </template>
      </el-table-column>
      <el-table-column prop="info" label="个人信息">
        <template slot-scope="scope">
          <celledit
            :editable="editable"
            :property="scope.column.property"
            :row="scope.row"
            :params="params.info"
            :saveCallback="saveCallback"
          ></celledit> </template
      ></el-table-column>
    </el-table>
  </div>
</template>

<script>
// 导入包
import { merge } from "@qingbing/helper";
import { ajaxMethod } from "@/utils/unit";

export default {
  components: {
    ETable: () => import("@qingbing/element-table"),
    celledit: () => import("@qingbing/element-cell-edit"),
  },
  data() {
    const editParams = {
      dataType: "user",
      saveUrl: "/user-save",
    };
    return {
      config: {
        isEdit: "0",
      },
      params: {
        config: { type: "switch" },
        username: merge(editParams, { type: "text" }),
        name: merge(editParams, { type: "text" }),
        sex: merge(editParams, {
          type: "select",
          options: {
            0: "秘密",
            1: "男士",
            2: "女士",
          },
        }),
        age: merge(editParams, { type: "number" }),
        is_open: merge(editParams, { type: "switch" }),
        info: merge(editParams, { type: "textarea" }),
      },
      tableData: [
        {
          id: "1",
          username: "RzW",
          is_open: 1,
          name: "万磊",
          sex: "1",
          age: "22",
          info: "电的更看事众心中响求型可适千情。",
        },
        {
          id: "2",
          username: "s3Y",
          is_open: "0",
          name: "乔洋",
          sex: "2",
          age: "24",
          info: "置个京等拉己指林众通外手变意老。",
        },
      ],
    };
  },
  computed: {
    editable() {
      return "0" !== this.config.isEdit;
    },
  },
  methods: {
    saveCallback(cb, change, properties, params) {
      ajaxMethod(
        "user-cell-edit",
        merge({ id: properties.id }, change),
        "post",
        (res) => cb(res)
      );
    },
  },

};
</script>