Gary Gu
5 days ago 16064d395121113d9a68fed1b83612b60385b282
feat: 增加标段下拉
1 files modified
161 ■■■■■ changed files
src/components/Header.vue 161 ●●●●● patch | view | raw | blame | history
src/components/Header.vue
@@ -8,40 +8,50 @@
-->
<template>
  <header class="headerWrapper">
    <div class="relative z-[100] w-full h-[80px]" :style="{
      backgroundImage: `url(${backgroundImage})`,
      backgroundRepeat: 'no-repeat',
      backgroundPosition: 'center center',
      backgroundSize: '100% 100%'
    }">
      <div class="absolute top-0 left-1/2 -translate-x-1/2 h-full px-[16px] flex items-center justify-between tabWrapper" >
    <div
      class="relative z-[100] w-full h-[80px]"
      :style="{
        backgroundImage: `url(${backgroundImage})`,
        backgroundRepeat: 'no-repeat',
        backgroundPosition: 'center center',
        backgroundSize: '100% 100%',
      }"
    >
      <div class="absolute top-0 left-1/2 -translate-x-1/2 h-full px-[16px] flex items-center justify-between tabWrapper">
        <div class="flex flex-col items-center cursor-pointer relative" @click="onHomeClick('home')">
          <div class="flex items-center">
            <img class="w-[20px] h-[20px]" :src="getImageUrl(activeTab === 'home' ? 'home_active.png' : 'home.png')" alt="">
            <div class="text-[20px] text-[#C8C8C8] ml-[8px]" :class="{'text-[#FFBF00]': activeTab === 'home'}">项目首页</div>
            <img class="w-[20px] h-[20px]" :src="getImageUrl(activeTab === 'home' ? 'home_active.png' : 'home.png')" alt="" />
            <div class="text-[20px] text-[#C8C8C8] ml-[8px]" :class="{ 'text-[#FFBF00]': activeTab === 'home' }">项目首页</div>
          </div>
          <img class="w-[116px] h-[8px] absolute bottom-[-4px]" :src="getImageUrl('home_line.png')" alt="" v-if="activeTab === 'home'">
          <img class="w-[116px] h-[8px] absolute bottom-[-4px]" :src="getImageUrl('home_line.png')" alt="" v-if="activeTab === 'home'" />
        </div>
        <div class="flex flex-col items-center ml-[78px] cursor-pointer relative" @click="onHomeClick('xietong')">
          <div class="flex items-center">
            <img class="w-[20px] h-[20px]" :src="getImageUrl(activeTab === 'xietong' ? 'xietong_active.png' : 'xietong.png')" alt="">
            <div class="text-[20px] text-[#C8C8C8] ml-[8px]" :class="{'text-[#FFBF00]': activeTab === 'xietong'}">协同平台</div>
            <img class="w-[20px] h-[20px]" :src="getImageUrl(activeTab === 'xietong' ? 'xietong_active.png' : 'xietong.png')" alt="" />
            <div class="text-[20px] text-[#C8C8C8] ml-[8px]" :class="{ 'text-[#FFBF00]': activeTab === 'xietong' }">协同平台</div>
          </div>
          <img class="w-[116px] h-[8px] absolute bottom-[-4px]" :src="getImageUrl('home_line.png')" alt="" v-if="activeTab === 'xietong'">
          <img class="w-[116px] h-[8px] absolute bottom-[-4px]" :src="getImageUrl('home_line.png')" alt="" v-if="activeTab === 'xietong'" />
        </div>
        <div class="flex flex-col items-center ml-[78px] cursor-pointer relative" @click="onHomeClick('zhihui')">
          <div class="flex items-center">
            <img class="w-[20px] h-[20px]" :src="getImageUrl(activeTab === 'zhihui' ? 'zhihui_active.png' : 'zhihui.png')" alt="">
            <div class="text-[20px] text-[#C8C8C8] ml-[8px]" :class="{'text-[#FFBF00]': activeTab === 'zhihui'}">智慧工地</div>
            <img class="w-[20px] h-[20px]" :src="getImageUrl(activeTab === 'zhihui' ? 'zhihui_active.png' : 'zhihui.png')" alt="" />
            <div class="text-[20px] text-[#C8C8C8] ml-[8px]" :class="{ 'text-[#FFBF00]': activeTab === 'zhihui' }">智慧工地</div>
          </div>
          <img class="w-[116px] h-[8px] absolute bottom-[-4px]" :src="getImageUrl('home_line.png')" alt="" v-if="activeTab === 'zhihui'">
          <img class="w-[116px] h-[8px] absolute bottom-[-4px]" :src="getImageUrl('home_line.png')" alt="" v-if="activeTab === 'zhihui'" />
        </div>
      </div>
      <div class="absolute top-0 right-0">
        <div class="flex items-center h-[80px] mr-[20px]">
          <i class="el-icon-full-screen cursor-pointer text-[#00FFFF] text-[24px]" @click="handleFullscreen" :title="$fullscreen.isFullscreen ? '退出全屏' : '全屏'"></i>
          <img class="w-[20px] h-[20px] ml-[8px]" :src="getImageUrl('time.png')" alt="">
          <el-select v-model="projectSelected" placeholder="请选择" class="mr-[24px]">
            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
          </el-select>
          <i
            class="el-icon-full-screen cursor-pointer text-[#00FFFF] text-[24px]"
            @click="handleFullscreen"
            :title="$fullscreen.isFullscreen ? '退出全屏' : '全屏'"
          ></i>
          <img class="w-[20px] h-[20px] ml-[8px]" :src="getImageUrl('time.png')" alt="" />
          <div class="text-[24px] text-[#FFBF00] ml-[8px]">{{ currentTime }}</div>
          <div class="text-[16px] text-[#C8C8C8] ml-[20px]">{{ currentDate }}</div>
        </div>
@@ -51,20 +61,9 @@
</template>
<script>
  export default {
    name: "AppHeader",
    components: {
    },
    data() {
      return {
        activeTab: 'home',
        currentTime: '',
        currentDate: '',
        timer: null,
        backgroundImage: new URL('@/assets/images/backgrounds/logo.png', import.meta.url).href
      }
    },
    components: {},
    props: {
      selectedId: {
        type: String,
@@ -75,35 +74,20 @@
        default: () => [],
      },
    },
    methods: {
      handleFullscreen() {
        if (this.$fullscreen.isFullscreen) {
          this.$fullscreen.exit()
        } else {
          this.$fullscreen.request()
        }
      },
      getImageUrl(name) {
        return new URL(`../assets/images/backgrounds/${name}`, import.meta.url).href
      },
      onHomeClick(tab) {
        this.activeTab = tab;
        this.$emit("onHomeClick", tab);
      },
      updateTime() {
        const now = new Date();
        const hours = String(now.getHours()).padStart(2, '0');
        const minutes = String(now.getMinutes()).padStart(2, '0');
        const seconds = String(now.getSeconds()).padStart(2, '0');
        this.currentTime = `${hours}:${minutes}:${seconds}`;
        const year = now.getFullYear();
        const month = String(now.getMonth() + 1).padStart(2, '0');
        const day = String(now.getDate()).padStart(2, '0');
        const weekDays = ['日', '一', '二', '三', '四', '五', '六'];
        const weekDay = weekDays[now.getDay()];
        this.currentDate = `${year}.${month}.${day} 星期${weekDay}`;
      }
    data() {
      return {
        projectSelected: "",
        options: [
          { value: "project1", label: "项目1" },
          { value: "project2", label: "项目2" },
          { value: "project3", label: "项目3" },
        ],
        activeTab: "home",
        currentTime: "",
        currentDate: "",
        timer: null,
        backgroundImage: new URL("@/assets/images/backgrounds/logo.png", import.meta.url).href,
      };
    },
    mounted() {
      this.updateTime();
@@ -113,11 +97,66 @@
      if (this.timer) {
        clearInterval(this.timer);
      }
    }
    },
    methods: {
      handleFullscreen() {
        if (this.$fullscreen.isFullscreen) {
          this.$fullscreen.exit();
        } else {
          this.$fullscreen.request();
        }
      },
      getImageUrl(name) {
        return new URL(`../assets/images/backgrounds/${name}`, import.meta.url).href;
      },
      onHomeClick(tab) {
        this.activeTab = tab;
        this.$emit("onHomeClick", tab);
      },
      updateTime() {
        const now = new Date();
        const hours = String(now.getHours()).padStart(2, "0");
        const minutes = String(now.getMinutes()).padStart(2, "0");
        const seconds = String(now.getSeconds()).padStart(2, "0");
        this.currentTime = `${hours}:${minutes}:${seconds}`;
        const year = now.getFullYear();
        const month = String(now.getMonth() + 1).padStart(2, "0");
        const day = String(now.getDate()).padStart(2, "0");
        const weekDays = ["日", "一", "二", "三", "四", "五", "六"];
        const weekDay = weekDays[now.getDay()];
        this.currentDate = `${year}.${month}.${day} 星期${weekDay}`;
      },
    },
  };
</script>
<style lang="scss" scoped>
  .tabWrapper {
    margin-left: 150px;
  }
  </style>
  ::v-deep(.el-select) {
    width: 160px;
    height: 28px;
    background: rgba(33,72,115,0.9);
    border-radius: 2px;
    .el-input {
      align-items: center;
      display: flex;
      height: 28px;
      .el-input__inner {
        height: 28px;
        font-family: PingFangSC, PingFang SC;
        font-weight: 400;
        font-size: 14px;
        color: #ffffff;
        line-height: 20px;
        text-align: left;
        font-style: normal;
      }
      .el-input__suffix {
        align-items: center;
        display: flex;
      }
    }
  }
</style>