SOURCE

console 命令行工具 X clear

                    
>
console
// // 创建一个弹窗渲染
// VXETable.renderer.add('EditPopupModal', {
//   autofocus: '.vxe-input--inner',
//   renderEdit (h, renderOpts, params) {
//     return [
//       <edit-popup-modal params={ params }></edit-popup-modal>
//     ]
//   }
// })
// //由于这些在线代码示例不能多个文件同时使用,
// Vue.component('EditPopupModal',{
//     template: '#EditPopupModal',
//       props: {
//     params: Object
//   },
//   data () {
//     return {
//       row: null,
//       column: null,
//       modalVisible: false,
//       loading: false,
//       tableData: [],
//       tableColumn: [
//         { type: 'checkbox', width: 80 },
//         { field: 'name', title: 'Name' },
//         { field: 'role', title: 'Role' },
//         { field: 'sex', title: 'Sex' }
//       ],
//       tablePage: {
//         total: 0,
//         currentPage: 1,
//         pageSize: 10
//       }
//     }
//   },
//   created () {
//     this.load()
//   },
//   methods: {
//     load () {
//       const { row, column } = this.params
//       this.row = row
//       this.column = column
//       this.getData().then(data => {
//         this.tableData = data
//       })
//     },
//     getData () {
//       return new Promise(resolve => {
//         setTimeout(() => {
//           const list = [
//             { name: 'Test1', role: '前端', sex: '男' },
//             { name: 'Test2', role: '后端', sex: '男' },
//             { name: 'Test3', role: '测试', sex: '男' },
//             { name: 'Test4', role: '设计师', sex: '女' },
//             { name: 'Test5', role: '前端', sex: '男' },
//             { name: 'Test6', role: '前端', sex: '男' },
//             { name: 'Test7', role: '前端', sex: '男' }
//           ]
//           resolve(list)
//         }, 100)
//       })
//     },
//     popupEvent () {
//       this.modalVisible = true
//     },
//     pageChangeEvent ({ currentPage, pageSize }) {
//       this.tablePage.currentPage = currentPage
//       this.tablePage.pageSize = pageSize
//       this.loading = true
//       this.getData().then(data => {
//         this.loading = false
//         this.tableData = data
//       })
//     },
//     confirmEvent () {
//       const { row, column } = this
//       const selectRecords = this.$refs.xGrid.getCheckboxRecords()
//       row[column.property] = `${selectRecords.length}条`
//     }
//   }
// })


var Main = {
  data() {
    return {
      columns:[
          {
              props:{
                type: 'seq',
                title: '序号'
              }
          },
          {
              props:{
                field: 'name',
                title: '名字'
              }
          },
          {
              props:{
                field: 'sex',
                title: '性别'
              }
          },
          // 渲染出<vxe-input v-model="value405" placeholder="日期和时间选择" type="datetime" clearable></vxe-input>
          {
              props:{
                field: 'date',
                title: '日期',
                editRender:{
                    name: '$input',
                    props: {
                        placeholder:'日期和时间选择',
                        type: 'datetime'
                    }
                }
              }
          },
          //渲染出 <input type="number"/>
          {
              props:{
                  field: 'score',
                  title: '分数',
                  'edit-render':{ //也可写成editRender
                      name: 'input', //渲染器名称 可选值 input, textarea, select, $input, $select, $switch
                      attrs: {
                          type: 'number'
                      }
                  }
              },
          }
      ],
      tableData: [
          {name: '张三', sex: '男', date: '2020-01-01', score: ''},
          {name: '李四', sex: '女', date: '2020-01-01', score: ''},
          {name: '王五', sex: '男', date: '2020-01-01', score: ''},
          {name: '老六', sex: '女', date: '2020-01-01', score: ''},
          {name: '老七', sex: '男', date: '2020-01-01', score: ''}
      ],
      tableEditRules:{
        'score': [
            { required: true, message: '缺少分数' },//required校验
            { type: 'number', message: '分数为数字' },//type校验
            { max:5, message:'请保持两位小数点' },//max校验
            { //自定义检验方法
                validator: (context) => {
                    const val = +context.cellValue
                    if (val <= 0 || val > 100) {
                        return Promise.reject(new Error('分数为0-100的数'))
                    }
                },
            },
        ],
      }
    }
  },
};
var app = new Vue(Main).$mount('#app')
<!-- 引入样式 -->
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vxe-table/lib/style.css">
<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>
    <div>
      <vxe-table 
        :data="tableData"
        :edit-config="{
          trigger: 'click',//编辑在点击时触发
          mode: 'row', //编辑模式触发时整行的所有input跟着进入编辑模式
        }"
        :edit-rules="tableEditRules"
        >
        <vxe-column  v-bind="col.props" v-for="col in columns"></vxe-column>
      </vxe-table> 
    </div>
  </template>
  <template id="EditPopupModal">
        <div class="edit-popup-modal">
        <vxe-input class="edit-popup-input" v-model="row[column.property]" placeholder="请选择"></vxe-input>
        <vxe-button class="edit-popup-button" icon="fa fa-list" type="text" @click="popupEvent"></vxe-button>
        <vxe-modal
        show-footer
        class-name="vxe-table--ignore-clear edit-popup-box"
        width="800"
        height="400"
        v-model="modalVisible"
        @confirm="confirmEvent">
        <template #default>
            <vxe-grid
            highlight-hover-row
            auto-resize
            ref="xGrid"
            height="auto"
            :loading="loading"
            :pager-config="tablePage"
            :data="tableData"
            :columns="tableColumn"
            @page-change="pageChangeEvent">
            </vxe-grid>
        </template>
        </vxe-modal>
    </div>
  </template>
</div>
<style>
.edit-popup-modal {
  display: flex;
  align-items: center;
}
.edit-popup-input {
  width: auto;
  flex-grow: 1;
}
.edit-popup-button {
  flex-shrink: 0;
}
</style>