From dfdcdcb3dbd0b711bc0b77bb00fd1d39af91bd0b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 10 一月 2025 17:43:34 +0800
Subject: [PATCH] 2025-01-10
---
src/menu/components/form/simple-form/index.jsx | 308 +++++++++++++++++++-------------------------------
1 files changed, 118 insertions(+), 190 deletions(-)
diff --git a/src/menu/components/form/simple-form/index.jsx b/src/menu/components/form/simple-form/index.jsx
index a3ad770..60e1f9f 100644
--- a/src/menu/components/form/simple-form/index.jsx
+++ b/src/menu/components/form/simple-form/index.jsx
@@ -1,15 +1,13 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
-import { Popover, Modal, Button, Switch, notification, message } from 'antd'
-import { PlusOutlined, SettingOutlined, EditOutlined, ToolOutlined, DeleteOutlined, FontColorsOutlined } from '@ant-design/icons'
-import moment from 'moment'
+import { Popover, Modal, Button, Switch, message } from 'antd'
+import { PlusOutlined, SettingOutlined, EditOutlined, ToolOutlined, DeleteOutlined, SwapOutlined, FontColorsOutlined } from '@ant-design/icons'
-import Api from '@/api'
import asyncComponent from '@/utils/asyncComponent'
import asyncIconComponent from '@/utils/asyncIconComponent'
import { getModalForm } from '@/templates/zshare/formconfig'
-import { resetStyle, getTables, checkComponent } from '@/utils/utils-custom.js'
+import { resetStyle, getTables, checkComponent, getInterfaces } from '@/utils/utils-custom.js'
import MKEmitter from '@/utils/events.js'
import Utils from '@/utils/utils.js'
import getWrapForm from './options'
@@ -21,10 +19,10 @@
const CardComponent = asyncComponent(() => import('@/templates/modalconfig/dragelement'))
const MobCardComponent = asyncComponent(() => import('@/mob/components/formdragelement'))
const FormAction = asyncComponent(() => import('../formaction'))
+const FormFork = asyncComponent(() => import('@/menu/modalconfig/formfork'))
const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent'))
const PasteForms = asyncIconComponent(() => import('@/menu/components/share/pasteforms'))
-const UserComponent = asyncIconComponent(() => import('@/menu/components/share/usercomponent'))
const FieldsComponent = asyncComponent(() => import('@/templates/sharecomponent/fieldscomponent'))
const { confirm } = Modal
@@ -44,8 +42,7 @@
visible: false,
editform: null,
formlist: null,
- sqlVerifing: false,
- standardform: null
+ sqlVerifing: false
}
UNSAFE_componentWillMount () {
@@ -69,33 +66,13 @@
scripts: [],
subcards: [{
uuid: Utils.getuuid(),
- setting: {title: '绌�', align: 'left_right', enable: 'true'},
+ setting: {title: '', align: 'left_right', enable: 'true'},
style: {},
fields: [],
- subButton: {label: '鎻愪氦', type: 'submit', intertype: 'system', reload: 'false', sqlType: 'update', sql: '', Ot: 'notRequired', execSuccess: 'never', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
+ subButton: {label: '鎻愪氦', type: 'submit', intertype: 'system', reload: 'false', sqlType: '', sql: '', Ot: 'notRequired', execSuccess: 'never', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
}]
}
- if (card.config) {
- let config = fromJS(card.config).toJS()
-
- _card.wrap = config.wrap
- _card.wrap.name = card.name
- _card.style = config.style
-
- _card.setting = config.setting
- _card.columns = config.columns
- _card.scripts = config.scripts
-
- _card.subcards = config.subcards.map(scard => {
- scard.uuid = Utils.getuuid()
- scard.fields = scard.fields.map(elem => {
- elem.uuid = Utils.getuuid()
- return elem
- })
- return scard
- })
- }
this.updateComponent(_card)
} else {
let _card = fromJS(card).toJS()
@@ -103,6 +80,10 @@
card: _card
})
}
+ }
+
+ componentDidMount () {
+ MKEmitter.addListener('mkUpdateInter', this.mkUpdateInter)
}
shouldComponentUpdate (nextProps, nextState) {
@@ -116,6 +97,21 @@
this.setState = () => {
return
}
+ MKEmitter.removeListener('mkUpdateInter', this.mkUpdateInter)
+ }
+
+ mkUpdateInter = (inter, split) => {
+ const { card } = this.state
+
+ if (card.wrap.datatype === 'public' && card.wrap.publicId === inter.uuid) {
+ let _card = {...card, columns: fromJS(inter.columns).toJS()}
+
+ split.delay = split.delay + 10
+
+ setTimeout(() => {
+ this.updateComponent(_card)
+ }, split.delay)
+ }
}
/**
@@ -127,7 +123,7 @@
card.errors = []
let idCtrl = false
- if (card.wrap.datatype !== 'static') {
+ if (card.wrap.datatype === 'dynamic') {
let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : ''
if (supModule === 'empty') {
supModule = ''
@@ -141,6 +137,16 @@
}
card.subcards.forEach(item => {
+ if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
+ card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
+ }
+ if (item.subButton.verify && !item.subButton.output) {
+ if (item.subButton.verify.noteEnable === 'true') {
+ card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
+ } else if (item.subButton.verify.emailEnable === 'true') {
+ card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
+ }
+ }
item.fields.forEach(m => {
if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
idCtrl = true
@@ -151,16 +157,29 @@
})
})
} else {
- let supModule = card.wrap.supModule ? card.wrap.supModule[card.wrap.supModule.length - 1] : ''
+ let supModule = ''
+ if (card.wrap.datatype === 'static') {
+ supModule = card.wrap.supModule ? card.wrap.supModule[card.wrap.supModule.length - 1] : ''
+ }
card.$tables = getTables(card)
card.subcards.forEach(item => {
+ if (item.subButton.intertype === 'system' && !item.subButton.sqlType) {
+ card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳璇疯缃搷浣滅被鍨媊})
+ }
+ if (item.subButton.verify && !item.subButton.output) {
+ if (item.subButton.verify.noteEnable === 'true') {
+ card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�肩煭淇″彂閫佹棤鏁堬紒`})
+ } else if (item.subButton.verify.emailEnable === 'true') {
+ card.errors.push({ level: 0, detail: `${item.subButton.label} 鎸夐挳鏈缃繑鍥炲�奸偖浠跺彂閫佹棤鏁堬紒`})
+ }
+ }
item.fields.forEach(m => {
if (m.dataSource && /@ID@/ig.test(m.dataSource)) {
idCtrl = true
}
- if (m.type === 'linkMain' && !supModule) {
+ if (m.type === 'linkMain' && !supModule && card.wrap.datatype === 'static') {
card.errors.push({ level: 1, detail: `璇锋鏌ュ叧鑱斾富琛ㄢ��${m.label}鈥濇槸鍚︽湁鏁坄})
}
})
@@ -222,7 +241,7 @@
changecols = (type) => {
let card = fromJS(this.state.card).toJS()
- let _this = this
+ let that = this
card.subcards[0].fields = card.subcards[0].fields.map(item => {
item.labelwidth = 33.3
@@ -248,7 +267,7 @@
confirm({
content: `纭畾鍒囨崲涓�${type}鍒楀悧锛焋,
onOk() {
- _this.updateComponent(card)
+ that.updateComponent(card)
},
onCancel() {}
})
@@ -269,14 +288,14 @@
closeForm = (cell) => {
let card = fromJS(this.state.card).toJS()
- let _this = this
+ let that = this
card.subcards[0].fields = card.subcards[0].fields.filter(item => item.uuid !== cell.uuid)
confirm({
content: `纭畾鍒犻櫎<<${cell.label}>>鍚楋紵`,
onOk() {
- _this.updateComponent(card)
+ that.updateComponent(card)
},
onCancel() {}
})
@@ -321,99 +340,22 @@
card.subcards[0].fields = card.subcards[0].fields.filter(item => !item.focus)
this.setState({card, visible: false, editform: null})
+
+ this.updateComponent(card)
}
/**
* @description 琛ㄥ崟缂栬緫
*/
handleForm = (_item) => {
- const { card, appType } = this.state
+ const { card } = this.state
+
let _form = fromJS(_item).toJS()
- let _inputfields = []
- let _tabfields = []
- let _linkableFields = []
- let _linksupFields = []
- let standardform = null
-
- let uniq = new Map()
- let index = null
- uniq.set(_form.field, true)
-
- card.subcards[0].fields.forEach((item, i) => {
- if (_form.uuid === item.uuid) {
- index = i
- }
-
- if (['text', 'number', 'textarea', 'color'].includes(item.type) && _item.field !== item.field) {
- _inputfields.push({
- field: item.field,
- label: item.label
- })
- }
- if (_form.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
- _tabfields.push({
- field: item.field,
- label: item.label
- })
- }
-
- if (item.type === 'switch') {
- _linksupFields.push({
- field: item.field,
- label: item.label
- })
- }
-
- if (!['select', 'link', 'radio', 'checkcard'].includes(item.type)) return
- if (item.type === 'checkcard' && item.multiple === 'true') return // 閫夐」鍗″閫�
- if (item.field && !uniq.has(item.field)) {
- uniq.set(item.field, true)
-
- _linkableFields.push({
- field: item.field,
- label: item.label + '-琛ㄥ崟'
- })
- _linksupFields.push({
- field: item.field,
- label: item.label
- })
- }
- })
-
- if (index !== null) {
- if (index === 0) {
- standardform = card.subcards[0].fields[index + 1] || null
- } else {
- standardform = card.subcards[0].fields[index - 1] || null
- }
- }
-
- card.columns.forEach(col => {
- if (col.field && !uniq.has(col.field)) {
- uniq.set(col.field, true)
-
- _linkableFields.push({
- field: col.field,
- label: col.label + '-鏄剧ず鍒�'
- })
- }
- })
-
- if (_form.linkSubField && _form.linkSubField.length > 0) {
- let fields = _inputfields.map(item => item.field)
- _form.linkSubField = _form.linkSubField.filter(item => fields.includes(item))
- }
-
- if (appType !== 'mob' && !_form.span && standardform && standardform.span) {
- _form.span = standardform.span
- _form.labelwidth = standardform.labelwidth
- }
this.setState({
- standardform,
visible: true,
editform: _form,
- formlist: getModalForm(_form, _inputfields, _tabfields, _linkableFields, _linksupFields, card.columns)
+ formlist: getModalForm(_form, card.subcards[0].fields, card.columns)
})
}
@@ -424,76 +366,33 @@
* 3銆侀�氳繃loading鍒锋柊
*/
handleSubmit = () => {
+ let _config = fromJS(this.state.card).toJS()
+
this.formRef.handleConfirm().then(res => {
- let _config = fromJS(this.state.card).toJS()
- let fieldrepet = false // 瀛楁閲嶅
-
_config.subcards[0].fields = _config.subcards[0].fields.map(item => {
- if (item.uuid !== res.uuid && res.field && item.field && item.field.toLowerCase() === res.field.toLowerCase()) {
- fieldrepet = true
- }
-
delete item.focus
- if (item.uuid === res.uuid) {
- if (item.style) {
- res.style = item.style
- }
- return res
+ if (item.uuid === res.values.uuid) {
+ return res.values
} else {
return item
}
})
- if (fieldrepet) {
- notification.warning({
- top: 92,
- message: '瀛楁宸插瓨鍦紒',
- duration: 10
- })
- return
- }
-
- window.GLOB.formId = res.uuid
-
- if (['select', 'multiselect', 'link', 'checkbox', 'radio', 'checkcard'].includes(res.type) && res.resourceType === '1' && /\s/.test(res.dataSource)) {
+ if (res.loading) {
this.setState({
sqlVerifing: true
})
- let param = {
- func: 's_debug_sql',
- exec_type: 'y',
- LText: `declare @mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20)
- ${res.dataSource}`
- }
-
- param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
- param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@(BID|ID|LoginUID|SessionUid|UserID|Appkey|time_id)@/ig, `'${param.timestamp}'`)
- param.LText = param.LText.replace(/\n/g, ' ')
-
- param.LText = Utils.formatOptions(param.LText)
- param.secretkey = Utils.encrypt('', param.timestamp)
-
- if (window.GLOB.mainSystemApi && res.database === 'sso') {
- param.rduri = window.GLOB.mainSystemApi
- }
-
- Api.genericInterface(param).then(result => {
- if (result.status) {
- this.setState({
- sqlVerifing: false,
- editform: null,
- visible: false
- })
- this.updateComponent(_config)
- } else {
- this.setState({sqlVerifing: false})
-
- Modal.error({
- title: result.message
- })
- }
+ res.promise().then(() => {
+ this.setState({
+ sqlVerifing: false,
+ editform: null,
+ visible: false
+ })
+ this.updateComponent(_config)
+ }, () => {
+ this.setState({sqlVerifing: false})
})
} else {
this.setState({
@@ -507,6 +406,10 @@
pasteForm = (forms, res) => {
let _config = fromJS(this.state.card).toJS()
+
+ forms.forEach(item => {
+ delete item.focus
+ })
_config.subcards[0].fields = forms
@@ -538,8 +441,6 @@
}
})
} else {
- _config.subcards[0].fields = forms
-
this.updateComponent(_config)
}
}
@@ -556,6 +457,7 @@
res.enable = buttons.includes('enable') ? 'true' : 'false'
res.closeEnable = buttons.includes('closeEnable') ? 'true' : 'false'
+ res.resetEnable = buttons.includes('resetEnable') ? 'true' : 'false'
_card.wrap = res
@@ -565,6 +467,17 @@
} else {
_card.setting.supModule = ''
}
+ } else if (res.datatype === 'public') {
+ let interfaces = getInterfaces()
+
+ let d = interfaces.filter(m => m.value === res.publicId)[0]
+
+ if (d) {
+ _card.columns = fromJS(d.columns).toJS()
+
+ _card.setting = { interType: 'system' }
+ _card.scripts = []
+ }
}
_card.subcards[0].setting.focus = _card.wrap.focus
@@ -572,11 +485,17 @@
_card.subcards[0].setting.align = _card.wrap.align
_card.subcards[0].setting.enable = _card.wrap.enable
_card.subcards[0].setting.verticalSpace = _card.wrap.verticalSpace
+ _card.subcards[0].subButton.enable = _card.wrap.enable
if (_card.wrap.closeEnable === 'true' && !_card.subcards[0].closeButton) {
_card.subcards[0].closeButton = {label: '鍏抽棴', enable: 'true', type: 'close', style: {backgroundColor: '#ffffff', color: 'rgba(0,0,0,0.65)', borderColor: '#d9d9d9', borderWidth: '1px', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px', marginLeft: '10px'}}
} else if (_card.subcards[0].closeButton) {
_card.subcards[0].closeButton.enable = _card.wrap.closeEnable
+ }
+ if (_card.wrap.resetEnable === 'true' && !_card.subcards[0].resetButton) {
+ _card.subcards[0].resetButton = {label: '閲嶇疆', enable: 'true', type: 'reset', style: {backgroundColor: '#ffffff', color: 'rgba(0,0,0,0.65)', borderColor: '#d9d9d9', borderWidth: '1px', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px', marginLeft: '10px'}}
+ } else if (_card.subcards[0].resetButton) {
+ _card.subcards[0].resetButton.enable = _card.wrap.resetEnable
}
this.updateComponent(_card)
@@ -584,14 +503,14 @@
clearGroup = () => {
let card = fromJS(this.state.card).toJS()
- let _this = this
+ let that = this
card.subcards[0].fields = []
confirm({
content: `纭畾娓呯┖琛ㄥ崟鍚楋紵`,
onOk() {
- _this.updateComponent(card)
+ that.updateComponent(card)
},
onCancel() {}
})
@@ -624,10 +543,8 @@
<CopyComponent type="simpleform" card={card}/>
<PasteForms config={card.subcards[0]} update={this.pasteForm} />
<FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle}/>
- <UserComponent config={card}/>
<DeleteOutlined className="close" title="鍒犻櫎缁勪欢" onClick={() => this.props.deletecomponent(card.uuid)} />
- {card.wrap.datatype !== 'static' ? <SettingComponent config={card} updateConfig={this.updateComponent} /> : null}
- {card.wrap.datatype === 'static' ? <SettingOutlined style={{color: '#eeeeee', cursor: 'not-allowed'}}/> : null}
+ {card.wrap.datatype === 'dynamic' ? <SettingComponent config={card} updateConfig={this.updateComponent} /> : <SettingOutlined style={{color: '#eeeeee', cursor: 'not-allowed'}}/>}
</div>
} trigger="hover">
<ToolOutlined />
@@ -635,12 +552,22 @@
<div className={`form-area mk-${card.wrap.formStyle || ''}`}>
<PlusOutlined className="plus" title="娣诲姞琛ㄥ崟" onClick={this.addForm}/>
<FieldsComponent config={card.subcards[0]} type="form" plusFields={this.plusFields} />
- <span style={{color: 'red', marginLeft: '30px', cursor: 'pointer'}} onClick={this.clearGroup}>娓呯┖</span>
- <Switch checkedChildren="寮�" unCheckedChildren="鍏�" defaultChecked={this.state.showField} onChange={(val) => this.setState({showField: val})} />
- {appType !== 'mob' ? <Button className="mk-cols-change" onClick={() => this.changecols(1)}>1鍒�</Button> : null}
- {appType !== 'mob' ? <Button className="mk-cols-change" onClick={() => this.changecols(2)}>2鍒�</Button> : null}
- {appType !== 'mob' ? <Button className="mk-cols-change" onClick={() => this.changecols(3)}>3鍒�</Button> : null}
- {appType !== 'mob' ? <Button className="mk-cols-change" onClick={() => this.changecols(4)}>4鍒�</Button> : null}
+ <div className="mk-form-tool">
+ <DeleteOutlined title="娓呯┖" onClick={this.clearGroup} />
+ {appType !== 'mob' ? <Popover title="鍒囨崲甯冨眬" overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
+ <>
+ <Button style={{marginRight: '10px'}} onClick={() => this.changecols(1)}>1鍒�</Button>
+ <Button style={{marginRight: '10px'}} onClick={() => this.changecols(2)}>2鍒�</Button>
+ <Button style={{marginRight: '10px'}} onClick={() => this.changecols(3)}>3鍒�</Button>
+ <Button onClick={() => this.changecols(4)}>4鍒�</Button>
+ </>
+ } trigger="hover">
+ <SwapOutlined />
+ </Popover> : null}
+ <FormFork forms={card.subcards[0].fields}/>
+ {/* <CopyOutlined title="澶嶅埗" onClick={this.triggerCopy} /> */}
+ <Switch checkedChildren="寮�" unCheckedChildren="鍏�" defaultChecked={this.state.showField} onChange={(val) => this.setState({showField: val})} />
+ </div>
<div style={{clear: 'both'}}></div>
{appType !== 'mob' ? <CardComponent
list={card.subcards[0].fields}
@@ -683,6 +610,7 @@
</div>
<Modal
title="缂栬緫"
+ wrapClassName="mk-scroll-modal"
visible={this.state.visible}
width={950}
maskClosable={false}
@@ -695,7 +623,7 @@
card={this.state.editform}
formlist={this.state.formlist}
inputSubmit={this.handleSubmit}
- standardform={this.state.standardform}
+ fields={card.subcards[0].fields}
wrappedComponentRef={(inst) => this.formRef = inst}
/>
</Modal>
--
Gitblit v1.8.0