From 54d01e6ef9ac31f10de4a0e92824eba50b77eda6 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 27 九月 2021 18:40:51 +0800 Subject: [PATCH] 2021-09-27 --- src/templates/sharecomponent/fieldscomponent/index.jsx | 320 ++++++++++++++++++++--------------------------------- 1 files changed, 120 insertions(+), 200 deletions(-) diff --git a/src/templates/sharecomponent/fieldscomponent/index.jsx b/src/templates/sharecomponent/fieldscomponent/index.jsx index 137071c..8ae766f 100644 --- a/src/templates/sharecomponent/fieldscomponent/index.jsx +++ b/src/templates/sharecomponent/fieldscomponent/index.jsx @@ -8,6 +8,7 @@ import enUS from '@/locales/en-US/model.js' import EditCard from './editcard' +import MKEmitter from '@/utils/events.js' import './index.scss' class FieldsComponent extends Component { @@ -20,8 +21,9 @@ state = { dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, appType: sessionStorage.getItem('appType'), - fields: [], // 瀛楁闆� - tableVisible: false, // 妯℃�佹鎺у埗 + fields: [], // 瀛楁闆� + visible: false, // 妯℃�佹鎺у埗 + selectCards: [] } queryField = () => { @@ -49,7 +51,7 @@ config.search.forEach(item => { if (columns.has(item.field.toLowerCase())) { let _datatype = columns.get(item.field.toLowerCase()).datatype - columns.set(item.field.toLowerCase(), {...item, selected: true, datatype: _datatype}) + columns.set(item.field.toLowerCase(), {...item, origin: true, datatype: _datatype}) } }) } else if (type === 'columns') { @@ -57,248 +59,171 @@ config.columns.forEach(item => { if (item.field && columns.has(item.field.toLowerCase())) { let _datatype = columns.get(item.field.toLowerCase()).datatype - columns.set(item.field.toLowerCase(), {...item, selected: true, datatype: _datatype}) + columns.set(item.field.toLowerCase(), {...item, origin: true, datatype: _datatype}) } }) } else if (type === 'fields') { config.columns.forEach(item => { if (columns.has(item.field.toLowerCase())) { let _datatype = columns.get(item.field.toLowerCase()).datatype - columns.set(item.field.toLowerCase(), {...item, selected: true, datatype: _datatype}) + columns.set(item.field.toLowerCase(), {...item, origin: true, datatype: _datatype}) } }) } else if (type === 'form') { config.fields.forEach(item => { if (item.field && columns.has(item.field.toLowerCase())) { let _datatype = columns.get(item.field.toLowerCase()).datatype - columns.set(item.field.toLowerCase(), {...item, selected: true, datatype: _datatype}) + columns.set(item.field.toLowerCase(), {...item, origin: true, datatype: _datatype}) } }) } // 鏄剧ず瀛楁闆嗗脊绐� this.setState({ - tableVisible: true, + visible: true, + selectCards: [], fields: [...columns.values()] }) } addFieldSubmit = () => { const { type } = this.props + const { selectCards, fields } = this.state // 瀛楁闆嗕负绌猴紝鍏抽棴寮圭獥 - if (!this.state.fields || this.state.fields.length === 0) { - this.setState({ - tableVisible: false - }) + if (!fields || fields.length === 0) { + this.setState({ visible: false }) } let config = fromJS(this.props.config).toJS() // 鑾峰彇宸查�夊瓧娈甸泦鍚� - let cards = this.refs.searchcard.state.selectCards + let cards = selectCards let columnsMap = new Map() cards.forEach(card => { columnsMap.set(card.field.toLowerCase(), card) }) let items = [] + let keys = [] if (type === 'search') { - config.search.forEach(item => { - if (columnsMap.has(item.field.toLowerCase())) { - let cell = columnsMap.get(item.field.toLowerCase()) - - if (cell.selected && cell.type === item.type) { // 鏁版嵁鏈慨鏀� - items.push(item) - } else if (cell.selected) { // 鏁版嵁绫诲瀷淇敼 - item.initval = '' - if (cell.type === 'select') { - item.match = '=' - } else if (cell.type === 'daterange') { - item.initval = '[30, 0]' - item.match = 'between' - } else { - cell.type = 'text' - item.match = 'like' - } - - item.type = cell.type - items.push(item) - } - columnsMap.delete(item.field.toLowerCase()) - } else if (!item.origin) { - items.push(item) - } - }) - - let _columns = [...columnsMap.values()] - - _columns.forEach(item => { - if (item.selected) { - let _match = '' - if (item.type === 'select') { - _match = '=' - } else if (item.type === 'daterange') { - _match = 'between' - } else { - item.type = 'text' - _match = 'like' - } - - let newcard = { - uuid: Utils.getuuid(), - label: item.label, - field: item.field, - initval: '', - type: item.type, - resourceType: '0', - setAll: 'false', - options: [], - orderType: 'asc', - match: _match, - display: 'dropdown' - } - - items.push(newcard) - } - }) - config.search = items - } else if (type === 'columns') { - config.columns.forEach(item => { - if (item.field && columnsMap.has(item.field.toLowerCase())) { - let cell = columnsMap.get(item.field.toLowerCase()) - - if (cell.selected) { - items.push(item) - } - columnsMap.delete(item.field.toLowerCase()) - } else if (!item.origin) { - items.push(item) - } - }) - - let _columns = [...columnsMap.values()] - - _columns.forEach(item => { - if (item.selected) { - let newcard = { - uuid: Utils.getuuid(), - Align: 'left', - label: item.label, - field: item.field, - Hide: 'false', - IsSort: item.type === 'picture' ? 'false' : 'true', - type: item.type, - Width: 120 - } - - if (item.type === 'number') { - newcard.decimal = item.decimal - } else { - newcard.fieldlength = item.length || 50 - } - - items.push(newcard) - } - }) - config.columns = items - } else if (type === 'fields') { - config.columns.forEach(item => { - if (columnsMap.has(item.field.toLowerCase())) { - let cell = columnsMap.get(item.field.toLowerCase()) - - if (cell.selected) { - items.push(item) - } - columnsMap.delete(item.field.toLowerCase()) + selectCards.forEach(item => { + let _match = '' + let initval = '' + if (item.type === 'select') { + _match = '=' + } else if (item.type === 'daterange') { + initval = '[30, 0]' + _match = 'between' } else { - items.push(item) + item.type = 'text' + _match = 'like' } + + let newcard = { + uuid: Utils.getuuid(), + label: item.label, + field: item.field, + initval: initval, + type: item.type, + resourceType: '0', + setAll: 'false', + options: [], + orderType: 'asc', + match: _match, + display: 'dropdown' + } + + items.push(newcard) + keys.push(item.field.toLowerCase()) }) + MKEmitter.emit('plusSearch', config.uuid, items, 'multil') + } else if (type === 'columns') { + selectCards.forEach(item => { + let newcard = { + uuid: Utils.getuuid(), + Align: 'left', + label: item.label, + field: item.field, + Hide: 'false', + IsSort: item.type === 'picture' ? 'false' : 'true', + type: item.type, + Width: 120 + } - let _columns = [...columnsMap.values()] + if (item.type === 'number') { + newcard.decimal = item.decimal + } else { + newcard.fieldlength = item.length || 50 + } - _columns.forEach(item => { + items.push(newcard) + keys.push(item.field.toLowerCase()) + }) + MKEmitter.emit('plusColumns', config.uuid, items) + } else if (type === 'fields') { + items = [...config.columns] + + selectCards.forEach(item => { let _t = item.$datatype || (item.type === 'number' ? 'Decimal(18,0)' : 'Nvarchar(50)') - if (item.selected) { - let newcard = { - uuid: Utils.getuuid(), - label: item.label, - field: item.field, - datatype: _t - } + let newcard = { + uuid: Utils.getuuid(), + label: item.label, + field: item.field, + datatype: _t + } + items.push(newcard) + keys.push(item.field.toLowerCase()) + }) - items.push(newcard) - } - }) + this.props.updatefield(items) } else if (type === 'form') { - config.fields.forEach(item => { - if (item.field && columnsMap.has(item.field.toLowerCase())) { - let cell = columnsMap.get(item.field.toLowerCase()) - - if (cell.selected && cell.type === item.type) { // 鏁版嵁閫夋嫨鐘舵�佸強绫诲瀷鏈慨鏀规椂锛岀洿鎺ユ坊鍔� - items.push(item) - } else if (cell.selected) { // 鏁版嵁绫诲瀷淇敼鏃讹紝閲嶇疆绫诲瀷鍙婂垵濮嬪�� - item.type = cell.type - item.initval = '' - items.push(item) - } - columnsMap.delete(item.field.toLowerCase()) - } else if (!item.origin) { // 杩囨护绀轰緥椤� - items.push(item) - } - }) - - let _columns = [...columnsMap.values()] let lastItem = config.fields[config.fields.length - 1] let span = this.state.appType === 'mob' ? 24 : 12 if (lastItem && lastItem.span) { span = lastItem.span } - _columns.forEach(item => { // 寰幆娣诲姞鏂板瀛楁 - if (item.selected) { - let newcard = { - uuid: Utils.getuuid(), - label: item.label, - field: item.field, - initval: '', - type: item.type, - resourceType: '0', - setAll: 'false', - span: span, - labelwidth: 33.3, - options: [], - dataSource: '', - decimal: item.decimal, - orderType: 'asc', - readonly: 'false', - required: 'true' - } - - items.push(newcard) + selectCards.forEach(item => { // 寰幆娣诲姞鏂板瀛楁 + let newcard = { + uuid: Utils.getuuid(), + label: item.label, + field: item.field, + initval: '', + type: item.type, + resourceType: '0', + setAll: 'false', + span: span, + labelwidth: 33.3, + options: [], + dataSource: '', + decimal: item.decimal, + orderType: 'asc', + readonly: 'false', + required: 'true' } + + items.push(newcard) + keys.push(item.field.toLowerCase()) }) - - config.fields = items + + this.props.plusFields(items) } - if (type === 'search' || type === 'columns' || type === 'form') { - this.props.updatefield(config) - - notification.success({ - top: 92, - message: '鎿嶄綔鎴愬姛', - duration: 2 + this.setState({ + selectCards: [], + fields: fromJS(fields).toJS().map(cell => { + if (keys.includes(cell.field.toLowerCase())) { + cell.origin = true + } + return cell }) - } else if (type === 'fields') { - this.props.updatefield(items) + }) - notification.success({ - top: 92, - message: '鎿嶄綔鎴愬姛', - duration: 2 - }) - } + notification.success({ + top: 92, + message: '鎿嶄綔鎴愬姛', + duration: 2 + }) } shouldComponentUpdate (nextProps, nextState) { @@ -314,6 +239,10 @@ } } + onChange = (selectCards) => { + this.setState({selectCards}) + } + render() { const { type } = this.props const { dict, fields } = this.state @@ -325,24 +254,15 @@ <Modal wrapClassName="model-table-fieldmanage-modal" title={dict['model.edit']} - visible={this.state.tableVisible} + visible={this.state.visible} width={'65vw'} maskClosable={false} cancelText={dict['model.close']} onOk={this.addFieldSubmit} - onCancel={() => { // 鍙栨秷娣诲姞 - this.setState({ - tableVisible: false - }) - }} + onCancel={() => this.setState({ visible: false })} destroyOnClose > - {fields.length > 0 ? - <EditCard data={fields} ref="searchcard" type={type} dict={dict} /> : null - } - {(!fields || fields.length === 0) && - <Empty /> - } + {fields.length > 0 ? <EditCard data={fields} onChange={this.onChange} type={type} /> : <Empty />} </Modal> </div> ) -- Gitblit v1.8.0