diff --git a/src/components/Crud/UD.operation.vue b/src/components/Crud/UD.operation.vue
index d99d2b1..c60abd7 100644
--- a/src/components/Crud/UD.operation.vue
+++ b/src/components/Crud/UD.operation.vue
@@ -5,7 +5,7 @@
{{ msg }}
取消
- 确定
+ 确定
diff --git a/src/components/Crud/crud.js b/src/components/Crud/crud.js
index 75c6c99..0f0e7da 100644
--- a/src/components/Crud/crud.js
+++ b/src/components/Crud/crud.js
@@ -13,6 +13,8 @@ import Vue from 'vue'
function CRUD(options) {
const defaultOptions = {
tag: 'default',
+ // id字段名
+ idField: 'id',
// 标题
title: '',
// 请求数据的url
@@ -165,7 +167,7 @@ function CRUD(options) {
return
}
crud.status.edit = CRUD.STATUS.PREPARED
- crud.getDataStatus(data.id).edit = CRUD.STATUS.PREPARED
+ crud.getDataStatus(crud.getDataId(data)).edit = CRUD.STATUS.PREPARED
callVmHook(crud, CRUD.HOOK.afterToEdit, crud.form)
callVmHook(crud, CRUD.HOOK.afterToCU, crud.form)
},
@@ -174,7 +176,7 @@ function CRUD(options) {
* @param {*} data 数据项
*/
toDelete(data) {
- crud.getDataStatus(data.id).delete = CRUD.STATUS.PREPARED
+ crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.PREPARED
},
/**
* 取消删除
@@ -184,7 +186,7 @@ function CRUD(options) {
if (!callVmHook(crud, CRUD.HOOK.beforeDeleteCancel, data)) {
return
}
- crud.getDataStatus(data.id).delete = CRUD.STATUS.NORMAL
+ crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.NORMAL
callVmHook(crud, CRUD.HOOK.afterDeleteCancel, data)
},
/**
@@ -204,7 +206,7 @@ function CRUD(options) {
return
}
crud.status.edit = CRUD.STATUS.NORMAL
- crud.getDataStatus(crud.form.id).edit = CRUD.STATUS.NORMAL
+ crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL
}
crud.resetForm()
if (addStatus === CRUD.STATUS.PREPARED) {
@@ -268,7 +270,7 @@ function CRUD(options) {
crud.status.edit = CRUD.STATUS.PROCESSING
crud.crudMethod.edit(crud.form).then(() => {
crud.status.edit = CRUD.STATUS.NORMAL
- crud.getDataStatus(crud.form.id).edit = CRUD.STATUS.NORMAL
+ crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL
crud.editSuccessNotify()
crud.resetForm()
callVmHook(crud, CRUD.HOOK.afterSubmit)
@@ -289,11 +291,11 @@ function CRUD(options) {
if (data instanceof Array) {
delAll = true
data.forEach(val => {
- ids.push(val.id)
+ ids.push(this.getDataId(val))
})
} else {
- ids.push(data.id)
- dataStatus = crud.getDataStatus(data.id)
+ ids.push(this.getDataId(data))
+ dataStatus = crud.getDataStatus(this.getDataId(data))
}
if (!callVmHook(crud, CRUD.HOOK.beforeDelete, data)) {
return
@@ -403,7 +405,7 @@ function CRUD(options) {
const dataStatus = {}
function resetStatus(datas) {
datas.forEach(e => {
- dataStatus[e.id] = {
+ dataStatus[crud.getDataId(e)] = {
delete: 0,
edit: 0
}
@@ -443,7 +445,7 @@ function CRUD(options) {
*/
selectChange(selection, row) {
// 如果selection中存在row代表是选中,否则是取消选中
- if (selection.find(val => { return val.id === row.id })) {
+ if (selection.find(val => { return this.getDataId(val) === this.getDataId(row) })) {
if (row.children) {
row.children.forEach(val => {
crud.findVM('presenter').$refs['table'].toggleRowSelection(val, true)
@@ -484,6 +486,12 @@ function CRUD(options) {
},
updateProp(name, value) {
Vue.set(crud.props, name, value)
+ },
+ getDataId(data) {
+ if (!data.hasOwnProperty(this.idField)) {
+ console.error('[CRUD error]: no property [%s] in %o', this.idField, data)
+ }
+ return data[this.idField]
}
}
const crud = Object.assign({}, data)
@@ -592,6 +600,7 @@ function presenter(crud) {
console.error('[CRUD error]: ' + 'crud with tag [' + crud.tag + ' is already exist')
}
this.$crud[crud.tag] = crud
+ this.crud = crud
crud.registerVM('presenter', this, 0)
},
data() {