king
2023-07-05 f45b2ad61211cf2821cdaab07676c7906c96410a
src/menu/components/calendar/index.jsx
@@ -2,20 +2,22 @@
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Popover, message } from 'antd'
import { EditOutlined, ToolOutlined, DeleteOutlined, FontColorsOutlined } from '@ant-design/icons'
import { EditOutlined, ToolOutlined, DeleteOutlined, FontColorsOutlined, PlusCircleOutlined } from '@ant-design/icons'
import asyncComponent from '@/utils/asyncComponent'
import asyncIconComponent from '@/utils/asyncIconComponent'
import { resetStyle, getTables, checkComponent } from '@/utils/utils-custom.js'
import MKEmitter from '@/utils/events.js'
import getWrapForm from './options'
import Utils from '@/utils/utils.js'
import './index.scss'
const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
const NormalForm = asyncIconComponent(() => import('@/components/normalform'))
const SearchComponent = asyncComponent(() => import('@/templates/sharecomponent/searchcomponent'))
const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent'))
const UserComponent = asyncIconComponent(() => import('@/menu/components/share/usercomponent'))
const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
const CalendarBoard = asyncComponent(() => import('./board'))
class NormalCalendarComponent extends Component {
  static propTpyes = {
@@ -42,9 +44,10 @@
        name: card.name,
        subtype: card.subtype,
        setting: { interType: 'system' },
        wrap: { title: '', name: card.name, width: card.width || 24 },
        wrap: { title: '', name: card.name, width: card.width || 24, levels: ['day', 'month'] },
        style: { marginLeft: '0px', marginRight: '0px', marginTop: '0px', marginBottom: '0px' },
        headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: '#e8e8e8' },
        search: [],
        columns: [],
        scripts: [],
      }
@@ -90,7 +93,6 @@
    card.name = card.wrap.name
    if (!window.GLOB.styling || !card.errors) { // 样式修改时不做筛查
      card.$c_ds = true
      card.$c_sc = true
      
      card.errors = checkComponent(card)
@@ -98,7 +100,7 @@
        card.$tables = getTables(card)
      }
    }
    this.setState({
      card: card
    })
@@ -118,6 +120,12 @@
    this.updateComponent(_card)
  }
  addSearch = () => {
    const { card } = this.state
    MKEmitter.emit('plusSearch', card.uuid, {uuid: Utils.getuuid(), focus: true, label: 'label', type: 'text', match: '='}, 'simple')
  }
  getWrapForms = () => {
    const { card } = this.state
@@ -125,14 +133,35 @@
  }
  updateWrap = (res) => {
    delete res.quick
    const { card } = this.state
    if (res.hmode) {
      res.mode = res.hmode
      delete res.hmode
    res.show = card.wrap.show || 'true'
    res.advanceType = card.wrap.advanceType || 'modal'
    res.advanceWidth = card.wrap.advanceWidth || 1000
    res.drawerPlacement = card.wrap.drawerPlacement || 'right'
    res.searchRatio = card.wrap.searchRatio || 6
    res.searchLwidth = card.wrap.searchLwidth !== undefined ? card.wrap.searchLwidth : 33.3
    res.borderRadius = card.wrap.borderRadius || 0
    res.resetContrl = card.wrap.resetContrl || 'init'
    if (res.colorField && res.signs) {
      res.signs = res.signs.map(item => {
        try {
          let colors = item.color.match(/\d+/g)
          if ((colors[0] * 0.299 + colors[1] * 0.578 + colors[2] * 0.114) * colors[3] < 192) {
            item.fontColor = '#ffffff'
          } else {
            item.fontColor = ''
          }
        } catch (e) {
          item.fontColor = ''
        }
        return item
      })
    }
    this.updateComponent({...this.state.card, wrap: res})
    this.updateComponent({...card, wrap: res})
  }
  render() {
@@ -142,21 +171,23 @@
    return (
      <div className="menu-calendar-edit-box" style={_style} id={card.uuid}>
        <NormalHeader hideSearch="true" config={card} updateComponent={this.updateComponent}/>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control">
            <NormalForm title="日历设置" width={800} update={this.updateWrap} getForms={this.getWrapForms}>
            <PlusCircleOutlined className="plus" title="添加搜索" onClick={this.addSearch}/>
            <NormalForm title="日历设置" width={850} update={this.updateWrap} getForms={this.getWrapForms}>
              <EditOutlined style={{color: '#1890ff'}} title="编辑"/>
            </NormalForm>
            <CopyComponent type="calendar" card={card}/>
            <FontColorsOutlined className="style" title="调整样式" onClick={this.changeStyle}/>
            <UserComponent config={card}/>
            <DeleteOutlined className="close" title="删除组件" onClick={() => this.props.deletecomponent(card.uuid)} />
            <SettingComponent config={card} updateConfig={this.updateComponent} />
          </div>
        } trigger="hover">
          <ToolOutlined />
        </Popover>
        <NormalHeader hideSearch="true" config={card} updateComponent={this.updateComponent}/>
        <SearchComponent config={card} updatesearch={this.updateComponent}/>
        <CalendarBoard config={card} />
        <div className="component-name">
          <div className="center">
            <div className="title" onDoubleClick={() => {