# 暴露的方法

以下是d2CrudX暴露的一些方法

使用d2CrudPlus
通过this.getD2Crud().xxxx 调用

未使用d2CrudPlus
通过this.$refs.d2Crud.xxxx调用

export default {
  methods: {
    /**
     * @description 外部暴露的更新单元格数据方法
     */
    updateCell (rowIndex, key, value) {
      this.$set(this.d2CrudData, rowIndex, {
        ...this.d2CrudData[rowIndex],
        [key]: value
      })
    },
    /**
     * @description 外部暴露的新增行方法
     */
    addRow (row) {
      this.handleAddRow(row)
    },
    /**
     * @description 外部暴露的编辑行方法
     */
    updateRow (index, row) {
      this.handleUpdateRow(index, row)
    },
    /**
     * @description 外部暴露的删除行方法
     */
    removeRow (index) {
      this.handleRemoveRow(index)
    },
    /**
     * @description 外部暴露的打开模态框方法
     */
    showDialog ({
      mode,
      rowIndex = 0,
      template = null,
      addData = null,
      modeContext = null
    }) {
      if (mode === 'edit') {
        this.handleEdit(rowIndex, this.d2CrudData[rowIndex], template, modeContext)
      } else if (mode === 'add') {
        this.handleAdd(template, addData, modeContext)
      } else if (mode === 'view') {
        this.handleView(rowIndex, this.d2CrudData[rowIndex], template, modeContext)
      } else {
        let row = addData
        if (rowIndex != null) {
          row = this.d2CrudData[rowIndex]
        }
        this.handleCustomDialog(mode, rowIndex, row, template, modeContext)
      }
    },
    handleCustomDialog (mode, rowIndex, row, template, modeContext) {
      this.formMode = mode
      this.$emit('dialog-open', {
        mode: mode,
        row
      })
      this.editIndex = rowIndex
      if (!template) {
        throw new Error('template不能为空')
      }
      return this.openDialog(rowIndex, row, template, modeContext)
    },
    /**
     * @description 外部暴露的关闭模态框方法
     */
    closeDialog () {
      this.handleCloseDialog()
    },

    /**
     * 获取当前表格数据
     */
    getTableData () {
      return this.$refs.d2Crud.d2CrudData
    }
  }
}