From f45b2ad61211cf2821cdaab07676c7906c96410a Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 05 七月 2023 18:23:56 +0800 Subject: [PATCH] 2023-07-05 --- src/menu/datasource/verifycard/index.jsx | 99 ++++++++++++++++++++++++++++++++++++------------- 1 files changed, 73 insertions(+), 26 deletions(-) diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx index 0bf8108..2fe9dae 100644 --- a/src/menu/datasource/verifycard/index.jsx +++ b/src/menu/datasource/verifycard/index.jsx @@ -1,9 +1,10 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { fromJS } from 'immutable' -import { Form, Tabs, Popconfirm, notification, Modal, Typography, Spin, message, Button } from 'antd' +import { Form, Tabs, Popconfirm, notification, Modal, Typography, Spin, message, Button, Input } from 'antd' import { StopOutlined, CheckCircleOutlined, EditOutlined, SwapOutlined, DeleteOutlined, CopyOutlined, BorderOutlined, SnippetsOutlined } from '@ant-design/icons' import moment from 'moment' +import md5 from 'md5' import Api from '@/api' import Utils from '@/utils/utils.js' @@ -20,6 +21,7 @@ const { TabPane } = Tabs const { Paragraph } = Typography +const { Search } = Input const CodeMirror = asyncComponent(() => import('@/templates/zshare/codemirror')) const FieldsComponent = asyncComponent(() => import('@/templates/sharecomponent/fieldscomponent')) @@ -32,9 +34,11 @@ state = { columns: [], + debugId: '', subColumns: [], activeKey: 'setting', loading: false, + searchKey: '', initsql: '', // sql楠岃瘉鏃跺彉閲忓0鏄庡強璧嬪�� usefulfields: '', defaultsql: '', // 榛樿Sql @@ -60,6 +64,7 @@ inputType: 'input', editable: true, unique: true, + strict: true, copy: true, rules: [{ pattern: /^[\u4E00-\u9FA50-9a-zA-Z_]*$/ig, @@ -194,15 +199,22 @@ _search = _search.replace(/@\$@/ig, '') _search = _search ? 'where ' + _search : '' + let columns = config.columns ? fromJS(config.columns).toJS() : [] + let subColumns = config.subColumns ? fromJS(config.subColumns).toJS() : [] + + columns.reverse() + subColumns.reverse() this.setState({ scripts, - columns: config.columns ? fromJS(config.columns).toJS() : [], - subColumns: config.subColumns ? fromJS(config.subColumns).toJS() : [], + columns: columns, + subColumns: subColumns, setting: _setting, median: _setting, searches: search, - defaultSearch: _search + defaultSearch: _search, + searchKey: '', + debugId: _setting.debugId || '' }) this.getsysScript() @@ -273,7 +285,7 @@ values.uuid = Utils.getuuid() - this.setState({ columns: [...columns, values] }) + this.setState({ columns: [values, ...columns] }) } subColumnChange = (values, resolve) => { @@ -293,7 +305,7 @@ values.uuid = Utils.getuuid() - this.setState({ subColumns: [...subColumns, values] }) + this.setState({ subColumns: [values, ...subColumns] }) } deleteScript = (record) => { @@ -555,6 +567,25 @@ const { config, mainSearch } = this.props const { activeKey, setting, columns, subColumns, scripts } = this.state + if (config.subtype === 'dualdatacard') { + let arr = columns.map(col => col.field.toLowerCase()) + let _arr = [] + subColumns.forEach(col => { + if (arr.includes(col.field.toLowerCase())) { + _arr.push(col.field) + } + }) + + if (_arr.length > 0) { + notification.warning({ + top: 92, + message: '瀛愯〃涓瓧娈�' + _arr.join('銆�') + '涓庝富琛ㄥ瓧娈甸噸澶嶏紒', + duration: 5 + }) + return Promise.reject() + } + } + return new Promise((resolve, reject) => { if (activeKey === 'setting') { this.settingForm.handleConfirm().then(res => { @@ -626,7 +657,8 @@ } sqlverify = (resolve, reject, change = false, testScripts) => { - const { columns, setting, scripts, searches, defaultSearch } = this.state + const { config } = this.props + const { columns, setting, scripts, searches, defaultSearch, debugId } = this.state let _scripts = scripts.filter(item => item.status !== 'false') @@ -650,7 +682,14 @@ if ((setting.interType === 'system' && setting.execute !== 'false') || _scripts.length > 0) { let timestamp = moment().format('YYYY-MM-DD HH:mm:ss') - let r = SettingUtils.getDebugSql(setting, _scripts, columns, searches, defaultSearch, timestamp) + let r = SettingUtils.getDebugSql(setting, _scripts, columns, searches, defaultSearch, config.type, '2023-04-20 15:29:37') + + let _debugId = md5(r.sql) + + if (debugId === _debugId) { + resolve() + return + } if (r.errors) { notification.warning({ @@ -686,7 +725,9 @@ if (sumParam) { Api.genericInterface(sumParam).then(res => { if (res.status) { - resolve() + this.setState({debugId: _debugId}, () => { + resolve() + }) } else { reject() Modal.error({ @@ -695,7 +736,9 @@ } }) } else { - resolve() + this.setState({debugId: _debugId}, () => { + resolve() + }) } } else { reject() @@ -759,16 +802,7 @@ copyDatasource = () => { const { config } = this.props - const { columns, scripts } = this.state - - if (columns.length === 0) { - notification.warning({ - top: 92, - message: '璇锋坊鍔犲瓧娈甸泦!', - duration: 5 - }) - return - } + const { columns, subColumns, scripts } = this.state this.settingForm.handleConfirm().then(res => { delete res.supModule @@ -777,7 +811,7 @@ let source = { key: 'interface', type: 'line', - data: {setting: res, columns, scripts, pageable: false, format: 'array', name: res.name, status: 'false', type: 'interface', uuid: '' } + data: {setting: res, columns, subColumns, scripts, pageable: false, format: 'array', name: res.name, status: 'false', type: 'interface', uuid: '' } } try { @@ -825,6 +859,15 @@ } if (config.subtype !== 'basetable') { + let subColumns = [] + + if (config.subtype === 'dualdatacard' && res.data.subColumns) { + subColumns = res.data.subColumns.map(col => { + col.uuid = Utils.getuuid() + return col + }) + } + this.setState({ scripts: res.data.scripts.map(col => { col.uuid = Utils.getuuid() @@ -834,6 +877,7 @@ col.uuid = Utils.getuuid() return col }), + subColumns: subColumns, setting: res.data.setting, median: res.data.setting, reload: true, @@ -864,7 +908,7 @@ let n = [] columns.forEach(col => { - m.push(`${col.field}(${col.label})`) + m.push(`${col.field} ${col.datatype}`) n.push(col.field) }) @@ -885,7 +929,7 @@ let n = [] subColumns.forEach(col => { - m.push(`${col.field}(${col.label})`) + m.push(`${col.field} ${col.datatype}`) n.push(col.field) }) @@ -911,7 +955,7 @@ render() { const { config } = this.props - const { columns, subColumns, median, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql, visible, pvisible, reload, script, scriptValue } = this.state + const { columns, subColumns, median, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql, visible, pvisible, reload, script, scriptValue, searchKey } = this.state return ( <div className="model-data-source-wrap"> @@ -926,6 +970,7 @@ {!reload ? <SettingForm config={config} columns={columns} + subColumns={subColumns} setting={setting} scripts={scripts} updateStatus={(res) => this.setState({median: {...res}})} @@ -944,7 +989,7 @@ type="fields" updatefield={this.updatefields} /> - <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} type="datasourcefield" wrappedComponentRef={(inst) => this.datasource = inst} data={columns} columns={colColumns} onChange={(columns) => this.setState({columns})}/> + <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} searchKey={searchKey} type="datasourcefield" wrappedComponentRef={(inst) => this.datasource = inst} data={columns} columns={colColumns} onChange={(columns) => this.setState({columns})}/> </TabPane> : null} {config.subtype === 'dualdatacard' ? <TabPane tab={ <span> @@ -958,7 +1003,7 @@ type="fields" updatefield={this.updateSubfields} /> - <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} type="datasourcefield" wrappedComponentRef={(inst) => this.subdatasource = inst} data={subColumns} columns={colColumns} onChange={(subColumns) => this.setState({subColumns})}/> + <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} searchKey={searchKey} type="datasourcefield" wrappedComponentRef={(inst) => this.subdatasource = inst} data={subColumns} columns={colColumns} onChange={(subColumns) => this.setState({subColumns})}/> </TabPane> : null} <TabPane tab={ <span> @@ -968,6 +1013,7 @@ {config.type !== 'interface' && activeKey === 'setting' ? <SnippetsOutlined title="瀵煎叆鏁版嵁婧�" className="mk-paste-datasource" onClick={(e) => {e.stopPropagation();this.setState({pvisible: true})}}/> : null} {activeKey === 'columns' ? <CopyOutlined title="浠ラ�楀彿鎷兼帴褰㈠紡澶嶅埗瀛楁" className="mk-copy-fields" onClick={(e) => {e.stopPropagation();this.copyColumns()}}/> : null} {activeKey === 'subcolumns' ? <CopyOutlined title="浠ラ�楀彿鎷兼帴褰㈠紡澶嶅埗瀛楁" className="mk-copy-fields" onClick={(e) => {e.stopPropagation();this.copySubColumns()}}/> : null} + {activeKey === 'subcolumns' || activeKey === 'columns' ? <span onClick={(e) => {e.stopPropagation()}}><Search className="mk-search-fields" defaultValue={searchKey} allowClear onSearch={(val, e) => {e.stopPropagation();this.setState({searchKey: val})}} /></span> : null} </span> } key="scripts" disabled={median.interType !== 'system'} id="mk-scripts-tabpane"> {scripts.length ? <BorderOutlined className="full-scripts" onClick={() => { @@ -982,6 +1028,7 @@ this.setState({visible: true, script: null, scriptValue: ''}) }}/> : null} <CustomScriptsForm + type={config.type} setting={setting} searches={searches} defaultsql={defaultsql} -- Gitblit v1.8.0