2026-02-02 23:17:44 +08:00
|
|
|
|
import { verifyDbName } from '@/api/design/table';
|
|
|
|
|
|
import { cloneDeep } from 'lodash-es';
|
|
|
|
|
|
|
|
|
|
|
|
// 数据字典
|
|
|
|
|
|
export const dicObj = {
|
|
|
|
|
|
dic_whether: [
|
|
|
|
|
|
{ label: '是', value: 'Y' },
|
|
|
|
|
|
{ label: '否', value: 'N' },
|
|
|
|
|
|
],
|
|
|
|
|
|
tableType: [
|
|
|
|
|
|
{ label: '单表', value: 1 },
|
|
|
|
|
|
{ label: '树表', value: 2 },
|
|
|
|
|
|
{ label: '主表', value: 3 },
|
|
|
|
|
|
{ label: '附表', value: 4 },
|
|
|
|
|
|
],
|
|
|
|
|
|
tableClassify: [
|
|
|
|
|
|
{ label: '业务表', value: 1 },
|
|
|
|
|
|
{ label: '表视图', value: 2 },
|
|
|
|
|
|
],
|
|
|
|
|
|
is_db_sync: [
|
|
|
|
|
|
{ label: '已同步', value: 'Y' },
|
|
|
|
|
|
{ label: '未同步', value: 'N' },
|
|
|
|
|
|
],
|
|
|
|
|
|
tableIdType: [
|
|
|
|
|
|
{ label: 'ID_WORKER(分布式自增)', value: 'NATIVE' },
|
|
|
|
|
|
],
|
|
|
|
|
|
themeTemplate: [
|
|
|
|
|
|
{ label: '默认主题', value: 'normal' },
|
|
|
|
|
|
{ label: 'ERP主题', value: 'erp' },
|
|
|
|
|
|
{ label: '内嵌子表主题', value: 'innerTable' },
|
|
|
|
|
|
],
|
|
|
|
|
|
searchStyle: [
|
|
|
|
|
|
{ label: '表格顶部', value: 'default' },
|
|
|
|
|
|
{ label: '表格内嵌', value: 'inline' },
|
|
|
|
|
|
],
|
|
|
|
|
|
treeStyle: [
|
|
|
|
|
|
{ label: '默认样式', value: 'default' },
|
|
|
|
|
|
{ label: '左树右表', value: 'around' },
|
|
|
|
|
|
],
|
|
|
|
|
|
treeChildType: [
|
|
|
|
|
|
{ label: '全部显示', value: 'default' },
|
|
|
|
|
|
{ label: '子集不显示', value: 'hideChild' },
|
|
|
|
|
|
],
|
|
|
|
|
|
treeMode: [
|
|
|
|
|
|
{ label: '默认', value: 'default' },
|
|
|
|
|
|
{ label: '懒加载', value: 'treeLazy' },
|
|
|
|
|
|
],
|
|
|
|
|
|
treeExpandBtn: [
|
|
|
|
|
|
{ label: '不显示', value: 'none' },
|
|
|
|
|
|
{ label: '单按钮显示', value: 'single' },
|
|
|
|
|
|
{ label: '双按钮显示', value: 'both' },
|
|
|
|
|
|
],
|
|
|
|
|
|
tableSelect: [
|
|
|
|
|
|
{ label: '多选', value: 'multiple' },
|
|
|
|
|
|
{ label: '单选', value: 'radio' },
|
|
|
|
|
|
{ label: '禁用', value: 'disabled' },
|
|
|
|
|
|
],
|
|
|
|
|
|
subTableMapping: [
|
|
|
|
|
|
{ label: '一对多', value: 'many' },
|
|
|
|
|
|
{ label: '一对一', value: 'one' },
|
|
|
|
|
|
],
|
|
|
|
|
|
operateMenuStyle: [
|
|
|
|
|
|
{ label: '横向排列', value: 'normal' },
|
|
|
|
|
|
{ label: '更多下拉', value: 'more' },
|
|
|
|
|
|
],
|
|
|
|
|
|
singleStyle: [
|
|
|
|
|
|
{ label: '默认表格', value: 'default' },
|
|
|
|
|
|
{ label: '可展开表格', value: 'expand' },
|
|
|
|
|
|
{ label: '卡片表格', value: 'card' },
|
|
|
|
|
|
],
|
|
|
|
|
|
singleCardSpan: [
|
|
|
|
|
|
{ label: '一列', value: 1 },
|
|
|
|
|
|
{ label: '二列', value: 2 },
|
|
|
|
|
|
{ label: '三列', value: 3 },
|
|
|
|
|
|
{ label: '四列', value: 4 },
|
|
|
|
|
|
{ label: '六列', value: 6 },
|
|
|
|
|
|
{ label: '八列', value: 8 },
|
|
|
|
|
|
{ label: '十二列', value: 12 },
|
|
|
|
|
|
],
|
|
|
|
|
|
expandMode: [
|
|
|
|
|
|
{ label: '默认', value: 'default' },
|
|
|
|
|
|
{ label: '手风琴', value: 'accordion' }
|
|
|
|
|
|
],
|
|
|
|
|
|
formStyle: [
|
|
|
|
|
|
{ label: '一列', value: 1 },
|
|
|
|
|
|
{ label: '二列', value: 2 },
|
|
|
|
|
|
{ label: '三列', value: 3 },
|
|
|
|
|
|
{ label: '四列', value: 4 },
|
|
|
|
|
|
],
|
|
|
|
|
|
dataConfig: [
|
|
|
|
|
|
{ label: '分页', value: 'page' },
|
|
|
|
|
|
{ label: '初始数据请求', value: 'initDataReq' },
|
|
|
|
|
|
{ label: '数据权限过滤', value: 'dataAuth' },
|
|
|
|
|
|
],
|
|
|
|
|
|
dataConfigSelect: [
|
|
|
|
|
|
{ label: '需登录', value: 'authFalse', desc: '访问该表接口:需登录' },
|
|
|
|
|
|
{ label: '需登录、鉴权', value: 'authTrue', desc: '访问该表接口:需登录并且需要配置菜单权限' },
|
|
|
|
|
|
{ label: '不登录可查询、新增数据', value: 'authOpen', desc: '访问该表查询、新增接口:不需要登录' },
|
|
|
|
|
|
],
|
|
|
|
|
|
tableConfig: [
|
|
|
|
|
|
{ label: '固定表格高度', value: 'height' },
|
|
|
|
|
|
{ label: '表格头部操作', value: 'header' },
|
|
|
|
|
|
{ label: '操作列', value: 'menu' },
|
|
|
|
|
|
{ label: '序号列', value: 'index' },
|
|
|
|
|
|
{ label: '纵向边框', value: 'border' },
|
|
|
|
|
|
{ label: '斑马纹样式', value: 'stripe' },
|
|
|
|
|
|
{ label: '表格滚动条固定在底部', value: 'rollBottom' },
|
|
|
|
|
|
],
|
|
|
|
|
|
basicFunction: [
|
|
|
|
|
|
{ label: '新增', value: 'addBtn' },
|
|
|
|
|
|
{ label: '编辑', value: 'editBtn' },
|
|
|
|
|
|
{ label: '查看', value: 'viewBtn' },
|
|
|
|
|
|
{ label: '删除', value: 'delBtn' },
|
|
|
|
|
|
{ label: '批量删除', value: 'batchDelBtn' },
|
|
|
|
|
|
{ label: '导入', value: 'importBtn' },
|
|
|
|
|
|
{ label: '导出', value: 'exportBtn' },
|
|
|
|
|
|
],
|
|
|
|
|
|
fieldType: [
|
|
|
|
|
|
{ label: '字符串 String', value: 'String' },
|
|
|
|
|
|
{ label: '整数 Integer', value: 'Integer' },
|
|
|
|
|
|
{ label: '大整数 BigInt', value: 'BigInt' },
|
|
|
|
|
|
{ label: '小数 BigDecimal', value: 'BigDecimal' },
|
|
|
|
|
|
{ label: '日期 Date', value: 'Date' },
|
|
|
|
|
|
{ label: '时间 Time', value: 'Time' },
|
|
|
|
|
|
{ label: '日期时间 DateTime', value: 'DateTime' },
|
|
|
|
|
|
{ label: '文本 Text', value: 'Text' },
|
|
|
|
|
|
{ label: '大文本 LongText', value: 'LongText' },
|
|
|
|
|
|
{ label: '二进制 Blob', value: 'Blob' },
|
|
|
|
|
|
],
|
|
|
|
|
|
cellWidthType: [
|
|
|
|
|
|
{ label: '固定', value: 'fixed' },
|
|
|
|
|
|
{ label: '最小', value: 'min' },
|
|
|
|
|
|
],
|
|
|
|
|
|
controlType: [
|
|
|
|
|
|
{ label: '文本输入框', value: 'input' },
|
|
|
|
|
|
{ label: '数字输入框', value: 'number' },
|
|
|
|
|
|
{ label: '下拉选择框', value: 'select' },
|
|
|
|
|
|
{ label: '单选框', value: 'radio' },
|
|
|
|
|
|
{ label: '多选框', value: 'checkbox' },
|
|
|
|
|
|
{ label: '日期', value: 'date' },
|
|
|
|
|
|
{ label: '时间', value: 'time' },
|
|
|
|
|
|
{ label: '开关', value: 'switch' },
|
|
|
|
|
|
{ label: '文件', value: 'file' },
|
|
|
|
|
|
{ label: '图片', value: 'image' },
|
|
|
|
|
|
{ label: '树型选择框', value: 'tree' },
|
|
|
|
|
|
{ label: 'Cascader级联选择框', value: 'cascader' },
|
|
|
|
|
|
{ label: '表格选择框', value: 'dicTableSelect' },
|
|
|
|
|
|
{ label: '用户选择框', value: 'userSelect' },
|
|
|
|
|
|
{ label: '部门选择框', value: 'deptSelect' },
|
2026-04-01 10:44:59 +08:00
|
|
|
|
{ label: '设备类型选择框', value: 'sblxSelect' },
|
2026-02-02 23:17:44 +08:00
|
|
|
|
{ label: '地区选择框', value: 'regionSelect' },
|
|
|
|
|
|
{ label: '代码编辑器', value: 'monacoEditor' },
|
|
|
|
|
|
{ label: '富文本', value: 'ueditor' },
|
|
|
|
|
|
{ label: 'MarkDown编辑器', value: 'markDown' },
|
|
|
|
|
|
{ label: '自定义控件', value: 'customControl' },
|
|
|
|
|
|
],
|
|
|
|
|
|
dictType: [
|
|
|
|
|
|
{ label: '系统字典', value: 'dict' },
|
|
|
|
|
|
{ label: '表格数据', value: 'table' },
|
|
|
|
|
|
],
|
|
|
|
|
|
dictTextFormatter: [
|
|
|
|
|
|
{ label: '字典Code-字典Text', value: '{dicCode}-{dicText}' },
|
|
|
|
|
|
{ label: '字典Text-字典Code', value: '{dicText}-{dicCode}' },
|
|
|
|
|
|
{ label: '字典Text(字典Code)', value: '{dicText}({dicCode})' },
|
|
|
|
|
|
{ label: '字典Text[字典Code]', value: '{dicText}[{dicCode}]' },
|
|
|
|
|
|
{ label: '其他格式请自行输入', value: 'custom-tip-1', disabled: true },
|
|
|
|
|
|
{ label: '例如:code:{dicCode},text:{dicText}', value: 'custom-tip-2', disabled: true },
|
|
|
|
|
|
{ label: '效果:code:1001,text:小明', value: 'custom-tip-3', disabled: true },
|
|
|
|
|
|
{ label: '如果是表格数据支持拼接【字典显示列】中的字段,通过{字段编码}拼接(注:表格选择器不支持)', value: 'custom-tip-4', disabled: true },
|
|
|
|
|
|
],
|
|
|
|
|
|
queryMode: [
|
|
|
|
|
|
{ label: '精确查询(=)', value: 'EQ' },
|
|
|
|
|
|
{ label: '模糊查询(like)', value: 'LIKE' },
|
|
|
|
|
|
{ label: '范围查询(仅适用于控件类型为:日期、时间、数字)', value: 'RANGE' },
|
|
|
|
|
|
{ label: '包含查询(in)', value: 'IN' },
|
|
|
|
|
|
{ label: '多选查询(in)', value: 'MORE_IN' },
|
|
|
|
|
|
{ label: '不等于(!=)', value: 'NE' },
|
|
|
|
|
|
],
|
|
|
|
|
|
importDuplicateType: [
|
|
|
|
|
|
{ label: '更新数据', value: 'update' },
|
|
|
|
|
|
{ label: '先删后增', value: 'delete_update' },
|
|
|
|
|
|
],
|
|
|
|
|
|
indexType: [
|
|
|
|
|
|
{ label: 'normal', value: 'normal' },
|
|
|
|
|
|
{ label: 'unique', value: 'unique' },
|
|
|
|
|
|
],
|
|
|
|
|
|
summaryType: [
|
|
|
|
|
|
{ label: '合计', value: 'sum' },
|
|
|
|
|
|
{ label: '平均', value: 'avg' },
|
|
|
|
|
|
{ label: '最大值', value: 'max' },
|
|
|
|
|
|
{ label: '最小值', value: 'min' },
|
|
|
|
|
|
{ label: '自定义SQL', value: 'custom' },
|
|
|
|
|
|
],
|
|
|
|
|
|
orderByType: [
|
|
|
|
|
|
{ label: '升序', value: 'asc' },
|
|
|
|
|
|
{ label: '降序', value: 'desc' },
|
|
|
|
|
|
],
|
|
|
|
|
|
summaryControl: [
|
|
|
|
|
|
{ label: '文本', value: 'text' },
|
|
|
|
|
|
{ label: '卡片', value: 'card' },
|
|
|
|
|
|
{ label: '折线图', value: 'line' },
|
|
|
|
|
|
{ label: '柱状图', value: 'bar' },
|
|
|
|
|
|
{ label: '饼图', value: 'pie' },
|
|
|
|
|
|
],
|
|
|
|
|
|
virtualType: [
|
|
|
|
|
|
{ label: 'SQL函数处理', value: 'fun' },
|
|
|
|
|
|
{ label: 'SQL处理', value: 'sql' },
|
|
|
|
|
|
{ label: 'JAVA处理', value: 'java' },
|
|
|
|
|
|
],
|
|
|
|
|
|
indexFieldDefault: [] as any[]
|
|
|
|
|
|
}
|
|
|
|
|
|
export const getDicObj = (key) => {
|
|
|
|
|
|
const obj = {}
|
|
|
|
|
|
if (dicObj[key]) dicObj[key].forEach(item => obj[item.value] = item.label)
|
|
|
|
|
|
return obj
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const control_tableType = (val, form) => {
|
|
|
|
|
|
dicObj.dataConfig = dicObj.dataConfig.map(item => {
|
|
|
|
|
|
if (item.value == 'page') {
|
|
|
|
|
|
item['disabled'] = val == 2
|
|
|
|
|
|
}
|
|
|
|
|
|
return item
|
|
|
|
|
|
})
|
|
|
|
|
|
dicObj.tableSelect = dicObj.tableSelect.map(item => {
|
|
|
|
|
|
if (item.value == 'radio') {
|
|
|
|
|
|
item['disabled'] = val == 2
|
|
|
|
|
|
}
|
|
|
|
|
|
return item
|
|
|
|
|
|
})
|
|
|
|
|
|
dicObj.basicFunction = dicObj.basicFunction.filter(item => {
|
|
|
|
|
|
if (item.value == 'addChild') return false
|
|
|
|
|
|
return true
|
|
|
|
|
|
})
|
|
|
|
|
|
if (val == 2) {
|
|
|
|
|
|
dicObj.basicFunction.splice(1, 0, { label: '新增子级', value: 'addChild' })
|
|
|
|
|
|
dicObj.basicFunction = [...dicObj.basicFunction]
|
|
|
|
|
|
}
|
|
|
|
|
|
if (val != 3 && form.themeTemplate != 'normal') form.themeTemplate = 'normal'
|
|
|
|
|
|
return {
|
|
|
|
|
|
themeTemplate: { disabled: val != 3 },
|
|
|
|
|
|
treeLabelField: { display: val == 2 },
|
|
|
|
|
|
subTableTitle: { display: val == 4 },
|
|
|
|
|
|
subTableListStr: { display: val == 3 && form.subTableListStr },
|
|
|
|
|
|
isDesForm: { display: val != 4 },
|
|
|
|
|
|
dataConfig: { dicData: dicObj.dataConfig },
|
|
|
|
|
|
tableSelect: { dicData: dicObj.tableSelect },
|
|
|
|
|
|
basicFunction: { dicData: dicObj.basicFunction },
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const control_tableClassify = (val) => {
|
|
|
|
|
|
return {
|
|
|
|
|
|
dataOrigin: { display: val == 2 },
|
|
|
|
|
|
originButton: { display: val == 2 },
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const control_isDesForm = (val) => {
|
|
|
|
|
|
return {
|
|
|
|
|
|
desformWebId: { display: val == 'Y' }
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const rules_required = (label, type = '') => [{ required: true, message: `${['select'].includes(type) ? '请选择' : '请输入'} ${label}`, trigger: "blur" }]
|
|
|
|
|
|
const tableName_required = async (rule, value, callback) => {
|
|
|
|
|
|
const regExp = /^[a-z][a-z0-9_]*$/
|
|
|
|
|
|
if (value === '') callback(new Error('请输入 表名'));
|
|
|
|
|
|
else if (!regExp.test(value)) callback(new Error('表名只能使用小写字母、数字、下划线,并以字母开头'));
|
|
|
|
|
|
else {
|
|
|
|
|
|
const bool = await verifyDbName(value)
|
|
|
|
|
|
if (bool) callback(new Error('表名已存在,请修改'));
|
|
|
|
|
|
else callback()
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const dataOriginObj = {}
|
|
|
|
|
|
const dataOrigin_dicFormatter = (data) => {
|
|
|
|
|
|
const sysList: any[] = []
|
|
|
|
|
|
const dbList: any[] = []
|
|
|
|
|
|
data.forEach(item => {
|
|
|
|
|
|
const row = {
|
|
|
|
|
|
label: `${item.tableName}(${item.tableDescribe})`,
|
|
|
|
|
|
tableText: item.tableDescribe,
|
|
|
|
|
|
tableName: item.tableName,
|
|
|
|
|
|
value: item.tableId,
|
|
|
|
|
|
type: 'table',
|
|
|
|
|
|
fieldList: item.fieldModelList.map(child => {
|
|
|
|
|
|
let label = child.fieldCode
|
|
|
|
|
|
if (child.fieldName) label = `${label}(${child.fieldName})`
|
|
|
|
|
|
return { label, value: child.fieldCode, tableName: item.tableName, type: 'field', fieldType: child.fieldType }
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
if (item.tableId == item.tableName) sysList.push(row)
|
|
|
|
|
|
else if (item.tableClassify !== 2) dbList.push(row)
|
|
|
|
|
|
dataOriginObj[item.tableId] = row
|
|
|
|
|
|
})
|
|
|
|
|
|
return [
|
|
|
|
|
|
{ label: '系统表', value: 'sys', children: sysList },
|
|
|
|
|
|
{ label: '表单开发', value: 'dbForm', children: dbList },
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//表格配置
|
|
|
|
|
|
const tableOptionColumn = {
|
|
|
|
|
|
lowSelectRadio: { label: '', display: false, width: 50, overHidden: false, fixed: true, showColumn: false },
|
|
|
|
|
|
id: { label: '表ID', display: false, search: true, width: 100, overHidden: true },
|
|
|
|
|
|
tableName: { label: '表名', display: false, search: true, minWidth: 140 },
|
|
|
|
|
|
tableDescribe: { label: '表描述', display: false, search: true, minWidth: 180, overHidden: true },
|
|
|
|
|
|
tableType: { label: '表类型', display: false, value: 1, search: true, type: 'select', dicData: dicObj.tableType, width: 70 },
|
|
|
|
|
|
tableClassify: { label: '表分类', display: false, value: 1, search: true, type: 'select', dicData: dicObj.tableClassify, width: 70 },
|
|
|
|
|
|
isDbSync: { label: '同步状态', display: false, type: 'select', search: true, dicData: dicObj.is_db_sync, width: 85 },
|
|
|
|
|
|
optionCondition: { label: '配置情况', display: false, width: 180, className: 'option-condition-td' },
|
|
|
|
|
|
custom_form: { label: '', labelWidth: 0, span: 24, hide: true, showColumn: false },
|
|
|
|
|
|
custom_info: { label: '', labelWidth: 0, span: 24, hide: true, showColumn: false }
|
|
|
|
|
|
}
|
|
|
|
|
|
// 表单配置
|
|
|
|
|
|
const customFormColumn = {
|
|
|
|
|
|
tableName: { label: '表名', rules: [{ validator: tableName_required, trigger: 'blur', required: true }] },
|
|
|
|
|
|
tableDescribe: { label: '表描述', rules: rules_required('表描述') },
|
|
|
|
|
|
// tableIdType: { label: '主键类型', type: 'select', value: 'NATIVE', dicData: dicObj.tableIdType, clearable: false },
|
|
|
|
|
|
groupDbformId: { label: '分组类型', type: 'tree', value: '', dicData: [], filterable: true, defaultExpandAll: true, props: { label: 'name', value: 'id' } },
|
|
|
|
|
|
tableType: { label: '表类型', type: 'select', value: 1, dicData: dicObj.tableType, control: control_tableType, clearable: false },
|
|
|
|
|
|
subTableTitle: { label: '附表-Tab标题', display: false },
|
|
|
|
|
|
tableClassify: { label: '表分类', type: 'select', value: 1, dicData: dicObj.tableClassify, control: control_tableClassify, clearable: false },
|
|
|
|
|
|
dataOrigin: { label: '数据来源', type: 'tree', value: '', display: false, span: 12, dataType: 'string', multiple: true, filterable: true, parent: false, defaultExpandAll: true, dicUrl: '/lideeyunji/dbform/get/all-table', dicQuery: { systemFlag: 'Y' }, dicFormatter: dataOrigin_dicFormatter },
|
|
|
|
|
|
originButton: { label: '', labelWidth: 0, display: false },
|
|
|
|
|
|
themeTemplate: { label: '主题模板', type: 'select', disabled: true, value: 'normal', dicData: dicObj.themeTemplate, clearable: false },
|
|
|
|
|
|
treeLabelField: { label: '树表回显字段', display: false, value: '', type: 'select', dicData: [], clearable: false, rules: rules_required('树表回显字段', 'select'), },
|
|
|
|
|
|
treeStyle: { label: '树表样式', display: false, value: 'default', type: 'select', dicData: dicObj.treeStyle, clearable: false },
|
|
|
|
|
|
treeMode: { label: '树表模式', display: false, value: 'default', type: 'select', dicData: dicObj.treeMode, clearable: false },
|
|
|
|
|
|
treeExpandBtn: { label: '树表展开/折叠', display: false, value: 'none', type: 'select', dicData: dicObj.treeExpandBtn, clearable: false },
|
|
|
|
|
|
tableSelect: { label: '表格选择', type: 'select', value: 'multiple', display: false, dicData: dicObj.tableSelect },
|
|
|
|
|
|
operateMenuStyle: { label: '操作栏样式', type: 'select', value: 'more', display: false, dicData: dicObj.operateMenuStyle, clearable: false },
|
|
|
|
|
|
maxMenuNum: { label: '操作栏最大横排数', type: 'number', value: 1, display: false },
|
|
|
|
|
|
tableStyle: { label: '单表样式', display: false },
|
|
|
|
|
|
formStyle: { label: '表单风格', type: 'select', value: 2, dicData: dicObj.formStyle, clearable: false },
|
|
|
|
|
|
isDesForm: { label: '默认表单', type: 'select', value: 'N', control: control_isDesForm, clearable: false, dicData: [{ label: '是', value: 'N' }, { label: '否', value: 'Y' }] },
|
|
|
|
|
|
desformWebId: { label: '自定义表单', display: false, type: 'select', filterable: true, rules: rules_required('自定义表单', 'select'), dicUrl: '/lideeyunji/desform/page', dicMethod: 'post', virtualize: true, props: { label: 'desformName', value: 'id' }, dicFormatter: (data) => data.records },
|
|
|
|
|
|
subTableListStr: { label: '关联的附表', display: false, span: 24, disabled: true, placeholder: '关联的附表需通过[附表的外键配置]绑定当前主表,当前字段仅作显示用途。' },
|
|
|
|
|
|
dataConfig: { label: '数据配置', type: 'checkbox', span: 24, dicData: dicObj.dataConfig, dataType: 'string', value: ['page', 'initDataReq', 'authFalse'] },
|
|
|
|
|
|
tableConfig: { label: '表格配置', type: 'checkbox', span: 24, dicData: dicObj.tableConfig, dataType: 'string', value: ['height', 'header', 'menu', 'index', 'border', 'rollBottom'] },
|
|
|
|
|
|
basicFunction: { label: '基础功能', type: 'checkbox', span: 18, dicData: dicObj.basicFunction, dataType: 'string', value: 'addBtn,editBtn,viewBtn,delBtn,batchDelBtn,importBtn,exportBtn' },
|
|
|
|
|
|
basicConfig: { label: '', labelWidth: 0, span: 6, params: { otherParams: { type: 'default', width: '620px', tipKeyList: ['tableOption'] }, dialogParams: { closeOnClickModal: true, closeOnPressEscape: true } } },
|
|
|
|
|
|
webConfig: { label: '其他配置', dataType: 'object', span: 24, value: { columnPersistence: 'N', selectAll: 'N', treeChildType: 'default' } },
|
|
|
|
|
|
importDuplicateType: { label: '导入数据重复处理类型', display: false, dicData: dicObj.importDuplicateType, value: 'update' }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const infoColumn = {
|
|
|
|
|
|
mysqlColumn: {
|
|
|
|
|
|
fieldCode: { title: '字段编码', minWidth: 120, editRender: { name: 'LowInput', verifyEdit: true } },
|
|
|
|
|
|
fieldName: { title: '字段名称', minWidth: 120, editRender: { name: 'LowInput' } },
|
|
|
|
|
|
fieldType: { title: '字段类型', minWidth: 100, editRender: { name: 'LowSelect', verifyEdit: true, dicData: dicObj.fieldType, dicObj: getDicObj('fieldType') } },
|
|
|
|
|
|
fieldDefaultVal: { title: '默认值', minWidth: 120, editRender: { name: 'LowInput', verifyEdit: true } },
|
|
|
|
|
|
fieldLen: { title: '字段长度', minWidth: 80, editRender: { name: 'LowNumber', verifyEdit: true } },
|
|
|
|
|
|
fieldPointLen: { title: '小数位数', minWidth: 80, editRender: { name: 'LowNumber', verifyEdit: true } },
|
|
|
|
|
|
fieldRemark: { title: '备注', minWidth: 120, editRender: { name: 'LowInput' } },
|
|
|
|
|
|
isPrimaryKey: { title: '是否主键', width: 54, align: "center", editRender: { name: 'LowCheckbox', verifyEdit: true } },
|
|
|
|
|
|
isNull: { title: '是否为空', width: 54, align: "center", editRender: { name: 'LowCheckbox', verifyEdit: true } },
|
|
|
|
|
|
isDb: { title: '同步数据库', width: 64, align: "center", editRender: { name: 'LowCheckbox', verifyEdit: true } },
|
|
|
|
|
|
},
|
|
|
|
|
|
viewColumn: {
|
|
|
|
|
|
fieldCode: { title: '字段编码', width: 140 },
|
|
|
|
|
|
fieldName: { title: '字段名称', width: 140 },
|
|
|
|
|
|
labelI18n: { title: '国际化配置', width: 140, editRender: { name: 'LowMonacoEditorInput', events: {} } },
|
|
|
|
|
|
isShowList: { title: '列表显示', width: 54, align: "center", editRender: { name: 'LowCheckbox' }, titleSuffix: { content: '控制表格列是否显示' } },
|
|
|
|
|
|
isDbSelect: { title: '字段显示', width: 54, align: "center", editRender: { name: 'LowCheckbox', verifyEdit: true, }, titleSuffix: { content: '控制接口是否返回该字段' } },
|
|
|
|
|
|
isShowForm: { title: '表单显示', width: 54, align: "center", editRender: { name: 'LowCheckbox', verifyEdit: true, } },
|
|
|
|
|
|
isRequired: { title: '是否必填', width: 54, align: "center", editRender: { name: 'LowCheckbox', verifyEdit: true, } },
|
|
|
|
|
|
cellWidthType: { title: '列宽类型', width: 100, align: "center", editRender: { name: 'LowSelect', dicData: dicObj.cellWidthType, dicObj: getDicObj('cellWidthType') } },
|
|
|
|
|
|
cellWidth: { title: '列宽', width: 80, align: "center", editRender: { name: 'LowInput', placeholder: '120' } },
|
|
|
|
|
|
controlType: { title: '控件类型', width: 140, editRender: { name: 'LowSelect', verifyEdit: true, filterable: true, dicData: dicObj.controlType, dicObj: getDicObj('controlType'), events: {} } },
|
|
|
|
|
|
controlsConfig: { title: '控件配置', minWidth: 100, editRender: { name: 'LowClickInput', events: {} } },
|
|
|
|
|
|
verifyConfig: { title: '校验配置', minWidth: 100, editRender: { name: 'LowClickInput', events: {} } },
|
|
|
|
|
|
isShowSort: { title: '是否排序', width: 54, align: "center", editRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
isShowColumn: { title: '是否可控', width: 54, align: "center", editRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
},
|
|
|
|
|
|
queryColumn: {
|
|
|
|
|
|
fieldCode: { title: '字段编码', width: 140 },
|
|
|
|
|
|
fieldName: { title: '字段名称', width: 140 },
|
|
|
|
|
|
isShowList: { title: '列表显示', width: 54, align: "center", cellRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
queryIsDb: { title: '接口查询', width: 54, align: "center", editRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
queryIsWeb: { title: '查询控件', width: 54, align: "center", editRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
queryDefaultVal: { title: '查询控件默认值', width: 160, editRender: { name: 'LowInput' } },
|
|
|
|
|
|
queryMode: { title: '查询模式', width: 130, editRender: { name: 'LowSelect', dicData: dicObj.queryMode, dicObj: getDicObj('queryMode') } },
|
|
|
|
|
|
queryConfig: { title: '查询配置', minWidth: 100, editRender: { name: 'LowClickInput', events: {} } },
|
|
|
|
|
|
},
|
|
|
|
|
|
dicColumn: {
|
|
|
|
|
|
fieldCode: { title: '字段编码', width: 140 },
|
|
|
|
|
|
fieldName: { title: '字段名称', width: 140 },
|
|
|
|
|
|
dictType: { title: '字典类型', width: 140, editRender: { name: 'LowSelect', verifyEdit: true, events: {}, dicData: dicObj.dictType, dicObj: getDicObj('dictType') } },
|
|
|
|
|
|
dictCode: { title: '字典Code', width: 180, editRender: { name: 'LowSelect', verifyEdit: true, filterable: true, typeKey: 'dictType', dicData: [] } },
|
|
|
|
|
|
dictTable: { title: '字典Table', width: 230, editRender: { name: 'LowSelect', verifyEdit: true, filterable: true, typeKey: 'dictType', dicData: [] } },
|
|
|
|
|
|
dictText: { title: '字典Text', width: 180, editRender: { name: 'LowSelect', verifyEdit: true, filterable: true, typeKey: 'dictType', dicData: [] } },
|
|
|
|
|
|
dictTextFormatter: { title: '字典Text格式化', width: 180, editRender: { name: 'LowSelect', verifyEdit: true, filterable: true, allowCreate: true, dicData: dicObj.dictTextFormatter, dicObj: getDicObj('dictTextFormatter') } },
|
|
|
|
|
|
dictTableColumn: { title: '字典显示列', editRender: { name: 'LowSelect', verifyEdit: true, multiple: true, filterable: true, typeKey: 'dictType', dicData: [] }, titleSuffix: { content: '控制【字典类型】为表格数据时,接口返回的字段,默认只返回字典code和字典text' } },
|
|
|
|
|
|
dictTableSearch: { title: '额外查询条件', editRender: { name: 'LowMonacoEditorInput', verifyEdit: true, events: {} } },
|
|
|
|
|
|
},
|
|
|
|
|
|
expColumn: {
|
|
|
|
|
|
fieldCode: { title: '字段编码', width: 140 },
|
|
|
|
|
|
fieldName: { title: '字段名称', width: 140 },
|
|
|
|
|
|
isShowList: { title: '列表显示', width: 74, align: "center", cellRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
isExport: { title: '可导出', width: 70, align: "center", editRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
isImport: { title: '可导入', width: 70, align: "center", editRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
isImportDuplicate: { title: '导入去重', width: 80, align: "center", editRender: { name: 'LowCheckbox' }, titleSuffix: { content: '开启后导入将校验表内数据中对应的字段是否重复,勾选多个字段以(AND)判断是否重复' } },
|
|
|
|
|
|
importExampleTxt: { title: '导入模板示例文本', minWidth: 120, editRender: { name: 'LowInput' } },
|
|
|
|
|
|
},
|
|
|
|
|
|
keyColumn: {
|
|
|
|
|
|
fieldCode: { title: '字段编码', width: 140 },
|
|
|
|
|
|
fieldName: { title: '字段名称', width: 140 },
|
|
|
|
|
|
mainTable: { title: '外键-主表名', width: 230, editRender: { name: 'LowSelect', verifyEdit: true, filterable: true, dicData: [], events: {} } },
|
|
|
|
|
|
mainField: { title: '外键-主键字段', editRender: { name: 'LowSelect', verifyEdit: true, dicData: [], events: {} } },
|
|
|
|
|
|
},
|
|
|
|
|
|
summaryBottomColumn: {
|
|
|
|
|
|
fieldCode: { title: '字段编码', width: 140 },
|
|
|
|
|
|
fieldName: { title: '字段名称', width: 140 },
|
|
|
|
|
|
summaryShow: { title: '显示统计', width: 80, align: "center", editRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
summaryLabel: { title: '统计名称', width: 160, editRender: { name: 'LowInput' } },
|
|
|
|
|
|
summarySql: { title: '统计执行sql', minWidth: 120, editRender: { name: 'LowSummaryBottomSql', dicData: dicObj.summaryType, dicObj: getDicObj('summaryType') } },
|
|
|
|
|
|
},
|
|
|
|
|
|
summaryTopColumn: {
|
|
|
|
|
|
summaryShow: { title: '显示统计', width: 80, align: "center", editRender: { name: 'LowCheckbox' } },
|
|
|
|
|
|
summarySpan: { title: '统计栅格', width: 80, align: 'center', editRender: { name: 'LowNumber', params: { min: 1, max: 24 } } },
|
|
|
|
|
|
summaryLabel: { title: '统计名称', width: 160, editRender: { name: 'LowInput' } },
|
|
|
|
|
|
summaryControl: { title: '统计控件类型', width: 120, align: 'center', cellRender: { name: 'LowSelect', dicData: dicObj.summaryControl, dicObj: getDicObj('summaryControl') } },
|
|
|
|
|
|
summarySql: { title: '统计SQL配置', minWidth: 100, editRender: { name: 'LowClickInput', events: {} } },
|
|
|
|
|
|
},
|
|
|
|
|
|
virtualColumn: {
|
|
|
|
|
|
fieldCode: { title: '字段编码', width: 140 },
|
|
|
|
|
|
fieldName: { title: '字段名称', width: 140 },
|
|
|
|
|
|
virtualType: { title: '处理方式', width: 140, align: 'center', editRender: { name: 'LowSelect', dicData: dicObj.virtualType, dicObj: getDicObj('virtualType') } },
|
|
|
|
|
|
virtualValue: { title: '处理配置', minWidth: 140, editRender: { name: 'virtualInput', events: {} } },
|
|
|
|
|
|
},
|
|
|
|
|
|
indexColumn: {
|
|
|
|
|
|
indexName: { title: '索引名称', width: 180, editRender: { name: 'LowInput' } },
|
|
|
|
|
|
indexType: { title: '索引类型', width: 180, editRender: { name: 'LowSelect', dicData: dicObj.indexType } },
|
|
|
|
|
|
indexFieldCodeList: { title: '索引字段列表', editRender: { name: 'LowSelect', multiple: true, filterable: true, dicData: [] } }
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const infoApiKey = {}
|
|
|
|
|
|
const indexApiKey = Object.keys(infoColumn.indexColumn)
|
|
|
|
|
|
const apiKey = { mysqlColumn: 'fieldList', viewColumn: 'webList', queryColumn: 'queryList', dicColumn: 'dictList', expColumn: 'exportList', keyColumn: 'foreignkeyList', summaryBottomColumn: 'summaryList' }
|
|
|
|
|
|
for (const key in infoColumn) {
|
|
|
|
|
|
if (apiKey[key]) {
|
|
|
|
|
|
const keys = Object.keys(infoColumn[key])
|
|
|
|
|
|
if (key == 'mysqlColumn') keys.push('sortNum')
|
|
|
|
|
|
infoApiKey[apiKey[key]] = keys
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const disabledArr = ['id', 'tenant_id', 'create_user', 'create_time', 'create_dept', 'update_user', 'update_time', 'pid', 'is_deleted']
|
|
|
|
|
|
|
|
|
|
|
|
//默认值
|
|
|
|
|
|
const infoDefaultData = {
|
|
|
|
|
|
basics: {
|
|
|
|
|
|
fieldCode: '', fieldName: '', fieldLen: 128, fieldPointLen: 0, fieldDefaultVal: '', fieldType: 'String', fieldRemark: '', isPrimaryKey: 'N', isNull: 'Y', isDb: 'Y',
|
|
|
|
|
|
labelI18n: '', isShowList: 'Y', isDbSelect: 'Y', isShowForm: 'Y', isRequired: 'N', cellWidthType: 'min', controlType: 'input', isShowSort: 'N', isShowColumn: 'Y',
|
|
|
|
|
|
queryIsDb: 'N', queryIsWeb: 'N', queryMode: 'EQ', queryConfig: '',
|
|
|
|
|
|
dictType: '', dictCode: '', dictTable: '', dictText: '', dictTextFormatter: '', dictTableColumn: [], dictTableSearch: '',
|
|
|
|
|
|
isImport: 'Y', isExport: 'Y', importRemoveRepet: 'N', importExampleTxt: '',
|
|
|
|
|
|
mainTable: '', mainField: '',
|
|
|
|
|
|
summaryShow: 'N', summaryLabel: '', summarySql: '', summaryJson: { sqlType: '', sqlValue: '' },
|
|
|
|
|
|
virtualType: '', virtual_java_str: '', virtual_sql_str: '', virtual_fun_str: '', virtualValue: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
index: { indexName: '', indexFieldCodeList: [], indexType: 'normal' },
|
|
|
|
|
|
summaryTop: { summaryShow: 'Y', summarySpan: 8, summaryControl: 'text', summaryLabel: '', summarySql: '', }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//获取默认字段配置
|
|
|
|
|
|
const getDefaultMysqlField = (type?: string) => {
|
|
|
|
|
|
let fieldObj = {}
|
|
|
|
|
|
if (type == 'tree') {
|
|
|
|
|
|
fieldObj = {
|
|
|
|
|
|
pid: { fieldName: '父级节点', fieldType: 'BigInt', fieldDefaultVal: 0, isShowList: 'N', isShowForm: 'Y', controlType: 'tree', only: true, is_tree_field: true, queryIsDb: 'Y' },
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
fieldObj = {
|
|
|
|
|
|
id: { fieldName: '主键', fieldType: 'BigInt', isPrimaryKey: 'Y', isNull: 'N', isShowList: 'N', isShowForm: 'N', isImport: 'N', isExport: 'N', queryIsDb: 'Y', isShowColumn: 'N', dictType: '', only: true },
|
|
|
|
|
|
tenant_id: { fieldName: '租户编号', fieldType: 'BigInt', isShowList: 'N', isShowForm: 'N', isImport: 'N', isExport: 'N', isShowColumn: 'N', dictType: '', only: true },
|
|
|
|
|
|
create_user: { fieldName: '创建人', fieldType: 'BigInt', isShowList: 'N', isShowForm: 'N', controlType: 'userSelect', isImport: 'N', isExport: 'N', queryIsDb: 'Y', isShowColumn: 'N', dictType: '', only: true },
|
|
|
|
|
|
create_time: { fieldName: '创建时间', fieldType: 'DateTime', isShowList: 'N', isShowForm: 'N', controlType: 'date', isImport: 'N', isExport: 'N', queryIsDb: 'Y', isShowColumn: 'N', dictType: '', only: true },
|
|
|
|
|
|
create_dept: { fieldName: '创建部门id', fieldType: 'BigInt', isShowList: 'N', isShowForm: 'N', controlType: 'deptSelect', isImport: 'N', isExport: 'N', queryIsDb: 'Y', isShowColumn: 'N', dictType: '', only: true },
|
|
|
|
|
|
update_user: { fieldName: '更新人', fieldType: 'BigInt', isShowList: 'N', isShowForm: 'N', controlType: 'userSelect', isImport: 'N', isExport: 'N', queryIsDb: 'Y', isShowColumn: 'N', dictType: '', only: true },
|
|
|
|
|
|
update_time: { fieldName: '更新时间', fieldType: 'DateTime', isShowList: 'N', isShowForm: 'N', controlType: 'date', isImport: 'N', isExport: 'N', queryIsDb: 'Y', isShowColumn: 'N', dictType: '', only: true },
|
|
|
|
|
|
is_deleted: { fieldName: '是否删除', fieldType: 'Integer', fieldLen: 2, fieldDefaultVal: 0, isShowList: 'N', isShowForm: 'N', isShowColumn: 'N', isImport: 'N', isExport: 'N', queryIsDb: 'Y', dictType: '', only: true },
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const defaultFieldData: any[] = []
|
|
|
|
|
|
for (const key in fieldObj) defaultFieldData.push({ ...cloneDeep(infoDefaultData.basics), ...fieldObj[key], fieldCode: key, })
|
|
|
|
|
|
return defaultFieldData
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getDefaultMysqlField().forEach(item => {
|
|
|
|
|
|
if (item.fieldCode == 'id') return
|
|
|
|
|
|
dicObj.indexFieldDefault.push({ label: `${item.fieldCode}(${item.fieldName})`, value: item.fieldCode, type: item.fieldType })
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
//格式化接口初始数据
|
|
|
|
|
|
const formattingInitData = (editInfoData) => {
|
|
|
|
|
|
const optionObj = {}
|
|
|
|
|
|
const infoData = [] as any
|
|
|
|
|
|
const indexData = [] as any
|
|
|
|
|
|
const summaryTopData = [] as any
|
|
|
|
|
|
for (const apiKey in infoApiKey) {
|
|
|
|
|
|
let key = apiKey
|
|
|
|
|
|
if (apiKey == 'summaryList') key = 'summaryBottomList'
|
|
|
|
|
|
optionObj[key] = {}
|
|
|
|
|
|
editInfoData[key]?.forEach(item => optionObj[key][item.fieldCode] = item)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
editInfoData.fieldList.forEach(fieldItem => {
|
|
|
|
|
|
const fieldCode = fieldItem.fieldCode
|
|
|
|
|
|
const infoItem: any = {}
|
|
|
|
|
|
for (const apiKey in infoApiKey) {
|
|
|
|
|
|
let dataKey = apiKey
|
|
|
|
|
|
if (apiKey == 'summaryList') dataKey = 'summaryBottomList'
|
|
|
|
|
|
if (!optionObj[dataKey]) continue
|
|
|
|
|
|
|
|
|
|
|
|
const editItem = optionObj[dataKey][fieldCode] || cloneDeep(infoDefaultData)
|
|
|
|
|
|
infoItem[`${apiKey}_id`] = editItem.id
|
|
|
|
|
|
|
|
|
|
|
|
if (apiKey == 'summaryList') infoItem.summaryJson = editItem.summaryJson ? JSON.parse(editItem.summaryJson) : cloneDeep(infoDefaultData.basics.summaryJson)
|
|
|
|
|
|
if (apiKey == 'webList') {
|
|
|
|
|
|
if (editItem.formatConfig) {
|
|
|
|
|
|
const formatConfig = JSON.parse(editItem.formatConfig)
|
|
|
|
|
|
infoItem.virtualType = formatConfig.formatType
|
|
|
|
|
|
infoItem.virtual_sql_str = JSON.stringify(formatConfig.formatJson.sql || {})
|
|
|
|
|
|
infoItem.virtual_java_str = JSON.stringify(formatConfig.formatJson.java || {})
|
|
|
|
|
|
infoItem.virtual_fun_str = formatConfig.formatJson.fun || ''
|
|
|
|
|
|
infoItem.virtualValue = ''
|
|
|
|
|
|
} else {
|
|
|
|
|
|
infoItem.virtualType = ''
|
|
|
|
|
|
infoItem.virtual_sql_str = ''
|
|
|
|
|
|
infoItem.virtual_java_str = ''
|
|
|
|
|
|
infoItem.virtual_fun_str = ''
|
|
|
|
|
|
infoItem.virtualValue = ''
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for (const i in infoApiKey[apiKey]) {
|
|
|
|
|
|
const key = infoApiKey[apiKey][i]
|
|
|
|
|
|
if (apiKey != 'fieldList' && ['fieldCode', 'fieldName'].includes(key)) continue
|
|
|
|
|
|
if (['queryList', 'exportList'].includes(apiKey) && key == 'isShowList') continue
|
|
|
|
|
|
infoItem[key] = editItem[key]
|
|
|
|
|
|
|
|
|
|
|
|
if (key == 'dictTableColumn' && !(infoItem[key] instanceof Array)) {
|
|
|
|
|
|
infoItem[key] = infoItem[key] ? infoItem[key].split(',') : []
|
|
|
|
|
|
}
|
|
|
|
|
|
if (key == 'fieldCode' && disabledArr.includes(infoItem[key])) {
|
|
|
|
|
|
infoItem.only = true
|
|
|
|
|
|
if (infoItem[key] === 'pid' && editInfoData.dbForm.tableType !== 2) {
|
|
|
|
|
|
delete infoItem.only
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
infoData.push(infoItem)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
if (editInfoData.indexList) {
|
|
|
|
|
|
const indexKeyList = Object.keys(infoColumn.indexColumn)
|
|
|
|
|
|
editInfoData.indexList.forEach(item => {
|
|
|
|
|
|
const indexItem = { id: item.id }
|
|
|
|
|
|
indexKeyList.forEach(prop => {
|
|
|
|
|
|
if (prop == 'indexFieldCodeList') indexItem[prop] = item[prop] ? item[prop].split(',') : []
|
|
|
|
|
|
else indexItem[prop] = item[prop]
|
|
|
|
|
|
})
|
|
|
|
|
|
indexData.push(indexItem)
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
if (editInfoData.summaryTopList) {
|
|
|
|
|
|
editInfoData.summaryTopList.forEach(item => {
|
|
|
|
|
|
const topObj = JSON.parse(item.summaryJson)
|
|
|
|
|
|
summaryTopData.push({
|
|
|
|
|
|
id: item.id,
|
|
|
|
|
|
summaryLabel: item.summaryLabel,
|
|
|
|
|
|
summaryShow: item.summaryShow,
|
|
|
|
|
|
summarySpan: topObj.summarySpan,
|
|
|
|
|
|
summaryControl: topObj.summaryControl,
|
|
|
|
|
|
summarySql: JSON.stringify(topObj.summarySql),
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
return { infoData, indexData, summaryTopData }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export const pageOption = {
|
|
|
|
|
|
tableOptionColumn, customFormColumn, dataOriginObj,
|
|
|
|
|
|
infoApiKey, indexApiKey,
|
|
|
|
|
|
tableName_required
|
|
|
|
|
|
}
|
|
|
|
|
|
export const tableInfoOption = {
|
|
|
|
|
|
infoColumn,
|
|
|
|
|
|
infoDefaultData,
|
|
|
|
|
|
disabledArr,
|
|
|
|
|
|
getDefaultMysqlField,
|
|
|
|
|
|
formattingInitData,
|
|
|
|
|
|
}
|