From b883ae5d7d46fc7a3503236f16a250c2264ea7c7 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 29 九月 2022 17:45:25 +0800 Subject: [PATCH] 2022-09-29 --- src/menu/components/share/usercomponent/index.jsx | 220 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 168 insertions(+), 52 deletions(-) diff --git a/src/menu/components/share/usercomponent/index.jsx b/src/menu/components/share/usercomponent/index.jsx index ab376c6..429e0a8 100644 --- a/src/menu/components/share/usercomponent/index.jsx +++ b/src/menu/components/share/usercomponent/index.jsx @@ -1,27 +1,29 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Icon, Modal, notification } from 'antd' +import { Modal, notification } from 'antd' +import { UserOutlined } from '@ant-design/icons' import html2canvas from 'html2canvas' import Api from '@/api' import Utils from '@/utils/utils.js' +import options from '@/store/options.js' import zhCN from '@/locales/zh-CN/model.js' import enUS from '@/locales/en-US/model.js' import UserForm from './settingform' import MKEmitter from '@/utils/events.js' import './index.scss' -class DataSource extends Component { +class UserComponent extends Component { static propTpyes = { - btnlog: PropTypes.array, - handlelog: PropTypes.func + config: PropTypes.object } state = { - dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, + dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, visible: false, - loading: false + loading: false, + name: '', } shouldComponentUpdate (nextProps, nextState) { @@ -29,59 +31,174 @@ } trigger = () => { + const { config } = this.props + this.setState({ visible: true, - loading: false + loading: false, + name: window.GLOB.UserComponentMap.get(config.uuid) || config.name || '' }) + } + + getUserComponent = () => { + let config = fromJS(this.props.config).toJS() + let _config = {} + + _config.wrap = config.wrap || {} + _config.type = config.type || '' + _config.subtype = config.subtype || '' + _config.style = config.style || {} + _config.subcards = config.subcards || [] + _config.headerStyle = config.headerStyle || {} + _config.action = config.action || [] + _config.search = config.search || [] + _config.cols = config.cols || [] + _config.plot = config.plot || {} + _config.html = config.html || '' + _config.css = config.css || '' + _config.js = config.js || '' + + _config.width = _config.wrap.width || _config.plot.width || config.width || 24 + + _config.subcards = _config.subcards.map(card => { + if (card.elements) { + card.elements = card.elements.map(item => this.resetElement(item)) + } + if (card.backElements) { + card.backElements = card.backElements.map(item => this.resetElement(item)) + } + return card + }) + _config.action = _config.action.map(item => { + item.verify = null + return item + }) + _config.search = _config.search.map(item => { + if (item.resourceType === '1') { + item.resourceType = '0' + item.dataSource = '' + item.valueText = '' + item.valueText = '' + item.options = '' + } + item.blacklist = [] + return item + }) + + _config.cols = _config.cols.map(col => { + if (col.type === 'colspan' && col.subcols) { + col = this.loopCol(col) + } else if (col.type === 'custom' && col.elements) { + col.elements = col.elements.map(cell => this.resetElement(cell)) + } else if (col.type === 'action' && col.elements) { + col.elements = col.elements.map(cell => { + cell.verify = null + return cell + }) + } + col.marks = null + return col + }) + + return _config + } + + loopCol = (col) => { + col.subcols = col.subcols.map(c => { + if (c.type === 'colspan' && c.subcols) { + c = this.loopCol(c) + } else if (c.type === 'custom' && c.elements) { + c.elements = c.elements.map(cell => this.resetElement(cell)) + } + c.marks = null + return c + }) + + return col + } + + resetElement = (item) => { + item.marks = null + item.verify = null + + if (item.datatype === 'dynamic') { + if (item.eleType === 'icon') { + item.tooltip = item.field + } else if (item.eleType === 'slider') { + item.value = 50 + } else { + item.value = item.field + } + + item.datatype = 'static' + item.field = '' + } + if (item.link === 'dynamic') { + item.link = 'static' + } + return item } submit = () => { const { config } = this.props this.verifyRef.handleConfirm().then(res => { - this.setState({loading: true}) document.getElementsByClassName('menu-view')[0].classList.add('saving') - - html2canvas(document.getElementById(config.uuid)).then(canvas => { - let img = canvas.toDataURL('image/png') // 鑾峰彇鐢熸垚鐨勫浘鐗� - Api.fileuploadbase64(img, 'cloud').then(result => { - if (result.status) { - Api.getSystemConfig({ - func: 's_custom_components_adduptdel', - c_id: config.uuid, - images: Utils.getcloudurl(result.Images), - c_name: res.name, - long_param: window.btoa(window.encodeURIComponent(JSON.stringify(config))), - del_type: '' - }).then(response => { - if (response.status) { - this.setState({loading: false, visible: false}) - notification.success({ - top: 92, - message: '淇濆瓨鎴愬姛', - duration: 2 - }) - document.getElementsByClassName('menu-view')[0].classList.remove('saving') - MKEmitter.emit('updateCustomComponent') - } else { - this.setState({loading: false}) - notification.warning({ - top: 92, - message: response.message, - duration: 5 - }) - } - }) - } else { - this.setState({loading: false}) - notification.warning({ - top: 92, - message: result.ErrMesg, - duration: 5 - }) + this.setState({loading: true}) + setTimeout(() => { + // let template = this.getUserComponent() + let template = fromJS(config).toJS() + html2canvas(document.getElementById(config.uuid)).then(canvas => { + let param = { + Base64Img: canvas.toDataURL('image/png') // 鑾峰彇鐢熸垚鐨勫浘鐗� } + + if (options.cloudServiceApi) { + param.rduri = options.cloudServiceApi + param.userid = sessionStorage.getItem('CloudUserID') || '' + param.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' + } + + Api.fileuploadbase64(param).then(result => { + if (result.status) { + Api.getSystemConfig({ + func: 's_custom_components_adduptdel', + c_id: config.uuid, + images: Utils.getcloudurl(result.Images), + typename: sessionStorage.getItem('appType') || '', + c_name: res.name, + long_param: window.btoa(window.encodeURIComponent(JSON.stringify(template))), + del_type: '' + }).then(response => { + if (response.status) { + this.setState({loading: false, visible: false}) + notification.success({ + top: 92, + message: '淇濆瓨鎴愬姛', + duration: 2 + }) + document.getElementsByClassName('menu-view')[0].classList.remove('saving') + MKEmitter.emit('updateCustomComponent') + } else { + this.setState({loading: false}) + notification.warning({ + top: 92, + message: response.message, + duration: 5 + }) + } + }) + } else { + this.setState({loading: false}) + notification.warning({ + top: 92, + message: result.ErrMesg, + duration: 5 + }) + } + }) }) - }) + }, 300) }) } @@ -91,13 +208,12 @@ } render () { - const { visible, dict, loading } = this.state + const { visible, dict, loading, name } = this.state return ( <div className="user-component-wrap"> - <Icon type="user" title="鐢熸垚鑷畾涔夌粍浠�" onClick={this.trigger} /> + <UserOutlined title="鐢熸垚鑷畾涔夌粍浠�" onClick={this.trigger} /> <Modal - wrapClassName="popview-modal" title="鑷畾涔夌粍浠�" visible={visible} width={500} @@ -107,11 +223,11 @@ onCancel={this.cancel} destroyOnClose > - <UserForm dict={dict} inputSubmit={this.submit} wrappedComponentRef={(inst) => this.verifyRef = inst}/> + <UserForm dict={dict} name={name} inputSubmit={this.submit} wrappedComponentRef={(inst) => this.verifyRef = inst}/> </Modal> </div> ) } } -export default DataSource \ No newline at end of file +export default UserComponent \ No newline at end of file -- Gitblit v1.8.0