Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
}, treeConfig)
XEUtils.remove(treeIndeterminates, item => item === row)
}
// 如果存在父节点,更新父节点状态
let matchObj = XEUtils.findTree(tableFullData, item => item === row, treeConfig)
if (matchObj && matchObj.parent) {
let selectItems = matchObj.items.filter(item => selection.indexOf(item) > -1)
return this.triggerCheckRowEvent(evnt, { row: matchObj.parent }, selectItems.length === matchObj.items.length ? true : (selectItems.length || value === -1 ? -1 : false))
}
} else {
if (value) {
if (selection.indexOf(row) === -1) {
selection.push(row)
}
} else {
XEUtils.remove(selection, item => item === row)
}
}
}
this.checkSelectionStatus()
UtilTools.emitEvent(this, 'select-change', [{ row, selection: this.getSelectRecords(), checked: value }, evnt])
}
},
checkSelectionStatus () {
return function (request, response) {
let insertRest = []
let updateRest = []
let removeRest = []
if (request.body) {
let updateTime = Date.now()
let updateRecords = request.body[page && page.update ? page.update : 'updateRecords'] || []
let removeRecords = request.body[page && page.remove ? page.remove : 'removeRecords'] || []
let insertRecords = request.body[page && page.insert ? page.insert : 'insertRecords'] || []
// 删除树
let removes = XEUtils.remove(list, item => removeRecords.some(row => row[key] === item[key]))
removeRest = removeRest.concat(removes)
while (removes.length) {
removes = XEUtils.remove(list, item => removes.some(row => row[key] === item[parentKey]))
removeRest = removeRest.concat(removes)
}
// 更新树
updateRecords.forEach(data => {
let item = list.find(item => item[key] === data[key])
if (item) {
XEUtils.destructuring(item, data, { updateTime })
updateRest.push(item)
}
})
// 插入树
let insertTree = (records, parentObj) => {
records.forEach(item => {
})
} else {
// 如果是新增,则保存记录
rows.forEach(row => {
if (!hasRowInsert(row)) {
removeList.push(row)
}
})
// 从数据源中移除
rest = XEUtils.remove(tableFullData, row => rows.indexOf(row) > -1)
// 如果绑定了多选属性,则更新状态
if (!property) {
XEUtils.remove(selection, row => rows.indexOf(row) > -1)
}
// 从列表中移除
XEUtils.remove(tableData, row => rows.indexOf(row) > -1)
}
XEUtils.remove(insertList, row => rows.indexOf(row) > -1)
}
this.checkSelectionStatus()
return this.$nextTick().then(() => {
this.recalculate()
return { row: rows && rows.length ? rows[rows.length - 1] : null, rows: rest }
})
},
/**
// 如果是新增,则保存记录
rows.forEach(row => {
if (!hasRowInsert(row)) {
removeList.push(row)
}
})
// 从数据源中移除
rest = XEUtils.remove(tableFullData, row => rows.indexOf(row) > -1)
// 如果绑定了多选属性,则更新状态
if (!property) {
XEUtils.remove(selection, row => rows.indexOf(row) > -1)
}
// 从列表中移除
XEUtils.remove(tableData, row => rows.indexOf(row) > -1)
}
XEUtils.remove(insertList, row => rows.indexOf(row) > -1)
}
this.checkSelectionStatus()
return this.$nextTick().then(() => {
this.recalculate()
return { row: rows && rows.length ? rows[rows.length - 1] : null, rows: rest }
})
},
/**
triggerCheckRowEvent (evnt, { row }, value) {
let { selection, tableFullData, selectConfig = {}, treeConfig, treeIndeterminates } = this
let { checkProp: property, checkMethod } = selectConfig
if (!checkMethod || checkMethod({ row, rowIndex: tableFullData.indexOf(row) })) {
if (property) {
if (treeConfig) {
if (value === -1) {
treeIndeterminates.push(row)
XEUtils.set(row, property, false)
} else {
// 更新子节点状态
XEUtils.eachTree([row], item => XEUtils.set(item, property, value), treeConfig)
XEUtils.remove(treeIndeterminates, item => item === row)
}
// 如果存在父节点,更新父节点状态
let matchObj = XEUtils.findTree(tableFullData, item => item === row, treeConfig)
if (matchObj && matchObj.parent) {
let selectItems = matchObj.items.filter(item => XEUtils.get(item, property))
return this.triggerCheckRowEvent(evnt, { row: matchObj.parent }, selectItems.length === matchObj.items.length ? true : (selectItems.length || value === -1 ? -1 : false))
}
} else {
XEUtils.set(row, property, value)
}
} else {
if (treeConfig) {
if (value === -1) {
treeIndeterminates.push(row)
XEUtils.remove(selection, item => item === row)
} else {
off (comp, type) {
XEUtils.remove(eventStore, item => item.comp === comp && item.type === type)
},
trigger (evnt) {
return function (request, response, { pathVariable }) {
let rest = []
if (pathVariable) {
let removes = XEUtils.remove(list, item => item[key] === pathVariable[key])
rest = rest.concat(removes)
while (removes.length) {
removes = XEUtils.remove(list, item => removes.some(row => row[key] === item[parentKey]))
rest = rest.concat(removes)
}
}
response.body = rest
return response
}
}
return function (request, response, { pathVariable }) {
let rest = []
if (pathVariable) {
rest = XEUtils.remove(list, item => item[key] === pathVariable[key])
}
response.body = rest
return response
}
}
let pendingRecords = request.body[page && page.remove ? page.remove : 'pendingRecords'] || []
let insertRecords = request.body[page && page.insert ? page.insert : 'insertRecords'] || []
updateRecords.forEach(data => {
let item = list.find(item => item[key] === data[key])
if (item) {
XEUtils.destructuring(item, data, { updateTime })
updateRest.push(item)
}
})
insertRecords.forEach(data => {
let rest = Object.assign(new ModelVO(data), { [key]: idIndex++, updateTime, createTime: updateTime })
insertRest.push(rest)
list.push(rest)
})
removeRecords = removeRecords.concat(pendingRecords)
removeRest = XEUtils.remove(list, item => removeRecords.some(row => row[key] === item[key]))
}
response.body = { insertRest, updateRest, removeRest }
return response
}
}
return function (request, response, { pathVariable }) {
let rest = []
if (pathVariable) {
let removes = XEUtils.remove(list, item => item[key] === pathVariable[key])
rest = rest.concat(removes)
while (removes.length) {
removes = XEUtils.remove(list, item => removes.some(row => row[key] === item[parentKey]))
rest = rest.concat(removes)
}
}
response.body = rest
return response
}
}