Image.js 5.4 KB
import React from 'react';
import Loading from '../loadThree';
import { Slider, Row, Col } from 'antd';
import { connect } from 'dva';
import classNames from 'classnames/bind';
import { getUaaServicesNomal } from '../../../Services/services';
import { getDetailsApi } from '../../../Services/apiConfig';

const names = classNames.bind(require('./style.less'));

let width;
let sliNum = 0;



@connect()
export default class PortalFlowExamineModalImage extends React.Component {
  state = {
    visible: true,
    slider: 0,
    isImgLoading: true,
    canvasIMg: '', // canvas转换的图片
    configValue: false, // 配置信息
    flowInfo: '', // 获取流程图的信息
  };

  handleCancel = () => this.setState({ visible: false });

  handlePreview = () => {
    // const {width} = this.img;
    // this.setState({visible: true, width})
  };

  sliderChange = num => {
    if (sliNum === 0) {
      width = document.querySelector('.img').width;
    }
    sliNum++;
    if (num == 0 && sliNum != 0) {
      document.querySelector('.img').width = width;
      return;
    }
    if (num > 0) {
      document.querySelector('.img').width = width * `${1}.${num}`;
    } else {
      document.querySelector('.img').width = width * `${0}.${Math.abs(num + 10)}`;
    }
  };

  getCanvasImg = imgSrc => {
    this.setState(
      {
        canvasIMg: imgSrc,
      },
      () => {
        this.setState({
          visible: false,
        });
      },
    );
  };

  componentDidMount = () => {
    const { appid, code } = this.props;
    this.props.dispatch({
      // 获取配置信息
      type: 'DataGgEditor/getNewProcessImg',
      payload: {
        appid,
        code,
      },
      callback: val => {
        this.setState({
          flowInfo: val,
        });
      },
    });
    // 获取配置信息
    getUaaServicesNomal(getDetailsApi, {
      configKeys: 'IsOldFlow',
    }).then(val => {
      this.setState({
        configValue: val[0].configValue == 'true',
      });
    });
  };

  onLoad = () => {
    this.setState({
      isImgLoading: false,
      visible: false,
    });
  };




  render() {
    const { src, appid } = this.props;
    const { visible, width, isImgLoading, canvasIMg, configValue, flowInfo } = this.state;
    const GetEditor = () => {
      if(flowInfo?.model?.id && isImgLoading){
        const GgEditor = require('../ggEditor');
        return GgEditor;
      }else{
        return null;
      }

    }

    return (
      <>
        {configValue ? (
          <div
            className={names('image-warp')}
            style={{ overflow: 'hidden', width: '1300px', height: '630px' }}
          >
            {flowInfo?.model?.id ? (
              <>
                <div
                  style={{
                    width: '100%',
                    height: '630px',
                    textAlign: 'center',
                    overflow: 'auto',
                  }}
                >
                  <img onLoad={this.onLoad} src={canvasIMg}></img>
                </div>
                {flowInfo?.model?.id && isImgLoading ? (
                  <div
                    style={{
                      width: '1600px',
                      height: '670px',
                      visibility: 'hidden',
                      position: 'relative',
                    }}
                  >
                    <GetEditor
                      flowModelId={flowInfo.model.id}
                      taskKeys={flowInfo.taskKeys}
                      getCanvasImg={this.getCanvasImg}
                      isShow={false}
                    />
                  </div>
                ) : null}
              </>
            ) : (
              <div style={{ marginTop: '350px' }}>
                {' '}
                <Loading />
              </div>
            )}
          </div>
        ) : (
          <div className={names('image-warp')}>
            <Row>
              <Col span={6} style={{ paddingLeft: 24, lineHeight: '36px' }}>
                图片展示比例:
              </Col>
              <Col span={6}>
                <Slider defaultValue={0} max={5} min={-5} onChange={this.sliderChange} />
              </Col>
            </Row>
            <div
              style={{
                display: isImgLoading ? 'none' : 'block',
              }}
            >
              <img
                onLoad={this.onLoad}
                className="img"
                src={src}
                style={{ overflow: 'auto', transition: 'all 0.5s', position: 'relative' }}
                ref={node => (this.img = node)}
                alt=""
                onClick={this.handlePreview}
              />
            </div>
            {isImgLoading ? (
              <div
                style={{
                  width: '90%',
                  height: '610px',
                  display: 'flex',
                  justifyContent: 'center',
                  alignItems: 'center',
                  paddingLeft: '10%',
                }}
              >
                <Loading />
              </div>
            ) : null}
            {/* <Modal
            width={width >= 1200 ? 1200 : width}
            wrapClassName={names("image-modal-warp")}
            visible={visible} footer={null}
            onCancel={this.handleCancel}
            destroyOnClose
          >
            <img alt="example" style={{ width: '100%' }} src={src} />
          </Modal> */}
          </div>
        )}
      </>
    );
  }
}