SOURCE

console 命令行工具 X clear

                    
>
console
var Main = {
  data() {
    return {
      idIndex: 100,
      validRules: {
        name: [{
          required: true,
          message: '名称必须填写'
        },
        {
          min: 3,
          max: 50,
          message: '名称长度在 3 到 50 个字符'
        }],
        role: [{
          required: true,
          message: '角色必须填写'
        }]
      },
      tablePages: {
        pageSize: 15
      },
      tableProxy: {
        // index: true, // 启用动态序号代理
        props: {
          result: 'results',
          // 设置后台返回数据所对应的字段名
          total: 'pageVO.sumTotal'
        },
        ajax: {
          // 任何支持 Promise API 的库都可以对接(fetch、jquery、axios、xe-ajax)
          query: (params) => this.doGet(params),
          delete: (params) => this.doDelete(params),
          save: (params) => this.doSave(params)
        }
      },
      tableToolbar: {
        buttons: [{
          code: 'reload',
          name: '刷新'
        },
        {
          code: 'insert_actived',
          name: '新增'
        },
        {
          code: 'mark_cancel',
          name: '标记/取消'
        },
        {
          code: 'save',
          name: '保存'
        },
        {
          code: 'getReserveRecord',
          name: '获取选中'
        }],
        refresh: true,
        setting: true
      },
      tableColumn: [{
        type: 'checkbox',
        width: 50
      },
      {
        type: 'seq',
        title: '序号',
        width: 80
      },
      {
        field: 'id',
        title: 'ID',
        width: 80
      },
      {
        field: 'name',
        title: 'Name',
        editRender: {
          name: 'input'
        }
      },
      {
        field: 'nickname',
        title: 'Nickname',
        editRender: {
          name: 'input'
        }
      },
      {
        field: 'sex',
        title: 'Sex',
        editRender: {
          name: 'select',
          options: []
        }
      },
      {
        field: 'role',
        title: 'Role',
        editRender: {
          name: 'input'
        }
      },
      {
        field: 'address',
        title: 'Address',
        showOverflow: true,
        editRender: {
          name: 'input'
        }
      }]
    }
  },
  methods: {
    doGet(params) {
      // 模拟后台接口
      return new Promise(resolve => {
        setTimeout(() => {
          var list = []
          for (var index = 0; index < 15; index++) {
            list.push({
              id: this.idIndex++,
              checked: false,
              name: 'test' + index,
              nickname: '昵称' + index,
              role: index % 2 === 0 ? '后端': '前端',
              sex: 'Man',
              date: '2019-05-01',
              time: 1556677810888 + index * 500,
              region: 'ShenZhen',
              address: 'address abc' + index
            })
          }
          var rest = {
            results: list,
            pageVO: {
              sumTotal: 1000
            }
          }
          resolve(rest)
        },
        300)
      })
    },
    doDelete(params) {
      // 模拟后台接口
      return new Promise(resolve => {
        setTimeout(() => {
          resolve()
        },
        300)
      })
    },
    doSave(params) {
      // 模拟后台接口
      return new Promise(resolve => {
        setTimeout(() => {
          resolve()
        },
        300)
      })
    },
    handleButtonClick({
      code
    }) {
      switch(code) {
        case 'getReserveRecord': {
          console.log('选中记录(翻页保留状态)',this.$refs.xGrid.getCheckboxReserveRecords())
          console.log('选中记录',this.$refs.xGrid.getCheckboxRecords())
          console.log('所有选中记录',[...this.$refs.xGrid.getCheckboxReserveRecords(),...this.$refs.xGrid.getCheckboxRecords()])
          break
        }
      }
    }
  }
};
var Ctor = Vue.extend(Main);
new Ctor().$mount('#app')
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/xe-utils"></script>
<script src="https://cdn.jsdelivr.net/npm/vxe-table"></script>
<!-- 使用 cdn 引用方式需要注意是否锁定版本,默认指向最新版本 -->

<div id="app">
  <template>
      <vxe-grid
      border
      resizable
      highlight-hover-row
      ref="xGrid"
      height="500"
      :pager-config="tablePages"
      :toolbar="tableToolbar"
      :proxy-config="tableProxy"
      :columns="tableColumn"
      :edit-rules="validRules"
      :edit-config="{trigger: 'click', mode: 'row', showStatus: true}"
      :row-id="'id'"
      :checkbox-config="{checkRowKeys:[101,102,103,113,117,120], reserve:true }"
      @toolbar-button-click="handleButtonClick"
    >
    </vxe-grid>
  </template>
</div>
@import url("https://cdn.jsdelivr.net/npm/vxe-table/lib/index.css");