From 1a176e4bdba485301385caac1a29102e598d25cc Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 13 五月 2025 11:32:02 +0800 Subject: [PATCH] 2025-05-13 --- src/templates/sharecomponent/searchcomponent/index.jsx | 120 +++++++++++++++++++++++++---------------------------------- 1 files changed, 51 insertions(+), 69 deletions(-) diff --git a/src/templates/sharecomponent/searchcomponent/index.jsx b/src/templates/sharecomponent/searchcomponent/index.jsx index 3429ae2..a7ed6b8 100644 --- a/src/templates/sharecomponent/searchcomponent/index.jsx +++ b/src/templates/sharecomponent/searchcomponent/index.jsx @@ -1,14 +1,9 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Tooltip, Modal, notification, Switch } from 'antd' -import { QuestionCircleOutlined } from '@ant-design/icons' -import moment from 'moment' +import { Modal, notification, Switch } from 'antd' import Api from '@/api' -import Utils from '@/utils/utils.js' -import zhCN from '@/locales/zh-CN/model.js' -import enUS from '@/locales/en-US/model.js' import { getSearchForm } from '@/templates/zshare/formconfig' import asyncComponent from '@/utils/asyncComponent' import MKEmitter from '@/utils/events.js' @@ -28,7 +23,6 @@ } state = { - dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, searchlist: null, sqlVerifing: false, visible: false, @@ -46,28 +40,15 @@ }) } - // /** - // * @description 鐩戝惉鍒版悳绱㈡潯浠跺鍒舵椂锛岃Е鍙戞悳绱㈡潯浠剁紪杈� - // */ - // UNSAFE_componentWillReceiveProps (nextProps) { - // const { searchlist } = this.state - - // if (!is(fromJS(nextProps.config.search), fromJS(this.props.config.search)) && !is(fromJS(nextProps.config.search), fromJS(searchlist))) { - // let len = nextProps.config.search.length - // let item = nextProps.config.search[len - 1] - // if (item && item.focus) { - // this.handleSearch(item) - // } - // this.setState({searchlist: fromJS(nextProps.config.search).toJS()}) - // } - // } - componentDidMount () { MKEmitter.addListener('plusSearch', this.plusSearch) MKEmitter.addListener('revert', this.revert) } - revert = () => { + // dms-trans + revert = (id, type) => { + if (id !== this.props.config.uuid || type !== 'search') return + this.setState({searchlist: fromJS(this.props.config.search).toJS()}) } @@ -80,6 +61,18 @@ if (type === 'simple') { this.setState({ searchlist: [...searchlist, item], + }, () => { + this.handleSearch(item) + }) + } else if (type === 'replace') { + delete item.focus + this.setState({ + searchlist: searchlist.map(cell => { + if (cell.field && cell.field.toLowerCase() === item.field.toLowerCase()) { + return item + } + return cell + }), }, () => { this.handleSearch(item) }) @@ -115,6 +108,7 @@ * @description 鎼滅储鏉′欢缂栬緫锛岃幏鍙栨悳绱㈡潯浠惰〃鍗曚俊鎭� */ handleSearch = (card) => { + const { config } = this.props const { searchlist } = this.state let linkableFields = [] @@ -130,8 +124,8 @@ }) let columns = null - if (this.props.config.type === 'table') { - columns = this.props.config.columns.map(item => { + if (config.columns && config.columns.length) { + columns = config.columns.map(item => { return {key: item.uuid, text: item.field, value: item.field, label: item.label} }) } @@ -180,7 +174,6 @@ this.searchFormRef.handleConfirm().then(res => { let fieldrepet = false // 瀛楁閲嶅 - let labelrepet = false // 鎻愮ず鏂囧瓧閲嶅 _searchlist = _searchlist.filter(item => !item.origin || item.uuid === res.uuid) // 鍘婚櫎绯荤粺椤� @@ -208,8 +201,6 @@ if (setFields.length < itemFields.length + resFields.length && (res.type !== 'date' || item.type !== 'date')) { fieldrepet = true - } else if (item.label === res.label) { - labelrepet = true } } @@ -227,38 +218,19 @@ duration: 5 }) return - } else if (labelrepet) { - notification.warning({ - top: 92, - message: '鍚嶇О宸插瓨鍦�!', - duration: 5 - }) - return } - if (['checkcard', 'select', 'multiselect', 'link'].includes(res.type) && res.resourceType === '1' && /\s/.test(res.dataSource)) { + if (['checkcard', 'select', 'multiselect', 'link'].includes(res.type) && res.resourceType === '1' && res.database !== 'sso' && /\s/.test(res.dataSource)) { this.setState({ sqlVerifing: true }) - let param = { - func: 's_debug_sql', - exec_type: 'y', - LText: 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}'`) + let sql = `declare @mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20) + ${res.dataSource}` + sql = sql.replace(/@\$|\$@/ig, '') - 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.getLocalConfig(param).then(result => { - if (result.status) { + Api.sDebug(sql).then(result => { + if (result.status || result.ErrCode === '-2') { this.setState({ sqlVerifing: false, searchlist: _searchlist, @@ -290,20 +262,19 @@ */ deleteElement = (card) => { const { config } = this.props - const { dict } = this.state - let _this = this + let that = this confirm({ - content: dict['model.confirm'] + dict['model.delete'] + ` - ${card.label} 锛焋, + content: `纭畾鍒犻櫎 - ${card.label} 锛焋, onOk() { - let _searchlist = fromJS(_this.state.searchlist).toJS() + let _searchlist = fromJS(that.state.searchlist).toJS() _searchlist = _searchlist.filter(item => item.uuid !== card.uuid) - _this.setState({ + that.setState({ searchlist: _searchlist }, () => { - _this.props.updatesearch({...config, search: _searchlist}) + that.props.updatesearch({...config, search: _searchlist}) }) }, onCancel() {} @@ -331,7 +302,16 @@ this.setState({ setVisible: false }) - this.props.updatesearch({...config, setting: {...config.setting, ...res}}) + + let _config = null + + if (config.wrap) { // 鑷畾涔夐〉闈able + _config = {...config, wrap: {...config.wrap, ...res}} + } else { + _config = {...config, setting: {...config.setting, ...res}} + } + + this.props.updatesearch(_config) }) } @@ -358,15 +338,17 @@ render() { const { config } = this.props - const { dict, searchlist, visible, sqlVerifing, card, showField, setVisible } = this.state + const { searchlist, visible, sqlVerifing, card, showField, setVisible } = this.state + + let size = '' + if (config.wrap && config.wrap.searchSize) { + size = ' mk-order-' + config.wrap.searchSize + } return ( - <div className={'model-table-search-list length' + searchlist.length + (showField ? ' show-field' : '')}> - <Tooltip placement="bottomLeft" overlayClassName="middle" title="鍦ㄥ乏渚у伐鍏锋爮銆婃悳绱€�嬩腑锛岄�夋嫨瀵瑰簲鎼滅储妗嗘嫋鑷虫澶勬坊鍔狅紱鎴栫偣鍑绘寜閽�婃坊鍔犳悳绱㈡潯浠躲�嬫壒閲忔坊鍔狅紝閫夋嫨鎵归噺娣诲姞鏃讹紝闇�鎻愬墠閫夋嫨浣跨敤琛ㄣ��"> - <QuestionCircleOutlined style={{color: '#c49f47', position: 'relative', left: '-15px', top: '5px'}} /> - </Tooltip> + <div className={'model-table-search-list length' + searchlist.length + (showField ? ' show-field' : '') + size}> <FieldsComponent config={{uuid: config.uuid, search: searchlist}} type="search" /> - <Switch className="switch-field-show" checkedChildren={dict['model.switch.open']} unCheckedChildren={dict['model.switch.close']} defaultChecked={showField} onChange={this.onFieldChange} /> + <Switch className="switch-field-show" checkedChildren="寮�" unCheckedChildren="鍏�" defaultChecked={showField} onChange={this.onFieldChange} /> <DragElement list={searchlist} setting={config.wrap || config.setting} @@ -378,8 +360,9 @@ {/* 缂栬緫鎼滅储鏉′欢 */} <Modal title={card && card.copyType === 'search' ? '鎼滅储鏉′欢-澶嶅埗' : '鎼滅储鏉′欢-缂栬緫'} + wrapClassName="mk-scroll-modal" visible={visible} - width={850} + width={950} maskClosable={false} onOk={this.handleSubmit} confirmLoading={sqlVerifing} @@ -387,7 +370,6 @@ destroyOnClose > <SearchForm - dict={dict} card={this.state.card} formlist={this.state.formlist} inputSubmit={this.handleSubmit} -- Gitblit v1.8.0