index.js 1.86 KB
/*
 * @Title:
 * @Author: hongmye
 * @Date: 2023-01-10 11:18:55
 */
import React, { useState, useEffect } from 'react';
import Iframe from 'react-iframe';
import Empty from '@wisdom-components/empty';
import axios from 'axios';
import classNames from 'classnames';
import { appService } from '@/api';
import { decode, encode } from 'js-base64';
import styles from './index.less';
const IframeContainer = props => {
  const { linkUrl, onMessageBack, loading } = props;

  const onMessage = e => {
    onMessageBack && onMessageBack(e?.data);
  };
  const onError = e => {
    // onMessageBack && onMessageBack({ type: '无法连接' });
  };
  useEffect(() => {
    if (linkUrl) {
      // const url = linkUrl;
      // const baseUrl = url.split('civbase')[0];
      // appService
      //   .HealthCheckUrl({
      //     address: encode(baseUrl),
      //   })
      //   .then(res => {
      //     if (res?.data !== 1) {
      //       onMessageBack && onMessageBack({ type: '无法连接' });
      //     }
      //   })
      //   .catch(err => {
      //     onMessageBack && onMessageBack({ type: '无法连接' });
      //   });
    }
  }, [linkUrl]);
  useEffect(() => {
    // iframe通信
    window.addEventListener('message', onMessage);
    window.addEventListener('error', onError, true);

    return () => {
      window.removeEventListener('message', onMessage);
      window.removeEventListener('error', onError);
    };
  }, [linkUrl, onError, onMessage, onMessageBack]);
  return (
    <div className={classNames(styles['tab-iframe'])}>
      {linkUrl ? (
        <Iframe
          url={linkUrl}
          width="100%"
          height="100%"
          display="block"
          position="relative"
          styles={{ border: 'none' }}
        />
      ) : (
        <Empty description="配置url链接才能显示哦!" />
      )}
    </div>
  );
};

export default IframeContainer;