From 716dfa54209e2d300a66998d0e0e4f024741ab44 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 01 十二月 2022 18:59:31 +0800 Subject: [PATCH] 2022-12-01 --- src/components/keyInterface/index.jsx | 58 ++++++++++++-- src/templates/sharecomponent/settingcomponent/index.jsx | 2 src/tabviews/custom/components/card/prop-card/index.jsx | 19 ++++ src/menu/components/card/cardcellcomponent/index.jsx | 49 ++++++++++++ src/menu/components/card/data-card/options.jsx | 28 ++++++ src/templates/formtabconfig/index.jsx | 2 src/menu/datasource/verifycard/settingform/index.jsx | 2 src/menu/components/card/prop-card/index.scss | 5 + src/menu/components/share/actioncomponent/index.jsx | 6 - src/menu/components/table/base-table/index.scss | 2 src/templates/sharecomponent/actioncomponent/index.jsx | 6 - src/components/keyInterface/index.scss | 4 + src/menu/components/card/prop-card/index.jsx | 18 ++++ src/menu/datasource/verifycard/index.jsx | 9 + src/utils/utils.js | 5 15 files changed, 185 insertions(+), 30 deletions(-) diff --git a/src/components/keyInterface/index.jsx b/src/components/keyInterface/index.jsx index 80074b2..517b091 100644 --- a/src/components/keyInterface/index.jsx +++ b/src/components/keyInterface/index.jsx @@ -7,6 +7,7 @@ import './index.scss' const { TextArea } = Input +const { confirm } = Modal class KeyInterface extends Component { static propTpyes = { @@ -45,6 +46,15 @@ if (this.state.key && _setting && typeof(_setting) === 'string') { _setting = this.decrypt(this.state.key, _setting) + + if (!_setting) { + notification.warning({ + top: 92, + message: '淇℃伅瑙f瀽澶辫触!', + duration: 5 + }) + this.props.onChange('') + } } this.setState({visible: true, setting: _setting || {}}) @@ -64,12 +74,7 @@ setting = JSON.parse(window.decodeURIComponent(window.atob(setting))) } catch (e) { - notification.warning({ - top: 92, - message: '淇℃伅瑙f瀽澶辫触!', - duration: 5 - }) - setting = {} + setting = null } return setting @@ -84,6 +89,20 @@ let _setting = this.state.setting if (_setting && typeof(_setting) === 'string') { _setting = this.decrypt(key, _setting) + + if (!_setting) { + const that = this + confirm({ + title: '淇℃伅瑙f瀽澶辫触!', + content: '鐐瑰嚮纭畾浼氭竻闄ら厤缃俊鎭紝鐐瑰嚮鍙栨秷鍙噸鏂拌緭鍏ppkey銆�', + onOk() { + that.setState({key: key, setting: {}, url: ''}) + that.props.onChange('') + }, + onCancel() {} + }) + return + } } this.setState({key: key, setting: _setting}) return @@ -118,11 +137,18 @@ this.props.onChange(content) this.setState({setting: message, url: values.interface, visible: false}) + + if (this.props.type !== 'develop') { + this.setState({key: ''}) + } }) } delKey = () => { + const { url } = this.state const { type } = this.props + + if (!url) return if (type === 'develop') { this.setState({setting: null, url: ''}) @@ -133,6 +159,15 @@ this.props.onChange('') } + cancel = () => { + const { type } = this.props + + if (type !== 'develop') { + this.setState({key: ''}) + } + this.setState({visible: false}) + } + render() { const { getFieldDecorator } = this.props.form const { url, visible, setting, key } = this.state @@ -140,7 +175,10 @@ return ( <div className="mk-key-wrap"> <TextArea value={url} rows={2} readOnly={true}/> - <div className="mk-key-edit"><EditOutlined onClick={this.editKey}/><DeleteOutlined onClick={this.delKey}/></div> + <div className="mk-key-edit"> + <EditOutlined onClick={this.editKey}/> + <DeleteOutlined className={!url ? 'disable' : ''} onClick={this.delKey}/> + </div> <Modal wrapClassName='mk-key-modal' visible={visible} @@ -148,7 +186,7 @@ maskClosable={false} width={650} onOk={this.handleConfirm} - onCancel={() => this.setState({visible: false})} + onCancel={this.cancel} destroyOnClose > {key && setting ? @@ -196,7 +234,7 @@ message: '涓嶅彲灏忎簬16浣嶏紒' } ] - })(<Input placeholder="璇疯緭鍏ppkey" autoComplete="off" />)} + })(<Input placeholder="璇疯緭鍏ョ洰鏍囩郴缁焌ppkey" autoComplete="off" />)} </Form.Item> <Form.Item label="鐢ㄦ埛鍚�"> {getFieldDecorator('username', { @@ -244,7 +282,7 @@ </Form.Item> </Form> : null} {!key ? <Form style={{marginTop: '20px', marginBottom: '50px'}}> - <Form.Item label="apptoken"> + <Form.Item label="appkey"> {getFieldDecorator('apptoken', { initialValue: '', rules: [ diff --git a/src/components/keyInterface/index.scss b/src/components/keyInterface/index.scss index 7753a5e..baf39c1 100644 --- a/src/components/keyInterface/index.scss +++ b/src/components/keyInterface/index.scss @@ -18,6 +18,10 @@ .anticon-delete { color: #f5222d; } + .anticon-delete.disable { + opacity: 0.5; + cursor: not-allowed; + } } } .mk-key-modal { diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx index d2529af..9241c6a 100644 --- a/src/menu/components/card/cardcellcomponent/index.jsx +++ b/src/menu/components/card/cardcellcomponent/index.jsx @@ -7,6 +7,7 @@ import { getCardCellForm } from './formconfig' import { getActionForm, getBaseTableActionForm } from '@/menu/components/share/actioncomponent/formconfig' +import Utils, { FuncUtils } from '@/utils/utils.js' import MKEmitter from '@/utils/events.js' import MenuUtils from '@/utils/utils-custom.js' import ElementForm from './elementform' @@ -629,6 +630,54 @@ }) } + /** + * @description 鍒涘缓鎸夐挳瀛樺偍杩囩▼ + */ + creatFunc = () => { + const menu = window.GLOB.customMenu + let _config = fromJS(this.props.cards).toJS() + + this.actionFormRef.handleConfirm().then(res => { + let btn = res // 鎸夐挳淇℃伅 + let newLText = '' // 鍒涘缓瀛樺偍杩囩▼sql + let DelText = '' // 鍒犻櫎瀛樺偍杩囩▼sql + + if (btn.intertype !== 'inner') return + + if (btn.OpenType === 'pop') { + let _param = { + funcName: btn.innerFunc, + name: _config.setting.tableName || '', + fields: btn.modal ? btn.modal.fields : [], + menuNo: menu.MenuNo + } + newLText = Utils.formatOptions(FuncUtils.getfunc(_param, btn, menu, _config)) + DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc)) + } else if (btn.OpenType === 'excelIn') { + let _param = { + funcName: btn.innerFunc, + menuNo: menu.MenuNo + } + newLText = Utils.formatOptions(FuncUtils.getexcelInfunc(_param, btn, menu)) + DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc)) + } else if (btn.OpenType === 'excelOut') { + newLText = Utils.formatOptions(FuncUtils.getTableFunc(btn.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql + DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc)) + } else { + let _param = { + funcName: btn.innerFunc, + name: _config.setting.tableName || '', + fields: '', + menuNo: menu.MenuNo + } + newLText = Utils.formatOptions(FuncUtils.getfunc(_param, btn, menu, _config)) + DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc)) + } + + this.refs.btnCreatFunc.exec(btn.innerFunc, newLText, DelText) + }) + } + getVerify = (card) => { const { cards } = this.props diff --git a/src/menu/components/card/data-card/options.jsx b/src/menu/components/card/data-card/options.jsx index c750cfc..8026bd2 100644 --- a/src/menu/components/card/data-card/options.jsx +++ b/src/menu/components/card/data-card/options.jsx @@ -3,7 +3,7 @@ /** * @description Wrap琛ㄥ崟閰嶇疆淇℃伅 */ -export default function (wrap, subtype, columns = [], id = '', supNodes = [], setting) { +export default function (wrap, subtype, columns = [], id = '', supNodes = [], setting, buttons = []) { let appType = sessionStorage.getItem('appType') let MenuType = '' let menu = window.GLOB.customMenu @@ -106,6 +106,7 @@ {field: 'goback', values: ['dynamic']}, {field: 'empty', values: ['dynamic', 'public']}, {field: 'jump', values: ['dynamic']}, + {field: 'autoExec', values: ['dynamic']}, {field: 'supModule', values: ['static']}, {field: 'publicId', values: ['public']}, ], @@ -314,6 +315,21 @@ }, { type: 'radio', + field: 'display', + label: '鏄剧ず鎺у埗', + initval: wrap.display || 'normal', + required: false, + options: [ + {value: 'normal', label: '姝e父鏄剧ず'}, + {value: 'hidden', label: '涓嶅彲瑙�'}, + ], + controlFields: [ + {field: 'empty', values: ['normal']}, + ], + forbid: subtype !== 'propcard' + }, + { + type: 'radio', field: 'empty', label: '绌哄�奸殣钘�', initval: wrap.empty || 'show', @@ -326,6 +342,16 @@ ], }, { + type: 'select', + field: 'autoExec', + label: '鑷姩鎵ц', + initval: wrap.autoExec || '', + tooltip: '鏁版嵁鏇存柊鏃惰嚜鍔ㄦ墽琛屾寜閽�傛敞锛氭鎸夐挳鎵ц鎴愬姛鍚庤皑鎱庨�夋嫨鍒锋柊椤癸紝閬垮厤閫犳垚寰幆鎵ц銆�', + required: false, + options: buttons, + forbid: subtype !== 'propcard' + }, + { type: 'radio', field: 'jump', label: '椤甸潰璺宠浆', diff --git a/src/menu/components/card/prop-card/index.jsx b/src/menu/components/card/prop-card/index.jsx index 5e91a50..909dfa3 100644 --- a/src/menu/components/card/prop-card/index.jsx +++ b/src/menu/components/card/prop-card/index.jsx @@ -2,7 +2,7 @@ import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' import { Popover, Modal } from 'antd' -import { PlusOutlined, SettingOutlined, EditOutlined, ToolOutlined, DeleteOutlined, FontColorsOutlined, ClockCircleOutlined } from '@ant-design/icons' +import { PlusOutlined, SettingOutlined, EditOutlined, ToolOutlined, DeleteOutlined, FontColorsOutlined, ClockCircleOutlined, HeatMapOutlined } from '@ant-design/icons' import asyncComponent from '@/utils/asyncComponent' import asyncIconComponent from '@/utils/asyncIconComponent' @@ -423,7 +423,20 @@ getWrapForms = () => { const { card } = this.state - return getWrapForm(card.wrap, card.subtype, card.columns, card.uuid) + let buttons = [] + + card.subcards.forEach(m => { + m.elements.forEach(n => { + if (n.eleType === 'button') { + buttons.push({ + value: n.uuid, + label: n.label + }) + } + }) + }) + + return getWrapForm(card.wrap, card.subtype, card.columns, card.uuid, null, null, buttons) } updateWrap = (res) => { @@ -514,6 +527,7 @@ <div className={(card.wrap.layout || 'grid') + '-layout float-' + (card.wrap.cardFloat || 'left') + ' select-' + card.wrap.selStyle}> {card.subcards.map(subcard => (<CardComponent key={subcard.uuid} cards={card} card={subcard} move={this.move} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))} </div> + {card.wrap.display === 'hidden' ? <HeatMapOutlined className="prop-hidden"/> : null} <div className="component-name"> <div className="center"> <div className="title">{card.name}</div> diff --git a/src/menu/components/card/prop-card/index.scss b/src/menu/components/card/prop-card/index.scss index b87a34f..b3fd307 100644 --- a/src/menu/components/card/prop-card/index.scss +++ b/src/menu/components/card/prop-card/index.scss @@ -88,6 +88,11 @@ border-bottom: 2px solid #1890ff!important; } } + .prop-hidden { + color: orange; + float: right; + margin: 5px; + } } .menu-prop-card-edit-box::after { display: block; diff --git a/src/menu/components/share/actioncomponent/index.jsx b/src/menu/components/share/actioncomponent/index.jsx index 1234964..82fe3f2 100644 --- a/src/menu/components/share/actioncomponent/index.jsx +++ b/src/menu/components/share/actioncomponent/index.jsx @@ -416,11 +416,7 @@ newLText = Utils.formatOptions(FuncUtils.getexcelInfunc(_param, btn, menu)) DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc)) } else if (btn.OpenType === 'excelOut') { - let _param = { - innerFunc: btn.innerFunc - } - - newLText = Utils.formatOptions(FuncUtils.getTableFunc(_param, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql + newLText = Utils.formatOptions(FuncUtils.getTableFunc(btn.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc)) } else { let _param = { diff --git a/src/menu/components/table/base-table/index.scss b/src/menu/components/table/base-table/index.scss index 017fbe0..36252f5 100644 --- a/src/menu/components/table/base-table/index.scss +++ b/src/menu/components/table/base-table/index.scss @@ -32,7 +32,7 @@ } .anticon-tool { position: absolute; - z-index: 2; + z-index: 5; font-size: 16px; right: 1px; top: 1px; diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx index 507b1ed..23ae166 100644 --- a/src/menu/datasource/verifycard/index.jsx +++ b/src/menu/datasource/verifycard/index.jsx @@ -39,6 +39,7 @@ defaultsql: '', // 榛樿Sql defaultSearch: '', systemScripts: [], + median: {}, visible: false, pvisible: false, reload: false, @@ -197,6 +198,7 @@ scripts, columns: config.columns ? fromJS(config.columns).toJS() : [], setting: _setting, + median: _setting, searches: search, defaultSearch: _search }) @@ -781,6 +783,7 @@ return col }), setting: res.data.setting, + median: res.data.setting, reload: true, pvisible: false }, () => { @@ -793,6 +796,7 @@ return col }), setting: res.data.setting, + median: res.data.setting, reload: true, pvisible: false }, () => { @@ -834,7 +838,7 @@ render() { const { config } = this.props - const { columns, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql, visible, pvisible, reload, script, scriptValue } = this.state + const { columns, median, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql, visible, pvisible, reload, script, scriptValue } = this.state return ( <div className="model-data-source-wrap"> @@ -853,6 +857,7 @@ columns={columns} setting={setting} scripts={scripts} + updateStatus={(res) => this.setState({median: {...res}})} wrappedComponentRef={(inst) => this.settingForm = inst} /> : null} </TabPane> @@ -876,7 +881,7 @@ 鑷畾涔夎剼鏈� {scripts.length ? <span className="count-tip">{scripts.length}</span> : null} </span> - } key="scripts" id="mk-scripts-tabpane"> + } key="scripts" disabled={median.interType !== 'system'} id="mk-scripts-tabpane"> {scripts.length ? <BorderOutlined className="full-scripts" onClick={() => { if (this.scriptsForm && (this.scriptsForm.state.editItem || (this.scriptsForm.props.form.getFieldValue('sql') && !/^\s+$/.test(this.scriptsForm.props.form.getFieldValue('sql'))))) { notification.warning({ diff --git a/src/menu/datasource/verifycard/settingform/index.jsx b/src/menu/datasource/verifycard/settingform/index.jsx index cdee544..419b015 100644 --- a/src/menu/datasource/verifycard/settingform/index.jsx +++ b/src/menu/datasource/verifycard/settingform/index.jsx @@ -15,6 +15,7 @@ class SettingForm extends Component { static propTpyes = { + updateStatus: PropTypes.func, config: PropTypes.object, // 缁勪欢閰嶇疆 setting: PropTypes.object, // 鏁版嵁婧愰厤缃� columns: PropTypes.array, // 鍒楄缃� @@ -157,6 +158,7 @@ if (key === 'sysInterface' && value === 'true') { this.props.form.setFieldsValue({interface: window.GLOB.mainSystemApi}) } + this.props.updateStatus(setting) } render() { diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx index 7bce4be..14185b5 100644 --- a/src/tabviews/custom/components/card/prop-card/index.jsx +++ b/src/tabviews/custom/components/card/prop-card/index.jsx @@ -116,6 +116,10 @@ _config.wrap.wrapClass = `${_config.wrap.selStyle} ${_config.wrap.cardType || ''} ${_config.wrap.scale || ''} ${_config.wrap.layout || 'grid'}-layout float-${_config.wrap.cardFloat || 'left'}` + if (_config.wrap.display === 'hidden') { + _config.style.display = 'none' + } + this.setState({ selected, sync: _sync, @@ -141,6 +145,9 @@ }, 200) } + if (_config.wrap.datatype === 'dynamic') { + this.autoExec() + } if (!_config.wrap.cardType && _data.$$uuid) { setTimeout(() => { this.transferLine() @@ -209,6 +216,7 @@ } else if (!config.wrap.cardType && _data.$$uuid) { this.transferLine() } + this.autoExec() }) } else if (config.setting.useMSearch && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) { this.setState({}, () => { @@ -235,6 +243,16 @@ } }) } + } + + autoExec = () => { + const { config, data } = this.state + + if (!config.wrap.autoExec || data.$$empty) return + + setTimeout(() => { + MKEmitter.emit('triggerBtnId', config.wrap.autoExec, [data]) + }, 200) } checkTopLine = () => { @@ -384,6 +402,7 @@ } else { this.transferLine() } + this.autoExec() }) if (config.timer && config.clearField) { diff --git a/src/templates/formtabconfig/index.jsx b/src/templates/formtabconfig/index.jsx index 038e1a2..028b214 100644 --- a/src/templates/formtabconfig/index.jsx +++ b/src/templates/formtabconfig/index.jsx @@ -679,7 +679,7 @@ } let _config = {...config, setting: setting} - let newLText = Utils.formatOptions(FuncUtils.getTableFunc(setting, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql + let newLText = Utils.formatOptions(FuncUtils.getTableFunc(setting.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql let DelText = Utils.formatOptions(FuncUtils.dropfunc(setting.innerFunc)) // 鍒犻櫎瀛樺偍杩囩▼sql this.refs.tableCreatFunc.exec(setting.innerFunc, newLText, DelText) diff --git a/src/templates/sharecomponent/actioncomponent/index.jsx b/src/templates/sharecomponent/actioncomponent/index.jsx index 976dd12..024cfc7 100644 --- a/src/templates/sharecomponent/actioncomponent/index.jsx +++ b/src/templates/sharecomponent/actioncomponent/index.jsx @@ -783,11 +783,7 @@ resolve(false) } } else if (btn.OpenType === 'excelOut') { - let _param = { - innerFunc: btn.innerFunc - } - - newLText = Utils.formatOptions(FuncUtils.getTableFunc(_param, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql + newLText = Utils.formatOptions(FuncUtils.getTableFunc(btn.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc)) resolve(true) diff --git a/src/templates/sharecomponent/settingcomponent/index.jsx b/src/templates/sharecomponent/settingcomponent/index.jsx index 7f47893..4886a07 100644 --- a/src/templates/sharecomponent/settingcomponent/index.jsx +++ b/src/templates/sharecomponent/settingcomponent/index.jsx @@ -84,7 +84,7 @@ this.settingRef.handleConfirm('loading').then(setting => { let res = this.resetSetting(setting, config.setting) let _config = {...config, setting: res} - let newLText = Utils.formatOptions(FuncUtils.getTableFunc(setting, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql + let newLText = Utils.formatOptions(FuncUtils.getTableFunc(setting.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql let DelText = Utils.formatOptions(FuncUtils.dropfunc(setting.innerFunc)) // 鍒犻櫎瀛樺偍杩囩▼sql this.refs.funcCreatComponent.exec(setting.innerFunc, newLText, DelText) diff --git a/src/utils/utils.js b/src/utils/utils.js index af68c88..434200c 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -2274,7 +2274,7 @@ * @description 鍒涘缓椤甸潰瀛樺偍杩囩▼ * @return {String} */ - static getTableFunc (param, menu, config) { + static getTableFunc (func = 'func', menu, config) { let form = '' let formParam = '' let _vars = ['bid', 'pageindex', 'pagesize', 'ordercol', 'ordertype', 'exceltype', 'septmenuno', 'lang', 'debug', 'loginuid', 'sessionuid', 'userid', 'errorcode', 'retmsg'] @@ -2329,7 +2329,7 @@ ` } - let Ltext = `create proc ${param.innerFunc} + let Ltext = `create proc ${func} ( /*${menu.MenuName}*/ @appkey nvarchar(50)='', @BID nvarchar(50)='',${formParam} @@ -2344,6 +2344,7 @@ @LoginUID nvarchar(50)='', @SessionUid nvarchar(50)='', @UserID nvarchar(50), + @dataM nvarchar(50), @ErrorCode nvarchar(50) out, @retmsg nvarchar(4000) out ) -- Gitblit v1.8.0