import * as service from '../AffairPage/publicApiService'; import moment from 'moment'; import { isJSON } from '@/baseComponent/utils'; import { getDefaultValues } from '../AffairPage/destruction'; import { message } from 'antd'; const text = [ 'BINARY', 'BIT', 'BLOB', 'CHAR', 'GEOMETRY', 'GEOMETRYCOLLECTION', 'JSON', 'LINESTRING', 'LONGBLOB', 'LONGTEXT', 'MEDIUMBLOB', 'MEDIUMINT', 'MEDIUMTEXT', 'MULTILINESTRING', 'MULTIPOINT', 'MULTIPOLYGON', 'POINT', 'POLYGON', 'REAL', 'DECIMAL', 'ENUM', 'SET', 'TEXT', 'TINYBLOB', 'TIBYTEXT', 'VARBINARY', 'VARCHAR', ]; const number = ['BIGINT', 'DOUBLE', 'FLOAT', 'INT', 'INTEGER', 'NUMERIC', 'SMALLINT', 'TINYINT']; const date = ['DATE', 'DATETIME', 'TIME', 'TIMESTAMP', 'YEAR']; const taskNode = ['TASKNODE']; const format = { //欢哥那边定义好的 时间格式类型 DATE: 'YYYY-MM-DD HH:mm', DATETIME: 'YYYY-MM-DD HH:mm:ss', TIME: 'HH:mm:ss', TIMESTAMP: 'HH:mm:ss', YEAR: 'YYYY', }; /** * 将时间格式转化为unix时间戳 * */ const transLateTimeTOUnix = (value, dataType) => { if (date.indexOf(dataType) > -1 && value) { return moment(value).format('x'); } else { return value; } }; const getFormArrayConfig = header => { let config = []; for (let item of header) { if (item.isPrimaryKey || item.isHidden) { // 主键 continue; /* config.push( { key: item.name, name: item.title, type: 'input', placeHolder: `请输入${item.name}`, required: !item.isNull, } );*/ } else if (text.indexOf(item.type) > -1) { config.push({ key: item.name, name: item.title, type: 'input', placeHolder: `请输入${item.name}`, required: !item.isNull, }); } else if (number.indexOf(item.type) > -1) { config.push({ key: item.name, name: item.title, type: 'inputNumber', placeHolder: `请输入${item.name}`, required: !item.isNull, min: 0, }); } else if (date.indexOf(item.type) > -1) { config.push({ key: item.name, name: item.title, type: 'datePicker', placeHolder: `请输入${item.name}`, required: !item.isNull, format: format[item.type], }); } else { config.push({ key: item.name, name: item.title, type: 'input', placeHolder: `请输入${item.name}`, required: !item.isNull, }); } } return config; }; const transLate = { TextArea: 'textarea', Radio: 'radioGroup', Label: 'text', Checkbox: 'checkBoxMutiple', Select: 'select', Switch: 'switch', DatePicker: 'datePicker', RangePicker: 'rangePicker', UploadCom: 'buttonUpload', ImgUploadCom: 'upload', Input: 'input', TableSelect: 'tableSelect', // 表格选择 ChildForm: 'childForm', // 最终保存的数据还有问题 InputNumber: 'inputNumber', PartForm: 'partForm', // 还未开发 相当于选了一个选项 表单字段变更 Echart: 'echart', // 不做 Description: 'input', // 'description', // 还未开发 Table: 'table', // 表格 未开发 }; const getOpts = async item => { let options = []; if (item.optionType === 'reference') { options = await service.getOptions( item.dataId, item.filterSql, item.referenceCodeName, item.referenceNameName ); } else if (item.optionType === 'sql') { options = await service.getSqlOptions(item.dataId, item.sqlKey, item.valueName, item.labelName); } else { options = item.options; } return options; }; const translateAddFields = async (data, tableInfo) => { let key = []; let res = []; for (let item of data) { if (key.indexOf(item.key) > -1) { continue; } else { key.push(item.key); } item.type = transLate[item.comName] || 'input'; if (typeof item.key === 'undefined' || !item.key) { item.key = item.c1; } switch (item.comName) { case 'Input': if (number.indexOf(item.dataType) > -1) { item.type = 'inputNumber'; } break; case 'DatePicker': item.format = item.format || format[item.dataType]; if (item.format.indexOf('HH') > -1) { item.showTime = true; } break; case 'RangePicker': item.name = item.name || '起止时间'; item.endKey = item.c2; item.format = item.format || format[item.dataType]; if (item.format.indexOf('HH') > -1) { item.showTime = true; } break; case 'ChildForm': item.componentProps.thisFields = await translateAddFields( item.componentProps.thisFields, tableInfo ); break; case 'Radio': item.options = await getOpts(item); break; case 'Select': item.options = await getOpts(item); break; case 'Checkbox': item.options = await getOpts(item); item.options = item.options.map(x => { return { label: x.name, value: x.key, }; }); break; case 'TableSelect': let info = await service.handleSqlfind(item.componentProps.sqlKey); if (isJSON(info.cols)) { info.cols = JSON.parse(info.cols); } item.componentProps.columnsData = info; item.componentProps.allValues = JSON.stringify(getDefaultValues(data, tableInfo)); break; default: break; } res.push(item); } return res; }; const mustHaveValue = (configFields, data) => { for (let item of configFields) { if (item.required && !data[item.key] && data[item.key] !== false && data[item.key] !== 0) { message.warning(`${item.name}是必填项请填写`); return false; } if (item.required && typeof data[item.key] === 'object') { if (data[item.key].selects && JSON.stringify(data[item.key].selects) === '{}') { message.warning(`${item.name}是必填项请填写`); return false; } } } return true; }; export { text, number, date, getFormArrayConfig, translateAddFields, transLateTimeTOUnix, format, mustHaveValue, taskNode, };