From 875ddf51cac56da2b098c570866a5ea997132064 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 24 三月 2021 19:22:55 +0800 Subject: [PATCH] 2021-03-24 --- src/tabviews/custom/components/form/normal-form/index.jsx | 173 ++++++++++++++++++++++++--------------------------------- 1 files changed, 72 insertions(+), 101 deletions(-) diff --git a/src/tabviews/custom/components/form/normal-form/index.jsx b/src/tabviews/custom/components/form/normal-form/index.jsx index 422468b..d94b17b 100644 --- a/src/tabviews/custom/components/form/normal-form/index.jsx +++ b/src/tabviews/custom/components/form/normal-form/index.jsx @@ -62,18 +62,29 @@ config.subcards = config.subcards.map(group => { group.subButton.uuid = group.uuid + group.subButton.$menuId = group.uuid group.subButton.Ot = 'requiredSgl' group.subButton.btnstyle = group.subButton.style group.subButton.OpenType = 'formSubmit' + group.subButton.execError = 'never' return group }) + let _group = config.subcards[0] + + if (_data && config.wrap.statusControl && _data[config.wrap.statusControl]) { + let _status = _data[config.wrap.statusControl] + + let _groups = config.subcards.filter(item => item.setting.status === _status)[0] + _group = _groups || _group + } + this.setState({ sync: _sync, data: _data, - group: config.subcards[0], - step: 0, + group: _group, + step: _group.sort - 1, BID: BID || '', config: config, arr_field: config.columns.map(col => col.field).join(','), @@ -85,10 +96,9 @@ } componentDidMount () { - MKEmitter.addListener('reloadData', this.reloadData) MKEmitter.addListener('mkFormSubmit', this.mkFormSubmit) MKEmitter.addListener('resetSelectLine', this.resetParentParam) - MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult) + MKEmitter.addListener('refreshByButtonResult', this.refreshByButtonResult) } shouldComponentUpdate (nextProps, nextState) { @@ -99,7 +109,6 @@ this.setState = () => { return } - MKEmitter.removeListener('reloadData', this.reloadData) MKEmitter.removeListener('mkFormSubmit', this.mkFormSubmit) MKEmitter.removeListener('resetSelectLine', this.resetParentParam) MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult) @@ -109,18 +118,24 @@ * @description 鍥捐〃鏁版嵁鏇存柊锛屽埛鏂板唴瀹� */ UNSAFE_componentWillReceiveProps (nextProps) { - const { sync, config } = this.state + const { sync, config, group } = this.state if (sync && !is(fromJS(this.props.data), fromJS(nextProps.data))) { let _data = {} + let _group = group if (nextProps.data && nextProps.data[config.dataName]) { _data = nextProps.data[config.dataName] if (Array.isArray(_data)) { _data = _data[0] || {} } } + if (config.wrap.statusControl && _data[config.wrap.statusControl]) { + let _status = _data[config.wrap.statusControl] + let _groups = config.subcards.filter(item => item.setting.status === _status)[0] + _group = _groups || _group + } - this.setState({sync: false, data: _data}) + this.setState({sync: false, data: _data, group: _group, step: _group.sort - 1,}) } else if (nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) { if (config.wrap.datatype !== 'static' && config.setting.syncRefresh === 'true') { this.setState({}, () => { @@ -137,27 +152,53 @@ * @param {*} btn // 鎵ц鐨勬寜閽� */ refreshByButtonResult = (menuId, position, btn) => { - const { config, BID } = this.state + const { config, group } = this.state - if (config.uuid !== menuId) return - - this.loadData() // 鏁版嵁鍒锋柊 + if (group.uuid !== menuId) return if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) { MKEmitter.emit('reloadData', btn.syncComponentId) // 鍚岀骇鏍囩鍒锋柊 } - if (position === 'mainline' && config.setting.supModule) { // 涓昏〃琛屽埛鏂� - MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty')) - } else if (position === 'popclose') { // 鏍囩鍏抽棴鍒锋柊 - config.setting.supModule && MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty')) - btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId) + if (config.subcards.length > group.sort) { + let _group = config.subcards.filter(item => item.sort === (group.sort + 1))[0] + + this.setState({group: null, step: group.sort}, () => { + this.setState({group: _group}) + }) + } else { + this.setState({step: group.sort}) + } + + if (btn.linkmenu && btn.linkmenu.length > 0) { + let menu_id = btn.linkmenu[btn.linkmenu.length - 1] + let menu = this.props.permMenus.filter(m => m.MenuID === menu_id)[0] || '' + + if (!menu) return + + let newtab = { + ...menu, + selected: true, + param: {} + } + let tabs = this.props.tabviews.filter((tab, i) => { + tab.selected = false + return tab.MenuID !== newtab.MenuID + }) + + if (this.props.tabviews.length > tabs.length) { + this.props.modifyTabview(fromJS(tabs).toJS()) + } + + this.setState({}, () => { + tabs.push(newtab) + this.props.modifyTabview(tabs) + }) } } resetParentParam = (MenuID, id) => { const { config } = this.state - if (config.wrap.datatype === 'static' || !config.setting.supModule || config.setting.supModule !== MenuID) return if (id !== this.state.BID) { this.setState({ BID: id }, () => { @@ -166,25 +207,11 @@ } } - reloadData = (menuId) => { - const { config } = this.state - - if (menuId !== config.uuid) return - - this.loadData() - } - - async loadData (hastimer) { + async loadData () { const { mainSearch, menuType } = this.props - const { config, arr_field, BID } = this.state + const { config, arr_field, BID, group } = this.state - if (config.wrap.datatype === 'static') { - this.setState({ - data: {}, - loading: false - }) - return - } else if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇� + if (config.wrap.datatype === 'static' || (config.setting.supModule && !BID)) { this.setState({ data: {}, loading: false @@ -202,11 +229,9 @@ }) } - if (!hastimer) { - this.setState({ - loading: true - }) - } + this.setState({ + loading: true + }) let _orderBy = config.setting.order || '' let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID, menuType) @@ -214,8 +239,16 @@ let result = await Api.genericInterface(param) if (result.status) { let _data = result.data && result.data[0] ? result.data[0] : {} + let _group = group + if (config.wrap.statusControl && _data[config.wrap.statusControl]) { + let _status = _data[config.wrap.statusControl] + let _groups = config.subcards.filter(item => item.setting.status === _status)[0] + _group = _groups || _group + } this.setState({ + group: _group, + step: _group.sort - 1, activeKey: '', data: _data || {}, loading: false @@ -229,68 +262,6 @@ message: result.message, duration: 10 }) - } - } - - openView = (item) => { - if (item.setting.click === 'menu') { - let menu = null - - if (item.setting.menu && item.setting.menu.length > 0) { - let menu_id = item.setting.menu.slice(-1)[0] - menu = this.props.permMenus.filter(m => m.MenuID === menu_id)[0] || '' - } - - if (!menu) { - notification.warning({ - top: 92, - message: '鑿滃崟宸插垹闄ゆ垨娌℃湁璁块棶鏉冮檺锛�', - duration: 5 - }) - return - } - - let newtab = { - ...menu, - selected: true, - param: {} - } - - if (item.setting.joint === 'true') { - newtab.param.BID = item.setting.primaryId - } - - if (['linkage_navigation', 'linkage'].includes(window.GLOB.navBar)) { - this.props.modifyTabview([newtab]) - } else { - let tabs = this.props.tabviews.filter((tab, i) => { - tab.selected = false - return tab.MenuID !== newtab.MenuID - }) - - if (this.props.tabviews.length !== tabs.length) { - this.props.modifyTabview(fromJS(tabs).toJS()) - } - - this.setState({}, () => { - tabs.push(newtab) - this.props.modifyTabview(tabs) - }) - } - } else if (item.setting.click === 'link') { - let src = item.setting.linkurl - - if (item.setting.joint === 'true') { - let con = '?' - - if (/\?/ig.test(src)) { - con = '&' - } - - src = src + `${con}id=${item.setting.primaryId}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}` - } - - window.open(src) } } -- Gitblit v1.8.0