From abe57d274e6b12c3612788e0be3d1b9201852ebd Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 24 三月 2021 17:34:55 +0800 Subject: [PATCH] 2021-03-24 --- src/tabviews/custom/components/form/normal-form/index.jsx | 105 +++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 74 insertions(+), 31 deletions(-) diff --git a/src/tabviews/custom/components/form/normal-form/index.jsx b/src/tabviews/custom/components/form/normal-form/index.jsx index 2652701..422468b 100644 --- a/src/tabviews/custom/components/form/normal-form/index.jsx +++ b/src/tabviews/custom/components/form/normal-form/index.jsx @@ -2,13 +2,13 @@ import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' import { connect } from 'react-redux' -import { Spin, notification } from 'antd' +import { Spin, notification, Button } from 'antd' // import moment from 'moment' import Api from '@/api' // import Utils from '@/utils/utils.js' import UtilsDM from '@/utils/utils-datamanage.js' -// import asyncComponent from '@/utils/asyncComponent' +import asyncComponent from '@/utils/asyncComponent' import asyncSpinComponent from '@/utils/asyncSpinComponent' import MKEmitter from '@/utils/events.js' import zhCN from '@/locales/zh-CN/main.js' @@ -17,6 +17,7 @@ import './index.scss' const MutilForm = asyncSpinComponent(() => import('@/tabviews/zshare/mutilform')) +const NormalButton = asyncComponent(() => import('@/tabviews/zshare/actionList/normalbutton')) class NormalForm extends Component { static propTpyes = { @@ -34,22 +35,23 @@ loading: false, // 鏁版嵁鍔犺浇鐘舵�� activeKey: '', // 閫変腑鏁版嵁 sync: false, // 鏄惁缁熶竴璇锋眰鏁版嵁 - data: {}, // 鏁版嵁 - group: null + data: null, // 鏁版嵁 + group: null, + step: 0 } UNSAFE_componentWillMount () { const { data, BID, config } = this.props - let _data = {} + let _data = null let _sync = false if (config.setting && config.wrap.datatype !== 'static') { _sync = config.setting.sync === 'true' - if (_sync && data) { - _data = data[config.dataName] || {} - if (_data && Array.isArray(_data)) { + if (_sync && data && data[config.dataName]) { + _data = data[config.dataName] + if (Array.isArray(_data)) { _data = _data[0] || {} } _sync = false @@ -58,10 +60,20 @@ _data = {} } + config.subcards = config.subcards.map(group => { + group.subButton.uuid = group.uuid + group.subButton.Ot = 'requiredSgl' + group.subButton.btnstyle = group.subButton.style + group.subButton.OpenType = 'formSubmit' + + return group + }) + this.setState({ sync: _sync, data: _data, group: config.subcards[0], + step: 0, BID: BID || '', config: config, arr_field: config.columns.map(col => col.field).join(','), @@ -74,6 +86,7 @@ componentDidMount () { MKEmitter.addListener('reloadData', this.reloadData) + MKEmitter.addListener('mkFormSubmit', this.mkFormSubmit) MKEmitter.addListener('resetSelectLine', this.resetParentParam) MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult) } @@ -87,6 +100,7 @@ return } MKEmitter.removeListener('reloadData', this.reloadData) + MKEmitter.removeListener('mkFormSubmit', this.mkFormSubmit) MKEmitter.removeListener('resetSelectLine', this.resetParentParam) MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult) } @@ -101,8 +115,8 @@ let _data = {} if (nextProps.data && nextProps.data[config.dataName]) { _data = nextProps.data[config.dataName] - if (_data && Array.isArray(_data)) { - _data = _data[0] + if (Array.isArray(_data)) { + _data = _data[0] || {} } } @@ -203,7 +217,7 @@ this.setState({ activeKey: '', - data: _data, + data: _data || {}, loading: false }) } else { @@ -216,20 +230,6 @@ duration: 10 }) } - } - - changeCard = (index, item) => { - const { config, data, activeKey } = this.state - - this.openView(item) - - if (!config.wrap.cardType || activeKey === index) return - - this.setState({ - activeKey: index - }) - - MKEmitter.emit('resetSelectLine', config.uuid, (item.setting.primaryId || ''), data) } openView = (item) => { @@ -294,9 +294,38 @@ } } + mkFormSubmit = (btnId) => { + const { group } = this.state + + if (group.uuid !== btnId) return + + this.formRef.handleConfirm().then(res => { + MKEmitter.emit('triggerFormSubmit', {menuId: btnId, form: res}) + }) + } + + prevStep = () => { + const { config, group } = this.state + + let _group = config.subcards.filter(item => item.sort === (group.sort - 1))[0] + + this.setState({group: null, step: group.sort - 2}, () => { + this.setState({group: _group}) + }) + } + + nextStep = () => { + const { config, group } = this.state + + let _group = config.subcards.filter(item => item.sort === (group.sort + 1))[0] + + this.setState({group: null, step: group.sort}, () => { + this.setState({group: _group}) + }) + } render() { - const { config, loading, BID, data, group } = this.state + const { config, loading, BID, data, group, dict, step } = this.state return ( <div className="custom-normal-form-box" style={{...config.style}}> @@ -308,20 +337,34 @@ } {config.subcards.length > 1 ? <div className="mk-normal-form-title"> {config.subcards.map(card => ( - <div key={card.uuid} className="form-title"> - <span className="form-sort">{card.sort}</span> + <div key={card.uuid} className={'form-title' + (card.sort <= step ? ' active' : '')}> + <span className="form-sort" style={{background: config.wrap.color}}>{card.sort}</span> + <span className="before-line" style={{background: config.wrap.color}}></span> + <span className="after-line" style={{background: config.wrap.color}}></span> {card.setting.title} </div>)) } </div> : null} - <MutilForm + {group && data ? <MutilForm BID={BID} + dict={dict} data={data} - dict={this.state.dict} action={group} inputSubmit={this.handleOk} wrappedComponentRef={(inst) => this.formRef = inst} - /> + /> : null} + {group && data ? <div className="mk-form-action"> + {group.sort !== 1 ? <Button type="link" className="prev" onClick={this.prevStep} style={group.prevButton.style}>{group.prevButton.label}</Button> : null} + <NormalButton + BID={BID} + position="form" + btn={group.subButton} + setting={config.setting} + columns={config.columns} + selectedData={[data]} + /> + {group.nextButton.enable === 'true' && group.sort !== config.subcards.length ? <Button type="link" className="skip" onClick={this.nextStep} style={group.nextButton.style}>{group.nextButton.label}</Button> : null} + </div> : null} </div> ) } -- Gitblit v1.8.0