提交 e97216ea authored 作者: 徐立's avatar 徐立

调整与场景设计器兼容

上级 6d9408bf
...@@ -3,498 +3,530 @@ ...@@ -3,498 +3,530 @@
* 2019年9月25日 * 2019年9月25日
* 自定义表单表格 * 自定义表单表格
*/ */
import React, { Component } from 'react' import React, { Component } from 'react';
import { Form } from 'antd'; import { Form } from 'antd';
import { Row, Col, Input, message } from 'antd' import { Row, Col, Input, message } from 'antd';
import TableCom from '../tableCompon' import TableCom from '../tableCompon';
import { Toast } from 'antd-mobile' import { Toast } from 'antd-mobile';
import router from 'umi/router' import router from 'umi/router';
import IsNewTable from './isNewMobileTable'; import IsNewTable from './isNewMobileTable';
import NewWebTable from './isNewWebTable'; import NewWebTable from './isNewWebTable';
import maintain from '../assets/maintain.png' import maintain from '../assets/maintain.png';
import moment from 'moment' import moment from 'moment';
export default class ZdyTable extends Component { export default class ZdyTable extends Component {
constructor(props) { constructor(props) {
super(props) super(props);
this.state = { this.state = {
selects: new Map(),
selects: new Map(), left: 0,
left: 0, top: 0,
top: 0, max: 4,
max: 4, formId: null,
formId: null, formCode: null,
formCode: null, width: 100,
width: 100, mapData: {},
mapData: {}, defaultBinds: {},
defaultBinds: {}, sqlData: {},
sqlData: {}, defaultValues: {},
defaultValues: {}, currentFormKey: null,
currentFormKey: null, items: [],
items: [], init: this.props.init || {},
init: this.props.init || {}, datas: {},
datas: {}, isEdit: true,
isEdit: true, isReady: false,
isReady: false, formConfig: {},
formConfig: {}, };
}
}
componentDidMount() {
let {
postData, // 数据源
isCg, // 用户点击草稿页面进入
isForm,
isPreview, // 是否为预览模式
isChild, // 是否为子表单
isQRCode = false, // 是否为二维码快捷发起
formDeafault = '', // 为二维码快捷发起默认值
} = this.props;
if (isPreview || isChild) {
this.setState({ ...this.state, ...this.props, isReady: true });
return;
} }
componentDidMount() {
let {
postData, // 数据源
isCg, // 用户点击草稿页面进入
isForm,
isPreview, // 是否为预览模式
isChild, // 是否为子表单
isQRCode = false, // 是否为二维码快捷发起
formDeafault = '', // 为二维码快捷发起默认值
} = this.props
if (isPreview || isChild) {
this.setState({ ...this.state, ...this.props, isReady: true }) let val = postData;
return try {
/**
* 数据源不同进行以下区别处理
* this.props.table有传入值表明需要渲染流程中最新表单
*/
if (isForm) {
// 由表格的操作按钮进入
const mapData = {};
const sqlData = {};
const dataObjs = val.form.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
for (var j = 0; j < dob.columnModels.length; j++) {
mapData[dob.columnModels[j].base52] = dob.columnModels[j];
}
} }
const sqls = val.form.sqlModels;
let val = postData for (var i = 0; i < sqls.length; i++) {
try { const dob = sqls[i].dataObjModel;
/** for (var j = 0; j < dob.columnModels.length; j++) {
* 数据源不同进行以下区别处理 sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
* this.props.table有传入值表明需要渲染流程中最新表单 }
*/
if (isForm) { // 由表格的操作按钮进入
const mapData = {};
const sqlData = {}
const dataObjs = val.form.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
for (var j = 0; j < dob.columnModels.length; j++) {
mapData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const sqls = val.form.sqlModels
for (var i = 0; i < sqls.length; i++) {
const dob = sqls[i].dataObjModel;
for (var j = 0; j < dob.columnModels.length; j++) {
sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const obj = JSON.parse(val.form.content);
const xxx = obj.datas[obj.init];
this.setState({
datas: obj.datas,
width: this.props.table ? obj.datas[val.formKey].width : xxx.width,
isBorder: this.props.table ? obj.datas[val.formKey].isBorder : xxx.isBorder,
mapData,
currentFormKey: this.props.table ? val.formKey : obj.init,
sqlData,
isEdit: this.props.formKey ? false : true,
items: this.props.table ? obj.datas[val.formKey].items : xxx.items,
defaultValues: val.form.defaultValues,
appId: val.appId,
isReady: true,
formConfig: xxx
});
return
}
if (isCg === 'yes') {// 用户从编辑按钮进入
if (val.unifiedServicePatternModel.isDefaultError != null && val.unifiedServicePatternModel.isDefaultError) {
if (this.props.get == "web") {
message.error("当前办理人数较多,服务繁忙,请稍后再试!")
} else {
Toast.fail("当前办理人数较多,服务繁忙,请稍后再试!")
}
router.goBack()
return;
}
const mapData = {};
const sqlData = {};
const sqls = val.unifiedServicePatternModel.sqlModels
for (var i = 0; i < sqls.length; i++) {
const dob = sqls[i].dataObjModel;
for (var j = 0; j < dob.columnModels.length; j++) {
sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const dataObjs = val.unifiedServicePatternModel.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
for (var j = 0; j < dob.columnModels.length; j++) {
mapData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const obj = JSON.parse(val.unifiedServicePatternModel.content);
const xxx = obj.datas[obj.init];
this.setState({
items: xxx.items,
init: { ...this.state.init, ...JSON.parse(val.content) },
datas: obj.datas,
isEdit: this.props.formKey ? false : true,
currentFormKey: obj.init,
width: xxx.width,
isBorder: xxx.isBorder,
mapData, sqlData,
defaultValues: val.unifiedServicePatternModel.defaultValues,
appId: val.appId,
isReady: true,
formConfig: xxx,
defaultBinds: this.props.table ? obj.datas[val.taskFormKey].defaultBinds : xxx.defaultBinds,
});
return
}
if (val.unifiedServicePatternModel.isDefaultError != null && val.unifiedServicePatternModel.isDefaultError) {
if (this.props.get == "web") {
message.error("当前办理人数较多,服务繁忙,请稍后再试!")
} else {
Toast.fail("当前办理人数较多,服务繁忙,请稍后再试!")
}
router.goBack()
return;
}
const mapData = {};
const sqlData = {};
const sqls = val.unifiedServicePatternModel.sqlModels
for (var i = 0; i < sqls.length; i++) {
const dob = sqls[i].dataObjModel;
for (var j = 0; j < dob.columnModels.length; j++) {
sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const dataObjs = val.unifiedServicePatternModel.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
for (var j = 0; j < dob.columnModels.length; j++) {
mapData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const obj = JSON.parse(val.unifiedServicePatternModel.content);
const xxx = obj.datas[this.props.formKey ? this.props.formKey : obj.init]; // 是否是存在历史表单传入值
this.setState({
appId: val.id,
formId: val.id,
formCode: val.code,
datas: obj.datas,
mapData, sqlData,
defaultValues: val.unifiedServicePatternModel.defaultValues,
isEdit: this.props.formKey ? false : true,
currentFormKey: this.props.formKey ? this.props.formKey : val.taskFormKey ? val.taskFormKey : obj.init,
defaultBinds: this.props.table ? obj.datas[val.taskFormKey].defaultBinds : xxx.defaultBinds,
width: this.props.table ? obj.datas[val.taskFormKey].width : xxx.width,
isBorder: this.props.table ? obj.datas[val.taskFormKey].isBorder : xxx.isBorder,
items: this.props.table ? obj.datas[val.taskFormKey].items : xxx.items,
isReady: true,
init: { ...this.state.init, ...val.isSecond ? this.props.obj : {} },
formConfig: xxx
// init:this.props.get==="mobile"?!!val.content?JSON.parse(val.content):'':{},// 移动端默认值设置
}, () => {
/**
* 为二维码快捷发起时自动设置新默认值
*/
if (isQRCode) {
this.props.form.setFieldsValue(formDeafault)
}
});
} catch (e) {
console.log(`公式配置有误`, e)
} }
} const obj = JSON.parse(val.form.content);
componentWillReceiveProps(nextProps) { const xxx = obj.datas[obj.init];
let { this.setState({
postData,// 数据源 datas: obj.datas,
isCg, // 用户点击草稿页面进入 width: this.props.table ? obj.datas[val.formKey].width : xxx.width,
isForm, isBorder: this.props.table ? obj.datas[val.formKey].isBorder : xxx.isBorder,
isPreview, // 是否为预览模式 mapData,
isChild,// 是否为子表单 currentFormKey: this.props.table ? val.formKey : obj.init,
} = nextProps sqlData,
if (isPreview || isChild) { isEdit: this.props.formKey ? false : true,
items: this.props.table ? obj.datas[val.formKey].items : xxx.items,
this.setState({ ...this.state, ...this.props, isReady: true }) defaultValues: val.form.defaultValues,
return appId: val.appId,
isReady: true,
formConfig: xxx,
});
return;
}
if (isCg === 'yes') {
// 用户从编辑按钮进入
if (
val.unifiedServicePatternModel.isDefaultError != null &&
val.unifiedServicePatternModel.isDefaultError
) {
if (this.props.get == 'web') {
message.error('当前办理人数较多,服务繁忙,请稍后再试!');
} else {
Toast.fail('当前办理人数较多,服务繁忙,请稍后再试!');
}
router.goBack();
return;
} }
const mapData = {};
const sqlData = {};
const sqls = val.unifiedServicePatternModel.sqlModels;
for (var i = 0; i < sqls.length; i++) {
const dob = sqls[i].dataObjModel;
for (var j = 0; j < dob.columnModels.length; j++) {
sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const dataObjs = val.unifiedServicePatternModel.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
try { for (var j = 0; j < dob.columnModels.length; j++) {
let val = postData mapData[dob.columnModels[j].base52] = dob.columnModels[j];
/** }
* 数据源不同进行以下区别处理 }
* this.props.table有传入值表明需要渲染流程中最新表单 const obj = JSON.parse(val.unifiedServicePatternModel.content);
*/ const xxx = obj.datas[obj.init];
if (isForm) { // 由表格的操作按钮进入 this.setState({
const mapData = {}; items: xxx.items,
const sqlData = {} init: { ...this.state.init, ...JSON.parse(val.content) },
const dataObjs = val.form.dataObjModels; datas: obj.datas,
for (var i = 0; i < dataObjs.length; i++) { isEdit: this.props.formKey ? false : true,
const dob = dataObjs[i]; currentFormKey: obj.init,
for (var j = 0; j < dob.columnModels.length; j++) { width: xxx.width,
mapData[dob.columnModels[j].base52] = dob.columnModels[j]; isBorder: xxx.isBorder,
} mapData,
} sqlData,
const sqls = val.form.sqlModels defaultValues: val.unifiedServicePatternModel.defaultValues,
for (var i = 0; i < sqls.length; i++) { appId: val.appId,
const dob = sqls[i].dataObjModel; isReady: true,
for (var j = 0; j < dob.columnModels.length; j++) { formConfig: xxx,
sqlData[dob.columnModels[j].base52] = dob.columnModels[j]; defaultBinds: this.props.table
} ? obj.datas[val.taskFormKey].defaultBinds
} : xxx.defaultBinds,
const obj = JSON.parse(val.form.content); });
const xxx = obj.datas[obj.init]; return;
this.setState({ }
datas: obj.datas, if (
width: this.props.table ? obj.datas[val.formKey].width : xxx.width, val.unifiedServicePatternModel.isDefaultError != null &&
isBorder: this.props.table ? obj.datas[val.formKey].isBorder : xxx.isBorder, val.unifiedServicePatternModel.isDefaultError
mapData, ) {
currentFormKey: this.props.table ? val.formKey : obj.init, if (this.props.get == 'web') {
sqlData, message.error('当前办理人数较多,服务繁忙,请稍后再试!');
isEdit: this.props.formKey ? false : true, } else {
items: this.props.table ? obj.datas[val.formKey].items : xxx.items, Toast.fail('当前办理人数较多,服务繁忙,请稍后再试!');
defaultValues: val.form.defaultValues,
appId: val.appId,
isReady: true,
formConfig: xxx
});
return
}
if (isCg === 'yes') {// 用户从编辑按钮进入
const mapData = {};
const sqlData = {};
const sqls = val.unifiedServicePatternModel.sqlModels
for (var i = 0; i < sqls.length; i++) {
const dob = sqls[i].dataObjModel;
for (var j = 0; j < dob.columnModels.length; j++) {
sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const dataObjs = val.unifiedServicePatternModel.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
for (var j = 0; j < dob.columnModels.length; j++) {
mapData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const obj = JSON.parse(val.unifiedServicePatternModel.content);
const xxx = obj.datas[obj.init];
this.setState({
items: xxx.items,
init: { ...this.state.init, ...JSON.parse(val.content) },
datas: obj.datas,
isEdit: this.props.formKey ? false : true,
currentFormKey: obj.init,
width: xxx.width,
isBorder: xxx.isBorder,
mapData, sqlData, defaultValues: val.unifiedServicePatternModel.defaultValues,
appId: val.appId,
isReady: true,
formConfig: xxx,
defaultBinds: this.props.table ? obj.datas[val.taskFormKey].defaultBinds : xxx.defaultBinds,
});
return
}
const mapData = {};
const sqlData = {};
const sqls = val.unifiedServicePatternModel.sqlModels
for (var i = 0; i < sqls.length; i++) {
const dob = sqls[i].dataObjModel;
for (var j = 0; j < dob.columnModels.length; j++) {
sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const dataObjs = val.unifiedServicePatternModel.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
for (var j = 0; j < dob.columnModels.length; j++) {
mapData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const obj = JSON.parse(val.unifiedServicePatternModel.content);
const xxx = obj.datas[this.props.formKey ? this.props.formKey : obj.init]; // 是否是存在历史表单传入值
this.setState({
appId: val.id,
datas: obj.datas,
mapData, sqlData, defaultValues: val.unifiedServicePatternModel.defaultValues,
isEdit: this.props.formKey ? false : true,
currentFormKey: this.props.formKey ? this.props.formKey : val.taskFormKey ? val.taskFormKey : obj.init,
defaultBinds: this.props.table ? obj.datas[val.taskFormKey].defaultBinds : xxx.defaultBinds,
width: this.props.table ? obj.datas[val.taskFormKey].width : xxx.width,
isBorder: this.props.table ? obj.datas[val.taskFormKey].isBorder : xxx.isBorder,
items: this.props.table ? obj.datas[val.taskFormKey].items : xxx.items,
isReady: true,
init: { ...this.state.init, ...val.isSecond ? this.props.obj : {} },
formConfig: xxx
// init:this.props.get==="mobile"?!!val.content?JSON.parse(val.content):'':{},// 移动端默认值设置
});
} catch (e) {
console.log(`公式配置有误`, e)
} }
}
checkAllHidden = (row) => {
for (var i = 0; i < row.length; i++) { router.goBack();
if (row[i].hidden == null || !row[i].hidden) { return;
return false; }
} const mapData = {};
const sqlData = {};
const sqls = val.unifiedServicePatternModel.sqlModels;
for (var i = 0; i < sqls.length; i++) {
const dob = sqls[i].dataObjModel;
for (var j = 0; j < dob.columnModels.length; j++) {
sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
} }
for (var i = 0; i < row.length; i++) { }
delete row[i].hidden const dataObjs = val.unifiedServicePatternModel.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
for (var j = 0; j < dob.columnModels.length; j++) {
mapData[dob.columnModels[j].base52] = dob.columnModels[j];
} }
return true }
const obj = JSON.parse(val.unifiedServicePatternModel.content);
const xxx = obj.datas[this.props.formKey ? this.props.formKey : obj.init]; // 是否是存在历史表单传入值
this.setState(
{
appId: val.id,
formId: val.id,
formCode: val.code,
datas: obj.datas,
mapData,
sqlData,
defaultValues: val.unifiedServicePatternModel.defaultValues,
isEdit: this.props.formKey ? false : true,
currentFormKey: this.props.formKey
? this.props.formKey
: val.taskFormKey
? val.taskFormKey
: obj.init,
defaultBinds: this.props.table
? obj.datas[val.taskFormKey].defaultBinds
: xxx.defaultBinds,
width: this.props.table ? obj.datas[val.taskFormKey].width : xxx.width,
isBorder: this.props.table ? obj.datas[val.taskFormKey].isBorder : xxx.isBorder,
items: this.props.table ? obj.datas[val.taskFormKey].items : xxx.items,
isReady: true,
init: { ...this.state.init, ...(val.isSecond ? this.props.obj : {}) },
formConfig: xxx,
// init:this.props.get==="mobile"?!!val.content?JSON.parse(val.content):'':{},// 移动端默认值设置
},
() => {
/**
* 为二维码快捷发起时自动设置新默认值
*/
if (isQRCode) {
this.props.form.setFieldsValue(formDeafault);
}
},
);
} catch (e) {
console.log(`公式配置有误`, e);
} }
countMax = (items) => { }
var max = 0 componentWillReceiveProps(nextProps) {
items.forEach((r) => { let {
if (r.length > max) { postData, // 数据源
max = r.length isCg, // 用户点击草稿页面进入
} isForm,
}) isPreview, // 是否为预览模式
return max isChild, // 是否为子表单
} = nextProps;
if (isPreview || isChild) {
this.setState({ ...this.state, ...this.props, isReady: true });
return;
} }
render() {
let {
width,
isBorder,
sqlData,
mapData,
defaultBinds,
defaultValues,
items,
init,
modalTitle,
currentFormKey,
isEdit,
datas,
isReady,
formConfig,
formCode,
formId
} = this.state
let {
border,
get,
obj,
index,
fatherCode,
routerState, // 场景设计器共享路由参数
messageData, // 场景设计器共享变量参数 设计器监听到参数发生变化后会重新渲染组件
postData,
modalInit,
} = this.props
let style = {}
if (formConfig.style != null) {
try {
style = JSON.parse(formConfig.style)
} catch (e) {
console.log(e)
style = {}
}
try {
let val = postData;
/**
* 数据源不同进行以下区别处理
* this.props.table有传入值表明需要渲染流程中最新表单
*/
if (isForm) {
// 由表格的操作按钮进入
const mapData = {};
const sqlData = {};
const dataObjs = val.form.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
for (var j = 0; j < dob.columnModels.length; j++) {
mapData[dob.columnModels[j].base52] = dob.columnModels[j];
}
} }
const formItemLayout = { const sqls = val.form.sqlModels;
labelCol: { for (var i = 0; i < sqls.length; i++) {
xs: { span: 24 }, const dob = sqls[i].dataObjModel;
sm: { span: 5 }, for (var j = 0; j < dob.columnModels.length; j++) {
}, sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
wrapperCol: { }
xs: { span: 24 },
sm: { span: 16 },
},
};
const max = this.countMax(items)
const borderStyle = {
borderRight: "1px solid gray",
borderTop: "1px solid gray",
borderLeft: "1px solid gray",
borderBottom: "1px solid gray"
}
const borderStyleTwo = { // 处理隐藏组件边框样式问题
borderRight: "1px solid gray",
borderLeft: "1px solid gray",
borderTop: "1px solid gray",
} }
let updateTime const obj = JSON.parse(val.form.content);
const styleDiv = this.props.height ? const xxx = obj.datas[obj.init];
{ this.setState({
overflow: "auto", datas: obj.datas,
width: "100%", width: this.props.table ? obj.datas[val.formKey].width : xxx.width,
height: this.props.height, isBorder: this.props.table ? obj.datas[val.formKey].isBorder : xxx.isBorder,
paddingBottom:'10px' mapData,
currentFormKey: this.props.table ? val.formKey : obj.init,
} sqlData,
: { isEdit: this.props.formKey ? false : true,
overflow: "auto", items: this.props.table ? obj.datas[val.formKey].items : xxx.items,
width: "100%", defaultValues: val.form.defaultValues,
paddingBottom:'10px' appId: val.appId,
} isReady: true,
if (!isReady) return <></> formConfig: xxx,
if (this.props.postData?.isUpdate) { });
updateTime = moment(+this.props.postData?.updateTime).format('llll') return;
}
if (isCg === 'yes') {
// 用户从编辑按钮进入
const mapData = {};
const sqlData = {};
const sqls = val.unifiedServicePatternModel.sqlModels;
for (var i = 0; i < sqls.length; i++) {
const dob = sqls[i].dataObjModel;
for (var j = 0; j < dob.columnModels.length; j++) {
sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
}
} }
switch (get) { const dataObjs = val.unifiedServicePatternModel.dataObjModels;
case 'web': for (var i = 0; i < dataObjs.length; i++) {
return (<> const dob = dataObjs[i];
{this.props.postData?.isUpdate ?
<div style={{ margin: '100px 24px 24px' }}>
<div style={{ textAlign: 'center' }}>
<img style={{ marginRight: 30 }} src={maintain}></img>
</div>
<p style={{
textAlign: "center",
width: '100%',
fontSize: '16px',
fontWeight: 'bold',
color: '#666666',
}}
>
{updateTime !== 'Invalid date' ?
`升级维护中,预计${updateTime ?? '一万年'}恢复使用,请耐心等待。` :
'请耐心等待'}
</p>
</div>
:<div
id='web_table'
>
<Form
className="login-form" >
{isEdit && defaultBinds ? Object.keys(defaultBinds).map((k) => {
const r = defaultBinds[k]
if (r.columnIds == null || r.columnIds.length < 2 || r.sqls == null || r.sqls.length < 2) {
return ""
}
const name = r.columnIds[r.columnIds.length - 1]
const key = r.sqls[r.sqls.length - 1]
const value = defaultValues[key]
if (value == null) {
return ""
}
return this.props.form.getFieldDecorator(name, {
initialValue: value
})(<Input type="hidden" />); for (var j = 0; j < dob.columnModels.length; j++) {
mapData[dob.columnModels[j].base52] = dob.columnModels[j];
}) : ""} }
}
const obj = JSON.parse(val.unifiedServicePatternModel.content);
const xxx = obj.datas[obj.init];
this.setState({
items: xxx.items,
init: { ...this.state.init, ...JSON.parse(val.content) },
datas: obj.datas,
isEdit: this.props.formKey ? false : true,
currentFormKey: obj.init,
width: xxx.width,
isBorder: xxx.isBorder,
mapData,
sqlData,
defaultValues: val.unifiedServicePatternModel.defaultValues,
appId: val.appId,
isReady: true,
formConfig: xxx,
defaultBinds: this.props.table
? obj.datas[val.taskFormKey].defaultBinds
: xxx.defaultBinds,
});
return;
}
const mapData = {};
const sqlData = {};
const sqls = val.unifiedServicePatternModel.sqlModels;
for (var i = 0; i < sqls.length; i++) {
const dob = sqls[i].dataObjModel;
for (var j = 0; j < dob.columnModels.length; j++) {
sqlData[dob.columnModels[j].base52] = dob.columnModels[j];
}
}
const dataObjs = val.unifiedServicePatternModel.dataObjModels;
for (var i = 0; i < dataObjs.length; i++) {
const dob = dataObjs[i];
<Row> for (var j = 0; j < dob.columnModels.length; j++) {
<Col span={24}> mapData[dob.columnModels[j].base52] = dob.columnModels[j];
<div }
style={styleDiv} }
ref={ref => { this.root = ref }} const obj = JSON.parse(val.unifiedServicePatternModel.content);
> const xxx = obj.datas[this.props.formKey ? this.props.formKey : obj.init]; // 是否是存在历史表单传入值
{/* <NewWebTable this.setState({
appId: val.id,
datas: obj.datas,
mapData,
sqlData,
defaultValues: val.unifiedServicePatternModel.defaultValues,
isEdit: this.props.formKey ? false : true,
currentFormKey: this.props.formKey
? this.props.formKey
: val.taskFormKey
? val.taskFormKey
: obj.init,
defaultBinds: this.props.table ? obj.datas[val.taskFormKey].defaultBinds : xxx.defaultBinds,
width: this.props.table ? obj.datas[val.taskFormKey].width : xxx.width,
isBorder: this.props.table ? obj.datas[val.taskFormKey].isBorder : xxx.isBorder,
items: this.props.table ? obj.datas[val.taskFormKey].items : xxx.items,
isReady: true,
init: { ...this.state.init, ...(val.isSecond ? this.props.obj : {}) },
formConfig: xxx,
// init:this.props.get==="mobile"?!!val.content?JSON.parse(val.content):'':{},// 移动端默认值设置
});
} catch (e) {
console.log(`公式配置有误`, e);
}
}
checkAllHidden = row => {
for (var i = 0; i < row.length; i++) {
if (row[i].hidden == null || !row[i].hidden) {
return false;
}
}
for (var i = 0; i < row.length; i++) {
delete row[i].hidden;
}
return true;
};
countMax = items => {
var max = 0;
items.forEach(r => {
if (r.length > max) {
max = r.length;
}
});
return max;
};
render() {
let {
width,
isBorder,
sqlData,
mapData,
defaultBinds,
defaultValues,
items,
init,
modalTitle,
currentFormKey,
isEdit,
datas,
isReady,
formConfig,
formCode,
formId,
} = this.state;
let {
border,
get,
obj,
index,
fatherCode,
routerState, // 场景设计器共享路由参数
messageData, // 场景设计器共享变量参数 设计器监听到参数发生变化后会重新渲染组件
postData,
modalInit,
concealModel, // 场景设计器内置跳转函数
} = this.props;
let style = {};
if (formConfig.style != null) {
try {
style = JSON.parse(formConfig.style);
} catch (e) {
console.log(e);
style = {};
}
}
const formItemLayout = {
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
};
const max = this.countMax(items);
const borderStyle = {
borderRight: '1px solid gray',
borderTop: '1px solid gray',
borderLeft: '1px solid gray',
borderBottom: '1px solid gray',
};
const borderStyleTwo = {
// 处理隐藏组件边框样式问题
borderRight: '1px solid gray',
borderLeft: '1px solid gray',
borderTop: '1px solid gray',
};
let updateTime;
const styleDiv = this.props.height
? {
overflow: 'auto',
width: '100%',
height: this.props.height,
paddingBottom: '10px',
}
: {
overflow: 'auto',
width: '100%',
paddingBottom: '10px',
};
if (!isReady) return <></>;
if (this.props.postData?.isUpdate) {
updateTime = moment(+this.props.postData?.updateTime).format('llll');
}
switch (get) {
case 'web':
return (
<>
{this.props.postData?.isUpdate ? (
<div style={{ margin: '100px 24px 24px' }}>
<div style={{ textAlign: 'center' }}>
<img style={{ marginRight: 30 }} src={maintain}></img>
</div>
<p
style={{
textAlign: 'center',
width: '100%',
fontSize: '16px',
fontWeight: 'bold',
color: '#666666',
}}
>
{updateTime !== 'Invalid date'
? `升级维护中,预计${updateTime ?? '一万年'}恢复使用,请耐心等待。`
: '请耐心等待'}
</p>
</div>
) : (
<div id="web_table">
<Form className="login-form">
{isEdit && defaultBinds
? Object.keys(defaultBinds).map(k => {
const r = defaultBinds[k];
if (
r.columnIds == null ||
r.columnIds.length < 2 ||
r.sqls == null ||
r.sqls.length < 2
) {
return '';
}
const name = r.columnIds[r.columnIds.length - 1];
const key = r.sqls[r.sqls.length - 1];
const value = defaultValues[key];
if (value == null) {
return '';
}
return this.props.form.getFieldDecorator(name, {
initialValue: value,
})(<Input type="hidden" />);
})
: ''}
<Row>
<Col span={24}>
<div
style={styleDiv}
ref={ref => {
this.root = ref;
}}
>
{/* <NewWebTable
items={items} items={items}
checkAllHidden={this.checkAllHidden} checkAllHidden={this.checkAllHidden}
border={border} border={border}
...@@ -521,169 +553,190 @@ export default class ZdyTable extends Component { ...@@ -521,169 +553,190 @@ export default class ZdyTable extends Component {
fatherObj={this.props.fatherObj} fatherObj={this.props.fatherObj}
max={max} max={max}
/> */} /> */}
<table <table
style={{
overflow: 'auto',
margin: max * width > 550 ? 'auto' : '',
...style,
}}
border={border}
cellSpacing="0"
cellPadding="0"
>
<tbody>
{items.map((row, i) => {
const allhidden = this.checkAllHidden(row);
return (
<tr key={i}>
{row.map((cell, j) => {
if (!cell.content) {
return;
}
let styles = {};
if (cell.content && cell.content.styles) {
try {
styles = JSON.parse(cell.content.styles);
} catch (e) {
console.log(`第${i}行第${j}列样式配置有误,${e}`);
}
}
return !allhidden && cell.hidden ? (
''
) : (
<td
width={
i == 0
? (cell.content != null && cell.content.cwidth != null
? cell.content.cwidth
: width) * (cell.col ? cell.col : 1)
: width * (cell.col ? cell.col : 1)
}
rowSpan={cell.row}
colSpan={cell.col}
key={j}
style={{ style={{
overflow: "auto", overflow: 'auto',
margin: max * width > 550 ? "auto" : '', textAlign:
...style cell.content && cell.content.calign
? cell.content.calign
: 'left',
...(isBorder
? cell?.content?.comName == 'InputHidden' ||
!cell?.content?.comName
? {}
: borderStyle
: {}),
// position: cell.content&&cell.content.comName ==="InputHidden"&&'absolute',
...styles,
display:
cell.content &&
cell.content.comName === 'InputHidden' &&
'none',
}} }}
border={border} >
cellSpacing="0" <TableCom
cellPadding="0" > formCode={formCode} // 当前表单code
<tbody> modalInit={modalInit}
{items.map((row, i) => { formId={formId} // 当前表单Id
const allhidden = this.checkAllHidden(row) i={i} // 当前组件下标
return <tr key={i}> j={j} // 当前行数下班
fatherCode={fatherCode}
{row.map((cell, j) => { index={index}
if(!cell.content){ fatherObj={this.props.fatherObj}
return datas={datas}
} uuid={cell.uuid}
let styles = {} isEdit={isEdit}
if (cell.content && cell.content.styles) { formKey={currentFormKey}
try { init={init}
styles = JSON.parse(cell.content.styles) get={get} // 区分移动端或wen端
} catch (e) { json={cell.content}
console.log(`第${i}行第${j}列样式配置有误,${e}`) obj={obj || {}} // 是否存在默认值
} mapData={mapData}
} form={this.props.form} // antd form控件
return !allhidden && cell.hidden ? sqlData={sqlData}
"" defaultValues={defaultValues || {}} // 接口中的默认值
: <td routerState={routerState} // 兼容表单设计器路由传参
width={ messageData={messageData} // 场景设计器共享变量参数
i == 0 ? concealModel={concealModel || {}} // 场景设计器内置路由跳转函数
((cell.content != null && cell.content.cwidth != null ? cell.content.cwidth : width) * (cell.col ? cell.col : 1)) />
: width * (cell.col ? cell.col : 1)} </td>
rowSpan={cell.row} );
colSpan={cell.col} })}
key={j} </tr>
style={{ );
overflow: "auto", })}
textAlign: cell.content && cell.content.calign ? cell.content.calign : "left", </tbody>
...isBorder ? </table>
(cell?.content?.comName == "InputHidden" || !cell?.content?.comName ?
{} :borderStyle {style.pageBreakAfter != null ? (
) : {}, <div style={{ pageBreakAfter: style.pageBreakAfter }}></div>
// position: cell.content&&cell.content.comName ==="InputHidden"&&'absolute', ) : (
...styles, ''
display:cell.content&&cell.content.comName ==="InputHidden"&&'none', )}
}} > </div>
</Col>
<TableCom </Row>
formCode={formCode} // 当前表单code </Form>
modalInit={modalInit} </div>
formId={formId} // 当前表单Id )}
i={i} // 当前组件下标 </>
j={j} // 当前行数下班 );
fatherCode={fatherCode} case 'mobile':
index={index} return (
fatherObj={this.props.fatherObj} <>
datas={datas} {this.props.postData?.isUpdate ? (
uuid={cell.uuid} <div style={{ margin: '100px 24px 24px' }}>
isEdit={isEdit} <div style={{ textAlign: 'center' }}>
formKey={currentFormKey} <img style={{ width: '100%' }} src={maintain}></img>
init={init} </div>
get={get} // 区分移动端或wen端 <p
json={cell.content} style={{
obj={obj || {}} // 是否存在默认值 textAlign: 'center',
mapData={mapData} width: '100%',
form={this.props.form} // antd form控件 fontSize: '16px',
sqlData={sqlData} fontWeight: 'bold',
defaultValues={defaultValues || {}} // 接口中的默认值 color: '#666666',
routerState={routerState} // 兼容表单设计器路由传参 }}
messageData={messageData} // 场景设计器共享变量参数 >
/> {updateTime !== 'Invalid date'
</td> ? `升级维护中,预计${updateTime ?? '一万年'}恢复使用,请耐心等待。`
} : '请耐心等待'}
) </p>
</div>
) : (
} <Form {...formItemLayout} id="mobile_table" className="login-form">
{defaultBinds
</tr> ? Object.keys(defaultBinds).map(k => {
const r = defaultBinds[k];
})} if (
</tbody> r.columnIds == null ||
</table> r.columnIds.length < 2 ||
r.sqls == null ||
{style.pageBreakAfter != null ? <div style={{ pageBreakAfter: style.pageBreakAfter }}></div> : ""} r.sqls.length < 2
</div> ) {
</Col> return '';
</Row> }
const name = r.columnIds[r.columnIds.length - 1];
</Form> const key = r.sqls[r.sqls.length - 1];
</div> const value = defaultValues[key];
}</>) if (value == null) {
case 'mobile': return '';
return (<> }
{this.props.postData?.isUpdate ?
<div style={{ margin: '100px 24px 24px' }}> return this.props.form.getFieldDecorator(name, {
<div style={{ textAlign: 'center' }}> initialValue: value,
<img style={{ width: '100%' }} src={maintain}></img> })(<Input type="hidden" />);
</div> })
<p style={{ : ''}
textAlign: "center", <IsNewTable
width: '100%', modalInit={modalInit}
fontSize: '16px', items={items}
fontWeight: 'bold', checkAllHidden={this.checkAllHidden}
color: '#666666', isBorder={isBorder}
}} borderStyle={borderStyle}
> fatherCode={fatherCode}
{updateTime !== 'Invalid date' ? index={index}
`升级维护中,预计${updateTime ?? '一万年'}恢复使用,请耐心等待。` : datas={datas}
'请耐心等待'} isEdit={isEdit}
</p> currentFormKey={currentFormKey}
</div> init={init}
: get={get}
<Form {...formItemLayout} id='mobile_table' className="login-form"> obj={obj}
{defaultBinds ? Object.keys(defaultBinds).map((k) => { mapData={mapData}
const r = defaultBinds[k] form={this.props.form}
if (r.columnIds == null || r.columnIds.length < 2 || r.sqls == null || r.sqls.length < 2) { sqlData={sqlData}
return "" defaultValues={defaultValues}
} width={width}
const name = r.columnIds[r.columnIds.length - 1] formCode={formCode}
const key = r.sqls[r.sqls.length - 1] style={style}
const value = defaultValues[key] routerState={routerState} // 兼容表单设计器路由传参
messageData={messageData} // 场景设计器共享变量参数
if (value == null) { formId={formId}
return "" fatherObj={this.props.fatherObj}
} concealModel={concealModel || {}} // 场景设计器内置路由跳转函数
/>
{/* {
return this.props.form.getFieldDecorator(name, {
initialValue: value
})(<Input type="hidden" />);
}) : ""}
<IsNewTable
modalInit={modalInit}
items={items}
checkAllHidden={this.checkAllHidden}
isBorder={isBorder}
borderStyle={borderStyle}
fatherCode={fatherCode}
index={index}
datas={datas}
isEdit={isEdit}
currentFormKey={currentFormKey}
init={init}
get={get}
obj={obj}
mapData={mapData}
form={this.props.form}
sqlData={sqlData}
defaultValues={defaultValues}
width={width}
formCode={formCode}
style={style}
routerState={routerState} // 兼容表单设计器路由传参
messageData={messageData} // 场景设计器共享变量参数
formId={formId}
fatherObj={this.props.fatherObj}
/>
{/* {
items.map((item, i) => { items.map((item, i) => {
const allhidden = this.checkAllHidden(items) const allhidden = this.checkAllHidden(items)
return (<div return (<div
...@@ -728,8 +781,10 @@ export default class ZdyTable extends Component { ...@@ -728,8 +781,10 @@ export default class ZdyTable extends Component {
</div>) </div>)
}) })
} */} } */}
</Form> </Form>
}</>) )}
} </>
);
} }
}
} }
/** /**
* 测试新表格 * 测试新表格
*/ */
import React, { Component } from 'react' import React, { Component } from 'react';
import TableCom from '../tableCompon/index'; import TableCom from '../tableCompon/index';
import { Card, WhiteSpace } from 'antd-mobile'; import { Card, WhiteSpace } from 'antd-mobile';
import { Row, Col } from 'antd'; import { Row, Col } from 'antd';
export default class isNewTable extends Component { export default class isNewTable extends Component {
render() { render() {
const { const {
items,
items, checkAllHidden,
checkAllHidden, isBorder,
isBorder, borderStyle,
borderStyle, fatherCode,
fatherCode, index,
index, datas,
datas, isEdit,
isEdit, currentFormKey,
currentFormKey, init,
init, get,
get, obj,
obj, mapData,
mapData, form,
form, sqlData,
sqlData, defaultValues,
defaultValues, width,
width, routerState,
routerState, messageData,
messageData, formCode,
formCode, formId,
formId, fatherObj,
fatherObj, style,
style, modalInit,
modalInit concealModel,
} = this.props } = this.props;
if(!isEdit ){ // 展示栏 暂不做处理 if (!isEdit) {
return <> // 展示栏 暂不做处理
{ return (
items.map((item, i) => { <>
const allhidden = checkAllHidden(items) {items.map((item, i) => {
return (<div const allhidden = checkAllHidden(items);
key={i} return (
style={{ <div
marginTop: 0, key={i}
background: '#ffffff', style={{
paddingLeft: 12, marginTop: 0,
width: '100%', background: '#ffffff',
flexWrap: 'wrap', paddingLeft: 12,
...style width: '100%',
}}> flexWrap: 'wrap',
{ ...style,
item.map((ary, j) => { }}
return !allhidden && ary.hidden ? "" >
: <><TableCom {item.map((ary, j) => {
modalInit={modalInit} return !allhidden && ary.hidden ? (
formCode={formCode} ''
formId={formId} ) : (
i={i} <>
j={j} <TableCom
index={index} modalInit={modalInit}
fatherCode={fatherCode} formCode={formCode}
datas={datas} formId={formId}
isEdit={isEdit} i={i}
fatherObj={this.props.fatherObj} j={j}
formKey={currentFormKey} index={index}
init={init} fatherCode={fatherCode}
get={get} datas={datas}
key={j} isEdit={isEdit}
sqlData={sqlData} fatherObj={this.props.fatherObj}
obj={obj || {}} formKey={currentFormKey}
form={this.props.form} init={init}
mapData={mapData} get={get}
json={ary.content} key={j}
uuid={ary.uuid} sqlData={sqlData}
routerState={routerState} // 兼容表单设计器路由传参 obj={obj || {}}
defaultValues={defaultValues || {}} form={this.props.form}
messageData={messageData} // 场景设计器共享变量参数 mapData={mapData}
/></> json={ary.content}
}) uuid={ary.uuid}
} routerState={routerState} // 兼容表单设计器路由传参
</div>) defaultValues={defaultValues || {}}
}) messageData={messageData} // 场景设计器共享变量参数
} concealModel={concealModel} // 场景设计器路由跳转参数
/>
</> </>
} );
return ( })}
<> </div>
{/* { // Row Col 模式 );
})}
</>
);
}
return (
<>
{/* { // Row Col 模式
items.map((item, i) => { items.map((item, i) => {
console.log(item) console.log(item)
const allhidden = checkAllHidden(items) const allhidden = checkAllHidden(items)
...@@ -163,89 +171,103 @@ export default class isNewTable extends Component { ...@@ -163,89 +171,103 @@ export default class isNewTable extends Component {
</> </>
}) })
} */} } */}
{ // 卡片模式 {// 卡片模式
items.map((item, i) => { items.map((item, i) => {
const allhidden = checkAllHidden(items) const allhidden = checkAllHidden(items);
return <> <Card full> return (
<>
{' '}
{ <Card full>
item.map((ary, j) => { {item.map((ary, j) => {
if(!ary.content){ if (!ary.content) {
return return;
} }
if(ary.content&&ary.content.comName==="Label"){ if (ary.content && ary.content.comName === 'Label') {
return <Card.Header return (
title={ <Card.Header
!allhidden && ary.hidden ? "" title={
:<><TableCom !allhidden && ary.hidden ? (
modalInit={modalInit} ''
formCode={formCode} ) : (
formId={formId} <>
i={i} <TableCom
j={j} modalInit={modalInit}
index={index} formCode={formCode}
fatherCode={fatherCode} formId={formId}
datas={datas} i={i}
isEdit={isEdit} j={j}
fatherObj={this.props.fatherObj} index={index}
formKey={currentFormKey} fatherCode={fatherCode}
init={init} datas={datas}
get={get} isEdit={isEdit}
key={j} fatherObj={this.props.fatherObj}
sqlData={sqlData} formKey={currentFormKey}
obj={obj || {}} init={init}
form={this.props.form} get={get}
mapData={mapData} key={j}
json={ary.content} sqlData={sqlData}
uuid={ary.uuid} obj={obj || {}}
routerState={routerState} // 兼容表单设计器路由传参 form={this.props.form}
defaultValues={defaultValues || {}} mapData={mapData}
messageData={messageData} // 场景设计器共享变量参数 json={ary.content}
/></> uuid={ary.uuid}
} routerState={routerState} // 兼容表单设计器路由传参
/> defaultValues={defaultValues || {}}
} messageData={messageData} // 场景设计器共享变量参数
return !allhidden && ary.hidden ? "" />
:<Card.Body </>
style={{ )
// textAlign:ary.content&&ary.content.comName === 'Table'?"left":'right' }
}} />
> <><TableCom );
modalInit={modalInit} }
formCode={formCode} return !allhidden && ary.hidden ? (
formId={formId} ''
i={i} ) : (
j={j} <Card.Body
index={index} style={
fatherCode={fatherCode} {
datas={datas} // textAlign:ary.content&&ary.content.comName === 'Table'?"left":'right'
isEdit={isEdit} }
fatherObj={this.props.fatherObj} }
formKey={currentFormKey} >
init={init} {' '}
get={get} <>
key={j} <TableCom
sqlData={sqlData} modalInit={modalInit}
obj={obj || {}} formCode={formCode}
form={this.props.form} formId={formId}
mapData={mapData} i={i}
json={ary.content} j={j}
uuid={ary.uuid} index={index}
routerState={routerState} // 兼容表单设计器路由传参 fatherCode={fatherCode}
defaultValues={defaultValues || {}} datas={datas}
messageData={messageData} // 场景设计器共享变量参数 isEdit={isEdit}
/></> fatherObj={this.props.fatherObj}
</Card.Body> formKey={currentFormKey}
}) init={init}
} get={get}
key={j}
</Card> sqlData={sqlData}
<WhiteSpace /> obj={obj || {}}
</> form={this.props.form}
}) mapData={mapData}
} json={ary.content}
uuid={ary.uuid}
routerState={routerState} // 兼容表单设计器路由传参
defaultValues={defaultValues || {}}
messageData={messageData} // 场景设计器共享变量参数
/>
</>
</Card.Body>
);
})}
</Card>
<WhiteSpace />
</> </>
) );
} })}
</>
);
}
} }
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论