| | |
| | | import { useDrop } from 'react-dnd' |
| | | import { is, fromJS } from 'immutable' |
| | | import update from 'immutability-helper' |
| | | import { Empty, notification, Modal } from 'antd' |
| | | import { Empty, Modal } from 'antd' |
| | | |
| | | import Utils from '@/utils/utils.js' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import Card from './card' |
| | | import './index.scss' |
| | | |
| | |
| | | handleList({...config, components: cards.map(item => item.uuid === element.uuid ? element : item)}) |
| | | } |
| | | |
| | | const unGroup = (id) => { |
| | | let { card, index } = findCard(`${id}`) |
| | | let components = [...card.components].map(item => { |
| | | if (item.wrap) { |
| | | item.wrap.width = card.width |
| | | item.width = card.width |
| | | } else if (item.plot) { |
| | | item.plot.width = card.width |
| | | item.width = card.width |
| | | } |
| | | return item |
| | | }) |
| | | card.components = [] |
| | | |
| | | const _cards = update(cards, { $splice: [[index, 1, card, ...components]] }) |
| | | |
| | | handleList({...config, components: _cards}) |
| | | } |
| | | |
| | | const deleteCard = (id) => { |
| | | const { card } = findCard(id) |
| | | |
| | |
| | | }) |
| | | } |
| | | |
| | | let uuids = MenuUtils.getDelButtonIds(card) |
| | | |
| | | confirm({ |
| | | title: `确定删除《${card.name}》吗?`, |
| | | content: hasComponent ? '当前组件中含有子组件!' : '', |
| | | onOk() { |
| | | handleList({...config, components: cards.filter(item => item.uuid !== card.uuid)}) |
| | | |
| | | if (uuids.length === 0) return |
| | | |
| | | MKEmitter.emit('delButtons', uuids) |
| | | }, |
| | | onCancel() {} |
| | | }) |
| | |
| | | drop(item) { |
| | | if (item.hasOwnProperty('originalIndex') || item.added) { |
| | | return |
| | | } else if (['login', 'navbar', 'topbar'].includes(item.component)) { |
| | | return |
| | | } |
| | | |
| | | item.added = true |
| | | |
| | | if (item.component === 'search') { // 搜索组件不可重复添加 |
| | | if (cards.filter(card => card.type === 'search').length > 0) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '搜索条件不可重复添加!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | } else if (item.component === 'tabs' && config.floor === 3) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '标签页最多为三重结构!', |
| | | duration: 5 |
| | | }) |
| | | if (item.component === 'search') { // 移动端标签页中不可添加搜索 |
| | | item.added = false |
| | | return |
| | | } |
| | | |
| | | let name = '' |
| | | let names = { |
| | | bbar: '柱状图', |
| | | bar: '柱状图', |
| | | line: '折线图', |
| | | tabs: '标签组', |
| | | pie: '饼图', |
| | |
| | | editor: '富文本', |
| | | code: '自定义', |
| | | carousel: '轮播', |
| | | form: '表单', |
| | | dashboard: '仪表盘', |
| | | scatter: '散点图', |
| | | form: '表单', |
| | | card: '卡片', |
| | | navbar: '导航栏', |
| | | menubar: '菜单栏', |
| | | tree: '树形列表', |
| | | card: '卡片' |
| | | balcony: '浮动卡', |
| | | timeline: '时间轴', |
| | | login: '登录' |
| | | } |
| | | let i = 1 |
| | | |
| | |
| | | |
| | | let newcard = { |
| | | uuid: Utils.getuuid(), |
| | | tabId: config.uuid, |
| | | parentId: config.parentId, |
| | | type: item.component, |
| | | subtype: item.subtype, |
| | | config: item.config, |
| | | width: item.width || 24, |
| | | dataName: Utils.getdataName(), |
| | | name: name, |
| | | floor: config.floor ? (config.floor + 1) : 2, // 组件的层级 |
| | | isNew: true // 新添加标志,用于初始化 |
| | | } |
| | | |
| | |
| | | card={card} |
| | | moveCard={moveCard} |
| | | delCard={deleteCard} |
| | | unGroup={unGroup} |
| | | findCard={findCard} |
| | | updateConfig={updateConfig} |
| | | /> |