/* eslint-disable */ import column from '@js/columns/columns' export default { /** * 获取列 * * @param keyword * @param type * @returns {Array} */ getColumns(keyword, type) { if (!keyword) { return [] } let columns = column[keyword] let colFrozen = [] // 左固定列 let colNormal = [] // 非固定列 columns.forEach((column) => { let _col = this.formatCol(column, type) if (_col) { if (_col.isFrozen) { colFrozen.push(_col) } else { colNormal.push(_col) } } }) if (type === 'table' || type === 'formA' || type === 'formU') { return colFrozen.concat(colNormal) } return [colFrozen, colNormal] }, /** * 格式化列 * * @param col * @param type * @returns {*} */ formatCol(column, type) { // 防止污染column.js基础配置 let col = {} Object.assign(col, column) if (column.display && column.display.length > 0) { switch (type) { case 'table': col.align = 'center' col.headerAlign = 'center' col.isResize = true // 是否拖动单元格 if (!column.display.includes(type)) { return null } if (column.fixed) { col.isFrozen = true } if (!column.width) { col.width = 120 } col.formatter = (rowData) => { // 没有数值 if (!rowData[column.key] && rowData[column.key] != '0') return '--' if (column.format) { switch (column.format) { case 'date': return app.util.formatDate(rowData[column.key], column.fmt) break case 'decimal': // 数字格式化 return Number(rowData[column.key].toFixed(column.num)) break case 'address': // 地址组合 let address = rowData[column.provinceKey] + rowData[column.cityKey] + rowData[column.countyKey] return address break default: return column.format(rowData[column.key]) } } else { return rowData[column.key] } } if (column.renderType) { col.render = function(data, row) { switch (column.renderType) { case 'image': return ( '' ) break case 'icon': return '' break case 'color': return ( '' + data + '' ) break default: return '' } } } break case 'search': if (!column.display.includes(type)) { return null } if (column.type) { col.formType = column.type } break case 'formA': case 'formU': if (!column.display.includes(type)) { return null } if (column.disabled && column.disabled.includes(type)) { col.disabled = true } else { col.disabled = false } break default: return col } return col } else { return col } }, /** * 获取验证规则 * * @param keyword */ getRules(keyword) { let rules = {} let _columns = column[keyword] if (_columns) { _columns.forEach((_column) => { if (_column.rule) { _column.rule.forEach((_col) => { if (!_col.message) { Object.assign(_col, { message: _col.title + '不合法' }) } }) rules[_column.key] = _column.rule } }) } return rules }, /** * 获取model * * @param keyword */ getModel(keyword) { let _model = {} let _columns = column[keyword] if (_columns) { _columns.forEach((_column) => { if (_column.display && _column.display.includes('model')) { _model[_column.key] = this.initValue(_column) } }) } return _model }, /** * 初始化 变量值 * @param col * @returns {string|number|Array} */ initValue(col) { let value switch (col.type) { case 'input': case 'textarea': value = '' break case 'inputNum': case 'switch': value = '' break case 'counter': value = 0 break case 'select': value = '' break case 'radio': value = 1 break case 'selectMul': case 'checkbox': value = [] break case 'date': value = '' break case 'cascader': value = [] break default: value = '' break } return value } } function getTagColor(title) { let color switch (title) { case '启用': color = '#2fcc2f' break case '停用': color = 'red' break } return color }