From a5f41b5d98f23d618dc7519c605ce943b114dfd5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 13 十一月 2023 18:07:51 +0800
Subject: [PATCH] 2023-11-13
---
src/tabviews/custom/components/form/simple-form/index.jsx | 219 ++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 152 insertions(+), 67 deletions(-)
diff --git a/src/tabviews/custom/components/form/simple-form/index.jsx b/src/tabviews/custom/components/form/simple-form/index.jsx
index 39b7d05..1f08786 100644
--- a/src/tabviews/custom/components/form/simple-form/index.jsx
+++ b/src/tabviews/custom/components/form/simple-form/index.jsx
@@ -8,8 +8,6 @@
import asyncComponent from '@/utils/asyncComponent'
import asyncSpinComponent from '@/utils/asyncSpinComponent'
import MKEmitter from '@/utils/events.js'
-import zhCN from '@/locales/zh-CN/main.js'
-import enUS from '@/locales/en-US/main.js'
import './index.scss'
const MutilForm = asyncSpinComponent(() => import('@/tabviews/zshare/mutilform'))
@@ -18,85 +16,93 @@
class SimpleForm extends Component {
static propTpyes = {
- data: PropTypes.array, // 缁熶竴鏌ヨ鏁版嵁
- config: PropTypes.object, // 缁勪欢閰嶇疆淇℃伅
- mainSearch: PropTypes.any, // 澶栧眰鎼滅储鏉′欢
+ config: PropTypes.object
}
state = {
- dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
BID: '',
config: null,
loading: false,
- sync: false,
data: null,
group: null,
- BData: '',
- step: 0
+ BData: ''
}
UNSAFE_componentWillMount () {
- const { data } = this.props
- let config = fromJS(this.props.config).toJS()
+ const { config } = this.props
+ let _config = fromJS(config).toJS()
let _data = null
- let _sync = false
-
let BID = ''
let BData = ''
- if (config.setting.supModule) {
- BData = window.GLOB.CacheData.get(config.setting.supModule)
+ if (_config.setting.supModule) {
+ BData = window.GLOB.CacheData.get(_config.setting.supModule)
} else {
- BData = window.GLOB.CacheData.get(config.$pageId)
+ BData = window.GLOB.CacheData.get(_config.$pageId)
}
if (BData) {
BID = BData.$BID || ''
}
- if (config.wrap.datatype !== 'static') {
- _sync = config.setting.sync === 'true'
+ if (_config.wrap.datatype === 'dynamic') {
+ _config.setting.onload = _config.setting.sync === 'true' ? 'false' : 'true'
- if (_sync && data) {
- _data = data[config.dataName] || {$$empty: true}
- if (Array.isArray(_data)) {
- _data = _data[0] || {$$empty: true}
- }
- _sync = false
+ if (_config.setting.sync === 'true' && window.GLOB.SyncData.has(_config.dataName)) {
+ _data = window.GLOB.SyncData.get(_config.dataName) || []
+ _data = _data[0] || {$$empty: true}
+ _data.$$uuid = _data[_config.setting.primaryKey] || ''
+
+ _config.setting.sync = 'false'
+
+ window.GLOB.SyncData.delete(_config.dataName)
+ }
+ } else if (_config.wrap.datatype === 'public') {
+ if (window.GLOB.CacheData.has(_config.wrap.publicId)) {
+ _data = window.GLOB.CacheData.get(_config.wrap.publicId)
+ _data = fromJS(_data).toJS()
+ _data.$$BID = BID || ''
+ _data.$$BData = BData || ''
}
} else {
_data = {$$empty: true}
}
- let _group = config.subcards[0]
+ let _group = _config.subcards[0]
- if (_group.subButton.enable === 'false' && (!_group.closeButton || _group.closeButton.enable !== 'true')) {
+ if (_group.subButton.enable === 'false' && (!_group.closeButton || _group.closeButton.enable !== 'true') && (!_group.resetButton || _group.resetButton.enable !== 'true')) {
_group.subButton.style.display = 'none'
_group.$button = 'no-button'
}
this.setState({
- sync: _sync,
data: _data,
group: _group,
BID: BID || '',
BData: BData || '',
- config: config,
- arr_field: config.columns.map(col => col.field).join(','),
- }, () => {
- if (config.wrap.datatype !== 'static' && config.setting.sync !== 'true' && config.setting.onload === 'true') {
- setTimeout(() => {
- this.loadData()
- }, config.setting.delay || 0)
- }
+ config: _config
})
}
componentDidMount () {
+ const { config } = this.state
+
MKEmitter.addListener('reloadData', this.reloadData)
MKEmitter.addListener('mkFormSubmit', this.mkFormSubmit)
MKEmitter.addListener('resetSelectLine', this.resetParentParam)
MKEmitter.addListener('refreshByButtonResult', this.refreshByButtonResult)
+
+ if (config.setting.sync === 'true') {
+ MKEmitter.addListener('transferSyncData', this.transferSyncData)
+ }
+
+ if (config.wrap.datatype === 'public') {
+ MKEmitter.addListener('mkPublicData', this.mkPublicData)
+ } else if (config.setting.useMSearch) {
+ MKEmitter.addListener('searchRefresh', this.searchRefresh)
+ }
+
+ this.initExec()
}
shouldComponentUpdate (nextProps, nextState) {
@@ -108,32 +114,65 @@
return
}
MKEmitter.removeListener('reloadData', this.reloadData)
+ MKEmitter.removeListener('mkPublicData', this.mkPublicData)
MKEmitter.removeListener('mkFormSubmit', this.mkFormSubmit)
+ MKEmitter.removeListener('searchRefresh', this.searchRefresh)
MKEmitter.removeListener('resetSelectLine', this.resetParentParam)
+ MKEmitter.removeListener('transferSyncData', this.transferSyncData)
MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult)
}
- /**
- * @description 鍥捐〃鏁版嵁鏇存柊锛屽埛鏂板唴瀹�
- */
- UNSAFE_componentWillReceiveProps (nextProps) {
- const { sync, config } = this.state
-
- if (sync && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
- let _data = {$$empty: true}
- if (nextProps.data && nextProps.data[config.dataName]) {
- _data = nextProps.data[config.dataName]
- if (Array.isArray(_data)) {
- _data = _data[0] || {$$empty: true}
- }
- }
-
- this.setState({sync: false, data: _data})
- } else if (config.setting.useMSearch && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
- this.setState({}, () => {
+ initExec = () => {
+ const { config } = this.state
+
+ if (config.wrap.datatype === 'dynamic' && config.setting.onload === 'true') {
+ setTimeout(() => {
this.loadData()
+ }, config.setting.delay || 0)
+ }
+ }
+
+ transferSyncData = (syncId) => {
+ const { config } = this.state
+
+ if (config.$syncId !== syncId) return
+
+ let _data = window.GLOB.SyncData.get(config.dataName) || []
+ _data = _data[0] || {$$empty: true}
+ _data.$$uuid = _data[config.setting.primaryKey] || ''
+
+ this.setState({data: _data})
+
+ window.GLOB.SyncData.delete(config.dataName)
+
+ MKEmitter.removeListener('transferSyncData', this.transferSyncData)
+ }
+
+ mkPublicData = (publicId, data) => {
+ const { config, BID, BData } = this.state
+
+ if (config.wrap.datatype === 'public' && config.wrap.publicId === publicId) {
+ let _data = fromJS(data).toJS()
+
+ _data.$$BID = BID || ''
+ _data.$$BData = BData || ''
+
+ this.setState({
+ data: null
+ }, () => {
+ this.setState({data: _data})
})
}
+ }
+
+ searchRefresh = (searchId) => {
+ const { config } = this.state
+
+ if (config.$searchId !== searchId) return
+
+ this.setState({}, () => {
+ this.loadData()
+ })
}
reloadData = (menuId, id) => {
@@ -155,8 +194,14 @@
if (group.uuid !== menuId) return
- if (position === 'mainline' && config.setting.supModule && BID) {
+ if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) {
MKEmitter.emit('reloadData', config.setting.supModule, BID)
+ } else if (position === 'grid' && config.wrap.datatype === 'static') {
+ this.setState({
+ data: null
+ }, () => {
+ this.setState({data: {$$empty: true}})
+ })
} else {
this.loadData()
}
@@ -195,7 +240,7 @@
execSuccess = (btn, id) => {
if (btn.linkmenu && btn.linkmenu.length > 0) {
let menu_id = btn.linkmenu[btn.linkmenu.length - 1]
- let menu = window.GLOB.mkThdMenus.filter(m => m.MenuID === menu_id)[0] || ''
+ let menu = window.GLOB.mkThdMenus.get(menu_id) || ''
if (!menu) return
@@ -209,10 +254,12 @@
}
async loadData () {
- const { mainSearch } = this.props
- const { config, arr_field, BID } = this.state
+ const { config, BID } = this.state
- if (config.wrap.datatype === 'static') {
+ if (config.wrap.datatype === 'public') {
+ MKEmitter.emit('reloadData', config.wrap.publicId)
+ return
+ } else if (config.wrap.datatype === 'static') {
this.setState({
data: {$$empty: true}
})
@@ -223,13 +270,16 @@
}, () => {
this.setState({data: {$$empty: true}})
})
+ MKEmitter.emit('resetSelectLine', config.uuid, '', '')
return
}
- let searches = config.setting.useMSearch && mainSearch ? mainSearch : []
+ let searches = []
+ if (config.setting.useMSearch) { // 涓昏〃鎼滅储鏉′欢
+ searches = window.GLOB.SearchBox.get(config.$searchId) || []
+ }
- let requireFields = searches.filter(item => item.required && item.value === '')
- if (requireFields.length > 0) {
+ if (config.$s_req && searches.filter(item => item.required && item.value === '').length > 0) {
return
}
@@ -238,11 +288,13 @@
})
let _orderBy = config.setting.order || ''
- let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, 1, BID)
+ let param = UtilsDM.getQueryDataParams(config.setting, searches, _orderBy, 1, 1, BID)
let result = await Api.genericInterface(param)
if (result.status) {
let _data = result.data && result.data[0] ? result.data[0] : {$$empty: true}
+
+ _data.$$uuid = _data[config.setting.primaryKey] || ''
this.setState({
data: null,
@@ -250,16 +302,33 @@
}, () => {
this.setState({data: _data})
})
+
+ MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid, _data)
+
+ if (result.message) {
+ if (result.ErrCode === 'Y') {
+ Modal.success({
+ title: result.message
+ })
+ } else if (result.ErrCode === 'S') {
+ notification.success({
+ top: 92,
+ message: result.message,
+ duration: 2
+ })
+ }
+ }
} else {
this.setState({
loading: false,
})
+ if (!result.message) return
if (result.ErrCode === 'N') {
Modal.error({
title: result.message,
})
- } else {
+ } else if (result.ErrCode !== '-2') {
notification.error({
top: 92,
message: result.message,
@@ -269,13 +338,15 @@
}
}
- mkFormSubmit = (btnId) => {
+ mkFormSubmit = (btnId, callback) => {
const { group } = this.state
if (group.uuid !== btnId) return
this.formRef.handleConfirm().then(res => {
MKEmitter.emit('triggerFormSubmit', {menuId: btnId, form: res})
+ }, () => {
+ callback && callback()
})
}
@@ -285,9 +356,22 @@
MKEmitter.emit('closeTabView', group.subButton.$MenuID)
}
- render() {
- const { config, loading, BID, BData, data, group, dict } = this.state
+ resetTab = () => {
+ const { data } = this.state
+ this.setState({
+ data: null
+ }, () => {
+ this.setState({data: data})
+ })
+ }
+
+ render() {
+ const { config, loading, BID, BData, data, group } = this.state
+
+ if (config.wrap.empty === 'hidden' && (!data || data.$$empty)) return null
+ if (config.idCtrl && (!data || data.$$empty)) return null
+
return (
<div className="custom-simple-form-box" id={'anchor' + config.uuid} style={{...config.style}}>
{loading ?
@@ -300,9 +384,9 @@
{data ? <MutilForm
BID={BID}
BData={BData}
- dict={dict}
data={data}
action={group}
+ unload={config.setting.supModule && !BID}
inputSubmit={() => this.mkFormSubmit(group.uuid)}
wrappedComponentRef={(inst) => this.formRef = inst}
/> : null}
@@ -314,6 +398,7 @@
columns={config.columns}
selectedData={data.$$empty ? [] : [data]}
/>
+ {group.resetButton && group.resetButton.enable === 'true' ? <Button type="link" onClick={this.resetTab} style={group.resetButton.style}>{group.resetButton.label}</Button> : null}
{group.closeButton && group.closeButton.enable === 'true' ? <Button type="link" onClick={this.closeTab} style={group.closeButton.style}>{group.closeButton.label}</Button> : null}
</div> : null}
</div>
--
Gitblit v1.8.0