import React, { Component } from 'react'; import { Table } from 'antd'; import json5 from 'json5'; import PropTypes from 'prop-types'; import { schemaTransformToTable } from '../../../common/schema-transformTo-table.js'; import _ from 'underscore'; import './index.scss'; const messageMap = { desc: '备注', default: '实例', maximum: '最大值', minimum: '最小值', maxItems: '最大数量', minItems: '最小数量', maxLength: '最大长度', minLength: '最小长度', enum: '枚举', enumDesc: '枚举备注', uniqueItems: '元素是否都不同', itemType: 'item 类型', format: 'format', itemFormat: 'format', mock: 'mock' }; const columns = [ { title: '名称', dataIndex: 'name', key: 'name', width: 200 }, { title: '类型', dataIndex: 'type', key: 'type', width: 100, render: (text, item) => { // console.log('text',item.sub); return text === 'array' ? ( {item.sub ? item.sub.itemType || '' : 'array'} [] ) : ( {text} ); } }, { title: '是否必须', dataIndex: 'required', key: 'required', width: 80, render: text => { return
{text ? '必须' : '非必须'}
; } }, { title: '默认值', dataIndex: 'default', key: 'default', width: 80, render: text => { return
{_.isBoolean(text) ? text + '' : text}
; } }, { title: '备注', dataIndex: 'desc', key: 'desc', render: (text, item) => { return _.isUndefined(item.childrenDesc) ? ( {text} ) : ( {item.childrenDesc} ); } }, { title: '其他信息', dataIndex: 'sub', key: 'sub', width: 180, render: (text, record) => { let result = text || record; return Object.keys(result).map((item, index) => { let name = messageMap[item]; let value = result[item]; let isShow = !_.isUndefined(result[item]) && !_.isUndefined(name); return ( isShow && (

{name}: {value.toString()}

) ); }); } } ]; class SchemaTable extends Component { static propTypes = { dataSource: PropTypes.string }; constructor(props) { super(props); } render() { let product; try { product = json5.parse(this.props.dataSource); } catch (e) { product = null; } if (!product) { return null; } let data = schemaTransformToTable(product); data = _.isArray(data) ? data : []; return ; } } export default SchemaTable;