市北互联平台前端仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

235 lines
5.5 KiB

/* 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 (
'<img style="width:30pxheight: 30px" src="' + data + '"/>'
)
break
case 'icon':
return '<i class="el-icon-" + col.icon></i>'
break
case 'color':
return (
'<span style="width:20% height: 100% color: #fffdisplay: inline-block line-height:23px border-radius:4px background-color: ' +
getTagColor(data) +
'">' +
data +
'</span>'
)
break
default:
return '<span></span>'
}
}
}
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
}