From 34e7681fd12b1c4e4994d3bea1a553870e10bc50 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期六, 11 三月 2023 17:58:54 +0800 Subject: [PATCH] 2023-03-11 --- src/menu/datasource/verifycard/index.jsx | 153 ++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 133 insertions(+), 20 deletions(-) diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx index 4962810..dcb2c3d 100644 --- a/src/menu/datasource/verifycard/index.jsx +++ b/src/menu/datasource/verifycard/index.jsx @@ -32,6 +32,7 @@ state = { columns: [], + subColumns: [], activeKey: 'setting', loading: false, initsql: '', // sql楠岃瘉鏃跺彉閲忓0鏄庡強璧嬪�� @@ -197,6 +198,7 @@ this.setState({ scripts, columns: config.columns ? fromJS(config.columns).toJS() : [], + subColumns: config.subColumns ? fromJS(config.subColumns).toJS() : [], setting: _setting, median: _setting, searches: search, @@ -272,6 +274,26 @@ values.uuid = Utils.getuuid() this.setState({ columns: [...columns, values] }) + } + + subColumnChange = (values, resolve) => { + const { subColumns } = this.state + + let fields = subColumns.map(item => item.field.toLowerCase()) + if (fields.includes(values.field.toLowerCase())) { + notification.warning({ + top: 92, + message: '瀛楁宸插瓨鍦紒', + duration: 5 + }) + return + } + + resolve() + + values.uuid = Utils.getuuid() + + this.setState({ subColumns: [...subColumns, values] }) } deleteScript = (record) => { @@ -422,6 +444,23 @@ loading: false }) this.getdefaultSql() + } else if (activeKey === 'subcolumns') { + if (this.subdatasource && this.subdatasource.state.editingKey) { + notification.warning({ + top: 92, + message: '瀛楁鏈繚瀛橈紝璇蜂繚瀛樺悗鍒囨崲锛�', + duration: 5 + }) + this.setState({ + loading: false + }) + return + } + + this.setState({ + activeKey: val, + loading: false + }) } else if (activeKey === 'scripts') { let _loading = false if (this.scriptsForm && this.scriptsForm.state.editItem) { @@ -514,7 +553,26 @@ submitDataSource = () => { const { config, mainSearch } = this.props - const { activeKey, setting, columns, scripts } = this.state + 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') { @@ -536,7 +594,7 @@ defaultSearch: _search, setting: res }, () => { - this.sqlverify(() => { resolve({setting: res, columns, scripts }) }, reject, false) + this.sqlverify(() => { resolve({setting: res, columns, subColumns, scripts }) }, reject, false) }) }, () => { reject() @@ -551,7 +609,18 @@ reject() return } - this.sqlverify(() => { resolve({setting, columns, scripts }) }, reject, false) + this.sqlverify(() => { resolve({setting, columns, subColumns, scripts }) }, reject, false) + } else if (activeKey === 'subcolumns') { + if (this.subdatasource && this.subdatasource.state.editingKey) { + notification.warning({ + top: 92, + message: '瀛楁鏈繚瀛橈紝璇蜂繚瀛樺悗鎻愪氦锛�', + duration: 5 + }) + reject() + return + } + this.sqlverify(() => { resolve({setting, columns, subColumns, scripts }) }, reject, false) } else if (activeKey === 'scripts') { let _loading = false if (this.scriptsForm && this.scriptsForm.state.editItem) { @@ -570,7 +639,7 @@ return } - this.sqlverify(() => { resolve({setting, columns, scripts }) }, reject, false) + this.sqlverify(() => { resolve({setting, columns, subColumns, scripts }) }, reject, false) } }) } @@ -701,18 +770,15 @@ }) } + updateSubfields = (columns) => { + this.setState({ + subColumns: columns + }) + } + 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 @@ -721,7 +787,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 { @@ -769,6 +835,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() @@ -778,6 +853,7 @@ col.uuid = Utils.getuuid() return col }), + subColumns: subColumns, setting: res.data.setting, median: res.data.setting, reload: true, @@ -823,6 +899,27 @@ message.success('澶嶅埗鎴愬姛銆�') } + copySubColumns = () => { + const { subColumns } = this.state + let m = [] + let n = [] + + subColumns.forEach(col => { + m.push(`${col.field}(${col.label})`) + n.push(col.field) + }) + + let oInput = document.createElement('input') + oInput.value = `/*${m.join(',')}*/ + ${n.join(',')}` + document.body.appendChild(oInput) + oInput.select() + document.execCommand('Copy') + document.body.removeChild(oInput) + + message.success('澶嶅埗鎴愬姛銆�') + } + /** * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊 */ @@ -834,7 +931,7 @@ render() { const { config } = this.props - const { columns, 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 } = this.state return ( <div className="model-data-source-wrap"> @@ -844,13 +941,12 @@ <TabPane tab={ <span> 鏁版嵁婧� - {config.type !== 'interface' ? <CopyOutlined title="澶嶅埗鏁版嵁婧�" className="mk-copy-datasource" onClick={this.copyDatasource}/> : null} - {config.type !== 'interface' ? <SnippetsOutlined title="瀵煎叆鏁版嵁婧�" className="mk-paste-datasource" onClick={() => this.setState({pvisible: true})}/> : null} </span> } key="setting"> {!reload ? <SettingForm config={config} columns={columns} + subColumns={subColumns} setting={setting} scripts={scripts} updateStatus={(res) => this.setState({median: {...res}})} @@ -861,21 +957,38 @@ <span> 瀛楁闆� {columns.length ? <span className="count-tip">{columns.length}</span> : null} - <CopyOutlined title="浠ラ�楀彿鎷兼帴褰㈠紡澶嶅埗瀛楁" className="mk-copy-fields" onClick={this.copyColumns}/> </span> } key="columns"> <ColForm columnChange={this.columnChange}/> <FieldsComponent - config={{...config, columns}} + config={{columns}} 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})}/> </TabPane> : null} + {config.subtype === 'dualdatacard' ? <TabPane tab={ + <span> + 瀛愯〃瀛楁闆� + {subColumns.length ? <span className="count-tip">{subColumns.length}</span> : null} + </span> + } key="subcolumns"> + <ColForm columnChange={this.subColumnChange}/> + <FieldsComponent + config={{columns: subColumns}} + 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})}/> + </TabPane> : null} <TabPane tab={ <span> 鑷畾涔夎剼鏈� {scripts.length ? <span className="count-tip">{scripts.length}</span> : null} + {config.type !== 'interface' && activeKey === 'setting' ? <CopyOutlined title="澶嶅埗鏁版嵁婧�" className="mk-copy-datasource" onClick={(e) => {e.stopPropagation();this.copyDatasource()}}/> : null} + {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} </span> } key="scripts" disabled={median.interType !== 'system'} id="mk-scripts-tabpane"> {scripts.length ? <BorderOutlined className="full-scripts" onClick={() => { -- Gitblit v1.8.0