项目初始化

This commit is contained in:
2026-03-18 17:19:03 +08:00
commit ac6079b9ff
602 changed files with 58291 additions and 0 deletions

View File

@@ -0,0 +1,141 @@
import { TableColumnCtx } from 'element-plus'
import { isUndefined } from 'lodash-es'
import { i18n } from '/@/lang/index'
/**
* 获取单元格值
*/
export const getCellValue = (row: TableRow, field: TableColumn, column: TableColumnCtx<TableRow>, index: number) => {
if (!field.prop) return ''
const prop = field.prop
let cellValue: any = row[prop]
// 字段 prop 带 . 比如 user.nickname
if (prop.indexOf('.') > -1) {
const fieldNameArr = prop.split('.')
cellValue = row[fieldNameArr[0]]
for (let index = 1; index < fieldNameArr.length; index++) {
cellValue = cellValue ? (cellValue[fieldNameArr[index]] ?? '') : ''
}
}
// 若无值,尝试取默认值
if ([undefined, null, ''].includes(cellValue) && field.default !== undefined) {
cellValue = field.default
}
// 渲染前格式化
if (field.renderFormatter && typeof field.renderFormatter == 'function') {
cellValue = field.renderFormatter(row, field, cellValue, column, index)
console.warn('baTable.table.column.renderFormatter 即将废弃,请直接使用兼容 el-table 的 baTable.table.column.formatter 代替')
}
if (field.formatter && typeof field.formatter == 'function') {
cellValue = field.formatter(row, column, cellValue, index)
}
return cellValue
}
/*
* 默认按钮组
*/
export const defaultOptButtons = (optButType: DefaultOptButType[] = ['weigh-sort', 'edit', 'delete']): OptButton[] => {
const optButtonsPre: Map<string, OptButton> = new Map([
[
'weigh-sort',
{
render: 'moveButton',
name: 'weigh-sort',
title: 'Drag sort',
text: '',
type: 'info',
icon: 'fa fa-arrows',
class: 'table-row-weigh-sort',
disabledTip: false,
},
],
[
'edit',
{
render: 'tipButton',
name: 'edit',
title: 'Edit',
text: '',
type: 'primary',
icon: 'fa fa-pencil',
class: 'table-row-edit',
disabledTip: false,
},
],
[
'delete',
{
render: 'confirmButton',
name: 'delete',
title: 'Delete',
text: '',
type: 'danger',
icon: 'fa fa-trash',
class: 'table-row-delete',
popconfirm: {
confirmButtonText: i18n.global.t('Delete'),
cancelButtonText: i18n.global.t('Cancel'),
confirmButtonType: 'danger',
title: i18n.global.t('Are you sure to delete the selected record?'),
},
disabledTip: false,
},
],
])
const optButtons: OptButton[] = []
for (const key in optButType) {
if (optButtonsPre.has(optButType[key])) {
optButtons.push(optButtonsPre.get(optButType[key])!)
}
}
return optButtons
}
/**
* 将带children的数组降维然后寻找index所在的行
*/
export const findIndexRow = (data: TableRow[], findIdx: number, keyIndex: number | TableRow = -1): number | TableRow => {
for (const key in data) {
if (typeof keyIndex == 'number') {
keyIndex++
}
if (keyIndex == findIdx) {
return data[key]
}
if (data[key].children) {
keyIndex = findIndexRow(data[key].children!, findIdx, keyIndex)
if (typeof keyIndex != 'number') {
return keyIndex
}
}
}
return keyIndex
}
/**
* 调用一个接受表格上下文数据的任意属性计算函数
*/
export const invokeTableContextDataFun = <T>(
fun: TableContextDataFun<T> | undefined,
context: TableContextData,
defaultValue: any = {}
): Partial<T> => {
if (isUndefined(fun)) {
return defaultValue
} else if (typeof fun === 'function') {
return fun(context)
}
return fun
}
type DefaultOptButType = 'weigh-sort' | 'edit' | 'delete'