import { text, number, date, format, taskNode } from '../config/index'; import { isJSON } from '@/baseComponent/utils'; import { translateAddFields, getSearchCondition } from '../config/index'; import config from '@/config/config'; import { Tooltip, Modal } from 'antd'; import moment from 'moment'; import React from 'react'; import { findListTaskDefinition } from '@/webPublic/FormInsertDiy/AffairPage/publicApiService'; import QRCode from 'qrcode.react'; import styles from './styles.less'; import { getUrlInfo } from '@/webPublic/one_stop_public/DetailForAudit/utils'; import { queryFileUrl } from '@/webPublic/one_stop_public/utils/queryConfig'; const handleSqlModels = (sqlModels, defaultValues) => { if (typeof sqlModels === 'undefined' || !Array.isArray(sqlModels)) { return []; } else { let res = []; for (let x of sqlModels) { let key = x.key; if (!isJSON(x.cols)) { let info = x.dataObjModel.columnModels; for (let item in info) { let z = info[item]; let oneFields = { key: key + '_' + z.name, name: z.title, dataType: z.type, required: false, dataId: item, comName: date.indexOf(z.type) > -1 ? 'DatePicker' : 'Input', disabled: true, }; oneFields.defaultValue = defaultValues[oneFields.key] || ''; res.push(oneFields); } continue; } let info = JSON.parse(x.cols); // name, title, type for (let item in info) { let z = info[item]; let oneFields = { key: key + '_' + z.name, name: z.title, dataType: z.type, required: false, dataId: item, comName: date.indexOf(z.type) > -1 ? 'DatePicker' : 'Input', disabled: true, }; oneFields.defaultValue = defaultValues[oneFields.key] || ''; res.push(oneFields); } } return res; } }; const funcHandleFileds = (source, obj, fieldsColumns) => { let fileds = []; for (let item of source) { for (let info of item) { let oneFiled = {}; if (info.content) { let content = info.content; oneFiled = { comName: content.comName, name: content.label || '', }; if (content.comName === 'DatePicker') { if (content.format) { oneFiled.format = content.format; } } if (content.comName === 'PartForm') { const { childFormKey, columnIds } = content; if (childFormKey) { let thisSource = (obj[childFormKey] && obj[childFormKey].items) || []; let thisFields = funcHandleFileds(thisSource, obj, fieldsColumns); for (let i = 0; i < thisFields.length; i++) { if (typeof thisFields[i].c1 !== 'undefined') { thisFields[i] = { ...fieldsColumns[thisFields[i].c1], ...thisFields[i], }; } } oneFiled.componentProps = { columnIds, childFormKey, thisFields, }; } } if (content.comName === 'RangePicker') { if (content.format) { oneFiled.format = content.format; } } if (content.comName === 'Description') { oneFiled.key = content.sqls[1]; } if (['Radio', 'Select', 'Checkbox'].indexOf(content.comName) > -1) { // 枚举值 if (content.optionType) { oneFiled.optionType = content.optionType; switch (oneFiled.optionType) { case 'enum': if (content.enums) { let options = isJSON(content.enums) ? JSON.parse(content.enums) : []; options = options.map((x) => { return { key: x.value, name: x.label }; }); oneFiled.options = options; } break; case 'reference': oneFiled.filterSql = content.filterSql; break; case 'sql': oneFiled.sqlKey = content.sqlKey; oneFiled.labelName = content.labelName; oneFiled.valueName = content.valueName; break; default: oneFiled.options = []; break; } } } if (content.comName === 'ChildForm') { const { childFormKey, columnIds } = content; let thisSource = obj[childFormKey].items; let thisFields = funcHandleFileds(thisSource, obj, fieldsColumns); for (let i = 0; i < thisFields.length; i++) { if ( typeof thisFields[i].c1 !== 'undefined' && typeof fieldsColumns[thisFields[i].c1] !== 'undefined' ) { thisFields[i] = { ...fieldsColumns[thisFields[i].c1], ...thisFields[i], }; } } oneFiled.componentProps = { columnIds, childFormKey, thisFields, }; } if (content.comName === 'TableSelect') { oneFiled.componentProps = { sqlKey: content.sqlKey, labelName: content.labelName, valueName: content.valueName, isMultiple: content.isMultiple, }; } if (content.comName === 'Label') { // 提示信息显示 if (info.hidden) { continue; } oneFiled.key = content.initialValue ? content.initialValue.slice(0, 10) : ' '; oneFiled.name = ' '; oneFiled.defaultValue = content.initialValue; oneFiled.dataType = 'TEXT'; } for (let j in content.columnIds) { let oneFields = content.columnIds[j]; oneFiled[j] = oneFields[1]; } fileds.push(oneFiled); } } } return fileds; }; export async function destructionGetDetail(response, workId) { /** * 如果数据校验不通过直接pass 返回默认值, * */ if ( typeof response.unifiedServicePatternModel === 'undefined' || !isJSON(response.unifiedServicePatternModel.content) || !Array.isArray(response.unifiedServicePatternModel.dataObjModels) || !response.unifiedServicePatternModel.dataObjModels.length || typeof response.unifiedServicePatternModel.dataObjModels[0].columnModels === 'undefined' ) { return { addFields: [], tableInfo: {}, allConfigSetInfo: response, searchCondition: [], }; } const basicPatternModel = response.unifiedServicePatternModel; /** 正式开始 **/ /*** 字段name, dataType ***/ let fieldsColumns = {}; for (let dataObjModels of basicPatternModel.dataObjModels) { let columns = dataObjModels.columnModels; for (let item of columns) { fieldsColumns[item.base52] = { name: item.title, dataType: item.type, key: item.base52, dataId: item.id, referenceCodeName: item.referenceCodeName, referenceNameName: item.referenceNameName, required: Boolean(!item.isNull), }; } } /*** 字段组件类型 ***/ let data = JSON.parse(basicPatternModel.content); let key = data.init; let source = data.datas[key].items; let fileds = funcHandleFileds(source, data.datas, fieldsColumns); /*** 字段默认值 ***/ let sqlModeData = handleSqlModels(basicPatternModel.sqlModels, basicPatternModel.defaultValues); //Array let defaultBinds = data.datas[key].defaultBinds; let defaultKeys = {}; if (defaultBinds) { for (let item in defaultBinds) { let one = defaultBinds[item]; if (one && one.columnIds && one.sqls) { defaultKeys[one.sqls[1]] = one.columnIds[1]; } } } for (let item of sqlModeData) { if (defaultKeys[item.key]) { item.defaultKey = defaultKeys[item.key]; } } /*** 流程表数据 ***/ let tableInfo = { base52: basicPatternModel.dataObjModels[0].base52, name: basicPatternModel.dataObjModels[0].name, defaultValuesId: key, }; for (let i = 0; i < fileds.length; i++) { let item = fileds[i]; if (item.comName === 'Description') { if ( item.key && !item.defaultValue && basicPatternModel.defaultValues && basicPatternModel.defaultValues[item.key] ) { item.defaultValue = basicPatternModel.defaultValues[item.key]; } for (let x of sqlModeData) { if (x.key === item.key) { item.c1 = x.defaultKey; fileds[i] = { ...item, ...x, }; } } } } for (let i = 0; i < fileds.length; i++) { if (typeof fileds[i].c1 !== 'undefined') { if ( fileds[i].key && fieldsColumns[fileds[i].c1] && fieldsColumns[fileds[i].c1].key && fileds[i].key !== fieldsColumns[fileds[i].c1].key ) { fileds[i].onestopDefaultKey = fileds[i].key; } fileds[i] = { ...fileds[i], ...fieldsColumns[fileds[i].c1], }; } } const searchCondition = await getSearchCondition(basicPatternModel?.dataObjModels[0]?.id, workId); // ,response.id), if (response.isShowWaitTaskDef || response.isShowHandledTaskDef) { let optProcess = await findListTaskDefinition({ appId: response.id, }); if (optProcess) { searchCondition.push({ key: 'taskDefKey', name: '流程节点', type: 'select', options: optProcess.map((g) => { return { key: g.id, name: g.name, }; }), }); } } return { addFields: [], // await translateAddFields(fileds, tableInfo), tableInfo, allConfigSetInfo: response, searchCondition, // 姚鑫国改这里 }; } export function getDefaultValues(addFields = [], tableInfo = {}) { const values = { defaultValues: { [tableInfo.defaultValuesId]: {}, }, }; const defalutValues = {}; for (let item of addFields) { if (typeof item.defaultValue !== 'undefined') { values[item.key] = item.defaultValue; // values[item.onestopDefaultKey] = item.defaultValue;l;l } if (typeof item.defaultKey !== 'undefined' && item.defaultKey) { values[item.defaultKey] = item.defaultValue; // 表单渲染需要这个值 defalutValues[item.key] = item.defaultValue; defalutValues[item.onestopDefaultKey] = item.defaultValue; } } values.defaultValues[tableInfo.defaultValuesId] = defalutValues; //传给后台需要这个值 return values; } export function handleColumns(columns) { const columnsLength = columns.length; for (let item of columns) { if (item.dataIndex.indexOf('process_status') > -1) { item.render = (val) => (val ? (val === '0' ? '审核通过' : '审核未通过') : null); } if (item.dataType) { if (text.indexOf(item.dataType) > -1) { // 文本类型字段 item.render = (text) => { if (isJSON(text)) { text = JSON.parse(text); } if (item.extendType === 'qrCode') { if (text && typeof text === 'string' && text) { let url = text.replace('{window.location.origin}', config.gateWayPort); const clickUrl = () => { Modal.info({ title: item.title, content: <div className={styles.erweimaModal}> <QRCode bgColor="#FFFFFF" fgColor="#000000" level="Q" size={200} style={{ display: 'block', margin: 'auto', }} value={url} /></div>, }); }; return (<a onClick={clickUrl}>查看</a>); } else { return <span>暂无</span>; } } if (item.extendType === 'file' && typeof text === 'string') { let url = queryFileUrl(text); return ( <a href={url} target={'_blank'}> 点击查看 </a> ); } else if (typeof text === 'string' && text.length > 25) { // 25621 双选会--单位申请审核,,加一个申请展位字段 // 把20 变成了 25 如果不好解决 就通过width做判断依据 const oldTitle = text; const newTitle = text.slice(0, 25) + '...'; return ( <Tooltip title={oldTitle} key={oldTitle} style={{ width: 260 }}> <span key={text}>{newTitle}</span> </Tooltip> ); } else if ( item.extendType === 'file' && text && typeof text === 'object' && Array.isArray(text.files) && text.files.length ) { return text.files.map((file, index) => { if(typeof file.path !== 'string' ){ return null; } let url = queryFileUrl(file.path); return ( <a href={url} target={'_blank'} key={file.name} style={{ marginRight: '10px' }}> {file.name} </a> ); }); } else { return text; } }; } else if (date.indexOf(item.dataType) > -1) { // 日期类型字段 item.render = (text, record) => { if (!isNaN(Number(text)) && Number(text) > 10000000) { text = Number(text); if (item.dataFormatStrWeb) { return moment(text) .format(item.dataFormatStrWeb); } return moment(text) .format(format[item.dataType]); } else if (typeof text === 'string' && text.length > 5) { return moment(text) .format(item.dataFormatStrWeb || 'YYYY-MM-DD'); } else { return ''; } }; } else if (taskNode.indexOf(item.dataType) > -1) { // 流程节点类型 item.render = (text, record) => { if (record.isEnd) { return '已完成'; } else { return text || record.taskName; } }; } } if (item.dataIndex === 'rate') { item.render = (text, record) => { if (text || text == 0) { return Number(text) + '%'; } else { return ''; } }; } } return columns; }