<template>
    <div class="header_max">
		
        <header class="header_component">
            <div class="header_right_content">
                <div class="header_user_icon"></div>
                <!-- <div class="header_icon icon iconfont icon-touxiang3"></div> -->
                <div class="header_user_content">
                    <div class="username"><span>/</span> {{$t('Header.hello')}}@{{ userInfo?.userName }}</div>
                    <div
                        :class="[
                            'icon',
                            'iconfont',
                            'icon-xiala',
                            isShowOperate ? 'icon_rotate' : '',
                        ]"
                        @click.stop="changeShowOperateContent()"
                    ></div>
                   
                </div>
            </div>
            <nav class="header_nav_content">
                <div
                    :class="[
                        'nav_item',
                        $route.name === 'home' ? 'select_nav' : '',
                    ]"
                    @click="turnToPage('home')"
                >
					{{$t('Header.HOME')}}
                </div>
                <div
                    :class="[
                        'nav_item',
                        $route.name === 'library' ? 'select_nav' : '',
                    ]"
                    @click="turnToPage('library')"
                >
					{{$t('Header.LIBRARY')}}
                </div>
                <div
                    :class="[
                        'nav_item',
                        $route.name === 'history' ? 'select_nav' : '',
                    ]"
                    @click="turnToPage('history')"
                >
					{{$t('Header.HISTORY')}}
                    
                </div>
            </nav>
           
			<div class="header_right">
				<img
                class="header_logo"
                @click="turnToNewPage('https://www.aidlab.hk/en/')"
                src="@/assets/images/loginPage/aida_logo.png"
            />
			<Habit></Habit>

			</div>
        </header>
		<nav class="select_block" v-show="isShowOperate">
			<div class="select_item" @click="showBindEmailModal()">
				<span class="icon iconfont icon-youxiang"></span><span class="select_item_des">{{$t('Header.bindEmail')}}</span>
			</div>
			<div class="select_item" @click="logout()">
				<span class="icon iconfont icon-tuichu"></span
				><span class="select_item_des">{{$t('Header.logOff')}}</span>
			</div>
		</nav>
        <a-modal
            class="modal_component"
            v-model:visible="bindEmailVisible"
            :footer="null"
            title="Mailbox binding"
            width="56rem"
            :maskClosable="false"
            :centered="true"
        >
            <template #closeIcon v-if="!isHaveBindEmail && bindEmailStep === 1">
                <div class="skip_content">{{$t('Header.skip')}}</div>
            </template>
            <div class="bind_email_content" v-if="isHaveBindEmail">
                <div class="bind_email_tip">{{$t('Header.emailContent')}}</div>
                <div class="bind_email">{{ userInfo.email }}</div>
            </div>
            <div class="bind_email_content" v-else>
                <!-- 绑定邮箱第一步 start -->
                <div v-show="bindEmailStep === 1">
                    <div class="bind_email_form_content">
                        <div class="bind_email_form_title">{{$t('Header.Email')}}</div>
                        <input
                            class="bind_email_form_input"
                            placeholder="Enter a new email"
                            v-model="email"
                            @keydown.enter="emailNextStepFun()"
                        />
                    </div>
                    <div
                        class="bind_email_submit_button"
                        @click="emailNextStepFun()"
                    >
                        {{$t('Header.NextStep')}}
                    </div>
                </div>
                <!-- 绑定邮箱第一步 end -->

                <!-- 绑定邮箱第二步 start -->
                <div v-show="bindEmailStep === 2">
                    <div @click="emailLastStepFun()">
                        <span class="icon iconfont icon--shangyibu"></span
                        ><span class="email_last_step_content"
                            >{{$t('Header.verification')}}</span
                        >
                    </div>
                    <div class="email_last_step_des">
                        <div class="sent_email_content">
                            {{$t('Header.SentTo')}} {{ email }}
                        </div>
                        <div class="tip_content">
                            <span v-show="time">{{ time }}s</span>
                            <span v-show="!time" @click="emailNextStepFun()"
                                >{{$t('Header.Resend')}}Resend</span
                            >
                        </div>
                    </div>
                    <VerificationCodeInput
                        :ct="emailCode"
                        @sendCaptcha="submitBindEmail($event)"
                    ></VerificationCodeInput>
                </div>
                <!-- 绑定邮箱第一步 end -->
            </div>
        </a-modal>
    </div>
</template>
<script >
import { defineComponent, createVNode } from "vue";
import { isEmail } from "@/tool/util";
import { setCookie, getCookie, WriteCookie } from "@/tool/cookie";
import VerificationCodeInput from "@/component/LoginPage/verificationCodeInput.vue";
import Habit from "@/component/Detail/habit.vue";
import { Https } from "@/tool/https";
import { Modal, message } from "ant-design-vue";
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
import { useI18n } from "vue-i18n";
export default defineComponent({
    components: {
        VerificationCodeInput,
		Habit,
    },
	setup(){
		const {t} = useI18n()
		return {
			t
		}
	},
    data() {
        return {
            isShowOperate: false,
            bindEmailVisible: false,
            isHaveBindEmail: false,
            bindEmailStep: 1,
            email: "",
            emailCode: ["", "", "", "", "", ""], //邮箱验证码
            time: 60, //60秒倒计时
            timer: 0,
            userInfo: {},
            timerOperate: null,
            numTime: 30,
            timerSec: null,
            modalWarning: null,
        };
    },
    mounted() {
        this.userInfo = JSON.parse(getCookie("userInfo"));
        if (!this.userInfo) {
            this.$router.replace("/login");
        } else {
            this.accountIsLogin(this.userInfo);
        }
        this.isHaveBindEmail = this.userInfo?.email ? true : false;

        this.operateClick();
        document.addEventListener("click", this.operateClick);
    },
    methods: {
        turnToNewPage(url) {
            window.open(url);
        },

        turnToPage(name) {
            let noRefresh = name === "home" ? true : false;
            this.$router.push({ name: name, params: { noRefresh: noRefresh } });
        },

        //点击下拉图标出现操作
        changeShowOperateContent() {
            this.isShowOperate = !this.isShowOperate;
            document.addEventListener(
                "click",
                this.closeShowOperateContent,
                false
            );
        },

        //关闭下拉图标
        closeShowOperateContent() {
            this.isShowOperate = false;
            document.removeEventListener("click", this.closeShowOperateContent);
        },

        //打开绑定邮箱弹窗
        showBindEmailModal() {
            this.bindEmailVisible = true;
        },

        emailNextStepFun() {
            if (!isEmail(this.email)) {
                message.warning(this.t('Header.jsContent1'));
                return;
            }
            let data = {
                email: this.email,
                operationType: "BIND_MAILBOX",
            };
            const hide = message.loading("loading", 0);
            Https.axiosPost(Https.httpUrls.accountSendEmail, data)
                .then((rv) => {
                    if (rv) {
                        this.bindEmailStep = 2;
                        (this.emailCode = ["", "", "", "", "", ""]),
                            this.createTimer();
                        hide();
                        message.success(this.t('Header.jsContent2'));
                    }
                })
                .catch((res) => {
                    hide();
                });
        },

        //绑定邮箱的上一步
        emailLastStepFun() {
            this.bindEmailStep = 1;
            this.email = "";
            (this.emailCode = ["", "", "", "", "", ""]), this.clearTimer();
        },

        //创建定时器
        createTimer() {
            this.timer = setInterval(() => {
                this.time--;
                if (!this.time) {
                    clearInterval(this.timer);
                }
            }, 1000);
        },

        //清除定时器
        clearTimer() {
            this.time = 60;
            if (this.timer) {
                clearInterval(this.timer);
            }
        },

        //登出
        logout() {
            let data = {
                userId: this.userInfo.userId,
            };
            Https.axiosPost(Https.httpUrls.accountLogout, data).then((rv) => {
                this.$router.replace("/login");
                WriteCookie("token");
            });
        },

        //绑定邮箱
        submitBindEmail(emailVerifyCode) {
            let data = {
                userEmail: this.email,
                userId: this.userInfo.userId,
                emailVerifyCode: emailVerifyCode,
            };
            Https.axiosPost(Https.httpUrls.accountBindEmail, data).then(
                (rv) => {
                    if (rv) {
                        this.userInfo.email = this.email;
                        setCookie("userInfo", JSON.stringify(this.userInfo));
                        (this.bindEmailVisible = false),
                            (this.bindEmailStep = 1);
                        this.clearTimer();
                        this.emailCode = ["", "", "", "", "", ""];
                    }
                }
            );
        },

        //判断是否登录
        accountIsLogin(userInfo) {
            let data = {
                userId: userInfo.userId,
            };
            Https.axiosPost(Https.httpUrls.accountIsLogin, data).then((rv) => {
                if (!rv) {
                    this.$router.replace("/login");
                }
            });
        },

        //点击重置判断是否长时间五操作
        operateClick() {
            if (this.timer) {
                clearTimeout(this.timer);
            }
            let _this = this;
            let timeNum = 1000 * 60 * 120;
            this.timer = setTimeout(() => {
                this.modalWarning = Modal.warning({
                    title: () =>
						this.t('Header.jsContent3',{numTime:_this.numTime}),
                    icon: createVNode(ExclamationCircleOutlined),
                    okText: "Ok",
                    onOk() {
                        _this.numTime = 30;
                        clearInterval(_this.timerSec);
                    },
                });
                _this.numCounter();
            }, timeNum);
        },

        numCounter() {
            this.timerSec = setInterval(() => {
                if (this.numTime > 0) {
                    this.numTime = this.numTime - 1;
                } else {
                    clearTimeout(this.timer);
                    clearInterval(this.timerSec);
                    this.logout();
                    this.modalWarning.destroy();
                }
            }, 1000);
        },
    },
});
</script>

<style lang="less" scoped>
.header_max{
	position: relative;
}
.header_component {
    display: flex;
	justify-content: space-between;
	// padding: 0 30px;
	padding-left: 0;
    width: 100%;
    height: 7rem;
    background: rgba(255, 255, 255, 0.2);
    // border-bottom: 0.1rem solid rgba(3, 3, 3, 0.1);
    position: relative;
    align-items: center;

	z-index: 1049;
	background-color: #fff;
	.header_right{
		width: 33%;
		display: flex;
		justify-content: flex-end;
		align-items: center;
	}
    .header_logo {
        width: 14.4rem;
        height: 3.2rem;
        margin: 2.1rem 2.8rem 0 ;
		// position: absolute;
		margin-top: 0;
    }

    .header_nav_content {
        display: flex;
        // margin-left: 28.9rem;
		// margin-left: 46.2rem;
        align-items: center;

        .nav_item {
            padding: 1.1rem 1rem;
            border-bottom: 0.1rem solid transparent;
            margin-right: 3.4rem;
            font-size: 1.6rem;
            line-height: 1.3rem;
            // color: #333333;
            color: #000;
            cursor: pointer;
            font-weight: 900;
			&.nav_item:nth-child(3){
				margin: 0;
			}
			&.nav_item::before {
				position: absolute;
				content: "";
				display: block;
				background: #000;
				height: .3rem;
				left: 50%;
				transform: translateX(-50%);
				bottom: .3rem;
				width: 0px;
				transition: 0.3s all;
			}
			&.select_nav {
				color: #000;
				transform: scale(1.15);
			}
			&.select_nav::before {
				width: 80%;
			}
        }
    }

    .header_right_content {
        // position: absolute;
        top: 0;
        // right: 3.2rem;
		left: 0;
        display: flex;
		width: 33%;
		height: 100%;
		align-items: center;
		overflow: hidden;
        .header_icon {
            font-size: 3.6rem;
            position: relative;
            top: 0.3rem;
        }
		.header_user_icon{
			height: 4rem;
			width: 4rem;
			background-color: #000;
			border-radius: 50%;
			transform: translateX(-40%)scale(1.3);
		}
        .header_user_content {
            // margin-left: 2rem;
            display: flex;
            align-items: center;
            position: relative;
            // top: 1.2rem;
            height: 3.7rem;

            .username {
                font-size: 1.8rem;
                color: #1a1a1a;
                margin: 0 0.8rem;
				font-weight: 900;
				span{
					margin: .7rem;
				}
            }

            .icon-xiala {
                font-size: 1.4rem;
                cursor: pointer;
            }

            .icon_rotate {
                -moz-transform: rotate(180deg);
                -webkit-transform: rotate(180deg);
                transform: rotate(180deg);
                animation-direction: 0.5s;
            }

            
        }
    }
    
}
.select_block {
	z-index: 1050;
	position: absolute;
	left: 6.5rem;
	top: 4.7rem;
	width: 11.4rem;
	background: #ffffff;
	box-shadow: 0px 0.4rem 0.4rem 0px rgba(0, 0, 0, 0.1);
	overflow: hidden;
	border: 1px solid #000000;

	.select_item {
		padding-left: 1.5rem;
		height: 4.1rem;
		color: #4d4d4d;
		display: flex;
		align-items: center;
		cursor: pointer;
		user-select: none;

		&:hover {
			background: #f7f7f7;
		}

		.iconfont {
			font-size: 1.4rem;
		}

		.select_item_des {
			font-size: 1.3rem;
			margin-left: 0.8rem;
		}
	}
}
.modal_component {
    .skip_content {
        width: 6rem;
        height: 3rem;
        line-height: 2.8rem;
        border: 0.1rem solid #343579;
        font-size: 1.4rem;
        color: #343579;
        position: absolute;
        top: 1.8rem;
        right: 1.8rem;
        cursor: pointer;
    }

    .bind_email_content {
        padding: 4.8rem 9.2rem 6rem;

        .bind_email_tip {
            font-size: 1.8rem;
            color: #a5b0c2;
            line-height: 1.9rem;
            text-align: center;
        }
        .bind_email {
            margin-top: 2rem;
            font-size: 2.2rem;
            font-weight: 400;
            color: #030303;
            text-align: center;
        }

        .bind_email_form_content {
            .bind_email_form_title {
                font-size: 2.2rem;
                font-weight: bold;
                color: #030303;
                line-height: 2.4rem;
            }

            .bind_email_form_input {
                width: 100%;
                height: 4.6rem;
                margin-top: 1rem;
                border: 0.1rem solid #b4bed7;
                padding-left: 2.1rem;
                line-height: 4.6rem;
                font-size: 1.8rem;
                box-sizing: border-box;

                &::placeholder {
                    color: #a5b0c2;
                }
            }
        }

        .bind_email_submit_button {
            height: 4.6rem;
            line-height: 4.6rem;
            background: #343579;
            font-size: 1.6rem;
            font-weight: 500;
            color: #ffffff;
            width: 12.8rem;
            text-align: center;
            cursor: pointer;
            margin: 3rem auto 0;
        }

        .icon--shangyibu {
            font-size: 2.5rem;
            font-weight: bold;
            color: #030303;
        }

        .email_last_step_content {
            margin-left: 1rem;
            font-size: 2.2rem;
            font-family: PingFang SC;
            font-weight: bold;
            color: #030303;
        }

        .tip_content {
            font-size: 1.3rem;
            font-weight: bold;
            color: #343579;
            cursor: pointer;
        }

        .email_last_step_des {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-top: 2.5rem;
            margin-bottom: 1.5rem;

            .sent_email_content {
                font-size: 1.8rem;
                font-weight: bold;
                color: #a5b0c2;
            }
        }
    }
}
</style>
