Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
this.visibleColumn.forEach(column => {
if (column.property && !XEUtils.has(recordItem, column.property)) {
XEUtils.set(recordItem, column.property, null)
}
// 如果设置了 Key 就必须要唯一,可以自行设置;如果为空,则默认生成一个随机数
if (rowKey && !XEUtils.get(recordItem, rowKey)) {
XEUtils.set(recordItem, rowKey, ++rowUniqueId + Date.now())
}
})
return recordItem
render: function (h, editRender, params) {
var $table = params.$table
var row = params.row
var column = params.column
var props = editRender.props || {}
var optionProps = props.optionProps || {}
var labelProp = optionProps.label || 'label'
var valueProp = optionProps.value || 'value'
if ($table.size) {
props = XEUtils.assign({ size: $table.size }, props)
}
return [
h('el-select', {
props,
model: {
value: XEUtils.get(row, column.property),
callback (value) {
XEUtils.set(row, column.property, value)
}
}
}, XEUtils.map(editRender.options, function (item, index) {
return h('el-option', {
props: {
value: item[valueProp],
label: item[labelProp]
},
key: index
})
}))
]
},
formatLabel: Handles.formatSelectLabel
_validCellRules (type, row, column) {
let property = column.property
let editRules = this.editRules
let validPromise = Promise.resolve()
if (property && !XEUtils.isEmpty(editRules)) {
let rules = XEUtils.get(editRules, property)
let value = XEUtils.get(row.data, property)
if (rules) {
for (let rIndex = 0; rIndex < rules.length; rIndex++) {
validPromise = validPromise.then(rest => new Promise((resolve, reject) => {
let rule = rules[rIndex]
let isRequired = rule.required === true
if ((type === 'all' || !rule.trigger || type === rule.trigger) && (isRequired || value || rule.validator)) {
if (XEUtils.isFunction(rule.validator)) {
rule.validator(rule, value, e => {
if (XEUtils.isError(e)) {
let cusRule = { type: 'custom', message: e.message, rule }
return reject(cusRule)
}
return resolve(rule)
}, { rules, row, column })
} else {
let restVal
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))
class={["vbt-body--column", column.id]}
key={columnKey || columnIndex}
on={tdOns}
style={{height:'41px'}}
>
<div style="{{" class="{[">
{column.renderCell({
row,
rowIndex,
column,
columnIndex,
fixed: fixedType,
level: rowLevel,
isHidden: fixedHiddenColumn
})}</div>
hasRowChange (row, prop) {
let { tableSourceData, treeConfig } = this
let rowKey = UtilTools.getRowKey(this)
let oRow
if (rowKey || treeConfig) {
let rowId = XEUtils.get(row, rowKey)
if (treeConfig) {
let children = treeConfig.children
let matchObj = XEUtils.findTree(tableSourceData, row => rowId === XEUtils.get(row, rowKey), treeConfig)
row = Object.assign({}, row, { [children]: null })
if (matchObj) {
oRow = Object.assign({}, matchObj.item, { [children]: null })
}
} else {
oRow = tableSourceData.find(row => rowId === XEUtils.get(row, rowKey))
}
} else {
let oRowIndex = this.getRowMapIndex(row)
oRow = tableSourceData[oRowIndex]
}
if (arguments.length > 1) {
return oRow && !XEUtils.isEqual(XEUtils.get(oRow, prop), XEUtils.get(row, prop))
rows.forEach(row => {
let rowIndex = tableFullData.indexOf(row)
let oRow = tableSourceData[rowIndex]
if (oRow && row) {
if (prop) {
XEUtils.set(row, prop, XEUtils.get(oRow, prop))
} else {
XEUtils.destructuring(row, oRow)
}
}
})
return this.$nextTick()
validCellRules (type, row, column, cellValue) {
let { editRules } = this
let { property } = column
let errorRules = []
let validPromise = Promise.resolve()
if (property && !XEUtils.isEmpty(editRules)) {
let rules = XEUtils.get(editRules, property)
let value = XEUtils.isUndefined(cellValue) ? XEUtils.get(row, property) : cellValue
if (rules) {
for (let rIndex = 0; rIndex < rules.length; rIndex++) {
validPromise = validPromise.then(() => new Promise(resolve => {
let rule = rules[rIndex]
let isRequired = rule.required === true
if (type === 'all' || !rule.trigger || type === rule.trigger) {
if (XEUtils.isFunction(rule.validator)) {
rule.validator(rule, value, e => {
if (XEUtils.isError(e)) {
let cusRule = { type: 'custom', trigger: rule.trigger, message: e.message, rule }
errorRules.push(cusRule)
}
return resolve()
}, { rules, row, column, rowIndex: this.getRowMapIndex(row), columnIndex: this.getColumnMapIndex(column) })
} else {
let len
content += columns.map(column => {
if (column.type === 'index') {
return `"${column.index ? column.index(rowIndex) : rowIndex + 1}"`
}
return `"${XEUtils.get(record, column.property) || ''}"`
}).join(',') + '\n'
} else {