king
2023-07-10 19e156d67e400bff8883425f3511812bb4f9d193
src/tabviews/custom/components/chart/antv-X6/index.jsx
@@ -2,7 +2,7 @@
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Spin, Tooltip, message, Modal, notification } from 'antd'
import { UndoOutlined, RedoOutlined, VerticalAlignTopOutlined, VerticalAlignBottomOutlined, SaveOutlined, ZoomInOutlined, ZoomOutOutlined, OneToOneOutlined, QuestionCircleOutlined } from '@ant-design/icons'
import { UndoOutlined, RedoOutlined, VerticalAlignTopOutlined, VerticalAlignBottomOutlined, SaveOutlined, ZoomInOutlined, ZoomOutOutlined, OneToOneOutlined, QuestionCircleOutlined, ClearOutlined } from '@ant-design/icons'
import { Graph, Shape } from '@antv/x6'
import { Stencil } from '@antv/x6-plugin-stencil'
import { Transform } from '@antv/x6-plugin-transform'
@@ -17,10 +17,11 @@
import MKEmitter from '@/utils/events.js'
import asyncComponent from '@/utils/asyncComponent'
import NormalHeader from '@/tabviews/custom/components/share/normalheader'
import lanes from '@/menu/components/chart/antv-X6/lane.json'
import xflows from '@/menu/components/chart/antv-X6/xflow.json'
// import lanes from '@/menu/components/chart/antv-X6/lane.json'
// import xflows from '@/menu/components/chart/antv-X6/xflow.json'
import './index.scss'
const { confirm } = Modal
const NodeUpdate = asyncComponent(() => import('./nodeupdate'))
const groups = {
@@ -483,9 +484,9 @@
  }
  async loadData () {
    const { config, BID } = this.state
    const { BID } = this.state
    if (config.setting.supModule && !BID) { // BID 不存在时,不做查询
    if (!BID) {
      if (!is(fromJS(this.data), fromJS([]))) {
        this.cells = []
        this.handleData()
@@ -497,25 +498,9 @@
      loading: true
    })
    if (config) {
      if (config.plot.subtype === 'xflow') {
        this.cells = xflows
      } else {
        this.cells = lanes
      }
      this.handleData()
      setTimeout(() => {
        this.setState({
          loading: false
        })
      }, 2000)
      return
    }
    let param = {
      func: '',
      BID: BID
      func: 's_get_works_flow_local_param_v6',
      ID: BID
    }
    let result = await Api.genericInterface(param)
@@ -523,8 +508,15 @@
      this.setState({
        loading: false
      })
      let item = result.data && result.data[0] ? result.data[0] : null
      let cells = []
      this.cells = result.data || []
      if (item && item.long_param) {
        let long_param = JSON.parse(window.decodeURIComponent(window.atob(item.long_param)))
        cells = long_param.cells || []
      }
      this.cells = cells
      this.handleData()
      if (result.message) {
@@ -1357,13 +1349,68 @@
  }
  save = () => {
    // let nodes = this.mkGraph.toJSON()
    // this.mkGraph.toPNG((dataUri) => {
    //   Api.fileuploadbase64({
    //     Base64Img: dataUri
    //   }).then(res => {
    //   })
    // }, {padding: 20})
    const { BID } = this.state
    if (!BID) {
      Modal.error({
        title: '未获取到流程ID,不可保存!',
      })
      return
    }
    this.setState({
      loading: true
    })
    let nodes = this.mkGraph.toJSON()
    this.mkGraph.toPNG((dataUri) => {
      let param = {
        func: 's_works_flow_param_upt_v6',
        long_param: window.btoa(window.encodeURIComponent(JSON.stringify(nodes))),
        flow_image: dataUri,
        ID: BID,
        BID: ''
      }
      Api.genericInterface(param).then(res => {
        if (res.status) {
          notification.success({
            top: 92,
            message: '保存成功!',
            duration: 2
          })
        } else {
          notification.error({
            top: 92,
            message: res.message,
            duration: 10
          })
        }
        this.setState({
          loading: false
        })
      })
    }, {padding: 20})
  }
  clearNode = () => {
    let cells = this.mkGraph.getCells()
    const that = this
    if (cells.length === 0) return
    confirm({
      title: '确定清空元素吗?',
      content: '清空后不可恢复。',
      okText: '确定',
      cancelText: '取消',
      onOk() {
        that.mkGraph.removeCells(cells)
        that.mkGraph.cleanHistory()
      },
      onCancel() {}
    })
  }
  deleteLane = (cell, graph) => {
@@ -1744,6 +1791,9 @@
            <Tooltip title="前进">
              <RedoOutlined onClick={this.setprev}/>
            </Tooltip>
            <Tooltip title="清空">
              <ClearOutlined onClick={this.clearNode}/>
            </Tooltip>
            <Tooltip overlayStyle={{maxWidth: 260}} title="快捷键:复制(ctrl+c)、剪切(ctrl+x)、粘贴(ctrl+v)、后退(ctrl+z)、前进(ctrl+shift+z)、删除(backspace 或 delete)">
              <QuestionCircleOutlined />
            </Tooltip>