猪齿鱼关闭标签页提示

98 阅读1分钟
import React from 'react';
import { connect } from 'dva';
import intl from 'utils/intl';
import { onBeforeMenuTabRemove } from 'utils/menuTab';
import { Modal } from 'choerodon-ui/pro';

@connect()
export default class CloseTab extends React.Component {
    constructor(props) {
        super(props);
        this.state = {};
    }

    componentDidMount() {
        // 浏览器关闭时监测
        window.addEventListener('beforeunload', this.handleBeforeUnload);
        // 猪齿鱼 onBeforeMenuTabRemove方法
        const { id } = this.props;
        onBeforeMenuTabRemove(`/ba-lims/project/detail/${id}`, () => {
            return new Promise((resolve, reject) => {
                const isChange = sessionStorage.getItem(`isChangeOffficeValue${id}`);
                if (isChange == "true") {
                    Modal.confirm({
                        title: intl
                            .get('hzero.common.message.confirm.giveUpTip')
                            .d('你有修改未保存,是否确认离开?'),
                        onOk: () => {
                            sessionStorage.setItem(`isChangeOffficeValue${id}`, "false");
                            resolve();
                        },
                        onCancel: () => {
                            reject();
                        },
                    });
                } else {
                    resolve();
                }
            });
        });

    }

    componentWillUnmount() {
        // 关闭监测
        window.removeEventListener('beforeunload', this.handleBeforeUnload);
    }

    // 关闭或刷新时调用函数
    handleBeforeUnload = (event) => {
        const { id } = this.props;
        const isChange = sessionStorage.getItem(`isChangeOffficeValue${id}`);
        if (isChange != "true") {
            return;
        }
        event.preventDefault();
        event.returnValue = "数据未保存!"  // 已废弃,部分浏览器不生效
    }

    render() {

        return (
            <></>
        );
    }
}