<script setup lang="ts">
import { storeToRefs } from "pinia";
import { useRoute, useRouter } from "vue-router";
import { useAppStore } from "@/store/modules/app";
import { useTagsViewStore } from "@/store/modules/tagsView";
import { useUserStore } from "@/store/modules/user";
import { SchoolList } from "@/api/school/types";
import { getSchoolList } from "@/api/school";
import { watch } from "vue";
import SvgIcon from "@/components/SvgIcon/index.vue";
import { CaretBottom } from "@element-plus/icons-vue";

const appStore = useAppStore();
const tagsViewStore = useTagsViewStore();
const userStore = useUserStore();
const route = useRoute();
const router = useRouter();
const { device } = storeToRefs(appStore); // 设备类型：desktop-宽屏设备 || mobile-窄屏设备

/**
 * 左侧菜单栏显示/隐藏
 */
function toggleSideBar() {
  appStore.toggleSidebar(true);
}
/**
 * vueUse 全屏
 */
const { isFullscreen, toggle } = useFullscreen();
/**
 * 注销
 */
function logout() {
  ElMessageBox.confirm("确定退出系统吗？", "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  }).then(() => {
    userStore
      .logout()
      .then(() => {
        tagsViewStore.delAllViews();
      })
      .then(() => {
        router.push(`/login?redirect=${route.fullPath}`);
      });
  });
}
/**
 * 学校数据
 */
const schoolData = ref<SchoolList[]>([
  {
    school_id: 0,
    name: "全部学校全部学校全部学校全部学校",
  },
  {
    school_id: 1,
    name: "学校1",
  },
]);
const schoolNumber = ref(0);
function querySchoolList() {
  getSchoolList()
    .then(({ data }) => {
      schoolData.value.concat(data);
    })
    .catch((error) => {
      console.log(error);
    });
}
onMounted(() => {
  // querySchoolList();
});
watch(
  () => schoolNumber.value,
  (newValue, oldValue) => {
    console.log("schoolNumber", newValue, oldValue);
    userStore.changeSchool(schoolNumber.value);
  }
);
</script>

<template>
  <!-- 顶部导航栏 -->
  <div class="navbar">
    <!-- 左侧面包屑 -->
    <div class="flex">
      <Hamburger
        :is-active="appStore.sidebar.opened"
        @toggle-click="toggleSideBar"
      />
      <Breadcrumb />
    </div>
    <!-- 右侧导航设置 -->
    <div class="flex">
      <!-- 导航栏设置(窄屏隐藏)-->
      <div v-if="device !== 'mobile'" class="setting-container">
        <!--全屏 -->
        <div class="setting-item" @click="toggle">
          <svg-icon
            :icon-class="isFullscreen ? 'exit-fullscreen' : 'fullscreen'"
            size="16px"
          />
        </div>
      </div>
      <!-- 学校选择下拉框 -->
      <div class="nav-select">
        <el-select
          v-model="schoolNumber"
          size="large"
          placeholder="全部学校"
          :suffix-icon="CaretBottom"
        >
          <el-option
            v-for="item in schoolData"
            :key="item.school_id"
            :label="item.name"
            :value="item.school_id"
          />
        </el-select>
      </div>
      <!-- 用户头像 -->
      <div class="avatar-container">
        <span class="spl">|</span>
        <img :src="userStore.avatar + '?imageView2/1/w/80/h/80'" />
        <span class="">{{ userStore.nickname }}</span>
        <span @click="logout"
          ><svg-icon icon-class="exit" color="#006eff" size="20px"
        /></span>
      </div>
    </div>
  </div>
</template>

<style lang="scss" scoped>
.navbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 70px;
  background-color: #fff;
  box-shadow: 0 0 1px #0003;

  .setting-container {
    display: flex;
    align-items: center;

    .setting-item {
      display: inline-block;
      width: 30px;
      height: 70px;
      line-height: 70px;
      color: #5a5e66;
      text-align: center;
      cursor: pointer;

      &:hover {
        background: rgb(249 250 251 / 100%);
      }
    }
  }
  .avatar-container {
    display: flex;
    align-items: center;
    justify-items: center;
    margin: 0 20px 0 0;
    cursor: pointer;
    img {
      width: 40px;
      height: 40px;
      border-radius: 20px;
    }
    span {
      margin-left: 12px;
      font-size: 16px;
      color: #494949;
      &.spl {
        margin: 0 12px 0 12px;
        color: #d7d8d8;
      }
    }
  }
  .svg-icon {
    margin-bottom: -2px;
  }
  .el-select {
    padding: 15px 0;
    width: 280px;
    margin-left: 12px;
  }
}
/* 自定义 el-select 样式 */
:deep(.el-input__wrapper) {
  background: #efefef;
  border-radius: 12px;
}

/* el-select 各种边框线隐藏**/
:deep(.el-select) {
  --el-select-input-focus-border-color: none !important;
}
:deep(.el-input__wrapper) {
  box-shadow: none !important;
}
:deep(.el-select .el-input.is-focus .el-input__wrapper) {
  box-shadow: none !important;
}
:deep(.el-select .el-input__wrapper.is-focus) {
  box-shadow: none !important;
}
:deep(.el-select:hover:not(.el-select--disabled) .el-input__wrapper) {
  box-shadow: none !important;
}
//移动端兼容
.mobile {
  .navbar {
    .nav-select {
      position: absolute;
      left: 0;
      top: 80px;
      z-index: 1;
      width: 100%;
      box-sizing: border-box;
      padding: 0 24px;
      .el-select {
        width: 100%;
        padding: 0;
        margin: 0;
      }
      :deep(.el-input__wrapper) {
        background: #ffffff;
      }
    }
  }
}
</style>
