From fdce913ce7b9d55c34a2abd7a94ee377a4869b9a Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 21 三月 2025 19:57:24 +0800 Subject: [PATCH] 2025-03-21 --- src/menu/components/share/pastecomponent/index.jsx | 245 ++++++++++++++++++++++++++++++++++++------------ 1 files changed, 181 insertions(+), 64 deletions(-) diff --git a/src/menu/components/share/pastecomponent/index.jsx b/src/menu/components/share/pastecomponent/index.jsx index 95ffb34..4bb09c2 100644 --- a/src/menu/components/share/pastecomponent/index.jsx +++ b/src/menu/components/share/pastecomponent/index.jsx @@ -1,12 +1,16 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { fromJS } from 'immutable' -import { Icon, Modal, notification } from 'antd' +import { Modal, notification } from 'antd' +import { SnippetsOutlined } from '@ant-design/icons' import Utils from '@/utils/utils.js' +import MKEmitter from '@/utils/events.js' +import MenuUtils from '@/utils/utils-custom.js' import asyncComponent from '@/utils/asyncComponent' -import './index.scss' +// import './index.scss' +const { confirm } = Modal const PasteForm = asyncComponent(() => import('@/templates/zshare/pasteform')) class PasteController extends Component { @@ -19,102 +23,182 @@ visible: false } - handleMenuClick = () => { - this.setState({visible: true}) - } + resetconfig = (item, config) => { + let _uuid = Utils.getuuid() - resetconfig = (item) => { - item.uuid = Utils.getuuid() + if (item.uuid) { + item.uuid = _uuid + } - if (item.copyType === 'cardcell') { + if (item.copyType === 'action') { + MenuUtils.resetBtn(item, _uuid) + } else if (item.copyType === 'cardcell' && config.subtype === 'datacard') { item.setting = item.setting || {} + item.$cardType = 'extendCard' item.setting.width = item.setting.width || 6 if (item.elements) { item.elements = item.elements.map(cell => { + if (cell.datatype === 'dynamic') { + cell.datatype = 'static' + } cell.uuid = Utils.getuuid() + + if (cell.eleType === 'button') { + MenuUtils.resetBtn(cell, _uuid) + } + return cell + }) + } + if (item.backElements) { + item.backElements = item.backElements.map(cell => { + if (cell.datatype === 'dynamic') { + cell.datatype = 'static' + } + cell.uuid = Utils.getuuid() + + if (cell.eleType === 'button') { + MenuUtils.resetBtn(cell, _uuid) + } + return cell + }) + } + } else if (item.copyType === 'cardcell') { + item.setting = item.setting || {} + item.setting.width = item.setting.width || 6 + delete item.$cardType + + if (config.type === 'carousel') { + delete item.setting.linkbtn + delete item.backElements + } + + if (item.elements) { + item.elements = item.elements.map(cell => { + cell.uuid = Utils.getuuid() + if (cell.eleType === 'button') { + MenuUtils.resetBtn(cell, _uuid) + } return cell }) } if (item.backElements) { item.backElements = item.backElements.map(cell => { cell.uuid = Utils.getuuid() + if (cell.eleType === 'button') { + MenuUtils.resetBtn(cell, _uuid) + } return cell }) } - } else if (item.copyType === 'table') { - let loopCol = (col) => { - col.subcols = col.subcols.map(c => { - c.uuid = Utils.getuuid() + } else if (item.copyType === 'cols') { + let loopCol = (cols) => { + return cols.map(col => { + col.uuid = Utils.getuuid() - if (c.type === 'colspan' && c.subcols) { - c = loopCol(c) - } else if (c.type === 'custom' && c.elements) { - c.elements = c.elements.map(cell => { + if (col.type === 'action') { + col.type = 'custom' + } + + if (col.type === 'colspan' && col.subcols) { + col.subcols = loopCol(col.subcols) + } else if (col.type === 'custom' && col.elements) { + col.elements = col.elements.map(cell => { cell.uuid = Utils.getuuid() - return cell - }) - } else if (c.type === 'action' && c.elements) { - c.elements = c.elements.map(cell => { - cell.uuid = Utils.getuuid() + if (cell.eleType === 'button') { + MenuUtils.resetBtn(cell, _uuid) + } return cell }) } - return c - }) - - return col - } - - if (item.type === 'colspan' && item.subcols) { - item = loopCol(item) - } else if (item.type === 'custom' && item.elements) { - item.elements = item.elements.map(cell => { - cell.uuid = Utils.getuuid() - return cell - }) - } else if (item.type === 'action' && item.elements) { - item.elements = item.elements.map(cell => { - cell.uuid = Utils.getuuid() - return cell + return col }) } + + item.cols = loopCol(item.cols) } return item } + extra = (res) => { + let config = fromJS(this.props.config).toJS() + + if (res.copyType === 'mk_actions') { + config.action = res.action + this.props.updateConfig(config) + + setTimeout(() => { + MKEmitter.emit('revertBtn', config.uuid) + }, 30) + } else if (res.copyType === 'mk_searches') { + config.search = res.search + this.props.updateConfig(config) + + setTimeout(() => { + MKEmitter.emit('revert', config.uuid, 'search') + }, 30) + } else if (res.copyType === 'mk_fields') { + config.columns = res.columns + this.props.updateConfig(config) + } else if (res.copyType === 'mk_cols') { + config.cols = res.cols + this.props.updateConfig(config) + } else if (res.copyType === 'mk_setting') { + config.setting = res.setting + this.props.updateConfig(config) + } + console.log(config) + this.setState({visible: false}) + } + pasteSubmit = () => { const { options } = this.props this.pasteFormRef.handleConfirm().then(res => { - if (!options.includes(res.copyType)) { - notification.warning({ - top: 92, - message: '閰嶇疆淇℃伅鏍煎紡閿欒锛�', - duration: 5 - }) + if (/^mk_/.test(res.copyType)) { // dms-trans + this.extra(res) return + } + if (!options.includes(res.copyType)) { + notification.warning({ top: 92, message: '閰嶇疆淇℃伅鏍煎紡閿欒锛�', duration: 5 }) + return + } + + if (!this.props.config) { + this.props.updateConfig(res) + this.setState({visible: false}) + return + } + + if (res.copyType === 'editcols') { + res.copyType = 'cols' } let type = res.copyType let config = fromJS(this.props.config).toJS() - res = this.resetconfig(res) + res = this.resetconfig(res, config) delete res.copyType - if (type === 'action') { - config.action = config.action || [] - config.action = config.action.filter(item => !item.origin) - - config.action.push(res) + if (config.type === 'form') { + this.props.updateConfig(res) + this.setState({visible: false}) + return + } else if (type === 'action') { + if (res.style) { + delete res.style.width + delete res.style.float + } + if (['line', 'bar', 'scatter'].includes(config.type) && !['excelOut', 'excelIn'].includes(res.OpenType)) { + notification.warning({ top: 92, message: '鍥捐〃涓笉鏀寔姝ょ被鎸夐挳锛�', duration: 5 }) + return + } + MKEmitter.emit('addButton', config.uuid, res) } else if (type === 'search' || type === 'form') { - config.search = config.search || [] - config.search = config.search.filter(item => !item.origin) - - let keys = config.search.map(item => item.field.toLowerCase()) + let keys = config.search.map(item => item.field ? item.field.toLowerCase() : '') if (type === 'form') { - if (['number', 'switch', 'textarea', 'checkcard', 'fileupload', 'hint', 'color', 'funcvar'].includes(res.type)) { + if (['number', 'switch', 'textarea', 'fileupload', 'hint', 'color', 'funcvar'].includes(res.type)) { res.type = 'text' } else if (res.type === 'radio') { res.type = 'select' @@ -125,21 +209,54 @@ } } + this.setState({visible: false}) if (res.field && keys.includes(res.field.toLowerCase())) { - notification.warning({ - top: 92, - message: '鎼滅储瀛楁宸插瓨鍦紒', - duration: 5 + confirm({ + title: '鎼滅储瀛楁宸插瓨鍦紒', + okText: '鐭ラ亾浜�', + cancelText: '鏇挎崲', + onOk() {}, + onCancel() { + MKEmitter.emit('plusSearch', config.uuid, res, 'replace') + } }) - return + } else { + MKEmitter.emit('plusSearch', config.uuid, res, 'simple') } - - config.search.push(res) + return } else if (type === 'cardcell') { config.subcards.push(res) + } else if (type === 'menucell') { + config.subMenus.push(res) + } else if (type === 'cols') { + config.cols = config.cols.filter(col => !col.origin) + + if ((config.subtype === 'normaltable' || config.subtype === 'editable') && res.cols.length === 1) { + config.cols.push(...res.cols) + } else { + let keys = config.cols.map(col => (col.field || '$empty')) + + let cols = [] + res.cols.forEach(col => { + if (!col.field || !keys.includes(col.field)) { + cols.push(col) + } + }) + + if (cols.length === 0) { + notification.warning({ + top: 92, + message: '鏄剧ず鍒楀凡瀛樺湪锛�', + duration: 5 + }) + return + } else { + config.cols.push(...cols) + } + } } - this.props.updateConfig(config) + this.props.updateConfig(config, type) this.setState({visible: false}) notification.success({ @@ -155,7 +272,7 @@ return ( <div style={{display: 'inline-block'}}> - <Icon type="snippets" style={{color: 'purple'}} onClick={() => {this.setState({visible: true})}} /> + <SnippetsOutlined style={{color: 'purple'}} onClick={() => {this.setState({visible: true})}} /> <Modal title="绮樿创" visible={visible} -- Gitblit v1.8.0